引き続きnode.js系tips。
node-localizeというモジュールでの言語の管理がちょっとお手軽だったので、これとexpressを組み合わせるようにしてみた。
// express-localize.js var Localize = require('localize'); module.exports = function(path, defaultLocale) { var locale, defaultLocale = defaultLocale || 'en'; locale = new Localize(path, {}, defaultLocale); function _() { return locale.translate.apply(locale, arguments); } return function(req, res, next) { var render = res.render , lang = req.query.lang || req.body.lang || req.session._lang || defaultLocale; req.session._lang = lang; locale.setLocale(lang); res.render = newRender; next(); function newRender(template, stash) { stash._ = _; render.call(res, template, stash); } }; };
あとはapp.js内で
var expressLocalize = require('./lib/express-localize'); app.configure(function(){ app.use(expressLocalize(__dirname + '/locale', 'ja')); });
すれば使えるようになる。