在我的实习中,我被要求做一些关于软件国际化以及当前实践和解决方案的研究。
我做了一些研究,但没有找到可行的解决办法。我的项目经理要求我询问堆叠溢出,
为了使Java软件国际化,你们现在的工作实践是什么?
编辑
以下是我的研究总结,以防其他人对我的发现感兴趣:
由于软件是用Java编写的,因此显然使用了RessourceBundles。如果不存在当前区域设置的特定转换,RessourceBundles将提供良好的键值查找,并返回到默认值。ResourceBundles也不局限于文本的翻译,而是资源的国际化。例如,颜色或图像对于不同的文化意味着不同的东西。
虽然所有这些都很好,但是仅仅使用Java并不能为转换器提供元数据,也不能处理多个表单。
Gettext是国际化的另一种方式。消息以英文编写源代码,然后解压缩并存储到文件中。提取程序搜索函数调用并提取参数。例如,tr(“你好,世界!”)命令行实用工具xgettext将搜索函数"tr“的出现,并提取所有字符串文本。
存在gettext的Java实现,如:
gettext提供的ResourceBundles并不是用于翻译的复数处理和上下文。
发布于 2013-06-19 14:30:14
读一读这个小径,因为它应该回答你的大部分问题。
对于web应用程序,我们使用JavaEE提供的标准工具。这实际上意味着将消息包传递到JSF页面,然后使用与页面中的#{msg.hello}类似的标记。"msg“是消息包的名称,"hello”是查找已翻译字符串的键。
翻译都保存在具有标准化格式和命名约定的属性文件中。这个过程对客户端应用程序的工作方式也是一样的,尽管我觉得它不那么顺利
据我所知,专业的翻译人员有软件来加载属性文件,并帮助他们制作翻译。向属性文件添加注释非常有用,因此翻译程序在翻译时有一些上下文。
发布于 2015-08-07 10:36:25
除了其他答案之外,我建议使用一些技术/软件来分析/检查项目中的所有本地化资源是否同步。
这通常应该在构建时完成,这样您就可以更早地发现/捕获错误。
我个人使用并推荐的工具之一是I18n-maven插件
希望这能有所帮助。
https://stackoverflow.com/questions/17193826
复制相似问题