2016-09-25 3 views
1

Невероятно новичок в попытке изменить язык динамически.Play change Языковая динамика

маршрут

GET  /language/:lang    controllers.Index.setLanguage(lang: String) 

Пробовал до сих пор(но ни один из них не работает)

Lang.apply(language); 
Lang.change(language); // <-- doesn't even compile 
Lang.apply(language); 
ctx().changeLang(language); 

вид

@import play.i18n.Messages 
... 
@Messages.get("message") 
@messages.at("message") 
... 

Оба не работают ..

application.config

enter image description here

сообщения

enter image description here

Методс некоторыми протоколирования

public Result setLanguage(String language) { 
    Http.Context context = Http.Context.current(); 
    String langFromHttpContext = context.lang().language(); 
    String langFromCtx = ctx().lang().language(); 
    String playLangCookieVal = request().cookies().get("PLAY_LANG").value(); 
    boolean changed = ctx().changeLang(language); 

    Logger.info("Request param: " + language); 
    Logger.info("Http context language: " + langFromHttpContext); 
    Logger.info("ctx language: " + langFromHttpContext); 
    Logger.info("PLAY_LANG cookie value: " + langFromCtx); 
    Logger.info("Changed: " + changed); 
    return ok(index.render("Index")); 
} 

Результат

application - Request param: en 
application - Http context language: nl 
application - ctx language: nl 
application - PLAY_LANG cookie value: nl 
application - Changed: false 

ответ

1

Вы должны удалить application.langs="nl" из конфигурации. Он устарел и заменен play.i18n.langs.

Вы должны оставить только play.i18n.langs=["en","nl"]

Вы код не работает, потому что Play читает application.langs="nl" и игнорировать play.i18n.langs=["en","nl"] (потому что LANGS уже считанных из application.langs), поэтому предлагаю ваше использование приложения только «п» язык и, курс не мог установить его на «en», поэтому ctx().changeLang(language) метод возвращает false

+0

Ничего себе это сделало эту работу.Большое вам спасибо –

1

Попробуйте это:

ctx().changeLang(language); 
+0

это не работает. Я не понимаю. Кажется, что ничего не работает: ') –

+0

В какую игру вы играете? –

+0

В настоящее время на 2.5.8 –

Смежные вопросы