2015-06-26 44 views
1

我正在使用我的項目中的節點電子郵件模板,以便在某些用戶事件中向用戶發送自動電子郵件。如何在node.js中使用多語言郵件程序模板?

https://github.com/niftylettuce/node-email-templates

https://github.com/andris9/Nodemailer

在下面在github上頁提到的例子,我可以在使用nodemailer發送郵件,但我的問題是我怎麼能支持這些多國語言電子郵件發件人。

一個可能的解決方案是可以有一個單獨的html和style.css目錄,但這樣會有太多的目錄,這不是一個很好的編程方法。

任何人都可以請建議任何更好的方式來實現這個表達?是否有一些現有的工具呢?

https://github.com/angular-translate/angular-translate

P.S:我已經成功地處理使用 角度轉換的角度UI翻譯。我如何在 後端的快遞郵件模板中做同樣的事情?

感謝

+0

您是否找到任何有效的解決方案? – Aides

+0

@助手還沒有。目前,我只在我的應用程序中支持英語。 –

回答

0

雖然這個回答使用了一些非常具體的技術,它可以給你在正確的軌道上:

設置: i18njade

var jade = require('jade'); 
var i18n = require('i18n'); 

// [optional] cache read and compiled jade file 
var templates = {} 

function renderMailWithI18n (templatePath, lang) { 
    // use cached and compiled template or load and compile from file 
    templates[templatePath] = templates[templatePath] || 
    jade.compileFile(path.join(__dirname, templatePath + '.jade'), { pretty: true}); 

    // render template and pass i18n translate function 
    return templates[templatePath]({ 
    __: function (translationId) { 
     return i18n.__({ 
     phrase: translationId, locale: lang 
     }); 
    } 
    }) 
} 

var nodemailer = require('nodemailer'); 

var mailTransporter = nodemailer.createTransport(...); 
mailTransporter.sendMail({ 
    from: ..., 
    to: ..., 
    subject: i18n.__({ phrase: 'myMail.subject', locale: req.locale }), 
    renderMailWithI18n('myMail_text', req.locale).replace('<div>', '').replace('</div>', ''), 
    renderMailWithI18n('myMail_html', req.locale) 
}) 

myMail_text.jade

div. 
    #{__('myMail.greeting')} 

    #{__('myMail.body')} 
    ... 

myMail_html.jade

span #{__('myMail.greeting')} 
br 
span #{__('myMail.body')} 
... 

translation_en.json(類似於角平移)

{ 
    "myMail": { 
    "subject": "English Subject", 
    "greeting": "English Greeting", 
    "body": English Body" 
    } 
} 

此外,不要忘記配置i18n以使用正確的翻譯文件。

相關問題