increase translate timeout to 5 minutes and show errors too #7515

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

si458 committed Dec 24, 2025 at 15:37 UTC 204cd3bd1c651eae025a04579fbe8acb7bac880c
3 files changed +12 -23
public/translator.htm
+5 -1
@@ -662,7 +662,11 @@
662 try { x = JSON.parse(this.responseText); } catch (ex) { }
663 if ((x == null) || (x.response == null)) { messagebox("Server Translation", "ERROR: Unable to parse server response."); return; }
664 if (x.response == 'ok') {
665 - messagebox("Server Translation", "Server translation initiated, this will take a minute or two. Once done, you can refresh the MeshCentral web pages to see the changes.<br /><br />When ready, please mail the file \"meshcentral-data/translate.json\" to <a href=\"mailto:ylianst@gmail.com\">ylianst@gmail.com</a> for inclusion on the official build.");
665 + var text = "The server translation process is now running.<br />Please allow up to 5 minutes for completion.<br /><br />";
666 + text += "If this is your <b>first translation</b>,<br />Please restart your MeshCentral server after the 5 minutes.<br /></br />";
667 + text += "If you are <b>updating a translation</b>,<br />Please refresh your MeshCentral web browser tabs after the 5 minutes.<br /><br />";
668 + text += "To submit your work, please email the generated <b>translate.json</b> file (located in <code>meshcentral-data/</code>) to one of the developers.";
669 + messagebox("Server Translation", text);
670 } else {
671 messagebox("Server Translation", "ERROR: " + x.response);
672 }
translate/translate.json
+3 -18
@@ -14805,7 +14805,7 @@
14805 "zh-cht": "大寫字母",
14806 "xloc": [
14807 "default.handlebars->container->column_l->p11->7->p11capslock",
14808 - "default3.handlebars->container->column_l->p11->7->p11capslock"
14808 + "default3.handlebars->container->column_l->p11->p11title->p11KeyboardLights->p11capslock"
14809 ]
14810 },
14811 {
@@ -35075,7 +35075,6 @@
35075 "hr": "Prva veza agenta",
35076 "it": "Prima connessione dell'agente",
35077 "ja": "最初のエージェント接続",
35078 - "ja-jp": "最初のエージェント接続",
35078 "ko": "첫 번째 에이전트 연결",
35079 "nl": "Eerste agentverbinding",
35080 "pl": "Pierwsze połączenie agenta",
@@ -35113,7 +35112,6 @@
35112 "hr": "Sučelje fiksne širine",
35113 "it": "Interfaccia a larghezza fissa",
35114 "ja": "固定幅インターフェイス",
35116 - "ja-jp": "固定幅インターフェイス",
35115 "ko": "고정 폭 인터페이스",
35116 "nl": "Interface met vaste breedte",
35117 "pl": "Interfejs o stałej szerokości",
@@ -35148,7 +35146,6 @@
35146 "hu": "Fix szélességű interfész",
35147 "it": "Interfaccia a larghezza fissa",
35148 "ja": "固定幅インターフェイス",
35151 - "ja-jp": "固定幅インターフェイス",
35149 "ko": "고정 폭 인터페이스",
35150 "nl": "Interface met vaste breedte",
35151 "pl": "Interfejs o stałej szerokości",
@@ -47459,7 +47456,6 @@
47456 "hr": "Sučelje lijeve trake",
47457 "it": "Interfaccia della barra sinistra",
47458 "ja": "左バーインターフェイス",
47462 - "ja-jp": "左側のバーインターフェイス",
47459 "ko": "왼쪽 바 인터페이스",
47460 "nl": "Linkerbalkinterface",
47461 "pl": "Interfejs z lewym pasem menu",
@@ -47692,7 +47688,6 @@
47688 "hu": "Bal oldali sáv",
47689 "it": "Interfaccia della barra sinistra",
47690 "ja": "左バーインターフェイス",
47695 - "ja-jp": "左側のバーインターフェイス",
47691 "ko": "왼쪽 바 인터페이스",
47692 "nl": "Linkerbalk interface",
47693 "pl": "Interfejs z lewym pasem menu",
@@ -50067,7 +50062,6 @@
50062 "hr": "Stvoren token za prijavu",
50063 "it": "Token di accesso creato",
50064 "ja": "ログイントークンが作成されました",
50070 - "ja-jp": "ログイントークンが作成されました",
50065 "ko": "로그인 토큰이 생성되었습니다.",
50066 "nl": "Inlogtoken aangemaakt",
50067 "pl": "Utworzono token logowania",
@@ -55275,7 +55269,7 @@
55269 "zh-cht": "NUM",
55270 "xloc": [
55271 "default.handlebars->container->column_l->p11->7->p11numlock",
55278 - "default3.handlebars->container->column_l->p11->7->p11numlock"
55272 + "default3.handlebars->container->column_l->p11->p11title->p11KeyboardLights->p11numlock"
55273 ]
55274 },
55275 {
@@ -71649,7 +71643,7 @@
71643 "zh-cht": "滾動",
71644 "xloc": [
71645 "default.handlebars->container->column_l->p11->7->p11scrolllock",
71652 - "default3.handlebars->container->column_l->p11->7->p11scrolllock"
71646 + "default3.handlebars->container->column_l->p11->p11title->p11KeyboardLights->p11scrolllock"
71647 ]
71648 },
71649 {
@@ -84769,7 +84763,6 @@
84763 "hr": "Uključi tamni način rada",
84764 "it": "Attiva la modalità oscura",
84765 "ja": "ダークモードの切り替え",
84772 - "ja-jp": "ダークモードの切り替え",
84766 "ko": "다크 모드 전환",
84767 "nl": "Schakel de donkere modus in",
84768 "pl": "Przełącz tryb ciemny",
@@ -84845,7 +84838,6 @@
84838 "hr": "Uključi/isključi traku podnožja",
84839 "it": "Attiva/disattiva la barra del piè di pagina",
84840 "ja": "フッターバーの切り替え",
84848 - "ja-jp": "フッターバーの切り替え",
84841 "ko": "바닥 글 바 전환",
84842 "nl": "Schakel de voettekstbalk in",
84843 "pl": "Przełącznik stopki",
@@ -84878,7 +84870,6 @@
84870 "hr": "Uključi/isključi svjetlosni način",
84871 "it": "Attiva la modalità luce",
84872 "ja": "ライトモードの切り替え",
84881 - "ja-jp": "ライトモードの切り替え",
84873 "ko": "조명 모드 전환",
84874 "nl": "Schakel de lichtmodus in",
84875 "pl": "Przełącz tryb światła",
@@ -84911,7 +84902,6 @@
84902 "hr": "Uključi/isključi moderno korisničko sučelje",
84903 "it": "Attiva/disattiva l'interfaccia utente moderna",
84904 "ja": "モダンな UI を切り替え",
84914 - "ja-jp": "モダンな UI を切り替え",
84905 "ko": "최신 UI 전환",
84906 "nl": "Schakel moderne gebruikersinterface in",
84907 "pl": "Przełącz nowoczesny interfejs użytkownika",
@@ -85069,7 +85059,6 @@
85059 "hu": "Lábléc váltása",
85060 "it": "Attiva/disattiva la barra del piè di pagina",
85061 "ja": "フッターバーの切り替え",
85072 - "ja-jp": "フッターバーの切り替え",
85062 "ko": "바닥 글 바 전환",
85063 "nl": "Schakel de voettekstbalk in",
85064 "pl": "Przełącznik stopki",
@@ -85466,7 +85455,6 @@
85455 "hr": "Sučelje gornje trake",
85456 "it": "Interfaccia della barra superiore",
85457 "ja": "トップバーインターフェイス",
85469 - "ja-jp": "トップバーインターフェイス",
85458 "ko": "상단 바 인터페이스",
85459 "nl": "Boven werkbalk interface",
85460 "pl": "Interfejs z górnym paskiem menu",
@@ -85501,7 +85489,6 @@
85489 "hu": "Felső sáv",
85490 "it": "Interfaccia della barra superiore",
85491 "ja": "トップバーインターフェース",
85504 - "ja-jp": "トップバーインターフェイス",
85492 "ko": "상단 바 인터페이스",
85493 "nl": "Boven werkbalk interface",
85494 "pl": "Interfejs z górnym paskiem menu",
@@ -86390,7 +86377,6 @@
86377 "hr": "Postavke korisničkog sučelja",
86378 "it": "Impostazioni dell'interfaccia utente",
86379 "ja": "UI設定",
86393 - "ja-jp": "UI設定",
86380 "ko": "UI 설정",
86381 "nl": "UI-instellingen",
86382 "pl": "Ustawienia interfejsu użytkownika",
@@ -91793,7 +91779,6 @@
91779 "hr": "Napon",
91780 "it": "Voltaggio",
91781 "ja": "電圧",
91796 - "ja-jp": "電圧",
91782 "ko": "전압",
91783 "nl": "Spanning",
91784 "pl": "Woltaż",
webserver.js
+4 -4
@@ -4096,11 +4096,11 @@ module.exports.CreateWebServer = function (parent, db, args, certificates, doneF
4096 res.send(JSON.stringify({ response: 'ok' }));
4097 console.log('Started server translation...');
4098 obj.pendingTranslation = true;
4099 - require('child_process').exec('node translate.js translateall \"' + translateFile + '\"', { maxBuffer: 512000, timeout: 120000, cwd: obj.path.join(__dirname, 'translate') }, function (error, stdout, stderr) {
4099 + require('child_process').exec('node translate.js translateall \"' + translateFile + '\"', { maxBuffer: 512000, timeout: 300000, cwd: obj.path.join(__dirname, 'translate') }, function (error, stdout, stderr) {
4100 delete obj.pendingTranslation;
4101 - //console.log('error', error);
4102 - //console.log('stdout', stdout);
4103 - //console.log('stderr', stderr);
4101 + if (error) { console.log('Server translation error', error); }
4102 + // console.log('stdout', stdout);
4103 + if (stderr) { console.log('Server translation stderr', stderr); }
4104 //console.log('Server restart...'); // Perform a server restart
4105 //process.exit(0);
4106 console.log('Server translation completed.');