繁体   English   中英

如何使Java属性文件易于阅读

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM