我需要 JRE 来使用仅提供英文版本的 JRE 资源的翻译版本。
根据 ResourceBundle.java 文档,这很简单:添加具有正确区域设置后缀的本地化资源。例如,标准
将成为翻译版本:
等等。
编辑:这个特定文件位于: com\sun\org pache\xerces\internal\impl\msg\XMLSchemaMessages.properties
我的问题是:如何使这些额外资源对 JRE 可见?
提前感谢您的帮助。 ——干杯
中放入一个新文件
com\sun\org\apache\xerces\internal\impl\msg\XMLSchemaMessages<locale>.properties
其中 locale 是您需要的区域设置的正确标识符。
然后查明 XMLSchemaMessages 资源包加载的确切位置,并设置一个断点,以便您单步执行 JRE 中的 ResourceBundle 加载过程(这里建议使用 JDK,以便您有运行时的源代码),您可以看到什么正在寻找中。
注意:您在这里处理的是供应商特定的 XML 解析器,这意味着这将是 Oracle 特定的,甚至可能只适用于某些 Java 版本。考虑引入您自己的验证 XML 解析器并将其本地化吗?
为了让其他人更容易理解,以下是我在尝试使用 XML 模式和 Java 内部 Xerces 解析器来解析 XML 文档时如何显示区域设置特定错误消息的总结:
找到格式合适的属性文件
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,您可以在 Unix、Linux 或 Windows 中使用命令行
jar 命令轻松构建 jar 文件,而不是压缩。
https://mvnrepository.com/artifact/xerces/xercesImpl 上查看最新版本):
<dependency>
<groupId>xerces</groupId>
<artifactId>xercesImpl</artifactId>
<version>2.12.2</version>
</dependency>
这将导致在项目的类路径中搜索 XMLSchemaMessages_.properties 文件。如果您的项目使用此库的外部源,例如它在 Wildfly 上运行,然后在不将库添加到项目的情况下,将在项目外部的 Wildfly 命名空间中搜索文件。放置文件
XMLSchemaMessages_<lower_case_language_code>.properties
在目录中
src/main/resources/org/apache/xerces/impl/msg
仅此而已,应该可以工作。