gettext(gettext-commons)或坚持使用java i18n

时间:2010-09-17 18:00:51

标签: internationalization gettext

我们目前正在使用我们的平台。平台的代码库和在此平台上构建的产品非常庞大,并且具有许多硬编码字符串(除了我们将标签外部化的UI等)。

我需要一些关于使用gettext或Java i18n的建议。我对gettext的好处和理解只是有限的理解。除了Java i18n已经提供的内容之外,gettext将提供什么?

提前谢谢。

1 个答案:

答案 0 :(得分:4)

对我而言,主要原因(来自the Gettext Commons Tutorial)将是:

  

I18n还支持正确处理复数形式:

System.out.println(i18n.trn("Copied file.", "Copied files.", 1));
// will print "Copied file."

System.out.println(i18n.trn("Copied file.", "Copied files.", 4));
// will print "Copied files."

这个例子不是最好的。它应该说“支持正确处理目标语言中的复数 ”。那是因为有些语言可能有多个复数形式(实际上有很多这样的语言)。

此外,您将在源代码中集成一种后备语言(英语,我猜),这很好(我相信显示英文文本比使用密钥名称更好)。

我所关注的一个问题,但它可能无效:虽然Gettext Commons是根据Apache 2.0许可条款发布的,但它需要在系统上安装Gnu gettext,并且(如果我错了,请纠正我)是GPL许可(如果您碰巧运行Linux,则获得L-GPL许可)。如果我的假设是正确的,那么这意味着除非你的应用程序只是Linux,否则你必须开源它。