控制器:
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)
试
使用英文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)使用中国谷歌浏览器发送请求标题Accept-Language:zh-CN,zh;q=0.8以访问它.结果是:
Language: Lang(zh,CN), Message: ?????
Message in view: ?????
Run Code Online (Sandbox Code Playgroud)从测试中我们知道:
Accept-Language环境:
在我的游戏!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.所以我有两个问题: