Internationalization Java Playframework国际化不';行不通

Internationalization Java Playframework国际化不';行不通,internationalization,playframework,Internationalization,Playframework,我使用了这里的说明: 并为不同语言创建文件 我调用play.i18n.Lang.change方法来更改语言文件, 它仍然从英文文件中提取标题(“消息”没有后缀) 你知道为什么吗?很难从你的描述中确切知道问题出在哪里,所以我已经概述了你应该如何做一个多语言应用程序 要实现国际化,您必须遵循许多步骤。首先,必须更改application.conf文件以声明支持的语言 所以,如果你支持英语和法语,你会这样做 application.langs=en,fr 然后必须为法语翻译创建名为messages

我使用了这里的说明:

并为不同语言创建文件

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


你知道为什么吗?

很难从你的描述中确切知道问题出在哪里,所以我已经概述了你应该如何做一个多语言应用程序

要实现国际化,您必须遵循许多步骤。首先,必须更改
application.conf
文件以声明支持的语言

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

application.langs=en,fr
然后必须为法语翻译创建名为
messages.fr
的语言文件。英语将只保留在标准的
消息
文件中。在此新文件中,为密钥和消息添加名称-值对

Play处理消息的方式是首先查看特定于语言环境的消息文件(因此,对于英语,它将是
messages.en
,而对于法语,它将是
messages.fr
)。如果在特定于语言环境的消息文件中找不到该消息,它将查看全局消息文件。因此,您的全局
消息
文件充当了“包罗万象”的角色

然后,在代码中,使用

Lang.change("fr"); // change language to French
请记住,这将在PLAY_LANG cookie中为特定用户保存cookie,因此请检查是否正在为该用户创建此cookie


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

很难从您的描述中确切知道问题可能是什么,因此我已经概述了您应该如何使用多语言应用程序

要实现国际化,您必须遵循许多步骤。首先,必须更改
application.conf
文件以声明支持的语言

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

application.langs=en,fr
然后必须为法语翻译创建名为
messages.fr
的语言文件。英语将只保留在标准的
消息
文件中。在此新文件中,为密钥和消息添加名称-值对

Play处理消息的方式是首先查看特定于语言环境的消息文件(因此,对于英语,它将是
messages.en
,而对于法语,它将是
messages.fr
)。如果在特定于语言环境的消息文件中找不到该消息,它将查看全局消息文件。因此,您的全局
消息
文件充当了“包罗万象”的角色

然后,在代码中,使用

Lang.change("fr"); // change language to French
请记住,这将在PLAY_LANG cookie中为特定用户保存cookie,因此请检查是否正在为该用户创建此cookie


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

在我的具体案例中,我

play.http.session.domain

在测试时设置为除本地主机之外的其他内容。

在我的特定情况下

play.http.session.domain

测试时设置为除本地主机之外的其他内容。

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