Localization Java JRE:如何向stantard JRE资源添加本地化资源
我需要JRE使用只有英文版本的JRE资源的翻译版本 根据ResourceBundle.java文档,很容易:添加具有正确语言环境后缀的本地化资源。例如,标准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 我的问题是:如何使
- XMLSchemaMessages.properties
- XMLSchemaMessages_FR.properties
--干杯假设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