多语言快速应用
我想知道在同一个版面中,如何实现同一内容的多个版本/语言的最好方法是什么?
我应该这样做吗?
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中以调用每个模板。
这适合吗?