多语言快递应用

时间:2012-06-02 23:41:23

标签: node.js express pug

我想知道在快递中以相同布局实现相同内容的多个版本/语言的最佳方式是什么。

我应该这样做吗?

app.get("/", function(req, res) {
    res.render(language + "/index");
});

还是有更聪明/更好的方法吗?

3 个答案:

答案 0 :(得分:23)

我建议只保留一个模板,好像每个语言使用一个模板一样,它会很快失控,更不用说复制很多内容(以及你在模板中放入的少量“逻辑”) )。许多应用程序使用名为gettext的工具来执行国际化操作。在https://github.com/DanielBaulig/node-gettext

有一个node.js库

或者也有i18n-node。它似乎与快递js有更多的整合。

答案 1 :(得分:6)

i18n-node是您应该使用的最简单,最好的模块。您可以直接在Javascript代码中使用,也可以使用带有快速js的Jade / Handlebar模板。

为什么要使用i18n?

  • 根据您的设置,通过标题,Cookie或查询参数自动检测浏览器中的区域设置。
  • 它也带有例子。
  • 默认情况下会在en.json内自动生成./locales/。这可以作为主文件,供您开始构建新的翻译。
  • 支持单数和复数形式
  • 支持参数:__('Hello %s', 'Marcus')返回Hallo Marcus

答案 2 :(得分:3)

我认为我们可以在lang文件夹中定义json对象,例如en.js,fr.js,这个json文件包含键值对,而不是根据用户的语言设置渲染到模板,lang设置可以是数据库中。

我们可以将这些fr.js或其他任何内容保存到res.locals中以调用每个模板。

这适合吗?