的Play 2.4 documentation on internationalization狀態
「此外,播放知道開箱如何注入MessagesApi值(即使用DefaultMessagesApi實現),所以你可以只標註您的控制器使用@ javax.inject.Inject註釋並讓Play自動爲您連接組件。「
像這樣的事情
控制器:
class FooController @Inject() (val messagesApi: MessagesApi) extends Controller with I18nSupport {
def index() = Action { implicit request =>
Ok(views.html.index())
}
}
模板:
@()(implicit messages: Messages, lang: Lang)
Messages says @messages("hello.msg")
如果你想實現一個語言選擇器組件,那麼這個答案可能會幫助
Language selector in Play 2.4 & Scala 2.11.6
以下是一個修改請求標頭的複合動作示例。
object LanguageAction extends ActionBuilder[Request] {
def invokeBlock[A](request: Request[A], block: (Request[A]) => Future[Result]) = {
val newRequest = new WrappedRequest[A](request) {
//calculate from request url
val lang = Lang("fr")
override lazy val acceptLanguages = Seq(lang)
}
block(newRequest)
}
}
控制器:
class FooController @Inject() (val messagesApi: MessagesApi) extends Controller with I18nSupport {
def index() = LanguageAction { implicit request =>
Ok(views.html.index())
}
}
查看:
@()(implicit messages: Messages, lang: Lang)
@messages("foo.bar")
我想你回答錯了你的問題。它應該是對這個問題的編輯。編輯這個和刪除另一個很容易。 – w4tson