【发布时间】:2011-06-11 08:04:53
【问题描述】:
我使用了这里的说明: http://www.playframework.org/documentation/1.2.1/i18n
并为不同语言创建文件。
我调用play.i18n.Lang.change方法来改变语言文件, 它仍然从英文文件中获取标题(“消息”没有后缀),
有什么想法吗?
【问题讨论】:
标签: internationalization playframework
我使用了这里的说明: http://www.playframework.org/documentation/1.2.1/i18n
并为不同语言创建文件。
我调用play.i18n.Lang.change方法来改变语言文件, 它仍然从英文文件中获取标题(“消息”没有后缀),
有什么想法吗?
【问题讨论】:
标签: internationalization playframework
从您的描述中很难确切地知道问题可能是什么,所以我已经概述了您应该如何做一个多语言应用程序。
您必须遵循多个步骤才能使国际化发挥作用。首先,您必须更改您的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.http.session.domain
在测试时设置为 localhost 以外的其他值。
【讨论】: