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
}