【问题标题】:Internationalization with Messages not working in Production - Play Framework消息在生产中不起作用的国际化 - Play Framework
【发布时间】: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 的事情。这是我发现的:

  1. 在 localhost 中运行应用程序,我更改了浏览器的语言 => 应用程序的语言没有改变,它一直显示 ES
  2. 将 application.langs 中的“es”替换为“fr”时,应用以 EN 显示,无论浏览器的语言是什么
  3. 将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


    【解决方案1】:

    解决了!我在模板中添加了一个隐式参数 Lang,以便它从请求标头 Accept-Languages 中获取值。然后我看到@lang.code 变成了“es”!

    为了清楚起见,您需要将此隐式 Lang 添加到您的所有模板中,否则它将返回到我仍然不确定它来自何处的“默认”Lang。所以我有一个 main.scala.html 调用 @header()、@footer() 等。我将隐式添加到所有这些:

    @()(content: Html)(implicit lang: Lang)
    <!DOCTYPE html>
    <html>
        <head>
            [...]
            @analytics()
        </head>
        <body>
            <div id="header">
                @header()
            </div>
            @content
            @footer()
        </body>
    </html>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多