我的第一個問題 - 請放輕鬆。我正在使用express,express3-handlebars和i18next-node with node.jsexpress3-handlebars和18next-node - 基於頁面的國際化?
該計劃將使用不同的翻譯命名空間,具體取決於當前正在處理哪個視圖(即哪個句柄文件)。因此,如果我們查看名爲ie(.hbs)的頁面,則i18next將在名爲ie(.json)的相關語言中查找。這使翻譯的組織和協調更容易。
這是我當前如何做它:(?即使這似乎是不必要的 - 把手不會自動暴露哪個文件它的渲染)首先我發送當前頁到車把模板渲染:
res.render(url_base_path, { layout: ("sub"), title: title, currentpage: url_base_path });
然後我訪問要在當前頁面的命名空間中翻譯的變量「greeting」,就像這樣{{t "greeting" page=currentpage }}
- 惱人的是,每個頁面上都有10個這樣的變量。不要重複自己,有人嗎?
「T」在express3車把被定義創建()函數,像這樣,helpers: { t: t }
和翻譯功能看起來像這樣
var t = function (i18next_key, options) {
var page, result;
page = options.hash.page;
result = i18next.t(page + ":" + i18next_key);
return new hbs.handlebars.SafeString(result);
};
充分披露的緣故,這是什麼當前頁面我的(英語)空間文件看起來像
{
"greeting": "Hello, it appears you're using Internet Explorer, an outdated web browser."
}
這個作品,但似乎應該有一個更簡單的解決方案。
我真正想要的只是能夠在車把模板中輸入{{t "greeting"}}
來達到相同的效果。這可能沒有重寫核心車把功能?
這裏是i18next文檔頁面 http://i18next.com/pages/doc_features.html