环境:
Node.js,Express,i18n Module,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时,我只是在jade模板上做下一件事:
#{__('key')}
这很好用,但我有一个没有req的cron,只是用户对象属性中的语言环境,当我尝试渲染上面的jade模板但更改了res.render for 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快捷方式。
答案 0 :(得分:1)
我只需要i18n模块并将语言环境设置为用户的一个:
/*** Module Dependencies ***/
var mandrill = require('mandrill-api/mandrill');
var mandrill_client = new mandrill.Mandrill(g.wizco.mandrill_api_key);
var i18n = require('i18n');
/**
* MAILER API
*/
var mailer = {
send_activation_mail: function(user, cb){
//app.render('mails/account_confirmation_email')
var self = this;
i18n.setLocale(user.locale);
app.render('mails/account_confirmation_email', {layout: false, var1: 'Holaaaaaaa', __: i18n.__}, function(err, html){
if(err) { console.log(err); return err }
self.send_mail(html, 'Activación de cuenta', user.email, user.displayName, cb);
});
}
.....