java - 国际化java软件

标签 java internationalization gettext po xliff

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

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

为了使 Java 软件国际化,你们工作人员目前采取了哪些做法?

编辑

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

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

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

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

存在 gettext 的 Java 实现,例如:

gettext 提供了 ResourceBundles 所没有的复数处理和翻译上下文。

最佳答案

阅读本文 trail因为它应该可以回答您的大部分问题。

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

翻译全部保存在具有标准化格式和命名约定的属性文件中。对于客户端应用程序,该过程的工作方式大致相同,尽管我不认为它那么顺利

据我了解,专业翻译人员拥有可以加载属性文件并协助他们进行翻译的软件。在属性文件中添加注释非常有用,这样翻译人员在翻译时就有了一些上下文。

关于java - 国际化java软件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17193826/

相关文章:

internationalization - 如何在Google Chrome扩展程序中更改语言环境?

java - JTextField getText() 在 init() 之后卡住

PHP gettext 不起作用

java - Spring Boot 管理 - 基本身份验证

java - Apache Wicket 口 : dynamic key for message with embedded HTML

java - 使用<include>标签时如何使用Onclick事件

ruby-on-rails - 如何将I18n语言环境词典从gem添加到Rails应用程序

lua - "no op"函数应该用 Lua 还是用 C 实现?

java - 如何编辑此方法以使用 Customer 数组?

java - 即时时间范围