2010-09-17 50 views
3

我们目前是i18n'g我们的平台。平台的代码库和构建在这个平台上的产品是巨大的,并且有许多硬编码的字符串(除了我们将标签外化的UI之外)。gettext(gettext-commons)或坚持java i18n

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

预先感谢您。

回答

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,否则您将不得不开放源代码。

+1

您需要GNU gettext才能开发,但不能运行它。这意味着你不需要开源你的应用程序。 – 2015-11-16 21:36:45