UNPKG

@iobroker/create-adapter

Version:

Command line utility to create customized ioBroker adapters

96 lines 3.87 kB
"use strict"; 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