アプリケーションのユーザーが私の play2 (play 2.1.1、scala 2.10.1) Web アプリケーションで言語を変更できるようにしたいです。i18n のテンプレートで @Messages.get(...) を使用しています。
私は持っている
application.langs="en,ru"
application.conf で。そのメソッドに「en」または「ru」を渡します。
def index = Action {
Ok(views.html.index())
}
def changeLanguage(lang:String) = Action {
implicit request =>
Logger.logger.debug("Change user lang to : " + lang)
val referrer = request.headers.get(REFERER).getOrElse(HOME_URL)
Redirect(referrer).withLang(Lang(lang))
}
ルート:
GET / controllers.Application.index
GET /index controllers.Application.changeLanguage(lang ?= "ru")
テンプレートの束 (views.html.index):
@()(implicit l: Lang)
@import play.i18n.Messages
...
<a href="/about">@Messages.get("about")</li>
...
<a href="index?lang=ru" id="ru"></a>
<a href="index?lang=en" id="en"></a>
...
ページをリダイレクトした後、同じ言語で表示されます。:(
私は多くの古い回答を読みました: テンプレートの暗黙的な言語パラメーターが機能しない、リダイレクトまたは withLang(...) メソッド呼び出しによるアクションも。長い間良い解決策がありませんでしたか?