Playframework [Scala]:从2.5迁移到2.6后i18n出现问题

时间:2018-07-16 09:17:05

标签: playframework playframework-2.5 playframework-2.6

我正在将项目从播放2.5迁移到2.6。 一切似乎都很好,但是,在我的视图中,由scala控制器呈现的i18n出现了问题(而Java控制器没有这种问题)。

要提供i18n,两种情况都使用play.api.i18n.Messages.apply方法,但是对于Scala控制器(源自AbstractControllerInjectedController),只有Messages.lang文件中的标记,没有价值。

我该如何解决?

1 个答案:

答案 0 :(得分:1)

在您的controller班上:

  1. 注入控制器组件和参与者系统
  2. 使用资产发现者的隐含价值。
  3. AbstractControllerI18nSupport扩展它:

    class myController @Inject()
     (controllerComponents: ControllerComponents,actorSystem: ActorSystem)
     (implicit assetsFinder: AssetsFinder) 
     extends AbstractController(cc) with I18nSupport{ 
     ??? //Body of your controller class. 
    } 
    

在您的views中:

在视图文件中,使用RequestHeaderMessagesAssetsFinder的三个隐式值:

@(whatever: Any)(implicit req: RequestHeader, messages: Messages, assetsFinder: AssetsFinder)