在我的实习中,我被要求对软件国际化以及当前的实践和解决方案进行一些研究。
我做了一些研究,并没有找到可行的解决方案。我的项目经理要求我在 stackoverflow 上提问,
为了使 Java 软件国际化,你们工作中的当前做法是什么?
编辑
以下是我的研究摘要,以防其他人对我的发现感兴趣:
由于该软件是用 Java 编写的,因此显然使用了 RessourceBundle。如果不存在针对当前语言环境的特定翻译,RessourceBundles 会提供良好的键值查找以及回退到默认值。ResourceBundles 也不仅限于文本翻译,还包括资源的国际化。例如,颜色或图像对于不同的文化意味着不同的事物。
虽然这一切都很好,但仅仅使用 Java PropertiesResourceBundles 无法为翻译器提供元数据并且无法处理复数形式。
GNU Gettext 采用另一种方法来实现国际化。消息以英文源代码编写,然后提取并存储到文件中。提取程序搜索函数调用并提取参数。例如,tr("Hello, World!") 命令行实用程序 xgettext 将搜索函数“tr”的出现并提取所有字符串文字。
存在 gettext 的 Java 实现,例如:
gettext 提供 ResourceBundles 不提供的是复数处理和翻译上下文。