2

我将我们的 Meteor 网站转换为支持两种语言,荷兰语和英语。为此,我为我们的模板(en 和 nl)创建了两个文件夹,并将所有内容连接到我们的模板系统,以便路由器根据您所在的站点正确地提供服务。主体模板是动态的:

Template.body.content = function() {
  var lang = Session.get("lang") == "en" ? "en_" : "";
  var page = Session.get("page") || "home";

  // if the template for the current language doesn't exist,
  // fall back to Dutch version or show a 404
  var template = Template[lang + page] || Template[page] || Template[lang + "error404"];

  return template();
}

一切都很好,除了我必须编写以下内容以向两种语言公开模板值:

Template.en_foo.bar = Template.foo.bar = function() {}

有关生产中使用的此代码的示例,请参阅我们的客户端博客代码

在实现多语言网站目标的同时,避免这种方法的优雅方法是什么?

4

3 回答 3

1

那这个呢:

  • 进行自定义订阅并将语言参数传递给自定义发布
  • 自定义发布功能仅返回选定的语言(如果内容不可用,您可以选择提供后备)
  • 仅对所有语言使用一个模板,其中填充了订阅中的正确语言
  • 对 UI 字符串使用 i18n 包
于 2013-04-17T01:44:25.157 回答
0

多语言应用程序已在Meteor 路线图上,但计划已久……

同时你可以使用这个大气的包

于 2013-04-10T21:17:13.567 回答
0

我强烈建议不要保留模板的翻译版本。除非您的网站很小。一开始可能看起来还不错,因为您只是复制它们并翻译内容。但是从那时起,您必须在任何更改时维护这两个版本,同时测试两个版本。然后有人会建议添加第三种语言和繁荣,对你的大脑造成三倍伤害。

我们使用meteor-messageformat进行翻译。它带有一个界面,无需查看模板代码即可创建翻译。任何人都可以翻译。

于 2015-03-26T11:02:34.700 回答