Fixed device notification email language translation, #3513

Ylian Saint-Hilaire committed Jan 23, 2022 at 00:34 UTC 0817690eef0c5790a39935afbc1d59154ed9d708
2 files changed +11 -5
meshmail.js
+1 -1
@@ -679,7 +679,7 @@ module.exports.CreateMeshMail = function (parent, domain) {
679 if (domain == null) return;
680
681 // Send the email
682 - obj.sendDeviceNotifyMail(domain, user.name, user.email, connections, disconnections, 'us-en', null);
682 + obj.sendDeviceNotifyMail(domain, user.name, user.email, connections, disconnections, user.llang, null);
683
684 // Clean up
685 delete obj.deviceNotifications[userid];
webserver.js
+10 -4
@@ -2777,7 +2777,7 @@ module.exports.CreateWebServer = function (parent, db, args, certificates, doneF
2777 webstate: encodeURIComponent(webstate).replace(/'/g, '%27'),
2778 amtscanoptions: amtscanoptions,
2779 pluginHandler: (parent.pluginHandler == null) ? 'null' : parent.pluginHandler.prepExports()
2780 - }, dbGetFunc.req, domain));
2780 + }, dbGetFunc.req, domain), user);
2781 }
2782 xdbGetFunc.req = req;
2783 xdbGetFunc.res = res;
@@ -7616,7 +7616,7 @@ module.exports.CreateWebServer = function (parent, db, args, certificates, doneF
7616 }
7617
7618 // Render a page using the proper language
7619 - function render(req, res, filename, args) {
7619 + function render(req, res, filename, args, user) {
7620 if (obj.renderPages != null) {
7621 // Get the list of acceptable languages in order
7622 var acceptLanguages = obj.getLanguageCodes(req);
@@ -7625,19 +7625,25 @@ module.exports.CreateWebServer = function (parent, db, args, certificates, doneF
7625 var fileOptions = obj.renderPages[obj.path.basename(filename)];
7626 if (fileOptions != null) {
7627 for (var i in acceptLanguages) {
7628 - if ((acceptLanguages[i] == 'en') || (acceptLanguages[i].startsWith('en-'))) { args.lang = 'en'; break; } // English requested, break out.
7628 + if ((acceptLanguages[i] == 'en') || (acceptLanguages[i].startsWith('en-'))) {
7629 + // English requested
7630 + args.lang = 'en';
7631 + if (user && (user.llang != 'en')) { user.llang = 'en'; obj.db.SetUser(user); } // Set user 'last language' used if needed.
7632 + break;
7633 + }
7634 if (fileOptions[acceptLanguages[i]] != null) {
7635 // Found a match. If the file no longer exists, default to English.
7636 obj.fs.exists(fileOptions[acceptLanguages[i]] + '.handlebars', function (exists) {
7637 if (exists) { args.lang = acceptLanguages[i]; res.render(fileOptions[acceptLanguages[i]], args); } else { args.lang = 'en'; res.render(filename, args); }
7638 });
7639 + if (user && (user.llang != acceptLanguages[i])) { user.llang = acceptLanguages[i]; obj.db.SetUser(user); } // Set user 'last language' used if needed.
7640 return;
7641 }
7642 }
7643 }
7644 }
7645
7640 - // No matches found, render the default english page.
7646 + // No matches found, render the default English page.
7647 res.render(filename, args);
7648 }
7649