私はビューで次のコードを取得しています:
@(lang:Lang)...
...
<div>
...
@helper.form(action = routes.item.add) {
<p>@helper.inputText(myItem("name"))</p>
...
}
...
</div>
私の国際化ファイルでは、 name
。 例えば:
- に
messages.en
:name=Name
- に
messages.fr
:name=Nom
このビューは常にフランス語のラベルでレンダリングされます inputText
グローバルパラメータを使用して、別のランゲージの変更方法を知りません lang
私の見解で定義されています。
私は次のようないくつかのソリューションを探していました: @helper.form(action = routes.item.add, lang)
または同じ種類のコードを inputText
レベル。
回答:
回答№1は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
あなたはスカラを使ってポストを見ていますか? i18nエラー:コントローラとテンプレートで異なる暗黙言語が使用される
回答№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では、フォームに属性を追加することができます "_
コンベンション。私は自分自身の翻訳機能を適用してこれを使ってラベルを上書きしました。