Added agent translations.

Ylian Saint-Hilaire committed Dec 15, 2020 at 13:29 UTC a19bf5146ac3767d757f479dbe739d46e9ec626e
3 files changed +475 -2
agents/agent-translations.json new
+263
@@ -0,0 +1,263 @@
1 +{
2 + "en": {
3 + "agent": "Agent",
4 + "agentVersion": "New Agent Version",
5 + "group": "Device Group",
6 + "url": "Server URL",
7 + "meshName": "Mesh Name",
8 + "meshId": "Mesh Identifier",
9 + "serverId": "Server Identifier",
10 + "setup": "Setup",
11 + "update": "Update",
12 + "install": "Install",
13 + "uninstall": "Uninstall",
14 + "connect": "Connect",
15 + "disconnect": "Disconnect",
16 + "cancel": "Cancel",
17 + "pressok": "Press OK to disconnect",
18 + "elevation": "Elevated permissions is required to install/uninstall the agent.",
19 + "sudo": "Please try again with sudo.",
20 + "ctrlc": "Press Ctrl-C to exit.",
21 + "commands": "You can run the text version from the command line with the following command(s)",
22 + "graphicalerror": "The graphical version of this installer canot run on this system",
23 + "zenity": "Try installing/updating Zenity, and run again",
24 + "status": [
25 + "NOT INSTALLED",
26 + "RUNNING",
27 + "NOT RUNNING"
28 + ],
29 + "statusDescription": "Current Agent Status",
30 + "description": "Click the buttons below to install or uninstall the mesh agent. When installed, this software runs in the background allowing this computer to be managed and controlled by a remote administrator."
31 + },
32 + "cs": {
33 + "agent": "Agent",
34 + "group": "Skupina zařízení",
35 + "install": "Instalace",
36 + "uninstall": "Odinstalace",
37 + "connect": "Připojit",
38 + "disconnect": "Odpojit",
39 + "cancel": "Storno"
40 + },
41 + "de": {
42 + "agent": "Agent",
43 + "group": "Gerätegruppe",
44 + "install": "Installieren",
45 + "uninstall": "Deinstallation",
46 + "connect": "Verbinden",
47 + "disconnect": "Trennen",
48 + "cancel": "Abbrechen"
49 + },
50 + "es": {
51 + "agent": "Agente",
52 + "group": "Grupo de Dispositivos",
53 + "install": "Instalar",
54 + "uninstall": "Desinstalar",
55 + "connect": "Conectar",
56 + "disconnect": "Desconectar",
57 + "cancel": "Cancelar"
58 + },
59 + "fi": {
60 + "agent": "Agentti",
61 + "group": "Laiteryhmä",
62 + "install": "Asenna",
63 + "uninstall": "Asennuksen poistaminen",
64 + "connect": "Yhdistä",
65 + "disconnect": "Katkaise yhteys",
66 + "cancel": "Peruuta"
67 + },
68 + "fr": {
69 + "agent": "Agent",
70 + "group": "Groupe d'appareils",
71 + "setup": "Configuration",
72 + "install": "Installer",
73 + "uninstall": "Désinstaller",
74 + "connect": "Se connecter",
75 + "disconnect": "Déconnecter",
76 + "cancel": "Annuler"
77 + },
78 + "hi": {
79 + "agent": "एजेंट",
80 + "group": "डिवाइस समूह",
81 + "install": "इंस्टॉल",
82 + "uninstall": "स्थापना रद्द करें",
83 + "connect": "जुडिये",
84 + "disconnect": "डिस्कनेक्ट",
85 + "cancel": "रद्द करना"
86 + },
87 + "ja": {
88 + "agent": "エージェント",
89 + "group": "デバイスグループ",
90 + "install": "インストール",
91 + "uninstall": "アンインストール",
92 + "connect": "つなぐ",
93 + "disconnect": "切断する",
94 + "cancel": "キャンセル"
95 + },
96 + "ko": {
97 + "agent": "에이전트",
98 + "agentVersion": "새에이전트 버전",
99 + "group": "장치 그룹",
100 + "url": "서버의 위치",
101 + "meshName": "메시의 이름",
102 + "meshId": "메시의 식별자",
103 + "serverId": "서버의 식별자",
104 + "setup": "설정하다",
105 + "update": "개조하다",
106 + "install": "설치",
107 + "uninstall": "설치 제거",
108 + "connect": "연결",
109 + "disconnect": "연결 해제",
110 + "cancel": "취소",
111 + "pressok": "연결을 끊으려면 \"OK\"를 누르십시오",
112 + "elevation": "관리자 권한은 에이전트 제거 / 설치하는 데 필요",
113 + "sudo": "\"sudo\"로 다시 시도하십시오",
114 + "ctrlc": "종료하려면 \"Ctrl-C\"를 누르십시오.",
115 + "commands": "다음 명령을 사용하여 콘솔에서 텍스트 버전을 실행할 수 있습니다",
116 + "graphicalerror": "이 프로그램의 그래픽 버전이 시스템에서 실행할 수 없습니다",
117 + "zenity": "\"Zenity\"를 설치 또는 업데이트하고 다시 시도하십시오",
118 + "status": [
119 + "없다",
120 + "운영",
121 + "중지됨"
122 + ],
123 + "statusDescription": "에이전트 상태",
124 + "description": "메시 에이전트를 설치 또는 제거하려면 아래 버튼을 클릭하십시오. 이 프로그램은 설치하면 백그라운드에서 실행되므로 원격 관리자가이 컴퓨터를 관리하고 제어 할 수 있습니다."
125 + },
126 + "nl": {
127 + "agent": "Agent",
128 + "group": "Apparaat groep",
129 + "setup": "Setup",
130 + "install": "Installeren",
131 + "uninstall": "Deïnstallatie",
132 + "connect": "Verbinden",
133 + "disconnect": "Verbreken",
134 + "cancel": "Annuleren"
135 + },
136 + "pt": {
137 + "agent": "Agente",
138 + "group": "Grupo de dispositivos",
139 + "install": "Instalar",
140 + "uninstall": "Desinstalar",
141 + "connect": "Conectar",
142 + "disconnect": "Desconectar",
143 + "cancel": "Cancelar"
144 + },
145 + "ru": {
146 + "agent": "Агент",
147 + "group": "Группа устройства",
148 + "install": "Установка",
149 + "uninstall": "Удаление",
150 + "connect": "Подключиться",
151 + "disconnect": "Разъединить",
152 + "cancel": "Отмена"
153 + },
154 + "tr": {
155 + "agent": "Ajan",
156 + "group": "Cihaz Grubu",
157 + "install": "Yüklemek",
158 + "uninstall": "Kaldır",
159 + "connect": "Bağlan",
160 + "disconnect": "Bağlantıyı kes",
161 + "cancel": "İptal etmek"
162 + },
163 + "zh-chs": {
164 + "agent": "代理",
165 + "group": "设备组",
166 + "install": "安装",
167 + "uninstall": "卸载",
168 + "connect": "连接",
169 + "disconnect": "断线",
170 + "cancel": "取消"
171 + },
172 + "zh-cht": {
173 + "agent": "代理",
174 + "group": "裝置群",
175 + "install": "安裝",
176 + "uninstall": "卸載",
177 + "connect": "連接",
178 + "disconnect": "斷線",
179 + "cancel": "取消"
180 + },
181 + "xloc": {
182 + "agent": [
183 + "agent-translations.json"
184 + ],
185 + "agentVersion": [
186 + "agent-translations.json"
187 + ],
188 + "group": [
189 + "agent-translations.json"
190 + ],
191 + "url": [
192 + "agent-translations.json"
193 + ],
194 + "meshName": [
195 + "agent-translations.json"
196 + ],
197 + "meshId": [
198 + "agent-translations.json"
199 + ],
200 + "serverId": [
201 + "agent-translations.json"
202 + ],
203 + "setup": [
204 + "agent-translations.json"
205 + ],
206 + "update": [
207 + "agent-translations.json"
208 + ],
209 + "install": [
210 + "agent-translations.json"
211 + ],
212 + "uninstall": [
213 + "agent-translations.json"
214 + ],
215 + "connect": [
216 + "agent-translations.json"
217 + ],
218 + "disconnect": [
219 + "agent-translations.json"
220 + ],
221 + "cancel": [
222 + "agent-translations.json"
223 + ],
224 + "pressok": [
225 + "agent-translations.json"
226 + ],
227 + "elevation": [
228 + "agent-translations.json"
229 + ],
230 + "sudo": [
231 + "agent-translations.json"
232 + ],
233 + "ctrlc": [
234 + "agent-translations.json"
235 + ],
236 + "commands": [
237 + "agent-translations.json"
238 + ],
239 + "graphicalerror": [
240 + "agent-translations.json"
241 + ],
242 + "zenity": [
243 + "agent-translations.json"
244 + ],
245 + "status": [
246 + [
247 + "agent-translations.json"
248 + ],
249 + [
250 + "agent-translations.json"
251 + ],
252 + [
253 + "agent-translations.json"
254 + ]
255 + ],
256 + "statusDescription": [
257 + "agent-translations.json"
258 + ],
259 + "description": [
260 + "agent-translations.json"
261 + ]
262 + }
263 +}
\ No newline at end of file
translate/translate.js
+74 -1
@@ -49,7 +49,8 @@ var meshCentralSourceFiles = [
49 "../emails/account-login.txt",
50 "../emails/account-reset.txt",
51 "../emails/mesh-invite.txt",
52 - "../emails/sms-messages.txt"
52 + "../emails/sms-messages.txt",
53 + '../agents/agent-translations.json'
54 ];
55
56 var minifyMeshCentralSourceFiles = [
@@ -577,6 +578,9 @@ function translate(lang, langFile, sources, createSubDir) {
578 // Single threaded translation
579 translateSingleThreaded(lang, langFile, sources, createSubDir);
580 }
581 +
582 + // Translate any JSON files
583 + for (var i = 0; i < sources.length; i++) { if (sources[i].endsWith('.json')) { translateAllInJson(lang, langFile, sources[i]); } }
584 }
585
586 function translateSingleThreaded(lang, langFile, sources, createSubDir) {
@@ -627,6 +631,7 @@ function extract(langFile, sources) {
631 for (var i = 0; i < sources.length; i++) {
632 if (sources[i].endsWith('.html') || sources[i].endsWith('.htm') || sources[i].endsWith('.handlebars')) { extractFromHtml(sources[i]); }
633 else if (sources[i].endsWith('.txt')) { extractFromTxt(sources[i]); }
634 + else if (sources[i].endsWith('.json')) { extractFromJson(sources[i]); }
635 }
636 var count = 0, output = [];
637 for (var i in sourceStrings) {
@@ -653,6 +658,28 @@ function extractFromTxt(file) {
658 }
659 }
660
661 +function extractFromJson(file) {
662 + log("Processing JSON: " + path.basename(file));
663 + var json = JSON.parse(fs.readFileSync(file).toString());
664 + var name = path.basename(file);
665 + if (json.en == null) return;
666 + for (var i in json.en) {
667 + if (typeof json.en[i] == 'string') {
668 + const str = json.en[i]
669 + if (sourceStrings[str] == null) {
670 + sourceStrings[str] = { en: str, xloc: [name] };
671 + } else { if (sourceStrings[str].xloc == null) { sourceStrings[str].xloc = []; } sourceStrings[str].xloc.push(name); }
672 + } else if (Array.isArray(json.en[i])) {
673 + for (var k in json.en[i]) {
674 + if (typeof json.en[i][k] == 'string') {
675 + const str = json.en[i][k];
676 + if (sourceStrings[str] == null) { sourceStrings[str] = { en: str, xloc: [name] }; } else { if (sourceStrings[str].xloc == null) { sourceStrings[str].xloc = []; } sourceStrings[str].xloc.push(name); }
677 + }
678 + }
679 + }
680 + }
681 +}
682 +
683 function extractFromHtml(file) {
684 var data = fs.readFileSync(file);
685 var { JSDOM } = jsdom;
@@ -753,7 +780,53 @@ function translateFromTxt(lang, file, createSubDir) {
780 fs.writeFileSync(outname, out, { flag: 'w+' });
781 }
782
783 +function translateAllInJson(xlang, langFile, file) {
784 + log("Translating JSON (" + ((xlang == null)?'All':xlang) + "): " + path.basename(file));
785 +
786 + // Load the language file
787 + var langFileData = null;
788 + try { langFileData = JSON.parse(fs.readFileSync(langFile)); } catch (ex) { console.log(ex); }
789 + if ((langFileData == null) || (langFileData.strings == null)) { log("Invalid language file."); process.exit(); return; }
790 + var languages = [];
791
792 + // Build translation table, simple source->target for the given language.
793 + var xtranslationTable = {};
794 + for (var i in langFileData.strings) {
795 + var entry = langFileData.strings[i];
796 + for (var lang in entry) {
797 + if (lang == 'en') continue;
798 + if ((xlang != null) && (lang != xlang)) continue;
799 + if (languages.indexOf(lang) == -1) { languages.push(lang); xtranslationTable[lang] = {}; }
800 + if ((entry['en'] != null) && (entry[lang] != null)) { xtranslationTable[lang][entry['en']] = entry[lang]; }
801 + }
802 + }
803 +
804 + // Load and translate
805 + var json = JSON.parse(fs.readFileSync(file).toString());
806 + if (json.en != null) {
807 + for (var j in languages) {
808 + var lang = languages[j];
809 + for (var i in json.en) {
810 + if ((typeof json.en[i] == 'string') && (xtranslationTable[lang][json.en[i]] != null)) {
811 + // Translate a string
812 + if (json[lang] == null) { json[lang] = {}; }
813 + json[lang][i] = xtranslationTable[lang][json.en[i]];
814 + } else if (Array.isArray(json.en[i])) {
815 + // Translate an array of strings
816 + var r = [], translateCount = 0;
817 + for (var k in json.en[i]) {
818 + var str = json.en[i][k];
819 + if (xtranslationTable[lang][str] != null) { r.push(xtranslationTable[lang][str]); translateCount++; } else { r.push(str); }
820 + }
821 + if (translateCount > 0) { json[lang][i] = r; }
822 + }
823 + }
824 + }
825 + }
826 +
827 + // Save the results
828 + fs.writeFileSync(file, JSON.stringify(json, null, 2), { flag: 'w+' });
829 +}
830
831 function translateFromHtml(lang, file, createSubDir) {
832 var data = fs.readFileSync(file);
translate/translate.json
+138 -1
@@ -4062,6 +4062,7 @@
4062 "zh-chs": "代理",
4063 "zh-cht": "代理",
4064 "xloc": [
4065 + "agent-translations.json",
4066 "default-mobile.handlebars->9->203",
4067 "default-mobile.handlebars->9->228",
4068 "default-mobile.handlebars->9->250",
@@ -6602,6 +6603,7 @@
6603 "zh-chs": "取消",
6604 "zh-cht": "取消",
6605 "xloc": [
6606 + "agent-translations.json",
6607 "default-mobile.handlebars->9->82",
6608 "default-mobile.handlebars->dialog->idx_dlgButtonBar",
6609 "default.handlebars->29->1327",
@@ -7780,6 +7782,13 @@
7782 "default.handlebars->29->1278"
7783 ]
7784 },
7785 + {
7786 + "en": "Click the buttons below to install or uninstall the mesh agent. When installed, this software runs in the background allowing this computer to be managed and controlled by a remote administrator.",
7787 + "ko": "메시 에이전트를 설치 또는 제거하려면 아래 버튼을 클릭하십시오. 이 프로그램은 설치하면 백그라운드에서 실행되므로 원격 관리자가이 컴퓨터를 관리하고 제어 할 수 있습니다.",
7788 + "xloc": [
7789 + "agent-translations.json"
7790 + ]
7791 + },
7792 {
7793 "cs": "Klikněte pro zobrazení aktuálních upozornění",
7794 "de": "Hier klicken, um aktuelle Benachrichtigungen anzuzeigen",
@@ -8686,6 +8695,7 @@
8695 "zh-chs": "连接",
8696 "zh-cht": "連接",
8697 "xloc": [
8698 + "agent-translations.json",
8699 "default-mobile.handlebars->9->301",
8700 "default-mobile.handlebars->container->page_content->column_l->p10->p10desktop->deskarea1->1->3",
8701 "default-mobile.handlebars->container->page_content->column_l->p10->p10files->p13toolbar->1->0->1->3",
@@ -10084,6 +10094,13 @@
10094 "desktop.handlebars->p11->deskarea0->deskarea4->3->deskkeys->19"
10095 ]
10096 },
10097 + {
10098 + "en": "Current Agent Status",
10099 + "ko": "에이전트 상태",
10100 + "xloc": [
10101 + "agent-translations.json"
10102 + ]
10103 + },
10104 {
10105 "cs": "Nainstalovaná verze",
10106 "de": "Aktuelle Version",
@@ -11266,6 +11283,7 @@
11283 "zh-chs": "设备组",
11284 "zh-cht": "裝置群",
11285 "xloc": [
11286 + "agent-translations.json",
11287 "default.handlebars->29->1454",
11288 "default.handlebars->29->1457",
11289 "default.handlebars->29->1458",
@@ -12111,6 +12129,7 @@
12129 "zh-chs": "断线",
12130 "zh-cht": "斷線",
12131 "xloc": [
12132 + "agent-translations.json",
12133 "default-mobile.handlebars->9->302",
12134 "default-mobile.handlebars->container->page_content->column_l->p10->p10desktop->deskarea1->1->3",
12135 "default.handlebars->29->1367",
@@ -13809,6 +13828,13 @@
13828 "default.handlebars->29->447"
13829 ]
13830 },
13831 + {
13832 + "en": "Elevated permissions is required to install/uninstall the agent.",
13833 + "ko": "관리자 권한은 에이전트 제거 / 설치하는 데 필요",
13834 + "xloc": [
13835 + "agent-translations.json"
13836 + ]
13837 + },
13838 {
13839 "cs": "E-mail",
13840 "de": "E-Mail",
@@ -18160,7 +18186,10 @@
18186 "ru": "Установка",
18187 "tr": "Yüklemek",
18188 "zh-chs": "安装",
18163 - "zh-cht": "安裝"
18189 + "zh-cht": "安裝",
18190 + "xloc": [
18191 + "agent-translations.json"
18192 + ]
18193 },
18194 {
18195 "cs": "Nainstalujte si <a href=\\\"https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2\\\" rel=\\\"noreferrer noopener\\\" target=_blank>Google Authenticator</a> nebo kompatibilní aplikaci a naskenujte kód, použijte <a href=\\\"{0}\\\" rel=\\\"noreferrer noopener\\\" target=_blank> tento odkaz</a> nebo vložte tajemství. Pak vložte aktuální 6 číselný token pro aktivaci 2-faktorového přihlašování.",
@@ -22914,6 +22943,20 @@
22943 "default.handlebars->29->1473"
22944 ]
22945 },
22946 + {
22947 + "en": "Mesh Identifier",
22948 + "ko": "메시의 식별자",
22949 + "xloc": [
22950 + "agent-translations.json"
22951 + ]
22952 + },
22953 + {
22954 + "en": "Mesh Name",
22955 + "ko": "메시의 이름",
22956 + "xloc": [
22957 + "agent-translations.json"
22958 + ]
22959 + },
22960 {
22961 "cs": "Mesh předávání (relay)",
22962 "de": "Netzrelais",
@@ -24168,6 +24211,20 @@
24211 "default.handlebars->29->1062"
24212 ]
24213 },
24214 + {
24215 + "en": "NOT INSTALLED",
24216 + "ko": "없다",
24217 + "xloc": [
24218 + "agent-translations.json"
24219 + ]
24220 + },
24221 + {
24222 + "en": "NOT RUNNING",
24223 + "ko": "중지됨",
24224 + "xloc": [
24225 + "agent-translations.json"
24226 + ]
24227 + },
24228 {
24229 "cs": "Přejděte na níže uvedenou adresu URL, udělejte přístup a zkopírujte kód tokenu zpět.",
24230 "de": "Nagivieren Sie auf die unten stehende URL, gewähren Sie Zugriff und kopieren Sie den Token-Code zurück.",
@@ -24451,6 +24508,13 @@
24508 "default.handlebars->container->column_l->p4->3->1->0->3->3"
24509 ]
24510 },
24511 + {
24512 + "en": "New Agent Version",
24513 + "ko": "새에이전트 버전",
24514 + "xloc": [
24515 + "agent-translations.json"
24516 + ]
24517 + },
24518 {
24519 "cs": "Nová skupina zařízení",
24520 "de": "Neue Gerätegruppe",
@@ -27620,6 +27684,13 @@
27684 "terms.handlebars->container->column_l->3"
27685 ]
27686 },
27687 + {
27688 + "en": "Please try again with sudo.",
27689 + "ko": "\"sudo\"로 다시 시도하십시오",
27690 + "xloc": [
27691 + "agent-translations.json"
27692 + ]
27693 + },
27694 {
27695 "cs": "Počkejte pár minut než dojde k ověření.",
27696 "de": "Bitte warten Sie einige Minuten, um die Bestätigung zu erhalten.",
@@ -28065,6 +28136,20 @@
28136 "default.handlebars->29->2060"
28137 ]
28138 },
28139 + {
28140 + "en": "Press Ctrl-C to exit.",
28141 + "ko": "종료하려면 \"Ctrl-C\"를 누르십시오.",
28142 + "xloc": [
28143 + "agent-translations.json"
28144 + ]
28145 + },
28146 + {
28147 + "en": "Press OK to disconnect",
28148 + "ko": "연결을 끊으려면 \"OK\"를 누르십시오",
28149 + "xloc": [
28150 + "agent-translations.json"
28151 + ]
28152 + },
28153 {
28154 "cs": "Pro pokračování/pozastavení stiskněte [mezerník].",
28155 "de": "Für Abspielen/Pause [Leertaste] drücken,",
@@ -28658,6 +28743,13 @@
28743 "default.handlebars->29->2124"
28744 ]
28745 },
28746 + {
28747 + "en": "RUNNING",
28748 + "ko": "운영",
28749 + "xloc": [
28750 + "agent-translations.json"
28751 + ]
28752 + },
28753 {
28754 "en": "Randomize password",
28755 "fr": "Randomiser le mot de passe",
@@ -32329,6 +32421,13 @@
32421 "default.handlebars->29->710"
32422 ]
32423 },
32424 + {
32425 + "en": "Server Identifier",
32426 + "ko": "서버의 식별자",
32427 + "xloc": [
32428 + "agent-translations.json"
32429 + ]
32430 + },
32431 {
32432 "cs": "Oprávnění serveru",
32433 "de": "Server-Berechtigungen",
@@ -32470,6 +32569,13 @@
32569 "default.handlebars->29->2145"
32570 ]
32571 },
32572 + {
32573 + "en": "Server URL",
32574 + "ko": "서버의 위치",
32575 + "xloc": [
32576 + "agent-translations.json"
32577 + ]
32578 + },
32579 {
32580 "en": "Server Under Maintenance",
32581 "nl": "Onderhoud aan de server",
@@ -32904,7 +33010,9 @@
33010 "en": "Setup",
33011 "nl": "Setup",
33012 "fr": "Configuration",
33013 + "ko": "설정하다",
33014 "xloc": [
33015 + "agent-translations.json",
33016 "default.handlebars->29->1385",
33017 "default.handlebars->29->285"
33018 ]
@@ -35956,6 +36064,13 @@
36064 "terms.handlebars->container->column_l->7"
36065 ]
36066 },
36067 + {
36068 + "en": "The graphical version of this installer canot run on this system",
36069 + "ko": "이 프로그램의 그래픽 버전이 시스템에서 실행할 수 없습니다",
36070 + "xloc": [
36071 + "agent-translations.json"
36072 + ]
36073 + },
36074 {
36075 "cs": "Název skupiny zařízení, do které tento počítač patří",
36076 "de": "Der Name der Gerätegruppe zu der dieser Rechner gehört",
@@ -37169,6 +37284,13 @@
37284 "default.handlebars->29->134"
37285 ]
37286 },
37287 + {
37288 + "en": "Try installing/updating Zenity, and run again",
37289 + "ko": "\"Zenity\"를 설치 또는 업데이트하고 다시 시도하십시오",
37290 + "xloc": [
37291 + "agent-translations.json"
37292 + ]
37293 + },
37294 {
37295 "cs": "Tsonga",
37296 "de": "Tsonga",
@@ -37613,6 +37735,7 @@
37735 "zh-chs": "卸载",
37736 "zh-cht": "卸載",
37737 "xloc": [
37738 + "agent-translations.json",
37739 "default-mobile.handlebars->9->458",
37740 "default.handlebars->29->1515",
37741 "default.handlebars->29->694",
@@ -37987,6 +38110,13 @@
38110 "default.handlebars->29->2154"
38111 ]
38112 },
38113 + {
38114 + "en": "Update",
38115 + "ko": "개조하다",
38116 + "xloc": [
38117 + "agent-translations.json"
38118 + ]
38119 + },
38120 {
38121 "cs": "Nahrát",
38122 "de": "Hochladen",
@@ -40777,6 +40907,13 @@
40907 "default.handlebars->29->132"
40908 ]
40909 },
40910 + {
40911 + "en": "You can run the text version from the command line with the following command(s)",
40912 + "ko": "다음 명령을 사용하여 콘솔에서 텍스트 버전을 실행할 수 있습니다",
40913 + "xloc": [
40914 + "agent-translations.json"
40915 + ]
40916 + },
40917 {
40918 "cs": "Můžete nastavit MeshCentral tak, aby automaticky odesílal zálohu serveru na Disk Google. Začněte zadáním desktopového Google API ClientID a ClientSecret pro váš účet.",
40919 "de": "Sie können MeshCentral so einrichten, dass automatisch eine Serversicherung an Google Drive gesendet wird. Geben Sie zunächst eine Desktop-Google API-Client-ID und ClientSecret für Ihr Konto ein.",