从i18n资源包中生成干净代码的任何库?

时间:2012-03-26 07:59:58

标签: java internationalization

在我的项目中,我希望对现有的资源包进行编译时间检查。我已经有了一组*.properties本地化文件,我将把它们连接到一些i18n工具。我正在考虑常规ResourceBundles,但我不喜欢这样的事实,即这种机制不保证任何类型的检查,无论是编译时还是维护检查,例如 - 查找重复项或查找未使用的密钥。

所以,我正在寻找一个库,它将获取我现有的*.properties文件,并将它们转换为整洁干净的Java代码,我可以在我的项目中使用它。 < / p>

最好的结果是建立一个类似于GWT i18n支持的机制。一个干净的界面,将所有消息作为单独的方法。

我查看了jlibsForgeRock。我真的很喜欢jlibs,但它不是一个单独的lib,所以我很难想象为i18n引入如此巨大的lib依赖。 ForgeRock几乎完全符合我的要求,但它产生常量而不是干净的接口,就像jlibs一样。

This entry blog也有助于了解我想使用哪种方法。我对可用的i18n工具进行了大量的研究,我找不到那个最符合我需求的“那个”。

的问候。

4 个答案:

答案 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中的所有项目都可用。