2015-06-26 2 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

@Aides Пока нет. В настоящее время я поддерживаю только английский язык в своем приложении. –

ответ

0

Хотя этот ответ использует некоторые очень специфические технологии, она может послать вас на правильном пути:

Установка: 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, чтобы использовать правильные файлы переводов.

Смежные вопросы