访问从斯卡拉模板(玩!国际)翻译国际化的消息(Access translated i18n mess

2019-07-28 21:07发布

在我玩游戏! 2.0应用程序,我想定义下列语言:

# The application languages
# ~~~~~
application.langs=en-GB,de-DE,nl-NL

我还创建了3个文件,与相应的语言代码结尾:

Messages.en-GB
Messages.de-DE
Messages.nl-NL

当我启动应用程序而无需翻译的关键我收到以下错误消息的任何请求:

conf/application.conf: 12: Key 'de-DE' may not be followed by token: ',' (if you intended ',' to be part of the value for 'de-DE', try enclosing the value in double quotes)

此外当试图从斯卡拉模板我仍然看到相同的信息访问的消息。 我请求由下列码的消息:

@Messages("login.page")

:上述变化我已经根据播放手工完成http://www.playframework.org/documentation/2.0/JavaI18N 。 所以,我有两个问题:

  1. 我如何可以设置默认的langauge和1.2.4(Lang.change(“EN-GB”))来改变它像
  2. 如何从Scala的模板访问的消息?

Answer 1:

在您的斯卡拉文件的使用:

<h1>@Messages("pack.key")</h1>

而在你的java文件的使用:

String title = Messages.get("pack.key");

不要忘了周围添加你的语言列表报价:CONF / application.conf

application.langs="en-GB,de-DE,nl-NL"


Answer 2:

更改语言是不可能的玩游戏! 2.0,看到这样的讨论: http://groups.google.com/group/play-framework/browse_thread/thread/744d523c169333ac/5bfe28732a6efd89?show_docid=5bfe28732a6efd89

这票: https://play.lighthouseapp.com/projects/82401-play-20/tickets/174-20-i18n-add-ability-to-define-implicit-lang-for-java-api#ticket- 174-4

虽然,当您注册多国语言,你应该将它们用双qoutes,就像这样:

application.langs="en-GB,de-DE,nl-NL"

然后你就可以从这样的斯卡拉模板访问它们:

@Messages.get("login.title")

所以,当前的默认语言是在文件中的消息定义的语言(不加任何前缀!!)

或者你也可以只使用@Messages(“not.logged.in”)



文章来源: Access translated i18n messages from Scala templates (Play! Internationalization)