【发布时间】:2015-08-07 12:49:44
【问题描述】:
你好 Stackoverflow 社区!
我的 Play 2.4 应用程序中有 i18n 工作,所以这是一个好的开始。
我现在要做的是覆盖发送到模板的隐式Lang。例如,如果 IP 地址位于瑞典,我想将隐式 Lang 设置为瑞典语,而不管浏览器中设置了哪种首选语言。如何做到这一点?
这是我的代码:
我的Application.scala 控制器:
package controllers
import javax.inject.Inject
import play.api.i18n.{I18nSupport, Lang, MessagesApi}
import play.api.mvc._
class Application @Inject() (val messagesApi: MessagesApi) extends Controller with I18nSupport {
def index = Action { implicit request =>
if (isIpAddressLocatedInSweden) {
implicit val langFromIp = Lang.apply("sv")
Logger.info("Language set to Swedish")
}
Ok(views.html.index())
}
private def isIpAddressLocatedInSweden: Boolean = {
[...]
}
}
我的index.scala.html 视图:
@()(implicit messages: Messages, lang: Lang)
@main("Page Title") {
<span>@lang.toString()</span>
<h1>@Messages("home.title")</h1>
}
不幸的是,结果是:
-
<span>元素包含首选浏览器语言:“Lang(en,)” -
<h1>元素包含我在messages.en中写入的值
感谢您的帮助!
【问题讨论】:
标签: scala playframework internationalization playframework-2.4