在我的项目中,我希望对现有的资源包进行编译时间检查。我已经有了一组*.properties
本地化文件,我将把它们连接到一些i18n
工具。我正在考虑常规ResourceBundles
,但我不喜欢这样的事实,即这种机制不保证任何类型的检查,无论是编译时还是维护检查,例如 - 查找重复项或查找未使用的密钥。
所以,我正在寻找一个库,它将获取我现有的*.properties
文件,并将它们转换为整洁干净的Java代码,我可以在我的项目中使用它。 < / p>
最好的结果是建立一个类似于GWT i18n支持的机制。一个干净的界面,将所有消息作为单独的方法。
我查看了jlibs和ForgeRock。我真的很喜欢jlibs,但它不是一个单独的lib,所以我很难想象为i18n引入如此巨大的lib依赖。 ForgeRock几乎完全符合我的要求,但它产生常量而不是干净的接口,就像jlibs一样。
This entry blog也有助于了解我想使用哪种方法。我对可用的i18n工具进行了大量的研究,我找不到那个最符合我需求的“那个”。
的问候。
答案 0 :(得分:1)
满足您的代码生成要求的另一个库将是i18n-binder。
就个人而言,我会从另一个角度处理这个问题,使用gettext框架,您可以在源代码中标记可翻译的字符串,并从中生成资源包。有工具和编辑器可以根据提取的字符串更新翻译,并检测不再使用或修改的字符串。
答案 1 :(得分:0)
我目前正在研究您正在寻找的那种库,check it out。它仍在进行中,但我应该很快就会发布我的第一个版本。
第一个版本将仅包含对基于注释的翻译的支持。但是,我对如何将现有项目迁移到c10n样式还没有任何想法。欢迎任何想法,建议!
答案 2 :(得分:0)
为了解决这个问题,我实现了一个Message Compiler,它创建了资源包文件和常量定义,作为来自一个源文件的密钥的Java枚举。因此常量可以在Java源代码中使用,这是一种更安全的方式。消息编译器不仅可以用于Java。它还为Objective-C或Swift创建资源文件和常量,并可以扩展到其他编程环境。
答案 3 :(得分:-1)
我喜欢JUnit。不完全是您正在寻找的,但通过创建测试,您可以确保de propertyfiles中的所有项目都可用。