多语言快递应用

bus*_*ens 18 node.js express pug

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

我应该这样做吗?

app.get("/", function(req, res) {
    res.render(language + "/index");
});
Run Code Online (Sandbox Code Playgroud)

还是有更智能/更好的方式?

zia*_*aab 26

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

或者,也有i18n节点.它似乎与快递js有更多的整合.

  • 谢谢!我将采用i18n节点.:) (3认同)

ank*_*nfo 8

国际化节点是,你应该使用最简单和最伟大的模块.您可以直接在Javascript代码中使用,也可以使用带有快速js的Jade/Handlebar模板.

你为什么要用i18n?

  • 根据您的设置,通过标头,Cookie或查询参数自动检测浏览器中的区域设置.
  • 它还附带了一些例子.
  • en.json默认在里面自动生成./locales/.这充当主文件,您可以开始构建新的翻译.
  • 支持单数和复数形式
  • 支持参数:__('Hello %s', 'Marcus')返回Hallo Marcus


Osm*_*rdi 6

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

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

这个合适吗?