1

我在视图中有以下代码:

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

在我的国际化文件中,我有name. 例如:

  • messages.enname=Name
  • messages.frname=Nom

该视图始终使用法语标签呈现,inputText我不知道如何更改另一种语言,例如使用lang我的视图中定义的全局参数。

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

4

2 回答 2

1

我的解决方案:

@(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>

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

于 2012-07-28T11:52:00.960 回答
1

你是用Scala还是Java?使用 Scala,您可以设置隐式语言。但是对于 Java,这并不像 Play 1.2.4 那样容易:

Lang.set(...) or .change()

这将在 2.1 中解决:https ://play.lighthouseapp.com/projects/82401/tickets/174-20-i18n-add-ability-to-define-implicit-lang-for-java-api

请参阅 Google 群组中的先前讨论:https ://groups.google.com/forum/?fromgroups#!topic/play-framework/dE1SPBaTM6w

你是否使用 scala 看看帖子:i18n 错误:控制器和模板使用不同的隐式语言

于 2012-07-27T15:45:52.127 回答