diff --git a/.eslintrc.js b/.eslintrc.js index 398d64c84..21fb56088 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,4 +1,5 @@ module.exports = { + root: true, env: { browser: true, commonjs: true, diff --git a/extra/update-language-files/index.js b/extra/update-language-files/index.js index ee7c0b5ea..519d82e1b 100644 --- a/extra/update-language-files/index.js +++ b/extra/update-language-files/index.js @@ -1,4 +1,4 @@ -// Need to use es6 to read language files +// Need to use ES6 to read language files import fs from "fs"; import path from "path"; @@ -14,6 +14,7 @@ const copyRecursiveSync = function (src, dest) { let exists = fs.existsSync(src); let stats = exists && fs.statSync(src); let isDirectory = exists && stats.isDirectory(); + if (isDirectory) { fs.mkdirSync(dest); fs.readdirSync(src).forEach(function (childItemName) { @@ -24,8 +25,9 @@ const copyRecursiveSync = function (src, dest) { fs.copyFileSync(src, dest); } }; -console.log(process.argv) -const baseLangCode = process.argv[2] || "zh-HK"; + +console.log("Arguments: ", process.argv) +const baseLangCode = process.argv[2] || "en"; console.log("Base Lang: " + baseLangCode); fs.rmdirSync("./languages", { recursive: true }); copyRecursiveSync("../../src/languages", "./languages"); @@ -33,46 +35,50 @@ copyRecursiveSync("../../src/languages", "./languages"); const en = (await import("./languages/en.js")).default; const baseLang = (await import(`./languages/${baseLangCode}.js`)).default; const files = fs.readdirSync("./languages"); -console.log(files); +console.log("Files: ", files); + for (const file of files) { - if (file.endsWith(".js")) { - console.log("Processing " + file); - const lang = await import("./languages/" + file); + if (!file.endsWith(".js")) { + console.log("Skipping " + file) + continue; + } - let obj; + console.log("Processing " + file); + const lang = await import("./languages/" + file); - if (lang.default) { - console.log("is js module"); - obj = lang.default; - } else { - console.log("empty file"); - obj = { - languageName: "" - }; - } - - // En first - for (const key in en) { - if (! obj[key]) { - obj[key] = en[key]; - } + let obj; + + if (lang.default) { + obj = lang.default; + } else { + console.log("Empty file"); + obj = { + languageName: "" + }; + } + + // En first + for (const key in en) { + if (! obj[key]) { + obj[key] = en[key]; } + } + if (baseLang !== en) { // Base second for (const key in baseLang) { if (! obj[key]) { obj[key] = key; } } - - const code = "export default " + util.inspect(obj, { - depth: null, - }); - - fs.writeFileSync(`../../src/languages/${file}`, code); - } + + const code = "export default " + util.inspect(obj, { + depth: null, + }); + + fs.writeFileSync(`../../src/languages/${file}`, code); } fs.rmdirSync("./languages", { recursive: true }); -console.log("Done, fix the format by eslint now"); +console.log("Done. Fixing formatting by ESLint..."); diff --git a/package.json b/package.json index 8d9c88fc1..d768063a0 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,8 @@ "test-install-script-ubuntu": "npm run compile-install-script && docker build --progress plain -f test/test_install_script/ubuntu.dockerfile .", "test-install-script-ubuntu1604": "npm run compile-install-script && docker build --progress plain -f test/test_install_script/ubuntu1604.dockerfile .", "simple-dns-server": "node extra/simple-dns-server.js", - "update-language-files": "cd extra/update-language-files && node index.js %npm_config_base_lang% && eslint ../../src/languages/**.js --fix" + "update-language-files_old": "cd extra/update-language-files && node index.js %npm_config_base_lang% && eslint ../../src/languages/**.js --fix", + "update-language-files": "cd extra/update-language-files && node index.js && eslint ../../src/languages/**.js --fix" }, "dependencies": { "@fortawesome/fontawesome-svg-core": "^1.2.36", diff --git a/src/languages/README.md b/src/languages/README.md index d27e0e7eb..7a3ed0602 100644 --- a/src/languages/README.md +++ b/src/languages/README.md @@ -1,8 +1,8 @@ # How to translate 1. Fork this repo. -2. Create a language file. (e.g. `zh-TW.js`) The filename must be ISO language code: http://www.lingoes.net/en/translator/langcode.htm -3. `npm run update-language-files --base-lang=de-DE` +2. Create a language file (e.g. `zh-TW.js`). The filename must be ISO language code: http://www.lingoes.net/en/translator/langcode.htm +3. `npm run update-language-files --base-lang=en` 4. Your language file should be filled in. You can translate now. 5. Translate `src/pages/Settings.vue` (search for a `Confirm` component with `rel="confirmDisableAuth"`). 6. Import your language file in `src/i18n.js` and add it to `languageList` constant. diff --git a/src/languages/de-DE.js b/src/languages/de-DE.js index 008dbbc5f..d3a46ab75 100644 --- a/src/languages/de-DE.js +++ b/src/languages/de-DE.js @@ -113,9 +113,6 @@ export default { "Create your admin account": "Erstelle dein Admin Konto", "Repeat Password": "Wiederhole das Passwort", "Resource Record Type": "Resource Record Type", - "Export": "Export", - "Import": "Import", - "Import/Export Backup": "Import/Export Backup", Export: "Export", Import: "Import", respTime: "Antw. Zeit (ms)", @@ -133,8 +130,8 @@ export default { "Clear all statistics": "Lösche alle Statistiken", importHandleDescription: "Wähle 'Vorhandene überspringen' aus, wenn jeder Monitor oder Benachrichtigung mit demselben Namen übersprungen werden soll. 'Überschreiben' löscht jeden vorhandenen Monitor sowie Benachrichtigungen.", "Skip existing": "Vorhandene überspringen", - "Overwrite": "Überschreiben", - "Options": "Optionen", + Overwrite: "Überschreiben", + Options: "Optionen", confirmImportMsg: "Möchtest du das Backup wirklich importieren? Bitte stelle sicher, dass die richtige Import Option ausgewählt ist.", "Keep both": "Beide behalten", twoFAVerifyLabel: "Bitte trage deinen Token ein um zu verifizieren das 2FA funktioniert", @@ -151,7 +148,6 @@ export default { Inactive: "Inaktiv", Token: "Token", "Show URI": "URI Anzeigen", - "Clear all statistics": "Lösche alle Statistiken", Tags: "Tags", "Add New below or Select...": "Füge neuen hinzu oder wähle aus...", "Tag with this name already exist.": "Ein Tag mit dem Namen existiert bereits.", diff --git a/src/languages/en.js b/src/languages/en.js index 025f002f0..1971f6f6d 100644 --- a/src/languages/en.js +++ b/src/languages/en.js @@ -139,8 +139,8 @@ export default { alertWrongFileType: "Please select a JSON file.", "Clear all statistics": "Clear all Statistics", "Skip existing": "Skip existing", - "Overwrite": "Overwrite", - "Options": "Options", + Overwrite: "Overwrite", + Options: "Options", "Keep both": "Keep both", "Verify Token": "Verify Token", "Setup 2FA": "Setup 2FA", @@ -152,7 +152,6 @@ export default { Inactive: "Inactive", Token: "Token", "Show URI": "Show URI", - "Clear all statistics": "Clear all Statistics", Tags: "Tags", "Add New below or Select...": "Add New below or Select...", "Tag with this name already exist.": "Tag with this name already exist.", diff --git a/src/languages/it-IT.js b/src/languages/it-IT.js index 6362f0143..bbd2d3ad1 100644 --- a/src/languages/it-IT.js +++ b/src/languages/it-IT.js @@ -115,7 +115,6 @@ export default { "Last Result": "Ultimo risultato", "Create your admin account": "Crea l'account amministratore", "Repeat Password": "Ripeti Password", - "Import/Export Backup": "Importa/Esporta Backup", Export: "Esporta", Import: "Importa", respTime: "Tempo di Risposta (ms)", diff --git a/src/languages/nl-NL.js b/src/languages/nl-NL.js index 00dc41501..546e6dbd4 100644 --- a/src/languages/nl-NL.js +++ b/src/languages/nl-NL.js @@ -115,7 +115,6 @@ export default { "Last Result": "Laatste resultaat", "Create your admin account": "Maak uw beheerdersaccount aan", "Repeat Password": "Herhaal wachtwoord", - "Import/Export Backup": "Backup importeren/exporteren", Export: "Exporteren", Import: "Importeren", respTime: "resp. tijd (ms)", diff --git a/src/languages/tr-TR.js b/src/languages/tr-TR.js index e05af23e3..b62e289fc 100644 --- a/src/languages/tr-TR.js +++ b/src/languages/tr-TR.js @@ -116,5 +116,5 @@ export default { "Clear Data": "Verileri Temizle", Events: "Olaylar", Heartbeats: "Sağlık Durumları", - "Auto Get": "Otomatik Al" + "Auto Get": "Otomatik Al", } diff --git a/src/languages/zh-CN.js b/src/languages/zh-CN.js index f3e55fc8c..c09a824da 100644 --- a/src/languages/zh-CN.js +++ b/src/languages/zh-CN.js @@ -120,7 +120,6 @@ export default { enableDefaultNotificationDescription: "新的监控项将默认启用,你也可以在每个监控项中分别设置", "Default enabled": "默认开启", "Also apply to existing monitors": "应用到所有监控项", - "Import/Export Backup": "导入/导出备份", Export: "导出", Import: "导入", backupDescription: "你可以将所有的监控项和消息通知备份到一个 JSON 文件中", diff --git a/src/languages/zh-HK.js b/src/languages/zh-HK.js index 50959ca87..1a4ae5a6c 100644 --- a/src/languages/zh-HK.js +++ b/src/languages/zh-HK.js @@ -120,7 +120,6 @@ export default { enableDefaultNotificationDescription: "新增監測器時這個通知會預設啟用,當然每個監測器亦可分別控制開關。", "Default enabled": "預設通知", "Also apply to existing monitors": "同時取用至目前所有監測器", - "Import/Export Backup": "匯入/匯出 備份", Export: "匯出", Import: "匯入", backupDescription: "您可以備份所有監測器及所有通知。",