Internationalization 播放框架:在scala视图中的helper.form中设置Lang

Internationalization 播放框架:在scala视图中的helper.form中设置Lang,internationalization,playframework-2.0,Internationalization,Playframework 2.0,我在视图中获得了以下代码: @(lang:Lang)... ... <div> ... @helper.form(action = routes.item.add) { <p>@helper.inputText(myItem("name"))</p> ... } ... </div> @(lang:lang)。。。 ... ... @helper.form(action=routes.item.add){ @helpe

我在视图中获得了以下代码:

@(lang:Lang)...
...
<div>
...
@helper.form(action = routes.item.add) {
     <p>@helper.inputText(myItem("name"))</p>
     ...
    }
...
</div>
@(lang:lang)。。。
...
...
@helper.form(action=routes.item.add){
@helper.inputText(myItem(“名称”))

... } ...
在我的国际化文件中,我有
name
的条目。 e、 g:

  • messages.en
    name=name
  • messages.fr
    name=Nom
该视图始终使用法语标签呈现此
inputText
,我不知道如何更改另一个语言,例如使用视图中定义的全局参数
lang


我在寻找一些解决方案,比如:
@helper.form(action=routes.item.add,lang)
或者是
inputText
级别的同类代码。

您使用的是
Scala
还是
Java
?使用Scala可以设置隐式语言。但对于Java来说,这并不像Play 1.2.4那样简单:

Lang.set(...) or .change()
这将在2.1中解决:

请参阅Google群组中的先前讨论:

您是否在使用scala?请查看帖子:

我的解决方案:

@(lang:Lang)...

@import play.i18n._

@translate(text: String) = @{
 Message.get(lang, text)
}
...
<div>
...
@helper.form(action = routes.item.add) {
     <p>@helper.inputText(myItem("name"), '_label -> translate("name"))</p>
     ...
    }
...
</div>
@(lang:lang)。。。
@导入play.i18n_
@翻译(文本:字符串)=@{
Message.get(lang,text)
}
...
...
@helper.form(action=routes.item.add){
@inputText(myItem(“名称”),“\u标签->翻译(“名称”))

... } ...

在游戏中,可以使用
'
约定向表单添加属性。我已经通过应用我自己的翻译功能覆盖了标签。

感谢您提供的好链接!我从中找到了一个解决方案。我将发布此解决方案以供参考。为什么要将lang作为字符串传递?好问题:我认为传递lang是无用的,因为我的cookie中有它。稍后我会查看并更新我的答案。谢谢你的主意。但也许你还有另一个选择?你是在使用Scala还是Java?我直接将lang作为
lang
传递。我使用Java。在你们的评论之后,我更新了问题和答案,谢谢你们指出这一点。