/ / Play framework: Configurando Lang em um helper.form em uma visão scala - internacionalização, playframework-2.0

Estrutura do jogo: definindo Lang em um helper.form em uma exibição scala - internacionalização, playframework-2.0

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 № 1

Você 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.