我正在开发一个库(作为 JAR 文件部署),我在 install4j 项目中将其用作“自定义代码”。我想在该库内使用本地化消息,这些消息最好在库本身中定义,但应该在 install4j 项目定义中可覆盖。
这是我迄今为止尝试过的: 我将
Context
对象作为参数传递给库中的相关函数,并使用 context.getMessage("my-message-key")
检索给定键的翻译。另外,我将包含密钥 (messages_en.utf8
) 的本地化文件添加到库打包 JAR 中的 messages
文件夹中。
然后我将该 JAR 添加到 install4j 中的“自定义代码”部分。
最终,这导致了
MissingResourceException
:
java.util.MissingResourceException: Can't find resource for bundle com.install4j.runtime.util.FileResourceBundle, key my-message-key
当我将完全相同的 JAR 文件作为“扩展”添加到 install4j 安装目录内的
extensions
目录时,消息密钥被正确拾取,并且代码正常运行,没有任何异常。
然而,按照这种方法,我必须将 JAR 添加到我们团队内的每个 install4j 安装中,并调整构建服务器上的安装 - 并在每次更新库时重做。
因此,我更喜欢一个可以将其用作“自定义代码”的解决方案。 我的方法有什么问题吗?
从 11.0.1 开始,install4j 中的 i18n 系统不支持此功能,但你是对的,它应该像那样工作。
请通过 [电子邮件受保护] 与我联系,我将向您发送一个版本,您可以在其中尝试一下。