UNPKG

ui5-i18n-translate

Version:

A command-line interface (CLI) tool to effortlessly translate your UI5 i18n fallback files into multiple languages using the SAP Translation Hub. This package streamlines the localization process for your UI5 applications by automating the translation of

88 lines (87 loc) 3.97 kB
#!/usr/bin/env node "use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const minimist_1 = __importDefault(require("minimist")); const settings_1 = __importDefault(require("./settings")); const helper_1 = __importDefault(require("./helper")); const command_delta_1 = __importDefault(require("./command-delta")); const command_full_1 = __importDefault(require("./command-full")); const translator_1 = __importDefault(require("./translator")); (async () => { var _a; const currentDirectory = process.cwd(); const parameter = (0, minimist_1.default)(process.argv.slice(2)); // exit if no command has been entered if (parameter._.length !== 1) { helper_1.default.showGeneralHelp(); process.exit(); } const settings = settings_1.default.Instance; // exit if a non-exiting command has been entered const command = parameter._[0]; if (!["delta", "full"].includes(command)) { helper_1.default.showGeneralHelp(); process.exit(); } // exit if help parameter has been requested if (parameter.help) { switch (command) { case command_delta_1.default.command: command_delta_1.default.showHelp(); break; case command_full_1.default.command: command_full_1.default.showHelp(); break; } process.exit(); } // read information let arrayOfI18nFolders = helper_1.default.getAllI18nFolders(currentDirectory, []); arrayOfI18nFolders = arrayOfI18nFolders.map((folder) => ({ path: folder })); for (const folder of arrayOfI18nFolders) { folder.files = helper_1.default.getAllI18nFilesOfFolder(folder.path); folder.missing_translations = helper_1.default.getMissingTranslations(folder.files, settings.targetLanguages); } // exit if any folder does not contain a fallback i18n for (const folder of arrayOfI18nFolders) { const fallbackFile = (_a = folder === null || folder === void 0 ? void 0 : folder.files) === null || _a === void 0 ? void 0 : _a.find((file) => file.language === "fallback"); if (!fallbackFile) { console.log(`[${folder.path}] Folder does not contain a fallback file`); process.exit(); } } // print information console.log(`${arrayOfI18nFolders.length} location${arrayOfI18nFolders.length !== 1 ? "s" : ""} of i18n folders found:`); for (const folder of arrayOfI18nFolders) { console.log(` - ${folder.path}`); for (const file of folder.files) { console.log(` - ${file.name} (${file.language}): ${file.entries.length} ${file.entries.length !== 1 ? "entries" : "entry"}`); } if (helper_1.default.hasMissingEntries(folder)) { console.log(` Missing translations:`); for (const missing_translation of folder.missing_translations) { console.log(` - ${missing_translation.language}: ${missing_translation.missing_entries.length} ${missing_translation.missing_entries.length !== 1 ? "entries" : "entry"}`); } } else { console.log(` No missing translations found!\n`); } } // exit if test mode is enabled if (settings.isTest) { process.exit(); } // handle translation const translator = new translator_1.default(settings.authUrl, settings.authClientId, settings.authClientSecret, settings.apiUrl); switch (command) { case command_delta_1.default.command: command_delta_1.default.translate(settings, translator, arrayOfI18nFolders); break; case command_full_1.default.command: command_full_1.default.translate(settings, translator, arrayOfI18nFolders); break; } })();