【发布时间】:2015-04-11 21:52:00
【问题描述】:
环境:
Node.js、Express、i18n 模块、Jade
目的:
渲染一个国际化的jade模板以通过电子邮件发送它,并赋予“区域设置”属性,例如“es_ES”。
说明:
我有一个邮件对象,它发送基于 user.locale 属性的语言的邮件,所以给定一个“es_ES”值,我想发送一个给定语言的翡翠渲染模板。
对于 i18n,我在快速初始化时进行此操作:
app.use(i18n.init);
app.use(function(req, res, next){
i18n.setLocale(req.getLocale());
next();
});
所以当我使用 res.render 时,我只需在翡翠模板上做下一件事情:
#{__('key')}
这很好用,但是我有一个没有 req 的 cron,只有用户对象的属性中的语言环境,当我尝试像上面那样渲染翡翠模板但将 res.render 更改为 app.render :
/*** Module Dependencies ***/
var mandrill = require('mandrill-api/mandrill');
var mandrill_client = new mandrill.Mandrill(g.wizco.mandrill_api_key);
/**
* MAILER API
*/
var mailer = {
send_activation_mail: function(user, cb){
var self = this;
app.render('mails/account_confirmation_email', {var1: 'Holaaaaaaa'}, function(err, html){
if(err) { console.log(err); return err }
self.send_mail(html, 'Activación de cuenta', user.email, user.displayName, cb);
});
}
.....
}
渲染翡翠模板时出现下一个错误:
undefined 不是函数
意思是 __('...') 是 i18n 模块的 i18n 快捷方式。
【问题讨论】:
标签: node.js express internationalization cron pug