/ / Play framework: impostazione di Lang in helper.form in scala vista - internazionalizzazione, playframework-2.0

Play framework: impostazione di Lang in helper.form in scala vista - internazionalizzazione, playframework-2.0

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

Stai 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.