Java JRE:如何将本地化资源添加到stantard JRE资源
我需要JRE来使用仅以英语提供的JRE资源的翻译版本。
根据ResourceBundle.java文档,它很容易:添加具有正确语言环境后缀的本地化资源。 例如,标准
- XMLSchemaMessages.properties
将成为翻译版本:
- XMLSchemaMessages_FR.properties
等等。
编辑:此特定文件位于:com \ sun \ org \ apache \ xerces \ internal \ impl \ msg \ XMLSchemaMessages.properties
我的问题是:如何让这些额外资源对JRE可见?
在此先感谢您的帮助。 – 欢呼
假设Xerces使用ResourceBundle来获取消息,您应该放入一个新文件
com\sun\org\apache\xerces\internal\impl\msg\XMLSchemaMessages.properties
locale是您需要的语言环境的正确标识符。
然后确定加载XMLSchemaMessages资源包的确切位置,并设置一个断点,以便单步执行JRE中的ResourceBundle加载过程(这里建议使用JDK,因此您有运行时的源代码),您可以看到是什么正在寻找。
注意:您正在处理特定于供应商的XML Parser,这意味着这将是Oracle特定的,甚至可能仅适用于某些Java版本。 考虑引入自己的validationXML Parser并将其本地化?
上面的答案花了我一点时间来解决问题。
为了让其他人更容易,如果您尝试使用带有Java内部Xerces解析器的XML模式解析XML文档,这里是我如何获取Locale特定错误消息的摘要:
以格式查找适当的属性文件
XMLSchemaMessages_.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文件,而不是压缩。