我遵循了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")))
  }

这也使我怀疑如何允许在应用程序中更改语言...

我在这里想念什么?

谢谢

最佳答案

用注入的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")))
      }
    }

08-05 06:23