Java 使用 GNU 的 Gettext 工具实现国际化

在 Java 中最常见的实现国际化(i18n)的方式应该是使用 .properties 资源文件。本文将使用另一种方式实现 Java 代码的国际化与本地化(l10n)。
Gettext 是一个可用于多种语言的国际化工具。相比于传统的 key – value 资源文件方式,其不同点有:

使用 properties 的传统方式 GNU gettext
key 是短文本 key 是纯文本形式的未翻译内容
翻译文件通常命名为 resources_locale.properties, 文件内容只能包含 ASCII 文本,非 ASCII 文字会被用 Unicode 编码代替 翻译文件通常命名为resources.local.po,文件内容可以使用任意编码可以包含任意字符
ResourceBundle.getString会在找不到翻译内容时抛出异常 gettext当找不到翻译内容时会返回 key.
不支持单复数及上下文翻译 支持单复数和上下文相关的翻译

继续阅读“Java 使用 GNU 的 Gettext 工具实现国际化”