【问题标题】:IntelliJ and internationalisation: accented charactersIntelliJ 和国际化:重音字符
【发布时间】:2010-05-14 07:15:46
【问题描述】:

我有一个使用标准 Java 国际化服务的具有英语和法语 GUI 的 java 应用程序。我在一台旧机器上用 JBuilder 2005 编写它,最近升级了,这意味着要更改 IDE。我终于选择了 IntelliJ。

但是,它似乎无法处理包含法语的 ListResourceBundle 后代中的重音字符。当我第一次创建 IntelliJ 项目并添加我的源代码时(我是手动完成的,以确保幕后没有发生任何奇怪的事情),我注意到所有重音字符都已更改为成对的字符,例如 √©。我检查了代码并纠正了所有这些问题,并认为问题已解决。

但是我在运行(重建的)项目时发现仍然显示成对的字符,而不是我在代码中看到的重音字符!

在 IntelliJ 中做过国际化的人可以告诉我我需要做什么来解决这个问题吗?

PS:我在 Mac 上。

【问题讨论】:

  • +1 表示对 IntelliJ IDE 的喜爱。如果不是那个 IDE,我早就从 Java 切换到另一种语言了 ;)
  • 当我看到他们时,我就叫他们! :-) 老实说,我在 NetBeans 的缺点中生活得相当舒适……直到它在编译后开始随机删除 .class 文件。看来,所有论坛都可以说这是一个已知的间歇性错误……而且没有一种解决方法对我有用。我真的很高兴;它把我带到了 IntelliJ,它到目前为止几乎没有缺点! :-)

标签: java internationalization intellij-idea


【解决方案1】:

两件事--

首先,确保您的文件以 UTF 格式存储,并且您的源代码管理支持该编码。

其次,考虑使用 IntelliJ http://www.jetbrains.com/idea/features/i18n_support.html 内置的资源包编辑支持

【讨论】:

  • 哇,我刚刚看了一下 IntelliJ 中的 I18n 支持!完全爱上这款产品的另一个原因。非常感谢。
  • 另外,我不知道该怎么做你在第一句话中的建议。能具体一点吗?
  • 抱歉,我回复的时候困了。查看 [jetbrains.dzone.com/articles/new-approach-encoding] 设置文件编码。我希望传达的建议是在您的项目中对文件编码非常慎重。您可以选择使用 1521 并对所有内容使用转义,或者使用 UTF8 并将实际字符嵌入代码中。正如@openCage 所指出的,属性文件仍将被锁定为仅 ascii,但对于 i18n,我的经验是测试用例,然后一些代码总是开始需要使用非 ascii 字符。
  • WRT 源代码控制,当某些源代码控制系统期望文本文件编码不支持您在不转义的情况下编写的所有字符时,它们会出现错误。差异和合并等有问题。如果您的团队完全位于美国,那么 1521 不是一个糟糕的选择。如果您的地理位置分散,UTF 是您的最佳选择。
  • 谢谢...对不起,我回复的时候也困了!我应该提到,目前我没有任何源代码控制。这并不像看起来那么令人震惊——我是唯一的开发人员。在我的愿望清单上设置一天 :-) 当我这样做时,我会记住你的 cmets。顺便说一句,我今晚开始工作,设置文件编码,每个人都很高兴。我选择了 UTF8,以便我可以看到文件中的实际文本。这样感觉好多了。进入下一个问题! :-) 周末愉快
【解决方案2】:

Java 资源包应该只包含 ascii 和 Unicode 转义码 见 [http://java.sun.com/developer/technicalArticles/Intl/ResourceBundles/].

例如\u00d6ffnen 表示德语 Öffnen。

命令行工具 native2ascii 将您的原生格式转换为 ascii 和 unicode 转义码。这有点麻烦,但不是 Intellij,而是 Java 问题。

注意:我在 Mac 上使用 Intellij 创建英语、德语和日语本地化的程序。

【讨论】:

  • 谢谢...我试过了,现在文件中没有 é 我有 "\u221a\u00a9",但是当我运行程序时,我仍然得到 √© !!!帮忙??
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-29
  • 1970-01-01
  • 2013-10-10
  • 1970-01-01
  • 2012-10-10
  • 2011-02-11
相关资源
最近更新 更多