NodeJS + Express + i18next 支援多國語系吧!
除非是區域性的網站服務,不然在這個網路通全世界的時代,開發網站服務就一定有多國語系的需求。一般來說,i18n 的支援都是由 Web Framework 所提供,但 Express 並沒有支援,所以我們要借助 i18next 這個模組。i18next 可以和 Express 以及 template 很完美的結合,最重要的是,有客戶端支援(clientside support),若搭配 jquery,我們也可以使前端的 JavaScript 支援多國語系。
先使用 NPM 安裝 i18next:
在 express 的應用程式(app.js)中引入使用 i18next:
接著要在應用程式的目錄下,建立預設的翻譯檔和存放路徑(locales/dev/translation.json):
如果要支援繁體中文(zh-TW),直接建立相應的翻譯檔(locales/zh-TW/translation.json):
然後就可以在 template 中使用之前所定義的字串(views/index.jade):
完成之後,i18next 會自動依照用戶瀏覽器的語系設定,回應相對應的頁面。
後記
文章一開頭有提到,i18next 可以配合 jquery 使用,有興趣的人可以直接參考『官方說明』。
先使用 NPM 安裝 i18next:
npm install i18next
在 express 的應用程式(app.js)中引入使用 i18next:
var express = require('express');
var i18n = require('i18next');
var app = module.exports = express.createServer();
/* Initializing i18n */
i18n.init();
i18n.registerAppHelper(app);
app.configure(function(){
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.use(express.bodyParser());
app.use(i18n.handle);
app.use(express.methodOverride());
app.use(app.router);
app.use(express.static(__dirname + '/public'));
});
app.get('/', function(req, res) {
res.render('index');
});
app.listen(3000);接著要在應用程式的目錄下,建立預設的翻譯檔和存放路徑(locales/dev/translation.json):
{
"example": {
"string1": "Hello World!"
}
}如果要支援繁體中文(zh-TW),直接建立相應的翻譯檔(locales/zh-TW/translation.json):
{
"example": {
"string1": "哈囉 世界!"
}
}然後就可以在 template 中使用之前所定義的字串(views/index.jade):
span= t('example.string1')完成之後,i18next 會自動依照用戶瀏覽器的語系設定,回應相對應的頁面。
後記
文章一開頭有提到,i18next 可以配合 jquery 使用,有興趣的人可以直接參考『官方說明』。
留言
張貼留言