Play Framework 2.1.2国际化不适用于芬兰字符

时间:2014-03-03 22:07:33

标签: java scala playframework internationalization playframework-2.1

我将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 articleanother stackoverflow article中提到的环境变量。但这没有用。

通过点击除芬兰特殊字符之外的翻译工作完美。我得到“N ytet n”而不是“Näytetään”。可能是什么原因,你知道解决这个问题的方法吗?

2 个答案:

答案 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)

有两个原因可以立即浮现在脑海中:

  1. 您的消息文件设置不正确。我怀疑你有:

    color.explanation=Näytetään
    

    虽然你应该拥有的是

    color.explanation=N\u00E4ytet\u00E4\u00E4n
    

    不确定如何构建它,但Maven和Ant都可以自动将第一个表单转换为第二个表单。 Java对此有点奇怪,我不确定为什么,但这是你必须要做的。有关此主题的更多信息,请参阅this问题。

  2. 您可能无法正确设置Content-Type标题。我期望的是这样的事情:

    Content-Type:text/html; charset=utf-8
    

    您可以使用Google Chrome的开发人员工具查看确切的回复内容。如果您没有发回正确的charset,可能只是您的浏览器无法弄清楚如何显示该字符。我对Play Framework了解不多,所以如果这个 你的问题,我不知道如何解决它。

  3. 希望这会提供一些见解,至少可以消除一些可能性。