我转换our Meteor site以支持两种语言,荷兰语和英语。为此,我为我们的模板(en和nl)创建了两个文件夹,并将所有内容连接到我们的模板系统,以便路由器根据您所在的站点正确提供服务。 main body template是动态的:
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() {}
有关生产中使用的此代码的示例,请参阅our client-side blog code。
在完成多语言网站目标的同时避免这种方法的优雅方法是什么?
答案 0 :(得分:1)
这个怎么样:
答案 1 :(得分:0)
多语言应用程序位于Meteor roadmap,但计划很长时间......
同时您可以使用此atmosphere package。
答案 2 :(得分:0)
我建议大力反对保留模板的翻译版本。除非您的网站很小。一开始可能看起来不那么糟糕,因为你只是复制它们并翻译内容。但从那时起,你必须在任何变化上维护这两个版本,测试两者。然后有人会建议在你的大脑中加入第三语言和繁荣,三重伤害。
我们正在使用meteor-messageformat进行翻译。它带有一个界面,允许创建翻译而无需查看模板代码。任何人都可以翻译。