我们目前正在国际化我们的平台。平台的代码库和基于该平台构建的产品非常庞大,并且有许多硬编码字符串(除了我们将标签等外部化的 UI)。
我需要一些关于使用 gettext 或 Java i18n 的建议。我对 gettext 的好处和理解只有有限的了解。除了 Java i18n 已经提供的内容之外,gettext 还提供什么?
提前谢谢你。
最佳答案
对我来说,主要原因(来自 the Gettext Commons Tutorial )是:
I18n also supports proper handling of plurals:
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,否则您必须将其开源。
关于internationalization - gettext (gettext-commons) 或坚持使用 java i18n,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3737765/