gpt4 book ai didi

scala - Play 框架 2.4.0 中的 I18n

转载 作者:行者123 更新时间:2023-12-04 21:39:40 26 4
gpt4 key购买 nike

这是我的 routes文件:

GET /:lang      controller.Application.index(lang: String)
GET /:lang/news controller.Application.news(lang: String)

请注意,所有这些都以 /:lang 开头。 .

目前,我写 Application.scala作为
def index(lang: String) = Action {
implicit val messages: Messages = play.api.i18n.Messages.Implicits.applicationMessages(
Lang(lang), play.api.Play.current)
Ok(views.html.index("title"))
}

就这样,我要写尽可能多的 implicit MessagesAction .有没有更好的解决方案?

最佳答案

路过才Lang更简单的选择:

def lang(lang: String) = Action {
Ok(views.html.index("play")(Lang(lang)))
}

//template
@(text: String)(implicit lang: play.api.i18n.Lang)
@Messages("hello")

您可以通过使用 Action 组合重用一些代码,定义包装的请求和 Action :
case class LocalizedRequest(val lang: Lang, request: Request[AnyContent]) extends WrappedRequest(request)

def LocalizedAction(lang: String)(f: LocalizedRequest => Result) = {
Action{ request =>
f(LocalizedRequest(Lang(lang), request))
}
}

现在您可以重复使用 LocalizedAction像这样:
//template
@(text: String)(implicit request: controllers.LocalizedRequest)
@Messages("hello")

//controller
def lang(lang: String) = LocalizedAction(lang){implicit request =>
Ok(views.html.index("play"))
}

关于scala - Play 框架 2.4.0 中的 I18n,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29803189/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com