【问题标题】:Playframework [Scala]: Problems with i18n after migrating from 2.5 to 2.6Playframework [Scala]:从 2.5 迁移到 2.6 后 i18n 的问题
【发布时间】:2018-07-16 09:17:05
【问题描述】:
我正在将我的项目从 play 2.5 迁移到 2.6。
一切似乎都很好,但是,在我的视图中,由 scala 控制器呈现的 i18n 存在问题(Java 控制器没有这样的问题)。
为了提供 i18n,play.api.i18n.Messages.apply 方法在两种情况下都使用,但是对于 Scala 控制器(派生自 AbstractController 或 InjectedController),只有来自 Messages.lang 文件的标记,而不是值。
我该如何解决这个问题?
【问题讨论】:
标签:
playframework
playframework-2.5
playframework-2.6
【解决方案1】:
在你的controller 班级:
- 注入控制器组件和actor系统
- 使用资产查找器的隐含价值。
-
用AbstractController 和I18nSupport 扩展它:
class myController @Inject()
(controllerComponents: ControllerComponents,actorSystem: ActorSystem)
(implicit assetsFinder: AssetsFinder)
extends AbstractController(cc) with I18nSupport{
??? //Body of your controller class.
}
在你的views:
在您的视图文件中使用RequestHeader、Messages 和AssetsFinder 三个隐式值:
@(whatever: Any)(implicit req: RequestHeader, messages: Messages, assetsFinder: AssetsFinder)