5

我正在尝试评估使用哪一个,因此将不胜感激做出此决定的其他人的任何反馈。似乎有两个大的翻译项目:

消息格式

http://messageformat.meteor.com/

优点

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

TAP i18n

https://github.com/TAPevents/

笔记:

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

优点

缺点?- 只有 JSON 格式,没有 yaml,编辑起来很乏味 - 没有用于管理字符串的 webUI

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

人们在选择正确的工具时还使用了哪些其他标准?messageFormat 与 i18next 的底层技术似乎是一个因素。

问题:

1)页面中的多种语言

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

点击:“仅通过网络发送当前客户语言所需的翻译”

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

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

  EN: {{tr "string", 'en'}}
  FR: {{tr "string", 'fr'}}

2)提取动态数据

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

感谢包创建者或该领域其他人提供的任何见解。

4

1 回答 1

3

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

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

在 MessageFormat 中,您不需要为每种语言都有特殊的助手。您只需在模板中为您的“基本”语言定义一次键和值——比如说英语。然后稍后您可以使用基于 Web 的 MessageFormat 翻译工具添加其他字符串,例如法语、西班牙语等。

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

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

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

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

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

我建议只是将它添加到您的项目中,或者将它与测试项目一起使用以获得一些经验,然后您可以决定您喜欢它的方式。只要确保您阅读了有关 mf_extract 的信息,否则您会被卡住。

于 2014-10-21T05:16:42.347 回答