Интернационализация Node.js nodemailer-express-handlebars (i18n) - PullRequest
0 голосов
/ 09 сентября 2018

Может кто-нибудь объяснить мне, как интернационализировать шаблоны электронной почты, отправленные с использованием библиотеки nodemailer на Node.js? Мне нужно отправлять электронные письма, которые содержат много html-кода, поэтому я установил плагин « nodemailer-express-handlebars », как предложено в документации по nodemailer (https://nodemailer.com/plugins/),, но у меня нет ' ничего не нашел в документации по интернационализации (https://github.com/yads/nodemailer-express-handlebars). Я пытался установить плагин i18n (https://www.npmjs.com/package/i18n), но у меня нет идеи, как интегрировать его с «nodemailer-express-handlebars». Вот мой код:

data.js

 function sendEmail(){
  var hbs = require('nodemailer-express-handlebars');
  var exphbs  = require('express-handlebars');

  /*--------------------- e-mail configuration ---------------------*/
  var nodemailer = require('nodemailer');

  var transporter = nodemailer.createTransport({
    host: 'xxxxxxxxxx',
    port: 465,
    secure: true, // true for 465, false for other ports
    auth: {
      type: 'login',
      user: 'xxxxxxxxxx', // generated ethereal user
      pass: 'xxxxxxxxxx' // generated ethereal password
    },
    tls: {
      rejectUnauthorized: false
    }
  });

  var options = {
    viewEngine: exphbs,
    viewPath: './storage',
    extName: '.html'
  };

//attach the plugin to the nodemailer transporter
  transporter.use('compile', hbs(options));


  var senderAddr = '"Test sender" <no-reply@test.it>';

var mailOptions = {
    from: senderAddr, // sender address
    to: 'test@domain.com', // list of receivers
    subject: 'Hello', // Subject line
    template: 'test1',
    context: {
      name: 'Paul'
    }
  };

  /*--------------------- end e-mail configuration ---------------------*/

  // send mail with defined transport object
  transporter.sendMail(mailOptions, (error, info) => {
    if (error) {
      return console.log(error);
    }
    console.log('Message sent: %s', info.messageId);
    // Preview only available when sending through an Ethereal account
    console.log('Preview URL: %s', nodemailer.getTestMessageUrl(info));

    // Message sent: <b658f8ca-6296-ccf4-8306-87d57a0b4321@example.com>
    // Preview URL: https://ethereal.email/message/WaQKMgKddxQDoou...
  });
}

test1.html

<h1>Welcome {{name}}! Here are your credentials:</h1>
<ul>
    <li>username: xxxxxxxxxx</li>
    <li>password: xxxxxxxxxx</li>
</ul>
<p>Thank you for registering.</p>

И это файл локализации, который я хочу получить (i18n): it.json

{
  "Welcome {{name}}! Here are your credentials:" : "Benvenuto {{name}}! Ecco le tue credenziali:",
  "Thank you for registering.": "Grazie per esserti registrato."
}
...