我想知道在快递中以相同布局实现相同内容的多个版本/语言的最佳方式是什么。
我应该这样做吗?
app.get("/", function(req, res) {
res.render(language + "/index");
});
还是有更聪明/更好的方法吗?
答案 0 :(得分:23)
我建议只保留一个模板,好像每个语言使用一个模板一样,它会很快失控,更不用说复制很多内容(以及你在模板中放入的少量“逻辑”) )。许多应用程序使用名为gettext的工具来执行国际化操作。在https://github.com/DanielBaulig/node-gettext
有一个node.js库或者也有i18n-node。它似乎与快递js有更多的整合。
答案 1 :(得分:6)
i18n-node是您应该使用的最简单,最好的模块。您可以直接在Javascript代码中使用,也可以使用带有快速js的Jade / Handlebar模板。
为什么要使用i18n?
en.json
内自动生成./locales/
。这可以作为主文件,供您开始构建新的翻译。__('Hello %s', 'Marcus')
返回Hallo Marcus
答案 2 :(得分:3)
我认为我们可以在lang文件夹中定义json对象,例如en.js,fr.js,这个json文件包含键值对,而不是根据用户的语言设置渲染到模板,lang设置可以是数据库中。
我们可以将这些fr.js或其他任何内容保存到res.locals中以调用每个模板。
这适合吗?