Java JRE:如何将本地化资源添加到标准JRE资源

时间:2011-07-27 16:43:17

标签: localization properties java

我需要JRE才能使用仅以英语提供的JRE资源的翻译版本。

根据ResourceBundle.java文档,很容易:添加具有正确语言环境后缀的本地化资源。例如,标准

  • XMLSchemaMessages.properties

将成为翻译版本:

  • XMLSchemaMessages_FR.properties

等等。

编辑:此特定文件存在于:     COM \太阳\组织\阿帕奇\的xerces \内部\ IMPL \ MSG \ XMLSchemaMessages.properties

我的问题是:如何让这些额外资源对JRE可见?

提前致谢,任何帮助。 - 干杯

2 个答案:

答案 0 :(得分:2)

假设Xerces使用ResourceBundle来获取消息,您应该在

中放入一个新文件
com\sun\org\apache\xerces\internal\impl\msg\XMLSchemaMessages<locale>.properties 

其中locale是您需要的语言环境的正确标识符。

然后确定加载XMLSchemaMessages资源包的确切位置,并设置一个断点,以便单步执行JRE中的ResourceBundle加载过程(这里建议使用JDK,因此您拥有运行时的源代码)并且您可以看看有什么搜索。

注意:您正在处理特定于供应商的XML Parser,这意味着这将是Oracle特定的,甚至可能仅适用于某些Java版本。考虑引入自己的验证XML Parser并将其本地化?

答案 1 :(得分:2)

上述答案花了我一点时间来解决问题。

为了让其他人更容易,如果你尝试使用带有Java内部Xerces解析器的XML模式解析XML文档,这里是我如何获取Locale特定错误消息的摘要:

格式查找适当的属性文件
XMLSchemaMessages_<lower_case_language_code>.properties

对于意大利语,我在以下网站上找到了XMLSchemaMessages_it.properties(可能是旧版本,但它对我有用)

http://grepcode.com/file/repo1.maven.org/maven2/com.sun.xml.parsers/jaxp-ri/1.4.5/com/sun/org/apache/xerces/internal/impl/msg/XMLSchemaMessages_it.properties

然后我在临时目录中创建了一个目录结构来保存新文件

com\sun\org\apache\xerces\internal\impl\msg

由于jar文件和zip文件共享相同的格式(我很懒,今天我使用的是Windows),然后我压缩了上面的com目录,创建了一个名为com.zip的文件。然后我更改了文件的名称

rename com.zip to XMLSchemaMessages_Locale.jar

然后将新的jar文件移动到

C:\Program Files\Java\jdk1.7.0_04\jre\lib\ext

当然,上述路径取决于您的平台和特定版本的Java(我使用的是Windows 7)。

如果你有JDK,你可以使用命令行 jar 命令从Unix,Linux或Windows轻松构建jar文件,而不是压缩。