Prima domanda: come posso recuperare la traduzione di un testo in un controller?play framework 2.0 - internazionalizzazione - come tradurre un messaggio
Seconda domanda: come posso recuperare la traduzione di un testo in un modello?
l'API dice che c'è un metodo .get che traduce un messaggio:
http://www.playframework.org/documentation/api/2.0/java/play/i18n/Messages.html
Tuttavia la mia domanda non riconosce questo metodo. Aprendo in eclissi Message.class mostra che c'è un metodo .apply in esso, scritto in Scala e Java !?
object Messages {
/**
* Translates a message.
*
* Uses `java.text.MessageFormat` internally to format the message.
*
* @param key the message key
* @param args the message arguments
* @return the formatted message or a default rendering if the key wasn’t defined
*/
def apply(key: String, args: Any*)(implicit lang: Lang): String = {
Play.maybeApplication.flatMap { app =>
app.plugin[MessagesPlugin].map(_.api.translate(key, args)).getOrElse(throw new Exception("this plugin was not registered or disabled"))
}.getOrElse(noMatch(key, args))
}
Ora eclissare mi dice che posso richiamare questo metodo come questo:
> String play.api.i18n.Messages.apply(String arg0, Seq<Object> arg1,
> Lang arg2)
Ma quello che devo entrare come l'argomento "Seq"?
--La solution--
Il problema era che ho importato play.api.i18n.Messages invece di play.i18n.Messages ...
aver definito due file dei messaggi (messages.de -DE e messages.en-UK) e utilizzando il seguente codice tutto funziona bene:
controller:
import play.i18n.Messages;
import play.api.i18n.Lang;
Lang en = new Lang("en","GB");
play.i18n.Lang en_lang = new play.i18n.Lang(en);
Lang de = new Lang("de", "DE");
play.i18n.Lang de_lang = new play.i18n.Lang(de);
Logger.info(Messages.get("home.title"));
Logger.info(Messages.get(en_lang, "home.title"));
Logger.info(Messages.get(de_lang, "home.title"));
application.conf
012.application.langs="en-GB,de-DE"
Il mio framework di gioco non conosce il metodo Messages.get ("msg.key"). Genera l'errore: impossibile trovare il simbolo [simbolo: metodo get (java.lang.String)] [location: class play.api.i18n.Messages] - Forse sto usando la fonte di riproduzione sbagliata? In realtà la console dice "gioca! 2.0". Forse ho selezionato mentre creavo la mia app su "1 - Crea una semplice applicazione in scala" invece di "2 - Crea una semplice applicazione Java". Potrebbe essere questo un motivo per questo comportamento? –
Sì, questo può essere il caso, sto usando un'app Java Play e non scala .. – adis
hmm ... Mi meraviglia che abbia selezionato "1 - semplice scala app", ma ci riproverò più tardi. E non penso che questo sia il motivo perché tutti i file di modello creati nella mia app sono in .java ;-) –