Воспроизведение 2.6 I18N Twirl не работает в производственном режиме

Когда я запускаю приложение Play 2.6 в режиме разработки, оно корректно локализуется на запрошенный язык. Однако в производственном режиме заполнители для сообщений не заменяются их фактическими значениями. Другими словами:

в messages.en у меня есть:

home.location = Germany

В моем шаблоне Twirl у меня есть:

@()(implicit messages: MessagesProvider)
...
<span>@messages.messages("home.location")</span>

И в контроллере:

class HomeController @Inject()(components: ControllerComponents, langs: Langs)
    extends AbstractController(components)
    with I18nSupport {

  def home: Action[AnyContent] = Action { implicit request =>
    Ok(views.html.home())
  }
}

Когда я запускаю в режиме разработки, он отображается как

<span>Germany</span>

Но в режиме prod как:

<span>home.location</span>

Это происходит, когда я запускаю в режиме prod в SBT, а также когда я упаковываю его с помощью sbt-native-packager и запускаю автономно. Я неправильно держу?


person Haspemulator    schedule 22.09.2017    source источник
comment
Вам удалось решить эту проблему? Если да, расскажите, пожалуйста, как вы это сделали? Спасибо   -  person consuela    schedule 23.05.2018
comment
Не совсем, у меня нет.   -  person Haspemulator    schedule 23.05.2018
comment
Спасибо за ваш ответ. У меня похожая проблема. Я буду держать вас в курсе, если мне удастся решить эту проблему. :)   -  person consuela    schedule 23.05.2018
comment
Это было бы очень полезно, спасибо.   -  person Haspemulator    schedule 23.05.2018


Ответы (2)


Вы должны поместить опцию «LauncherJarPlugin» в build.sbt.

Например, "lazy val root = (проект в файле (".")). EnablePlugins (PlayScala, LauncherJarPlugin)"

У меня была такая же проблема, но я исправил ее так.

Удачи.

person terdong    schedule 22.09.2017
comment
Спасибо, но это не помогает. - person Haspemulator; 23.09.2017
comment
используйте ‹span›@Messages(home.location)‹/span›. Наследуйте и реализуйте MessagesAbstractController. Я сделал это так. - person terdong; 25.09.2017

Сегодня столкнулся с примерно такой же проблемой. У меня есть messages и messages.pt-br в моем игровом приложении. в режиме разработки все работало нормально, но в режиме производства загружался только английский (файл messages). Я заметил, что в моем файле application.conf у меня было:

play.i18n.langs = [ "en", "pt-BR"]

но мой файл pt-br назывался messages.pt-br. Что я сделал, так это переименовал его в messages.pt-BR, и теперь он отлично работает на производстве. Я подозреваю, что заглавные буквы в имени файла играют большую роль при производстве.

Попробуйте назвать их с расширением языка точно так же, как в application.conf, и посмотрите, работает ли это.

person Bruno Paulino    schedule 11.07.2018