对于我的实习,我被要求对软件国际化以及当前的实践和解决方案进行一些研究。
我做了一些研究,但没有找到可行的解决方案。我的项目经理要求我在stackoverflow上询问,
您的工作目前有哪些做法可以使您的Java软件国际化?
修改
以下是我的研究摘要,以防任何其他人对我的研究结果感兴趣:
由于该软件是用Java编写的,因此显然使用了RessourceBundles。如果不存在当前语言环境的特定转换,则RessourceBundles提供良好的键值查找,并回退到默认值。 ResourceBundles也不仅限于文本翻译,还包括资源的国际化。例如,颜色或图像意味着不同文化的不同之处。
虽然一切都很好,但纯粹使用Java PropertiesResourceBundles无法为翻译者提供元数据,也无法处理复数形式。
GNU Gettext采用了国际化的替代方法。消息以英文源代码编写,然后提取并存储到文件中。提取程序搜索函数调用并提取参数。例如,tr(“Hello,World!”)命令行实用程序xgettext将搜索函数“tr”的出现并提取所有字符串文字。
存在gettext的Java实现,例如:
什么gettext提供的ResourceBundles不是复数处理和翻译上下文。
答案 0 :(得分:0)
请阅读此trail,因为它应该回答您的大部分问题。
对于Web应用程序,我们使用JavaEE提供的标准工具。这实际上意味着将消息包传递到JSF页面,然后在页面中使用类似于此#{msg.hello}
的标记。 “msg”是消息包的名称,“hello”是用于查找已翻译字符串的键。
翻译全部保存在具有标准化格式和命名约定的属性文件中。对于客户端应用程序,该过程的工作方式大致相同,尽管我觉得它并不是那么顺利
据我所知,专业翻译人员拥有可加载属性文件并协助他们制作翻译的软件。在属性文件中添加注释非常有用,因此翻译人员在翻译时会有一些上下文。
答案 1 :(得分:0)
除了其他答案,我建议使用一些技术/软件来分析/检查项目中的所有本地化资源是否同步。
这通常应该在构建期间完成,因此您可以更早地找到/捕获错误。
我个人使用并推荐的其中一种工具是i18n-maven-plugin
希望这有帮助。