我见过在控制器中注入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")
答案 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