Java JRE:如何将本地化资源添加到标准 JRE 资源

问题描述 投票:0回答:3

我需要 JRE 来使用仅提供英文版本的 JRE 资源的翻译版本。

根据 ResourceBundle.java 文档,这很简单:添加具有正确区域设置后缀的本地化资源。例如,标准

  • XMLSchemaMessages.properties

将成为翻译版本:

  • XMLSchemaMessages_FR.properties

等等。

编辑:这个特定文件位于: com\sun\org pache\xerces\internal\impl\msg\XMLSchemaMessages.properties

我的问题是:如何使这些额外资源对 JRE 可见?

提前感谢您的帮助。 ——干杯

localization properties java
3个回答
2
投票
假设 Xerces 使用 ResourceBundle 来获取消息,您应该在

中放入一个新文件

com\sun\org\apache\xerces\internal\impl\msg\XMLSchemaMessages<locale>.properties

其中 locale 是您需要的区域设置的正确标识符。

然后查明 XMLSchemaMessages 资源包加载的确切位置,并设置一个断点,以便您单步执行 JRE 中的 ResourceBundle 加载过程(这里建议使用 JDK,以便您有运行时的源代码),您可以看到什么正在寻找中。

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


2
投票
上面的答案花了我一些时间才弄清楚。

为了让其他人更容易理解,以下是我在尝试使用 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 文件,而不是压缩。


0
投票
对于下一代,我的解决方案 - 添加对 pom“xercesImpl”的依赖项(在

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
仅此而已,应该可以工作。

© www.soinside.com 2019 - 2024. All rights reserved.