У меня есть настройка nodemailer для работы с модулем email-templates, используя ejs
в качестве механизма рендеринга.Модуль i18n с шаблонами электронной почты
До сих пор это работало по назначению, но, как и в других разделах моего приложения, я также хотел бы использовать модуль i18n, чтобы перевести мой почтовый текст так же, как визуализированные представления моего приложения.
К сожалению, это не работает. Это то, что я пытался делать:
пример html.ejs: код
<h1><%= __('Hi') %>, <%= user.name %>!</h1>
узел в маршруте:
// requires at the top
var i18n = require('i18n');
// (.....)
// use template based sender to send a message
sendMailTemplate({
to: user.email,
// EmailTemplate renders html and text but no subject so we need to
// set it manually either here or in the defaults section of templateSender()
subject: i18n.__('translatable subject')
}, {
user: user,
__: i18n.__
}, function(err, info){
if(err){
console.log('Error');
console.log(err);
}else{
console.log('email sent');
req.flash('info', i18n.__('mail sent to %s', user.email));
done(err, 'done');
}
});
// other stuff...
Просто пару вещей:
- На выходе моей почты ничего не происходит - стрин g просто не переводится.
- Я считаю, что просто пройти функции в объекте, идущем на движок рендеринга, должно быть достаточно, чтобы оно было доступно для
ejs
и выполнялось по назначению, но я не уверен. Любые мысли по этому поводу? - У меня нет
i18n.setLocale
, и поэтому он якобы по умолчанию стоит по-английски, когдаreq.
(что, кстати, язык, который я вижу в полученном мной электронном письме). Может ли это быть причиной того, что он не переводится так, как предполагалось?
Любые мысли приветствуются!
Funilly, не знаю, почему , даже до использования этого синтаксиса в шаблоне электронной почты ejs, он уже обрабатывался с правильной локалью. Я думаю, что это должно быть связано с тем, что он использовал его в строке 'subject', прежде чем передать его в шаблон. – Joum