Eu tenho o seguinte código em um modo de exibição:
@(lang:Lang)...
...
<div>
...
@helper.form(action = routes.item.add) {
<p>@helper.inputText(myItem("name"))</p>
...
}
...
</div>
Em meus arquivos de internacionalização, tenho entradas para name
. por exemplo. :
- dentro
messages.en
:name=Name
- dentro
messages.fr
:name=Nom
A visão é sempre renderizada com o rótulo francês para este inputText
e eu não sei como mudar para outro idioma, por exemplo, usando o parâmetro global lang
definido na minha opinião.
Eu estava procurando algumas soluções como: @helper.form(action = routes.item.add, lang)
ou o mesmo tipo de código em inputText
nível.
Respostas:
1 para resposta № 1Você está usando Scala
ou Java
? Com Scala você pode definir uma linguagem implícita. Mas para Java, isso não é fácil como no Play 1.2.4:
Lang.set(...) or .change()
Isso será resolvido em 2.1: https://play.lighthouseapp.com/projects/82401/tickets/174-20-i18n-add-ability-to-define-implicit-lang-for-java-api
Veja a discussão anterior nos Grupos do Google: https://groups.google.com/forum/?fromgroups#!topic/play-framework/dE1SPBaTM6w
Se você usa o scala, dê uma olhada no post: Erro i18n: o controlador e os modelos usam diferentes linguagens implícitas
1 para resposta № 2
Minha solução:
@(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>
No Play, é possível adicionar atributos aos formulários com o "_
convenção. Substituí o rótulo usando isso aplicando minha própria função de tradução.