25

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

我应该这样做吗?

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

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

4

3 回答 3

32

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

或者还有i18n-node。它似乎与 express js 有更多的集成。

于 2012-06-02T23:50:02.950 回答
13

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

为什么要使用 i18n?

  • 根据您的设置,通过标头、cookie 或查询参数从浏览器自动检测区域设置。
  • 它也带有示例。
  • en.json它默认在里面自动生成一个./locales/. 这充当您开始构建新翻译的主文件。
  • 支持单数和复数形式
  • 支持参数:__('Hello %s', 'Marcus')返回Hallo Marcus
于 2016-08-17T19:09:15.777 回答
6

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

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

这合适吗?

于 2015-08-11T17:51:21.363 回答