1

在我的实习中,我被要求对软件国际化以及当前的实践和解决方案进行一些研究。

我做了一些研究,并没有找到可行的解决方案。我的项目经理要求我在 stackoverflow 上提问,

为了使 Java 软件国际化,你们工作中的当前做法是什么?

编辑

以下是我的研究摘要,以防其他人对我的发现感兴趣:

由于该软件是用 Java 编写的,因此显然使用了 RessourceBundle。如果不存在针对当前语言环境的特定翻译,RessourceBundles 会提供良好的键值查找以及回退到默认值。ResourceBundles 也不仅限于文本翻译,还包括资源的国际化。例如,颜色或图像对于不同的文化意味着不同的事物。

虽然这一切都很好,但仅仅使用 Java PropertiesResourceBundles 无法为翻译器提供元数据并且无法处理复数形式。

GNU Gettext 采用另一种方法来实现国际化。消息以英文源代码编写,然后提取并存储到文件中。提取程序搜索函数调用并提取参数。例如,tr("Hello, World!") 命令行实用程序 xgettext 将搜索函数“tr”的出现并提取所有字符串文字。

存在 gettext 的 Java 实现,例如:

gettext 提供 ResourceBundles 不提供的是复数处理和翻译上下文。

4

2 回答 2

0

阅读这条线索,因为它应该可以回答您的大部分问题。

对于 Web 应用程序,我们使用 JavaEE 提供的标准工具。这实质上意味着将消息包传递到 JSF 页面,然后在页面中使用看起来像这样的标记#{msg.hello}。“msg”是消息包的名称,“hello”是用于查找已翻译字符串的键。

翻译都保存在具有标准化格式和命名约定的属性文件中。这个过程对客户端应用程序的工作方式几乎相同,尽管我觉得它不是那么顺利

据我了解,专业翻译人员拥有可以加载属性文件并协助他们进行翻译的软件。向您的属性文件添加注释很有用,因此翻译人员在翻译时有一些上下文。

于 2013-06-19T14:30:14.920 回答
0

除了其他答案,我建议使用一些可以分析/检查项目中所有本地化资源是否同步的技术/软件。
这通常应该在构建期间完成,这样您就可以更早地发现/捕获错误。

我个人使用并推荐的此类工具之一是i18n-maven-plugin

希望这可以帮助。

于 2015-08-07T10:36:25.590 回答