internationalization - Language selector in Play 2.4 & Scala 2.11.6 -
i'm trying implement simple page language selector , localized message:
|...en...|▼|
a message in english
ideally when user changes language page should reload updated message , different selected language
|....fr....|▼|
un message en français
but can't work: page stays same , thing changes play_lang cookie.
controller
package controllers import javax.inject.inject import play.api.mvc._ import play.api.i18n._ import play.api.data._ import play.api.data.forms._ class test @inject() (val messagesapi: messagesapi) extends controller i18nsupport { def index = action { implicit request => ok(views.html.test()) } def changelanguage() = action { implicit request => val referrer = request.headers.get(referer).getorelse("/") val form = form("language" -> nonemptytext) form.bindfromrequest.fold( errors => badrequest(referrer), language => redirect(referrer).withlang(lang(language)) ) } }
template
@()(implicit messages: messages, lang: lang) @helper.form(action = routes.test.changelanguage()) { <select name="language" style="width: auto;"> onchange="this.form.submit()"> @play.api.i18n.lang.availables(play.api.play.current).map { l => <option value="@l.code" @(if(lang.code.startswith(l.code)) "selected")>@l.code</option> } </select> <h1>@messages("test.message")</h1> }
any appreciated.
request in action should implicit.
def index = action { implicit request =>
Comments
Post a Comment