@iobroker/create-adapter
Version:
Command line utility to create customized ioBroker adapters
96 lines • 3.87 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getTranslatedSettingsForLanguage = getTranslatedSettingsForLanguage;
exports.getTranslatedSettings = getTranslatedSettings;
exports.getI18nJsonTemplate = getI18nJsonTemplate;
const translate_1 = require("@iobroker/adapter-dev/build/translate");
const ansi_colors_1 = require("ansi-colors");
const questions_1 = require("./core/questions");
const tools_1 = require("./tools");
const titles = {
en: "Adapter settings for <adapterName>",
de: "Adaptereinstellungen für <adapterName>",
ru: "Настройки адаптера для <adapterName>",
pt: "Configurações do adaptador para <adapterName>",
nl: "Adapterinstellingen voor <adapterName>",
fr: "Paramètres d'adaptateur pour <adapterName>",
it: "Impostazioni dell'adattatore per <adapterName>",
es: "Ajustes del adaptador para <adapterName>",
pl: "Ustawienia adaptera dla <adapterName>",
uk: "Налаштування адаптера для <adapterName>",
"zh-cn": "<adapterName>的适配器设置",
};
/**
*
* @param language
* @param answers
*/
async function getTranslatedSettingsForLanguage(language, answers) {
const adapterSettings = answers.adapterSettings || (0, questions_1.getDefaultAnswer)("adapterSettings");
const translatedSettings = {};
translatedSettings[`${answers.adapterName} adapter settings`] = titles[language].replace(/<adapterName>/gi, answers.adapterName);
try {
for (const setting of adapterSettings) {
translatedSettings[setting.label || setting.key] = await (0, translate_1.translateText)(setting.label || setting.key, language);
}
}
catch (err) {
// We accept TranslationSkippedError here, and still save whatever we had as progress
if (err instanceof translate_1.TranslationSkippedError) {
console.log((0, ansi_colors_1.yellow)("Translation incomplete because of rate Limiting. See above for details."));
}
else {
throw err;
}
}
return translatedSettings;
}
/**
* Translates all setting strings to all languages.
*
* @param answers The answers provided by the user.
*/
async function getTranslatedSettings(answers) {
const languages = ["en", "de", "ru", "pt", "nl", "fr", "it", "es", "pl", "uk", "zh-cn"];
const allTranslations = await Promise.all(languages.map(lang => getTranslatedSettingsForLanguage(lang, answers)));
const translatedSettings = {};
for (let i = 0; i < allTranslations.length; i++) {
const translations = allTranslations[i];
const lang = languages[i];
for (const key in translations) {
if (Object.prototype.hasOwnProperty.call(translations, key)) {
const translation = translatedSettings[key] || (translatedSettings[key] = {});
translation[lang] = translations[key];
}
}
}
return translatedSettings;
}
/**
*
* @param language
* @param forReact
*/
function getI18nJsonTemplate(language, forReact) {
return async (answers) => {
const isAdapter = answers.features.indexOf("adapter") > -1;
if (!isAdapter) {
return;
}
if (forReact) {
const useReact = answers.adminUi === "react" || answers.tabReact === "yes";
if (!useReact) {
return;
}
}
else {
const i18nJson = answers.i18n === "JSON" || answers.adminUi === "json";
if (!i18nJson) {
return;
}
}
const translatedSettings = await getTranslatedSettingsForLanguage(language, answers);
return (0, tools_1.formatJsonString)(JSON.stringify(translatedSettings, null, 4), answers.indentation || "Tab");
};
}
//# sourceMappingURL=translation.js.map