3

https://www.playframework.com/documentation/2.5.x/ScalaI18Nのドキュメントに従っていますが、コントローラー内の翻訳は正常に機能します。ただし、Twirl テンプレートで翻訳が必要です。implicit messagesおよび/または使用するとMessages("test.testing")、次のエラーが発生します。

could not find implicit value for parameter messages: play.api.i18n.Messages

私のコントローラー:

class HomeController @Inject()(val messagesApi: MessagesApi) extends Controller with I18nSupport {

  def updateLocale(lang: String) = Action { implicit request =>
    printf(request.headers.get("Accept-Language").getOrElse("niente"))
    printf(Messages("test.testing"))
    Ok(views.html.index(Messages("test.testing")))
  }

これはまた、アプリケーションで言語を変更できるようにするにはどうすればよいか疑問に思います...

ここで何が欠けていますか?

ありがとう

4

1 に答える 1

3

Messages注入されたものに置き換えますmessagesApi:

class HomeController @Inject()(val messagesApi: MessagesApi)
                   extends Controller with I18nSupport {

      def updateLocale(lang: String): EssentialAction = Action {
        implicit request =>
          printf(request.headers.get("Accept-Language").getOrElse("niente"))
          printf(messagesApi("test.testing"))
          Ok(views.html.index(messagesApi("test.testing")))
      }
    }
于 2016-04-05T18:30:22.157 に答える