多语言快速应用

我想知道在同一个版面中,如何实现同一内容的多个版本/语言的最好方法是什么?

我应该这样做吗?

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

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

我build议只保留一个模板,就像每个语言使用一个模板一样,它会很快失控,更不用说重复太多的内容(以及less量的“逻辑”)。 许多应用程序使用称为gettext的工具来执行国际化的事情。 在https://github.com/DanielBaulig/node-gettext有一个node.js库

或者也有i18n节点 。 它似乎与express js有更多的整合。

i18n节点是您应该使用的最简单,最好的模块。 您可以直接在Javascript代码中使用,也可以在Jade / Handlebar模板中使用Express js。

你为什么要用i18n?

  • 根据您的设置,通过标头,cookie或查询参数从浏览器自动检测语言环境。
  • 它也带有例子。
  • 它会在en.json里自动生成一个./locales/ 。 这充当您开始构build新翻译的主文件。
  • 支持单数和复数forms
  • 支持参数: __('Hello %s', 'Marcus')返回Hallo Marcus

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

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

这适合吗?