aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorvlad <vlad@driver.xyz>2017-02-22 18:53:01 -0800
committervlad <vlad@driver.xyz>2017-02-22 18:53:01 -0800
commite2e6e10893c5a39ba0d123d57b7652534ff2e3a4 (patch)
treecacc6ab4ae0563f588b85c84103c333cb151ea20
parentd5fd8f858dfc8e21dbe8ee365e5d9017090812e7 (diff)
parent517ef20648c6c202e0718067681bc8aa51f5b630 (diff)
downloaddriver-core-0.10.12.tar.gz
driver-core-0.10.12.tar.bz2
driver-core-0.10.12.zip
Merge remote-tracking branch 'origin/master' into master3v0.10.12
-rw-r--r--src/main/scala/xyz/driver/core/messages.scala15
-rw-r--r--src/test/scala/xyz/driver/core/MessagesTest.scala24
2 files changed, 31 insertions, 8 deletions
diff --git a/src/main/scala/xyz/driver/core/messages.scala b/src/main/scala/xyz/driver/core/messages.scala
index 94d9889..b5ae704 100644
--- a/src/main/scala/xyz/driver/core/messages.scala
+++ b/src/main/scala/xyz/driver/core/messages.scala
@@ -2,11 +2,9 @@ package xyz.driver.core
import java.util.Locale
-import com.typesafe.config.Config
+import com.typesafe.config.{Config, ConfigException}
import xyz.driver.core.logging.Logger
-import scala.collection.JavaConverters._
-
/**
* Scala internationalization (i18n) support
*/
@@ -14,12 +12,12 @@ object messages {
object Messages {
def messages(config: Config, log: Logger, locale: Locale = Locale.US): Messages = {
- val map = config.getConfig(locale.getLanguage).root().unwrapped().asScala.mapValues(_.toString).toMap
+ val map = config.getConfig(locale.getLanguage)
Messages(map, locale, log)
}
}
- final case class Messages(map: Map[String, String], locale: Locale, log: Logger) {
+ final case class Messages(map: Config, locale: Locale, log: Logger) {
/**
* Returns message for the key
@@ -28,9 +26,10 @@ object messages {
* @return message
*/
def apply(key: String): String = {
- map.get(key) match {
- case Some(message) => message
- case None =>
+ try {
+ map.getString(key)
+ } catch {
+ case _: ConfigException =>
log.error(s"Message with key '$key' not found for locale '${locale.getLanguage}'")
key
}
diff --git a/src/test/scala/xyz/driver/core/MessagesTest.scala b/src/test/scala/xyz/driver/core/MessagesTest.scala
index dc44ee1..5558156 100644
--- a/src/test/scala/xyz/driver/core/MessagesTest.scala
+++ b/src/test/scala/xyz/driver/core/MessagesTest.scala
@@ -77,4 +77,28 @@ class MessagesTest extends FlatSpec with Matchers with MockitoSugar {
verify(log).error(s"Message with key 'howdy' not found for locale 'en'")
}
+
+ it should "be able to read nested keys in multiple forms" in {
+ val log = mock[Logger]
+
+ val configString =
+ """
+ | en {
+ | foo.bar = "Foo Bar"
+ |
+ | baz {
+ | boo = "Baz Boo"
+ | booFormat = "Baz Boo {0}"
+ | }
+ | }
+ """.stripMargin
+
+ val messagesConfig = ConfigFactory.parseString(configString)
+
+ val messages = Messages.messages(messagesConfig, log, Locale.US)
+
+ messages("foo.bar") should be("Foo Bar")
+ messages("baz.boo") should be("Baz Boo")
+ messages("baz.booFormat", "Test") should be("Baz Boo Test")
+ }
}