Grails也使用Java Properties文件。
我可以使用Google翻译对我的message.properties文件进行初始翻译,甚至可以使用中文等语言。当我在Netbeans或notepad ++中查看时,我可以在新的messages_zh_CN.properties文件中看到实际的中文字符。
但是一旦文件进入svn,当它被签出时,中文字符就不再可见了。您只能看到ISO 8859-1编码。例如:
default.paginate.prev =\u4e0a\u4e00\u9875
default.paginate.next =\u4e0b\u4e00\u6b65
default.boolean.true =\u771f
default.boolean.false =\u5047
一旦应用程序运行,它仍然有效。谷歌翻译是翻译的一个很好的捷径。但在此之后,需要将属性文件发送给母语人士进行编辑。
那么如何才能将ISO 8859-1中的属性文件恢复为人类可读?像这样:
default.paginate.prev =上一页
default.paginate.next =下一步
default.boolean.true =真
default.boolean.false =假
答案 0 :(得分:1)
对于Eclipse,有一个'Property Editor'插件 - > http://propedit.sourceforge.jp/index_en.html
它完全符合您的要求,在幕后进行unicode-to-glyph-and-back翻译。
答案 1 :(得分:1)
我认为您的诊断错误。
\ uXXXX语法是属性感知编辑器使用的语法,用于保存非ASCII序列,使其在编码方案和平台之间保持稳健,我认为这就是这里发生的事情。
请回溯您的步骤以查看哪个编辑器在此表单中保存,然后继续使用此编辑器(和其他\ uXXXX识别的编辑器)或远离它。您可能希望告诉您的母语翻译人员使用您选择的相同编辑器。
答案 2 :(得分:1)
我会选择ThorbjørnRavnAndersen 的答案: .properties 文件已在专门的编辑器中编辑,该编辑器以ASCII符号自动保存Unicode字符(为\ uXXXX)。
Alexander Pogrebnyak 提到了这样一个编辑器,它们在“Java世界”中很常见。
mfloryan 提到了native2ascii
工具(JDK附带的工具),它在幕后进行转换。
现在有一些背景知识:
Java 的i18n机制主要基于PropertyResourceBundle
类,ApiDoc表示:
构建PropertyResourceBundle 来自InputStream的实例需要 输入流被编码 ISO-8859-1。在那种情况下,人物 无法表现的 必须使用ISO-8859-1编码 由Unicode Escapes代表
因此,作为一种解决方法(!),在Java世界中,您可以使用JDK的native2ascii
来转换 .properties 文件,或者使用专门的编辑器保存“Unicode Escapes”但允许您编辑实际的Unicode字符。
相比之下,在 Spring 框架中,默认情况下,i18n机制基于Spring的ResourceBundleMessageSource
类,它完全支持Unicode。 Grails 'i18n机制是基于Spring的。
Grails默认设置grails.enable.native2ascii = true
旨在启用混合的Spring / Grails和Java环境。 - 如果您不使用Java自己的native2ascii
,并且如果您不使用,则既不需要ResourceBundle.getBundle("foo").getKey("bar")
工具也不需要特殊的 .properties 文件编辑器。经典Java“JSTL或JSF标签。
使用Grails和Spring,您可以按原样使用Unicode .properties 文件。
答案 3 :(得分:0)
我与SVN无关 - 我不认为。 Grails中有一个配置选项可以指示此行为。在Config.groovy
文件中,您将找到以下行:
// enabled native2ascii conversion of i18n properties files
grails.enable.native2ascii = true
这意味着,native2ascii
命令应用于属性文件并将其转换为unicode表示法。如果要保留原始本地语言字符集,可以将此选项设置为false
。您也可以使用native2ascii -reverse
命令反转文件。