フォーム ヘルパーとカスタム フォーム テンプレートを使用して、Play フレームワークで次のようにフォームをレンダリングしています。
@(lang: Lang)(myForm: Form[MyModel])
@import play.i18n._
@import helper._
@implicitField = @{ FieldConstructor(formTemplate.f) }
@form ( action = routes.Application.index() ){
@inputText(
field = myForm("username"),
'_label -> Messages.get(lang, "username")
)
}
テンプレートが異なる値で呼び出されるとlang
、ラベルはそれぞれの言語で表示されます。
ただし、フォームが送信されると、エラー メッセージは常にメイン言語で表示されます。(つまり、Required
フィールドの場合は常にThis field is required.
)
この投稿への回答が述べたように、言語ファイルでデフォルトのエラー メッセージを次のように変更しました (現在は 2 つだけ)。
messages.en :
username=Username
error.required=This field is required
メッセージ.nl :
username=Gebruikersnaam
error.required=Dit veld is verplicht
エラーが正しい言語で出力されていることを確認するにはどうすればよいですか?
カスタムテンプレートで次のことをすでに試しましたが、成功しませんでした:
@(elements: helper.FieldElements)
<!-- snipped some HTML code -->
<span class="help">
@(elements.infos(elements.args.get('_lang) match {
case Some(language) => language.asInstanceOf[play.api.i18n.Lang]
case None => new Lang("en","uk")
}).mkString(", "))
</span>
そして、'_lang -> lang
私の@inputText
呼び出しに追加することによって。
私は Java でのプログラミングに慣れており、Play テンプレートでいくつかの Scala しか実行したことがありません。Play 2.0.4 を使用しています。