我需要JRE才能使用仅以英语提供的JRE资源的翻译版本。
根据ResourceBundle.java文档,很容易:添加具有正确语言环境后缀的本地化资源。例如,标准
将成为翻译版本:
等等。
编辑:此特定文件存在于: COM \太阳\组织\阿帕奇\的xerces \内部\ IMPL \ MSG \ XMLSchemaMessages.properties
我的问题是:如何让这些额外资源对JRE可见?
提前致谢,任何帮助。 - 干杯
答案 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文件,而不是压缩。