Обычного способ изменить язык, чтобы сделать редирект товар срамки игры 2.3 Изменения языка шаблона без дополнительного запроса
.withLang(Lang(newLangCode))
но как лучше изменить текущий язык без дополнительного редиректа, я следующая конструкции. Я пытаюсь использовать язык из пользовательской записи или из файлов cookie или заголовков запросов, если у пользователя нет языка.
def index(userId:Int) = Action {
val userLang = getUser(userId).getLang.getOrElse(implicitly[Lang])
Ok(views.html.index(...)).withLang(userLang)
}
Но этот подход не работает конечно: views.html.index (...) вызываются со старым неявным Лангом и «withLang» только устанавливает кук для нового запроса.
Я знаю только одно решение: вызвать функцию шаблона с явным параметром lang.
def index(userId:Int) = Action {
implicit request =>
val userLang = getUser(userId).getLang.getOrElse(implicitly[Lang])
Ok(views.html.index(...)(request,userLang)).withLang(userLang)
}
Возможно, существует более канонический способ переключения языков?
Я не знаю, имеет ли игра сама по себе более чистый способ, но ручное предоставление значения для переопределения неявной неявной области видится как канонический способ замены имплицитов –