Localization Java JRE:如何向stantard JRE资源添加本地化资源

Localization Java JRE:如何向stantard JRE资源添加本地化资源,localization,properties,java,Localization,Properties,Java,我需要JRE使用只有英文版本的JRE资源的翻译版本 根据ResourceBundle.java文档,很容易:添加具有正确语言环境后缀的本地化资源。例如,标准 XMLSchemaMessages.properties 将成为翻译版本: XMLSchemaMessages_FR.properties 等等 编辑:此特定文件位于: com\sun\org\apache\xerces\internal\impl\msg\XMLSchemaMessages.properties 我的问题是:如何使

我需要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<locale>.properties 
com\sun\org\apache\xerces\internal\impl\msg\XMLSchemaMessages.properties
其中locale是所需区域设置的正确标识符

然后确定XMLSchemaMessages资源包加载的确切位置,并设置一个断点,以便您在JRE中单步完成ResourceBundle加载过程(此处建议使用JDK,这样您就有了运行时的源代码),并且您可以看到正在搜索的内容


注意:这里处理的是特定于供应商的XML解析器,这意味着它将是特定于Oracle的,甚至可能只适用于某些Java版本。考虑引入您自己的验证XML解析器并对其进行本地化吗?

以上答案花了我一点时间才得出

为了让其他人更容易理解,以下是我的总结:如果您尝试使用Java内部Xerces解析器使用XML模式解析XML文档,如何显示特定于语言环境的错误消息:

在以下格式中查找适当的属性文件:

XMLSchemaMessages_<lower_case_language_code>.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(我使用的是Windows7)


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

您需要本地化的具体内容是什么?确切地说是com\sun\org\apache\xerces\internal\impl\msg\XMLSchemaMessages.properties请注意,
\u FR
是无效的区域设置标识符。它应该是
\u fr
(适用于一般法语,不考虑国家)或
\u fr\u fr
(适用于法国国家的法语)。至于具体的问题:好吧,也许把它放到运行时类路径中?本地化JAXP消息从未困扰过我,所以我不知道确切的答案,但事实是,
ResourceBundle
从运行时类路径读取它们。你只需要确保它在那里。好了,终于让它工作了,非常简单:只需将带有适当“\u fr”后缀的本地化资源放到jre/lib/ext目录中。问题是它们的格式是“.jar”(而不是“.class”)。这是我找到资源对多个Tomcat Web应用可见的唯一方法。
C:\Program Files\Java\jdk1.7.0_04\jre\lib\ext