fix meshcentral-web-domain translate displaying (#6180)

Signed-off-by: si458 <simonsmith5521@gmail.com>

Simon Smith committed Jun 17, 2024 at 09:48 UTC 482e79f91361d9d772fa72aa0c785609303e1bac
1 file changed +43 -21
webserver.js
+43 -21
@@ -8972,9 +8972,9 @@ module.exports.CreateWebServer = function (parent, db, args, certificates, doneF
8972 if (obj.renderPages != null) {
8973 // Get the list of acceptable languages in order
8974 var acceptLanguages = obj.getLanguageCodes(req);
8975 -
8975 + var domain = getDomain(req);
8976 // Take a look at the options we have for this file
8977 - var fileOptions = obj.renderPages[obj.path.basename(filename)];
8977 + var fileOptions = obj.renderPages[domain.id][obj.path.basename(filename)];
8978 if (fileOptions != null) {
8979 for (var i in acceptLanguages) {
8980 if ((acceptLanguages[i] == 'en') || (acceptLanguages[i].startsWith('en-'))) {
@@ -9021,36 +9021,58 @@ module.exports.CreateWebServer = function (parent, db, args, certificates, doneF
9021 if (translateFolder != null) {
9022 obj.renderPages = {};
9023 obj.renderLanguages = ['en'];
9024 - var files = obj.fs.readdirSync(translateFolder);
9025 - for (var i in files) {
9026 - var name = files[i];
9027 - if (name.endsWith('.handlebars')) {
9028 - name = name.substring(0, name.length - 11);
9029 - var xname = name.split('_');
9030 - if (xname.length == 2) {
9031 - if (obj.renderPages[xname[0]] == null) { obj.renderPages[xname[0]] = {}; }
9032 - obj.renderPages[xname[0]][xname[1]] = obj.path.join(translateFolder, name);
9033 - if (obj.renderLanguages.indexOf(xname[1]) == -1) { obj.renderLanguages.push(xname[1]); }
9034 - }
9035 - }
9036 - }
9037 -
9038 - // See if there are any custom rending pages that will override the default ones
9039 - if ((obj.parent.webViewsOverridePath != null) && (obj.fs.existsSync(obj.path.join(obj.parent.webViewsOverridePath, 'translations')))) {
9040 - translateFolder = obj.path.join(obj.parent.webViewsOverridePath, 'translations');
9024 + for (var i in parent.config.domains) {
9025 + if (obj.fs.existsSync('views/translations')) { translateFolder = 'views/translations'; }
9026 + if (obj.fs.existsSync(obj.path.join(__dirname, 'views', 'translations'))) { translateFolder = obj.path.join(__dirname, 'views', 'translations'); }
9027 var files = obj.fs.readdirSync(translateFolder);
9028 + var domain = parent.config.domains[i].id;
9029 + obj.renderPages[domain] = {};
9030 for (var i in files) {
9031 var name = files[i];
9032 if (name.endsWith('.handlebars')) {
9033 name = name.substring(0, name.length - 11);
9034 var xname = name.split('_');
9035 if (xname.length == 2) {
9048 - if (obj.renderPages[xname[0]] == null) { obj.renderPages[xname[0]] = {}; }
9049 - obj.renderPages[xname[0]][xname[1]] = obj.path.join(translateFolder, name);
9036 + if (obj.renderPages[domain][xname[0]] == null) { obj.renderPages[domain][xname[0]] = {}; }
9037 + obj.renderPages[domain][xname[0]][xname[1]] = obj.path.join(translateFolder, name);
9038 if (obj.renderLanguages.indexOf(xname[1]) == -1) { obj.renderLanguages.push(xname[1]); }
9039 }
9040 }
9041 }
9042 + // See if there are any custom rending pages that will override the default ones
9043 + if ((obj.parent.webViewsOverridePath != null) && (obj.fs.existsSync(obj.path.join(obj.parent.webViewsOverridePath, 'translations')))) {
9044 + translateFolder = obj.path.join(obj.parent.webViewsOverridePath, 'translations');
9045 + var files = obj.fs.readdirSync(translateFolder);
9046 + for (var i in files) {
9047 + var name = files[i];
9048 + if (name.endsWith('.handlebars')) {
9049 + name = name.substring(0, name.length - 11);
9050 + var xname = name.split('_');
9051 + if (xname.length == 2) {
9052 + if (obj.renderPages[domain][xname[0]] == null) { obj.renderPages[domain][xname[0]] = {}; }
9053 + obj.renderPages[domain][xname[0]][xname[1]] = obj.path.join(translateFolder, name);
9054 + if (obj.renderLanguages.indexOf(xname[1]) == -1) { obj.renderLanguages.push(xname[1]); }
9055 + }
9056 + }
9057 + }
9058 + }
9059 + // See if there is a custom meshcentral-web-domain folder as that will override the default ones
9060 + if (obj.fs.existsSync(obj.path.join(__dirname, '..', 'meshcentral-web-' + domain, 'views', 'translations'))) {
9061 + translateFolder = obj.path.join(__dirname, '..', 'meshcentral-web-' + domain, 'views', 'translations');
9062 + var files = obj.fs.readdirSync(translateFolder);
9063 + for (var i in files) {
9064 + var name = files[i];
9065 + if (name.endsWith('.handlebars')) {
9066 + name = name.substring(0, name.length - 11);
9067 + var xname = name.split('_');
9068 + if (xname.length == 2) {
9069 + if (obj.renderPages[domain][xname[0]] == null) { obj.renderPages[domain][xname[0]] = {}; }
9070 + obj.renderPages[domain][xname[0]][xname[1]] = obj.path.join(translateFolder, name);
9071 + if (obj.renderLanguages.indexOf(xname[1]) == -1) { obj.renderLanguages.push(xname[1]); }
9072 + }
9073 + }
9074 + }
9075 + }
9076 }
9077 }
9078 }