/ / Playフレームワーク:ラングをhelper.formでスカラビューに設定する - 国際化対応、playframework-2.0

Playフレームワーク:Langをスケーラビューでhelper.formに設定する - 国際化、playframework-2.0

私はビューで次のコードを取得しています:

@(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 レベル。

回答:

回答№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では、フォームに属性を追加することができます "_ コンベンション。私は自分自身の翻訳機能を適用してこれを使ってラベルを上書きしました。