【发布时间】:2018-02-20 14:55:41
【问题描述】:
我正在运行一个 Play Framework (2.3) + Scala 应用程序,我刚刚开始翻译它。
我有以下配置:
application.langs="en,es"
还有messages 和messages.es 文件。我希望应用程序根据浏览器的语言显示消息,所以我将其更改为 ES。
当我在我的电脑上运行它时,一切看起来都很好,但是一旦我部署它就不起作用了。我检查了 local 和 prod 的两个 conf 文件具有相同的值。我还检查了请求的 Accept-Language 参数,它包含“es”。浏览器还在 ES 中。
我想也许我可以更改 application.langs 中的语言顺序,但我希望“en”成为我的默认语言。
谁能帮帮我?
更新:
我已经部署了一个打印 lang 值的修改:
@()(implicit lang: Lang)
@import play.api.Play.current
[...]
lang = @lang.code,
date = @(new java.util.Date().format("yyyy-MM-dd HH:mm"))
我在 localhost 和 prod 中得到不同的结果:
- 本地主机:lang = es-ES,日期 = 2018-02-20 16:37
- 制作:lang = en-US,日期 = 2018-02-20 16:44
似乎在 localhost 中,浏览器语言正确覆盖了该语言,但在生产中却没有。这有意义吗?
更新 2:
所以,我一直在测试一些理论……我认为这可能不是 Play Framework 的事情。这是我发现的:
- 在 localhost 中运行应用程序,我更改了浏览器的语言 => 应用程序的语言没有改变,它一直显示 ES
- 将 application.langs 中的“es”替换为“fr”时,应用以 EN 显示,无论浏览器的语言是什么
- 将messages.es重命名为messages.fr(内容保存在ES中)也没有效果,应用显示在EN中。
通过这些测试,@lang.code 的值始终相同:lang = es-ES。另一方面,Lang.applicables 从第 1 步变为第 2 步:langList = Lang(en,)Lang(fr,)。
我从中收集到的是,我在应用程序中设置的语言无关紧要,还有另一个地方设置了 Lang,巧合的是,它在 localhost 中设置为 es-ES,在 Production 中设置为 en-US .它可能与服务器的语言环境有关。这个可以改吗?
【问题讨论】:
标签: scala playframework internationalization