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 使用,有興趣的人可以直接參考『官方說明』。
留言
張貼留言