播放框架语言和cookie

时间:2014-03-01 22:25:05

标签: cookies playframework internationalization lang

我有一个奇怪的问题。

我有一个包含多个页面和3种不同语言的播放应用程序(我的application.conf就像application.langs =“es,en,fr”)

我有3个文件,messages.en messages.fr messages.es

在我的索引页面上,一切正常。我有按钮来更改语言,当我点击文本时,预期会改变正确的语言。

现在我有另一个页面,它应该完全相同,它有相同的按钮,调用相同的功能,但文本永远不会改变(它始终保持法语)。

最奇怪的是,当我看到cookie时,它是正确的!当我点击西班牙语按钮时,PLAY_LANG的值会改为es。例如。

知道这可能来自哪里?我在两个文件中检查了我的message.xx文件以及@Messages(“xxx”)。一切看起来都一样......

谢谢, Vinkun

编辑:

这是我使用的代码:

 def index = IsAuthenticated { name =>
   val user = User.findByEmail(name)
    implicit request =>
   Ok(views.html.index(loginForm, User.lastThree, user, ""))
}

def changeLanguage(lang:String) = Action { 
    request =>
    val referrer = request.headers.get(REFERER).getOrElse(HOME_URL)
   Redirect(referrer).withLang(Lang(lang))
}

def changeLanguageStory(lang:String) = Action { 
    request =>
    val referrer = request.headers.get(REFERER).getOrElse("/story")
   Redirect(referrer).withLang(Lang(lang))
}
def story = IsAuthenticated { name =>
   val user = User.findByEmail(name)
   implicit request =>
   Ok(html.story("enjoy the story", user))
}

使用路线

GET     /index/:lang                controllers.Application.changeLanguage(lang: String)
GET     /story/:lang                controllers.Application.changeLanguageStory(lang: String)

application.conf

application.langs="fr,en,es"

以及我如何调用索引页面中的函数

<a href="@routes.Application.changeLanguage("en")"><img src="/assets/images/UK.jpg" width="30px" height="20px"/></a>
<a href="@routes.Application.changeLanguage("fr")"><img src="/assets/images/France.jpg" width="30px" height="20px"/></a>
<a href="@routes.Application.changeLanguage("es")"><img src="/assets/images/Mexico.jpg" width="30px" height="20px"/></a>

在故事页面

<a href="@routes.Application.changeLanguageStory("en")"><img src="/assets/images/UK.jpg" width="30px" height="20px"/></a>
<a href="@routes.Application.changeLanguageStory("fr")"><img src="/assets/images/France.jpg" width="30px" height="20px"/></a>
<a href="@routes.Application.changeLanguageStory("es")"><img src="/assets/images/Mexico.jpg" width="30px" height="20px"/></a>

当然我有文件消息messages.en messages.es messages.fr

在索引页面上,一切正常。当我单击其他语言图片时,它会相应地更改页面的语言。 在故事页面;它总是采用“消息”文件的语言,而不是其他语言,尽管PLAY_LANG cookie被正确修改。

感谢您的帮助

0 个答案:

没有答案