雖然這個回答使用了一些非常具體的技術,它可以給你在正確的軌道上:
設置: i18n
,jade
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
以使用正確的翻譯文件。
您是否找到任何有效的解決方案? – Aides
@助手還沒有。目前,我只在我的應用程序中支持英語。 –