[英]How to keep Java properties files human readable
Grails也使用Java属性文件。
我可以使用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
应用运行后,它仍然可以正常工作。 Google翻译是翻译的捷径。 但是之后,需要将属性文件发送给母语人士进行编辑。
那么,如何才能使ISO 8859-1中的属性文件恢复为人类可读? 像这样:
default.paginate.prev =上一页
default.paginate.next =下一步
default.boolean.true =真
default.boolean.false =假
对于Eclipse,有一个“属性编辑器”插件-> http://propedit.sourceforge.jp/index_en.html
它可以在后台执行unicode到字形和返回的翻译,从而完全满足您的需求。
我认为您的诊断是错误的。
属性感知编辑器使用\\ uXXXX语法来保存非ASCII序列,以使其在各种编码方案和平台上都很健壮,而我认为这就是在这里发生的事情。
请追溯您的步骤以查看哪个编辑器保存在此表单中,然后继续使用该编辑器(和其他\\ uXXXX识别的编辑器)或远离它。 您可能想告诉以英语为母语的翻译使用与您选择相同的编辑器。
我会去找ThorbjørnRavn Andersen的答案: .properties文件已在专门的编辑器中进行了编辑,该编辑器会自动以ASCII表示法(\\ uXXXX)保存Unicode字符。
Alexander Pogrebnyak提到了这样的编辑器,它们在“ Java世界”中很常见。
mfloryan提到了native2ascii
工具(JDK附带),该工具在后台进行转换。
现在了解所有这些背景:
Java的i18n机制主要基于PropertyResourceBundle
类, ApiDoc指出:
从InputStream构造PropertyResourceBundle实例要求输入流以ISO-8859-1进行编码。 在这种情况下,无法用ISO-8859-1编码表示的字符必须用Unicode转义符表示。
因此,作为一种解决方法(!),在Java世界中,您可以使用JDK的native2ascii
转换.properties文件,或者使用专门的编辑器来保存“ Unicode Escapes”,但允许您编辑实际的Unicode字符。 。
相反,在Spring框架中,默认情况下,i18n机制基于Spring的ResourceBundleMessageSource
类,该类完全启用Unicode。 Grails的i18n机制是基于Spring的。
Grails默认设置grails.enable.native2ascii = true
意味着启用混合的Spring / Grails和Java环境。 -如果您不使用Java自己的ResourceBundle.getBundle("foo").getKey("bar")
,并且不使用“ classic ResourceBundle.getBundle("foo").getKey("bar")
,则不需要native2ascii
工具或特殊的.properties文件编辑器Java” JSTL或JSF标签。
使用Grails和Spring,您可以照原样使用Unicode .properties文件。
我与SVN无关-我认为。 Grails中有一个配置选项指示这种行为。 在Config.groovy
文件中,您将找到以下行:
// enabled native2ascii conversion of i18n properties files
grails.enable.native2ascii = true
这意味着, native2ascii
命令将应用于属性文件,并将其转换为unicode表示法。 如果要保留原始的本地字符集,可以将此选项设置为false
。 您也可以始终使用native2ascii -reverse
命令来反转文件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.