Вы можете использовать i.e. changeLang(String code)
метод play.mvc.Controller
суперкласс для этого.
Затем вам нужно сообщить своему распознавателю языка, в каком домене используется какой-либо язык по умолчанию, probebly с использованием application.conf
или записей базы данных для этого. Далее, в зависимости от того, чего вы хотите достичь, просто используйте глобальный класс для перехвата всего вашего запроса или создайте простое действие, которое изменит язык, и они вернутся на одну страницу (так что пользователь может решить, какой язык он хочет использовать) ,
Это какой-то маханизм, основанный на файлах cookie, поэтому я не уверен, что это не требуется для принудительной перезагрузки страницы (т. Е. Путем перенаправления на один и тот же путь). В любом случае, я предполагаю, что вы скажете нам, LL проверить его;)
Edit:
, что может быть есть. как
public Action onRequest(final Http.Request request, final Method actionMethod) {
if (request.host().equals("de.yourdomain.tld")
&& (request.cookie("PLAY_LANG") == null || !request.cookie("PLAY_LANG").value().equals("de"))) {
return new Action.Simple() {
public Result call(Http.Context ctx) throws Throwable {
ctx.changeLang("de");
return redirect(request.path());
}
};
} else {
return super.onRequest(request, actionMethod);
}
}
Просто убедитесь, что у вас есть de
языки добавлены в application.conf
, в противном случае вы получите красивый, бесконечный цикл перенаправления. PLAY_LANG
является типичным именем cookie Play для хранения выбранного языка.
Но как изменить язык из глобального класса и java? Я даже не вижу, как я могу установить cookie в onRequest. Эти вещи должны быть действительно легкими в веб-фреймворке ... –
Отметьте мое редактирование ... Это написано сверху, поэтому, пожалуйста, проверьте его самостоятельно на предмет ошибок – biesior