流星定位/ i18n libs比较

dcs*_*san 5 javascript internationalization messageformat meteor i18next

我正在尝试评估哪一个使用,所以会感谢做出这个决定的其他人的任何反馈.似乎有两个大的翻译项目:

的MessageFormat

http://messageformat.meteor.com/

PROS

  • 基于MessageFormat.js的实体库
  • 包括提取工具
  • 如果在应用程序中更新字符串,则处理模糊字符串和版本
  • javascript和把手方法
  • 用于字符串翻译的预建翻译工具/ webUI http://messageformat.meteor.com/translate/af
  • 由流星大师活跃的社区人Gadi撰写

TAP i18n

https://github.com/TAPevents/

笔记:

  • 基于i18next引擎
  • 使用AJAX加载语言

PROS

利弊? - 只有JSON格式,没有yaml,编辑非常繁琐 - 没有用于管理字符串的webUI

还有一些其他项目,如https://github.com/Nemo64/meteor-translator, 但上面两个似乎是最彻底的.我错过了其他人吗?

选择合适的工具时人们会使用哪些其他标准?messageFormat与i18next的基础技术似乎是一个因素.

问题:

1)页面中有多种语言

我正在尝试做一个双语应用程序但是:

点击:"只通过网络发送当前客户端语言所需的翻译"

这是否意味着语言只能是A或B,而不是混合,基于会话自动切换?

即如何在页面中提供助手以进行多次翻译

  EN: {{tr "string", 'en'}}
  FR: {{tr "string", 'fr'}}
Run Code Online (Sandbox Code Playgroud)

2)提取动态数据

至少messageFormat项目将捕获/提取静态页面中的字符串,但如果我已经在复杂的mongo集合中有很多内容,有没有办法捕获它?

感谢包装创作者或该领域其他人的任何见解.

Max*_*ges 3

听起来你已经下定决心了。;)

如何在页面中提供帮助程序以进行多种翻译

在 MessageFormat 中,您不需要为每种语言提供特殊的帮助程序。您只需在模板中为“基本”语言(假设是英语)定义一次键和值。然后,您可以使用基于 Web 的 MessageFormat 翻译工具添加其他字符串,例如法语、西班牙语等。

要选择语言,您只需设置区域设置,这样您就可以在客户端中添加一个下拉菜单,以便您的用户可以完成此操作。

请参阅 SetLocale: http: //messageformat.meteor.com/docs#methods

如果我在复杂的 mongo 集合中已经有很多内容,有没有办法捕获它?

我真的需要了解有关您的应用程序的更多详细信息,以回答您如何能够做到这一点。MessageFormat 只是创建一个函数的 messageformat.js 文件,因此您可以直接修改该文件,但下次运行 mf_extract 时它会被覆盖。所以我认为你真的只需要获取应用程序中定义的名称-值对,即 {{mf 'admin.dashboard.title' 'Dashboard'}}。但是,如果您有某种方法将当前的“内容”映射到这些我的键,您也许可以将该内容加载到 mfstrings 集合中,或者编写代码将它们拉入 mfAll.js 中。。。

我们在所有 Meteor 应用程序中使用 MessageFormat,并且非常喜欢它。我没有使用 TAP i18n 的经验,但 MessageFormat 似乎可以很好地满足我们的需求(我们正在做日语、英语、中文)。

我建议将其添加到您的项目中,或者将其与测试项目一起使用以获得一些经验,然后您可以决定您喜欢它的方式。只需确保您阅读了有关 mf_extract 的内容,否则您会陷入困境。