diff options
author | vlad <vlad@driver.xyz> | 2017-02-22 18:53:01 -0800 |
---|---|---|
committer | vlad <vlad@driver.xyz> | 2017-02-22 18:53:01 -0800 |
commit | e2e6e10893c5a39ba0d123d57b7652534ff2e3a4 (patch) | |
tree | cacc6ab4ae0563f588b85c84103c333cb151ea20 | |
parent | d5fd8f858dfc8e21dbe8ee365e5d9017090812e7 (diff) | |
parent | 517ef20648c6c202e0718067681bc8aa51f5b630 (diff) | |
download | driver-core-e2e6e10893c5a39ba0d123d57b7652534ff2e3a4.tar.gz driver-core-e2e6e10893c5a39ba0d123d57b7652534ff2e3a4.tar.bz2 driver-core-e2e6e10893c5a39ba0d123d57b7652534ff2e3a4.zip |
Merge remote-tracking branch 'origin/master' into master3v0.10.12
-rw-r--r-- | src/main/scala/xyz/driver/core/messages.scala | 15 | ||||
-rw-r--r-- | src/test/scala/xyz/driver/core/MessagesTest.scala | 24 |
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") + } } |