相关疑难解决方法(0)

i18n错误:控制器和模板使用不同的隐式语言

控制器:

def test = Action { implicit request =>
    import play.api.i18n._
    val msg = Messages("error.invalid")
    implicit val langInController = lang(request)
    Ok(views.html.test(langInController, msg))
}
Run Code Online (Sandbox Code Playgroud)

视图:

@(langInController: play.api.i18n.Lang, msg:String)(implicit request: Request[_])
<div>Lang from controller: @langInController, Message: @msg</div>
<div>Message from view: @play.api.i18n.Messages("error.required")</div>
Run Code Online (Sandbox Code Playgroud)

消息资源,conf/messages.zh-CN:

error.required=?????
Run Code Online (Sandbox Code Playgroud)

  1. 使用英文Firefox发送请求标头Accept-Language:en-us,en;q=0.5以访问test操作.结果是:

    Language from controller: Lang(en,), Message: This field is required
    Message in view: ?????
    
    Run Code Online (Sandbox Code Playgroud)
  2. 使用中国谷歌浏览器发送请求标题Accept-Language:zh-CN,zh;q=0.8以访问它.结果是:

    Language: Lang(zh,CN), Message: ?????
    Message in view: ?????
    
    Run Code Online (Sandbox Code Playgroud)

从测试中我们知道:

  1. 控制器中的隐式语言来自请求标头 Accept-Language
  2. 模板中使用的隐式语言由OS确定

环境:

  1. Play 2是来自GitHub的最新play2.1-SNAPSHOT(2012-03-16) …

templates controller internationalization playframework-2.0

9
推荐指数
1
解决办法
4250
查看次数

从Scala模板访问翻译的i18n消息(Play!Internationalization)

在我的游戏!2.0应用程序我想定义以下语言:

# The application languages
# ~~~~~
application.langs=en-GB,de-DE,nl-NL
Run Code Online (Sandbox Code Playgroud)

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

Messages.en-GB
Messages.de-DE
Messages.nl-NL
Run Code Online (Sandbox Code Playgroud)

当我启动应用程序而没有任何翻译密钥请求时,我收到以下错误消息:

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)
Run Code Online (Sandbox Code Playgroud)

此外,当尝试从Scala模板访问消息时,我仍然看到相同的消息.我通过以下代码请求消息:

@Messages("login.page")
Run Code Online (Sandbox Code Playgroud)

我根据Play手册进行了上述更改:http://www.playframework.org/documentation/2.0/JavaI18N.所以我有两个问题:

  1. 如何设置默认语言并在1.2.4中更改它(Lang.change("en-GB"))
  2. 如何从Scala模板访问消息?

internationalization playframework-2.0

2
推荐指数
1
解决办法
7504
查看次数