Ho il seguente codice in una vista:
@(lang:Lang)...
...
<div>
...
@helper.form(action = routes.item.add) {
<p>@helper.inputText(myItem("name"))</p>
...
}
...
</div>
Nei miei file di internazionalizzazione, ho voci per name
. per esempio. :
- in
messages.en
:name=Name
- in
messages.fr
:name=Nom
La vista è sempre resa con l'etichetta francese per questo inputText
e non so come cambiare per un'altra lingua, ad esempio utilizzando il parametro globale lang
definito a mio avviso.
Stavo cercando alcune soluzioni come: @helper.form(action = routes.item.add, lang)
o lo stesso tipo di codice a inputText
livello.
risposte:
1 per risposta № 1Stai usando Scala
o Java
? Con Scala puoi impostare un linguaggio implicito. Ma per Java questo non è facile come in Play 1.2.4:
Lang.set(...) or .change()
Questo sarà risolto in 2.1: https://play.lighthouseapp.com/projects/82401/tickets/174-20-i18n-add-ability-to-define-implicit-lang-for-java-api
Vedi la discussione precedente in Google Gruppi: https://groups.google.com/forum/?fromgroups#!topic/play-framework/dE1SPBaTM6w
Stai usando scala dai un'occhiata al post: Errore i18n: controller e modelli utilizzano lingue implicite diverse
1 per risposta № 2
La mia soluzione:
@(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>
In Play, è possibile aggiungere un attributo alle forme con il "_
convenzione. Ho superato l'etichetta usando questo applicando la mia funzione di traduzione.