Pierwsze pytanie: jak mogę odzyskać tłumaczenie tekstu w kontrolerze?gra framework 2.0 - internacjonalizacja - jak tłumaczyć wiadomość
Drugie pytanie: jak mogę odzyskać tłumaczenie tekstu w szablonie?
API mówi, że istnieje metoda, która przekłada .get wiadomość:
http://www.playframework.org/documentation/api/2.0/java/play/i18n/Messages.html
Jednak moja aplikacja nie rozpoznaje tej metody. Otwieranie w eclipse Message.class pokazuje, że istnieje metoda .apply, napisana w Scala i 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))
}
Teraz zaćmienie mówi mi, że mogę wywołać tę metodę tak:
> String play.api.i18n.Messages.apply(String arg0, Seq<Object> arg1,
> Lang arg2)
Ale co mam wpisać jako „Seq” argumentu?
--The solution--
Problemem było to, że importowany play.api.i18n.Messages zamiast play.i18n.Messages ...
Po zdefiniowaniu dwóch plików wiadomość (messages.de -DE i messages.en-UK) i przy użyciu kodu następujące wszystko działa poprawnie:
Kontroler:
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"
Moja struktura gry nie zna metody Messages.get ("msg.key"). Zgłasza błąd: nie można znaleźć symbolu [symbol: method get (java.lang.String)] [location: class play.api.i18n.Messages] - Może używam złego źródła gry? Właściwie konsola mówi "play! 2.0". Może podczas tworzenia mojej aplikacji wybrałem opcję "1 - Utwórz prostą aplikację" zamiast "2 - Utwórz prostą aplikację Java". Czy to może być powód takiego zachowania? –
Tak, tak może być, używam aplikacji Java Play, a nie scala .. – adis
hmm ... Zastanawiam się, że wybrałem "1 - prosta aplikacja scala", ale spróbuję później tego dnia. I nie sądzę, że to jest powód, ponieważ wszystkie pliki szablonów utworzone w mojej aplikacji są w .java ;-) –