我以前从这里的说明: http://www.playframework.org/documentation/1.2.1/i18n的Java Playframework国际不起作用
和创建的文件为不同的语言。
我打电话play.i18n.Lang.change方法来改变语言文件, 它仍然采取从字幕英文文件(“信息”没有后缀),
任何想法,为什么?
我以前从这里的说明: http://www.playframework.org/documentation/1.2.1/i18n的Java Playframework国际不起作用
和创建的文件为不同的语言。
我打电话play.i18n.Lang.change方法来改变语言文件, 它仍然采取从字幕英文文件(“信息”没有后缀),
任何想法,为什么?
这是很难从你的描述知道的问题可能是什么,所以我提出了,你应该怎么做一个多语种的应用程序。
有一些你必须遵循获得国际化的工作步骤。首先,您必须更改您的application.conf
文件以声明您支持的语言。
所以,如果你是支持英语和法语,你会做
application.langs=en,fr
然后,必须为您的名为messages.fr
法语翻译的语言文件。英文将保留在标准messages
文件中。在这个新文件中,为密钥和消息添加您的名称值对。
的方式播放处理的消息,是首先看在区域设置特定消息文件中的第一(所以对于英语这将是messages.en
,它不存在,以及用于法国这将是messages.fr
)。如果在特定于语言环境的消息文件中找不到消息,它将查看全局消息文件。所以你的全球messages
文件充当了所有。
然后,在你的代码,设置使用
Lang.change("fr"); // change language to French
请记住,这将保存在PLAY_LANG cookie中的特定用户的Cookie,所以检查这个cookie正在为您的特定用户的语言,为用户创建。
最后注意,请确保您的文件是UTF8编码的。如果不是,它会导致问题。
在我的特定情况下,我不得不
play.http.session.domain
设置为localhost
,而测试的其他东西。
我没有看到PLAY_LANG cookie, 这可能是问题的一部分... 这可能是什么原因? – bArmageddon 2011-06-11 09:07:39
不确定。您的浏览器是否禁用了Cookie?我刚刚运行了一个快速测试,并使用Firebug(在Chrome中),我可以在文档元素下看到cookie,并在其中看到PLAY_LANG = fr。你是以任何方式操纵曲奇吗? – Codemwnci 2011-06-11 09:13:31
我查过了,没有Cookie。 我找到了原因: – bArmageddon 2011-06-11 09:44:06