【问题标题】:Java Playframework Internationalization doesn't workJava Playframework 国际化不起作用
【发布时间】:2011-06-11 08:04:53
【问题描述】:

我使用了这里的说明: http://www.playframework.org/documentation/1.2.1/i18n

并为不同语言创建文件。

我调用play.i18n.Lang.change方法来改变语言文件, 它仍然从英文文件中获取标题(“消息”没有后缀),

有什么想法吗?

【问题讨论】:

    标签: internationalization playframework


    【解决方案1】:

    从您的描述中很难确切地知道问题可能是什么,所以我已经概述了您应该如何做一个多语言应用程序。

    您必须遵循多个步骤才能使国际化发挥作用。首先,您必须更改您的application.conf 文件以声明您支持的语言。

    所以,如果你支持英语和法语,你会这样做

    application.langs=en,fr
    

    然后您必须为您的法语翻译创建名为messages.fr 的语言文件。英语将只保留在标准的messages 文件中。在这个新文件中,为键和消息添加名称值对。

    Play 处理消息的方式是首先查看特定于语言环境的消息文件(因此对于英语,它将是 messages.en,它不存在,对于法语,它将是 messages.fr)。如果在特定于语言环境的消息文件中找不到该消息,它将查看全局消息文件。因此,您的全局 messages 文件可以作为全部内容。

    然后,在您的代码中,使用

    为您的特定用户设置语言
    Lang.change("fr"); // change language to French
    

    请记住,这会将特定用户的 cookie 保存在 PLAY_LANG cookie 中,因此请检查是否正在为用户创建此 cookie。

    最后请注意,确保您的文件采用 UTF8 编码。如果不是,它会导致问题。

    【讨论】:

    • 我没有看到 PLAY_LANG cookie,这可能是问题的一部分...可能是什么原因?
    • 不确定。您的浏览器是否禁用了 cookie?我刚刚运行了一个快速测试并使用 Firebug(在 Chrome 中)我可以在 document 元素下看到 cookie,在里面我看到 PLAY_LANG=fr。您是否以任何方式操纵 cookie?
    • 我查了一下,没有Cookie。我找到了原因:
    • 在 application.conf 我有 application.lang 而不是 application.langs(lang 代替 langs):) 10x 的帮助 :)
    【解决方案2】:

    在我的具体情况下,我有

    play.http.session.domain
    

    在测试时设置为 localhost 以外的其他值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-05
      • 2014-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多