我不確定i18n是否適合此選項。因爲看起來這個模塊只關注於改變語言屬性(在視圖渲染器內)而不是視圖本身。我希望我解釋自己足夠好:)i18n根據所選語言呈現特定視圖
所以這個想法是,當一個人改變語言渲染從語言目錄中選擇視圖(具有相同的文件名)。
你可以有例如這樣的目錄結構:
-views
--EN
---index.jade
---contact.jade
--NL
---index.jade
---contact.jade
--form-contact.jade
要明確的是,'form-contact.jade'
文件將包含的形式(包含在'contact.jade'
文件,以便'form-contact.jade'
的確會利用國際化的別名對象(這將駐留在en.json或nl.json文件)
,從而爲我現在只有具備以下條件:。
個app.js
i18n.configure({
locales: ['en', 'nl'],
directory: __dirname + '/locales',
defaultLocale: 'en',
extension: '.json',
register: global
});
app.use(i18n.init);
app.use(function (req, res, next) {
console.log(i18n);
if (req.query.lang != undefined && i18n.locales.indexOf(req.query.lang) >= 0) {
i18n.setLocale(req.query.lang);
}else{
i18n.setLocale(i18n.defaultLocale);
}
next();
});
現在,我怎麼了res.render選擇正確的看法?
router.get('/contact', function(req, res, next) {
res.render('/contact', { title: '...', menu: '...' });
});
編輯:
如果你們有翻譯大靜態頁面(全HTML/CSS)的建議,請給你的意見:)
爲什麼需要每種語言有不同的看法? – idbehold
由於大多數頁面都是靜態的。我首先想到了將它放入json語言文件中,但它會變得混亂而漫長。 – Goowik
第一步將客戶端設備語言設置爲所需的語言 – Pomagranite