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
JavaScript
;
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;
}
})();