我是一个拥有 20 多名开发人员的团队的成员。每个开发人员都在一个单独的模块上工作(大约 10 个模块)。在每个模块中,我们可能至少有 50 个 CRUD 表单,这意味着我们目前有近 500 个添加按钮, 保存按钮, 编辑按钮, etc.
但是,因为我们想要全球化我们的应用程序,所以我们需要能够翻译应用程序中的文本。例如,到处都有这个词add应该成为ajouter对于法国用户。
到目前为止,我们所做的是,对于 UI 或表示层中的每个视图,我们都有一个键/值对翻译的字典。然后在渲染视图时,我们使用该字典翻译所需的文本和字符串。然而,通过这种方法,我们已经得到了接近 500 个add收录在500本词典中。这意味着我们违反了 DRY 原则。
另一方面,如果我们集中公共字符串,例如将add在一个地方,并要求开发人员在任何地方都使用它,我们会遇到不确定字符串是否已经在集中式字典中定义的问题。
另一种选择可能是没有翻译词典并使用在线翻译服务,例如谷歌翻译、必应翻译等。
我们遇到的另一个问题是,一些开发人员在按时交付项目的压力下记不清了翻译键。例如,对于添加按钮的文本,开发人员使用了add而另一个开发者已经使用了new, etc.
应用程序字符串资源全球化和本地化的最佳实践或最著名的方法是什么?
据我所知,有一个很好的图书馆叫做localeplanet
JavaScript 中的本地化和国际化。此外,我认为它是原生的,不依赖于其他库(例如 jQuery)
这是图书馆的网站:http://www.localeplanet.com/ http://www.localeplanet.com/
另外看看Mozilla的这篇文章,你可以找到非常好的客户端翻译方法和算法:http://blog.mozilla.org/webdev/2011/10/06/i18njs-internationalize-your-javascript-with-a-little-help-from-json-and-the-server/ http://blog.mozilla.org/webdev/2011/10/06/i18njs-internationalize-your-javascript-with-a-little-help-from-json-and-the-server/
所有这些文章/库的共同点是它们使用i18n
类和一个get
方法(在某些方面还定义了一个较小的函数名称,例如_
)用于检索/转换key
to the value
。在我的解释中key
表示您要翻译的字符串value
表示翻译后的字符串。
然后,你只需要一个JSON文档来存储key
's and value
's.
例如:
var _ = document.webL10n.get;
alert(_('test'));
这里是 JSON:
{ test: "blah blah" }
我相信使用当前流行的图书馆解决方案是一个好方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)