我将messages.en和messages.fi文件添加到conf文件夹(已删除的原始邮件文件)。然后我将En和Fi按钮与路由器调用一起添加,在我的控制器中调用Action。
public static Result change(String langCode) {
currentLanguage = langCode;
changeLang(langCode);
return GO_HOME;
}
我在scala视图文件中使用以下结构:@Messages(“color.explanation”)。 我还尝试在scala视图文件中导入国际化,如下所示:@ Messages.get(“color.explanation”)。
我添加了another stackoverflow article和another stackoverflow article中提到的环境变量。但这没有用。
通过点击除芬兰特殊字符之外的翻译工作完美。我得到“N ytet n”而不是“Näytetään”。可能是什么原因,你知道解决这个问题的方法吗?
答案 0 :(得分:4)
检查messages
文件的编码,即由于某种原因,Idea会最初使用messages.xy
编码创建iso-8859-1
文件 - 这可能是因为 标准Java API设计为使用ISO 8859-1编码作为属性文件 (IntelliJ docs)。
要切换到Idea中的utf-8
,首先需要Mark as Plain text
,请切换编码,最后再次Mark as properties
文件。
当然你很可能使用其他的IDE /文本编辑器,无论如何文件的编码是你需要检查的第一件事,我可以确保你支持完美的消息文件,即使是正确编码的中文也是如此。
答案 1 :(得分:0)
有两个原因可以立即浮现在脑海中:
您的消息文件设置不正确。我怀疑你有:
color.explanation=Näytetään
虽然你应该拥有的是
color.explanation=N\u00E4ytet\u00E4\u00E4n
不确定如何构建它,但Maven和Ant都可以自动将第一个表单转换为第二个表单。 Java对此有点奇怪,我不确定为什么,但这是你必须要做的。有关此主题的更多信息,请参阅this问题。
您可能无法正确设置Content-Type
标题。我期望的是这样的事情:
Content-Type:text/html; charset=utf-8
您可以使用Google Chrome的开发人员工具查看确切的回复内容。如果您没有发回正确的charset
,可能只是您的浏览器无法弄清楚如何显示该字符。我对Play Framework了解不多,所以如果这个 你的问题,我不知道如何解决它。
希望这会提供一些见解,至少可以消除一些可能性。