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

标签 internationalization gettext

我们目前正在国际化我们的平台。平台的代码库和基于该平台构建的产品非常庞大,并且有许多硬编码字符串(除了我们将标签等外部化的 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/

相关文章:

internationalization - 是否有软件应用程序中常用字符串的公共(public)领域翻译集合?

ruby-on-rails - 词形变化 - 德国规则(Rails 或其他)

php - 更改 Woocommerce 购物车页面中的特定文本

dns - 如何使用 POEdit 从特定域获取(可翻译)字符串

java - WebDriver getText 抛出异常

java - 更改区域设置操作会导致 404

c# - 在运行时加载 "loose"本地化资源?

vue.js - Nuxt JS i18n/多语言与 headless CMS

localization - 如何为gettext .po文件创建标题?

python - 日期的默认格式