Primera pregunta: ¿cómo puedo recuperar la traducción de un texto en un controlador?play framework 2.0 - internacionalización - cómo traducir un mensaje
Segunda pregunta: ¿cómo puedo recuperar la traducción de un texto en una plantilla?
la API dice que hay un método .get que traduce un mensaje:
http://www.playframework.org/documentation/api/2.0/java/play/i18n/Messages.html
Sin embargo mi aplicación no reconoce este método. Al abrir en eclipse, Message.class muestra que hay un método .apply en él, escrito en Scala y 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))
}
Ahora eclipsar me dice que puedo invocar este método como este:
> String play.api.i18n.Messages.apply(String arg0, Seq<Object> arg1,
> Lang arg2)
Pero, ¿qué debo ingresar como argumento "Sec"?
--La solution--
El problema era que importé play.api.i18n.Messages en lugar de play.i18n.Messages ...
Habiendo definido dos archivos de mensajes (messages.de -DE y messages.en-UK) y utilizando el código siguiente todo funciona bien:
controlador:
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
application.langs="en-GB,de-DE"
My play framework no conoce el método Messages.get ("msg.key"). Lanza el error: no se puede encontrar el símbolo [symbol: method get (java.lang.String)] [location: class play.api.i18n.Messages] - ¿Tal vez estoy usando el Play Source incorrecto? En realidad, la consola dice "play! 2.0". Quizás seleccioné al crear mi aplicación para "1 - Crear una aplicación de Escala simple" en lugar de "2 - Crear una aplicación Java simple". ¿Podría ser esta una razón para este comportamiento? –
Sí, este puede ser el caso, estoy usando una aplicación Java Play y no scala .. – adis
hmm ... Me pregunto si he seleccionado "1 - simple scala app", pero lo probaré más adelante este día. Y no creo que este sea el motivo porque todos los archivos de plantilla creados en mi aplicación están en .java ;-) –