播放框架

时间:2018-02-01 21:11:21

标签: playframework

我见过在控制器中注入MessageApi但未使用的代码。

class Application @Inject() (
  val messagesApi: MessagesApi, 
  val env:Environment[User,CookieAuthenticator],//change to JWT?
  socialProviderRegistry: SocialProviderRegistry) extends Silhouette[User,CookieAuthenticator] {

  //anyone could access the home page
  def index = UserAwareAction.async { implicit request =>
    Future.successful(Ok(views.html.index(request.identity, request.authenticator.map(_.loginInfo))))
  }

  //only logged in users could access profile page.
  def profile = SecuredAction { implicit request =>
    Ok(views.html.profile(request.identity, request.authenticator.loginInfo, socialProviderRegistry))
  }
}

MessageApi的目的是什么?我认为是在国际化中使用但后来我看到另一个类Message,我看到它被用来获取存储在不同语言文件中的消息值,例如。 messages.fr并用作Messages("index.logged")

1 个答案:

答案 0 :(得分:0)

您可以使用key和lang from request从message.xxx加载i18n conf 来自conf文件夹。如果按键查找值,它将变成一个字符串,否则它将返回原始密钥。

class ExampleController (cc: ControllerComponents) extends AbstractController(cc) {
  def example(): Action[Request] = Action.async(parse.json[Request]) { implicit request =>
    Accepted(messagesApi("data.processed")(request.lang))
  }
}

如果你的请求是" en" 在message.en

中添加以下代码
data.processed = Ok!

您可以在文档中找到详细信息 https://www.playframework.com/documentation/2.5.x/ScalaI18N