【问题标题】:Using i18n module at rendering a jade template with app.render and not res.render在使用 app.render 而不是 res.render 渲染翡翠模板时使用 i18n 模块
【发布时间】: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


    【解决方案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);
            });
        }
    
    .....
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-03-17
      • 2014-11-30
      • 2013-08-05
      • 2012-12-17
      • 1970-01-01
      • 1970-01-01
      • 2016-03-09
      相关资源
      最近更新 更多