レンダリングエンジンとしてejs
を使用して、email-templatesモジュールで動作するようにnodemailerをセットアップしました。電子メールテンプレートを使用した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...
だけのカップル:
-
これは私がやってみましたものです
- 私のメールの出力では、何もborks - strin gはちょうど翻訳されていません。
- 私は、レンダリングエンジンに行くオブジェクトに
i18n
の__
関数を渡すだけで、ejs
に利用できるようになり、意図したとおりに実行できるはずですが、わかりません。これについての考えは? i18n.setLocale
はありませんので、req.
(これは私の受信したメールに表示されている言語です)と仮定すると、おそらく英語に設定されているはずです。これが意図したとおりに翻訳されていないのはなぜですか?
ご迷惑をおかけしておりません。
Funilly、 ejs電子メールテンプレートでこの構文を使用する前であっても、正しいロケールですでにレンダリングされていました。私はそれがテンプレートに渡される前に、 'subject'文字列でそれを使用したことと何か関係があると思います。 – Joum