Scala 如何在play框架操作中获取当前语言?

Scala 如何在play框架操作中获取当前语言?,scala,playframework,playframework-2.4,Scala,Playframework,Playframework 2.4,我正在将Play2.4项目从Java迁移到Scala 在Java中,我可以使用lang().code()获取当前语言 如何在Scala中执行相同操作?您需要一个消息sapi(doc:and)来调用该方法,该方法返回用户的当前语言 它使用此算法查找最合适的语言: def preferred(request: RequestHeader) = { val maybeLangFromCookie = request.cookies.get(langCookieName).flatMap(c

我正在将Play2.4项目从Java迁移到Scala

在Java中,我可以使用
lang().code()
获取当前语言


如何在Scala中执行相同操作?

您需要一个
消息sapi
(doc:and)来调用该方法,该方法返回用户的当前语言

它使用此算法查找最合适的语言:

  def preferred(request: RequestHeader) = {
    val maybeLangFromCookie = request.cookies.get(langCookieName).flatMap(c => Lang.get(c.value))
    // match selected lang with play.i18n.langs or return the default one
    val lang = langs.preferred(maybeLangFromCookie.toSeq ++ request.acceptLanguages) 
    Messages(lang, this)
  }
我不使用Java API,但我认为您可以使用DI注入器获得messageApi实例:

@Inject MessagesApi messagesApi

我当然阅读了文档,但我找不到获取请求的当前语言的方法。文档显示了如何从
请求中获取
acceptLanguages
字段。
play.api.i18N
中的
Lang
对象允许您访问默认语言和可用语言。好的,谢谢。也许我应该描述一下我的整个问题。基本上,我希望能够通过客户端的按钮选择语言。我在Java中使用changeLang()修改所选语言。然后在另一个请求中,我使用lang().code()检索当前语言。如何在Scala中实现类似的操作?