Play 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
и запустить автономно. Я ошибаюсь?
2 ответа
Я столкнулся с более или менее той же проблемой сегодня. я имею messages
а также messages.pt-br
на моем игровом приложении. все работало нормально в режиме dev но на производстве только английский (messages
файл) загружался. Я заметил, что на моем application.conf
файл у меня был:
play.i18n.langs = [ "en", "pt-BR"]
но мой pt-br
файл был назван messages.pt-br
, Я переименовал его в messages.pt-BR
и теперь он работает просто отлично на производстве. Я подозреваю, что заглавные буквы в имени файла играют большую роль при производстве.
Попробуйте назвать их с расширением языка точно так же, как в application.conf
и посмотреть, если это работает.
Вы должны включить опцию "LauncherJarPlugin" в build.sbt.
Например, "lazy val root = (проект в файле (". ")). EnablePlugins (PlayScala, LauncherJarPlugin)"
У меня была такая же проблема, но я исправил это так.
Удачи.