UNPKG

i18ntk

Version:

i18n Tool Kit - Zero-dependency internationalization toolkit for setup, scanning, analysis, validation, auto translation, fixing, reporting, and runtime translation loading.

772 lines 212 kB
{ "meta": { "version": "4.7.0", "updated": "2026-07-07", "lang": "uk" }, "common": { "welcome": "Ласкаво просимо", "hello": "Привіт", "goodbye": "до побачення", "yes": "так", "no": "немає", "save": "зберегти", "cancel": "Скасувати", "delete": "Видалити", "edit": "Редагувати", "loading": "Завантаження...", "offlineTitle": "Ви офлайн", "offlineMessage": "Перевірте підключення до Інтернету", "tryReconnect": "Спробуйте повторно підключитися", "logout": "Вийти", "login": "Логін", "amount": "Сума", "success": "Успіх", "error": "Помилка", "warning": "УВАГА", "info": "Інформація:", "debug": "Налагодження", "progress": "Прогрес:", "remaining": "Залишилося:", "total": "Всього:", "completed": "7. Виконано успішно!", "missing": "Відсутня", "partial": "Частковий", "sameAsSource": "Те саме, що джерело:", "formatMismatch": "Невідповідність формату:", "typeMismatch": "Невідповідність типу:", "structureMismatch": "Невідповідність структури:", "invalidOption": "Недійсний варіант", "separator": "==================================================", "initializationFailed": "❌ Помилка ініціалізації: {error}", "stackTrace": "Трасування стека: {stack}", "pressEnterToContinue": "Натисніть Enter, щоб продовжити...", "pressEnterToReturn": "Натисніть Enter, щоб повернутися до головного меню...", "stepCompleted": "Крок '{stepName}' завершено.", "stepFailed": "Крок '{stepName}' не вдалося.", "runningStep": "Крок бігу: {stepName}", "command": "Команда: {command}", "startingWorkflow": "Початок робочого процесу...", "workflowCompleted": "Робочий процес завершено.", "checkReports": "Перевірте звіти для отримання деталей.", "errorExecutingCommand": "Помилка виконання команди: {error}", "genericError": "❌ Помилка: {error}", "errors": { "errors": "Помилки:", "genericError": "❌ Помилка: {error}", "initializationFailed": "❌ Помилка ініціалізації: {error}", "initializationCancelled": "❌ Ініціалізацію скасовано користувачем.", "translationKeyNotFound": "Ключ перекладу не знайдено: {key}", "sourceDirectoryNotFound": "Вихідний каталог не знайдено: {directory}", "configLoadingFailed": "Помилка завантаження конфігурації", "invalidSourceDirectory": "Недійсний вихідний каталог: {directory}", "securityViolation": "Виявлено порушення безпеки", "authenticationFailed": "Помилка автентифікації", "sourceEqualsI18nWarn": "⚠️ sourceDir дорівнює i18nDir ({sourceDir}). Повертаючись до {fallback} для сканування джерела." }, "errorGeneratingStatusSummary": "Помилка створення підсумку статусу: {error}", "errorRunningDebugTool": "Помилка запуску інструмента налагодження '{displayName}': {error}", "errorReadingDebugLogs": "Помилка читання журналів налагодження: {error}", "errorAnalyzingLogFile": "Помилка аналізу файлу журналу: {error}", "errorAnalyzingTranslationKeys": "Помилка аналізу ключів перекладу: {error}", "errorAnalyzingTranslationCompleteness": "Помилка аналізу повноти перекладу: {error}", "analyzingTranslationCompleteness": "Аналіз повноти перекладу всіма мовами...", "i18nDirectoryNotFound": "⚠️ Каталог i18n не знайдено: {i18nDir}", "translationCompletenessAnalysisFailed": "⚠️ Помилка аналізу повноти перекладу: {error}", "failedToAnalyzeLanguage": "❌ Не вдалося проаналізувати мову {language}: {error}", "errorReadingI18nDirectory": "❌ Помилка читання каталогу i18n:", "languageCompletenessTitle": "📈 ПОВНОТА ПЕРЕКЛАДУ ПО МОВІ", "errorAnalyzingTranslationFormat": "Помилка аналізу формату перекладу: {error}", "errorAnalyzingTranslationType": "Помилка аналізу типу перекладу: {error}", "errorAnalyzingTranslationStructure": "Помилка аналізу структури перекладу: {error}", "errorAnalyzingTranslationFormatMismatch": "Помилка аналізу невідповідності формату перекладу: {error}", "errorAnalyzingTranslationTypeMismatch": "Помилка аналізу невідповідності типу перекладу: {error}", "errorAnalyzingTranslationStructureMismatch": "Помилка аналізу невідповідності структури перекладу: {error}", "errorAnalyzingTranslationSameAsSource": "Помилка аналізу перекладу збігається з джерелом: {error}", "title": "Статус", "nextStep1": "1. Перевірте аналіз використання:", "nextStep2": "2. Перевірте переклади:", "nextStep3": "3. Проаналізуйте повноту:", "nextStep4": "4. Доповніть відсутні переклади:", "nextStep5": "5. Створіть підсумковий звіт:", "nextStep6": "6. Перегляньте та завершіть переклади:", "generating": "Створення підсумкового звіту...", "review": "Перегляд перекладів...", "finalizing": "Завершення перекладів...", "finalized": "Успішно завершено!", "warnings": "Попередження:", "completedKeys": "Готові ключі:", "missingKeys": "Відсутні ключі:", "partialKeys": "Часткові ключі:", "home": "додому", "settings": "Налаштування", "startingSettings": "🎛️ Запуск налаштувань CLI...", "confirm": "Підтвердити", "errorExiting": "Помилка під час виходу." }, "errors": { "invalidOption": "❌ Недійсний параметр: {option}. Спробуйте ще раз.", "readlineClosed": "Вхідний потік закрито; працює в неінтерактивному режимі.", "noPackageJson": "Не знайдено package.json. Неможливо автоматично визначити структуру i18n.", "noI18nDir": "У корені проекту не знайдено каталогу i18n.", "noI18nConfig": "Не знайдено файлу конфігурації i18n у корені проекту.", "errorReadingDebugLogs": "Помилка читання журналів налагодження: {error}" }, "scanner": { "help_message": "Використання текстового сканера I18n: вузол i18ntk-scanner.js [параметри] Параметри: --source-dir <dir> Вихідний каталог для сканування (за замовчуванням: ./src) --вихід <file> Вихідний файл для результатів сканування (за замовчуванням: ./i18ntk-scanner-report.json) --framework <name> Фреймворк для націлювання (react, vue, angular, vanilla) -- шаблони <patterns> Спеціальні шаблони регулярних виразів (розділені комами) --include-tests Включити тестові файли в сканування --exclude-dirs <dirs> Каталоги для виключення (розділені комами) --help Показати цю довідку Приклади: node i18ntk-scanner.js --source-dir=./src --framework=react node i18ntk-scanner.js --patterns 'console.log\\((.*?)\\)' --include-tests node i18ntk-scanner.js --output=./scan-results.json", "help_options": { "source_dir": "Вихідний каталог для сканування на наявність проблем i18n", "output_dir": "Каталог для звітів і результатів сканування", "framework": "Цільовий фреймворк (react, vue, angular, vanilla)", "patterns": "Спеціальні шаблони регулярних виразів для виявлення тексту", "exclude": "Шаблони файлів, які потрібно виключити зі сканування", "output_report": "Створіть докладний звіт про сканування", "min_length": "Мінімальна довжина тексту для перекладу", "max_length": "Максимальна довжина тексту для перекладу", "include_tests": "Включити тестові файли в процес сканування" }, "starting": "🔍 Запуск текстового сканера для фреймворку: {framework}", "sourceDirectory": "📁 Каталог сканування: {sourceDir}", "frameworkDetected": "🎯 Виявлений фреймворк: {framework}", "scanningFiles": "📊 Сканування {fileCount} файли...", "foundTexts": "📝 Знайдено {textCount} тексти, що потребують перекладу", "generatingReport": "📊 Створення детального звіту...", "reportSaved": "💾 Звіт про сканування збережено в: {reportPath}", "noTextsFound": "✅ Жорстко закодованих англійських текстів не знайдено", "scanComplete": "🎉 Сканування успішно завершено!", "analysisTitle": "🔍 АНАЛІЗ СКАНУВАННЯ ПЕРЕКЛАДУ", "fileSummary": "📄 {file}: {count} знайдено текстів", "textLocation": "📍 Лінія {line}: {text}", "foundText": "знайдено {count} потенційні екземпляри жорстко закодованого тексту", "context": "📝 Контекст: {context}", "severity": "⚠️ Серйозність: {severity}", "recommendation": "💡 Рекомендація: {recommendation}", "welcome": { "title": "🎯 Ласкаво просимо до Text Scanner!", "description": "Цей інструмент сканує вихідний код на наявність жорстко закодованого англійського тексту, який може потребувати перекладу." }, "frameworkPrompt": { "title": "🎯 Виберіть Framework", "available": "Доступні фреймворки: react, vue, angular, vanilla", "description": "Введіть тип рамки (або натисніть Enter для автоматичного визначення):", "input": "Рамки:" }, "directoryPrompt": { "title": "📁 Виберіть вихідний каталог", "current": "Поточний каталог: {dir}", "description": "Введіть каталог для сканування (або натисніть Enter для поточного):", "input": "каталог:" }, "options": { "includeTests": "Включити тестові файли?", "excludeDirs": "Каталоги для виключення (розділені комами):", "customPatterns": "Спеціальні шаблони для сканування (регулярний вираз):" }, "reportGenerated": "Створено звіт про сканування: {path}" }, "fixer": { "help_message": "Використання фіксатора перекладу I18n: вузол i18ntk-fixer.js [параметри] Параметри: --source-dir <dir> Вихідний каталог для сканування (за замовчуванням: ./locales) --мови <langs> Розділений комами список мов для виправлення --markers <markers> Розділені комами маркери розглядати як неперекладені --no-backup Пропустити автоматичне створення резервної копії --help Показати цю довідку Приклади: node i18ntk-fixer.js --languages ​​de,fr node i18ntk-fixer.js --source-dir=./locales --markers НЕ_ПЕРЕКЛАДЕНО node i18ntk-fixer.js --no-backup", "starting": "🚀 Початок виправлення перекладу для мов: {languages}", "sourceDirectory": "📁 Вихідний каталог: {sourceDir}", "sourceLanguage": "🔤 Мова оригіналу: {sourceLanguage}", "markers": "🏷️ Маркери для виправлення: {markers}", "scanningLanguage": "📊 Сканування {language}...", "noLanguages": "❌ Не вказано мови для виправлення.", "allComplete": "🎉 Усі переклади вже готові!", "fullReportSaved": "📊 Повний звіт збережено в: {reportPath}", "reviewReport": "Перш ніж продовжити, перегляньте звіт.", "backupCreated": "💾 Резервну копію створено успішно.", "applyingFixes": "🔄 Застосування виправлень...", "fixingComplete": "✅ Виправлення перекладу завершено!", "operationCancelled": "❌ Операцію скасовано користувачем.", "analysisTitle": "🔍 АНАЛІЗ ВИПРАВЛЕННЯ ПЕРЕКЛАДУ", "analysisSeparator": "==================================================", "totalIssues": "Усього знайдено проблем: {totalIssues}", "missingTranslations": "Відсутні переклади: {missing}", "placeholderTranslations": "Переклади заповнювачів: {placeholder}", "noIssues": "✅ Проблем не виявлено. Усі переклади виконано.", "detailedIssues": "📋 DETAILED ISSUES:", "detailedSeparator": "--------------------------------------------------", "filePath": "📄 {file} → {path}", "missingKey": "❌ ВІДСУТНІ: {source} → {new}", "placeholderKey": "⚠️ ЗАПОВНЮВАЧ: \"{target}\" → \"{new}\"", "moreIssues": "... і {count} more issues. Перевірте файл звіту для повної інформації.", "confirmationTitle": "🤔 Ви хочете продовжити ці виправлення?", "confirmationOptions": "Опції:", "optionYes": "y - Так, застосувати всі виправлення", "optionNo": "n - Ні, скасувати операцію", "optionShow": "s - Показати докладні проблеми", "choicePrompt": "Ваш вибір (y/n/s):", "nonInteractiveMode": "⚡ Виявлено неінтерактивний режим - автоматичне застосування виправлень...", "reportGenerated": "📊 Створено звіт Fixer: {path}", "summary": "Підсумок фіксатора:", "welcome": { "title": "🎯 Ласкаво просимо до Translation Fixer!", "description": "Цей інструмент допоможе вам виправити несправні переклади та заповнювачі у файлах локалізації." }, "markerPrompt": { "title": "🏷️ Налаштувати маркери заповнювачів", "description": "Введіть маркери, які позначають неперекладений текст (через кому):", "currentDefaults": "Стандартні маркери: {markers}", "input": "Маркери (або натисніть Enter для стандартних значень):" }, "languagePrompt": { "title": "🌍 Виберіть мови для виправлення", "available": "Доступні мови: {languages}", "description": "Введіть мови, які потрібно виправити (через кому) або натисніть Enter для всіх:", "input": "мови:", "noLanguages": "Не знайдено мов для виправлення." }, "directoryPrompt": { "title": "📁 Виберіть каталог", "current": "Поточний каталог: {dir}", "description": "Введіть каталог, що містить файли вашої мови (або натисніть Enter для поточного):", "input": "каталог:" }, "backupLocation": "Розташування резервної копії: {dir}", "completed": "Виправлення завершено.", "creatingBackup": "Створення резервної копії в {dir}...", "dryRunMode": "Режим сухого ходу: {mode}", "error": "Помилка фіксатора: {error}", "fixing": "Закріплення {language}...", "foundLanguages": "знайдено {count} мови: {languages}", "languageFixed": "{language}: виправлено {fixed} ключ(и), пропущено {skipped}.", "running": "Запуск засобу виправлення перекладу...", "totalFixed": "Всього виправлено: {count}" }, "autorun": { "stepAnalyzeTranslations": "Проаналізуйте переклади", "stepCompletedWithIcon": "✅ Виконано: {stepName}", "stepValidateTranslations": "Перевірте переклади", "stepRunning": "▶️ Крок {stepNumber}/{totalSteps}: {stepName}", "separator": "==================================================", "stepFailed": "❌ Не вдалося: {stepName}", "errorLabel": "Помилка", "autoRunScriptTitle": "🧪 Автоматичний запуск робочого процесу", "usageTitle": "Використання", "runAllSteps": "Запустіть: вузол i18ntk-autorun.js", "configureSettingsFirst": "Конфігурація: i18ntk-config.json або прапорці CLI", "runSpecificSteps": "Використовуйте --steps=1,3 або --list, щоб показати кроки", "showHelp": "--help для отримання додаткової інформації", "examplesTitle": "Приклади", "configExample": "вузол i18ntk-autorun.js --ui-language=zh", "stepsExample1": "вузол i18ntk-autorun.js --steps=analyze,validate", "stepsExample2": "вузол i18ntk-autorun.js --list", "customSettingsConfiguration": "Спеціальні налаштування автозапуску", "availableSteps": "Доступні кроки", "startingAutoRunWorkflow": "🚀 Запуск процесу автоматичного запуску...", "workflowIncludesSteps": "Робочий процес включає {count} кроки:", "missingRequiredFile": "Відсутній необхідний файл: {file}", "workflowStopped": "Робочий процес зупинено через збій.", "workflowCompleted": "🎉 Робочий процес завершено!", "successfulSteps": "Успішні кроки: {count}", "failedSteps": "Невдалі дії: {count}", "stepInitializeProject": "Ініціалізація проекту", "stepCheckUsage": "Перевірте використання ключа", "stepGenerateSummary": "Створити зведений звіт", "runInitializationFirst": "Спочатку запустіть ініціалізацію.", "initializationCheckPassed": "Перевірку ініціалізації пройдено.", "runningStep": "Крок бігу: {stepName}", "commandLabel": "Команда: {command}", "stepCompletedWithTime": "Крок '{stepName}' завершено в {duration}РС.", "stepCompleted": "Крок '{stepName}' завершено.", "stepFailedWithError": "Крок '{stepName}' не вдалося з помилкою: {error}", "requiredStepFailed": "Необхідний крок не виконано. Зупинка робочого процесу.", "optionalStepFailed": "Помилка додаткового кроку. Постійний робочий процес.", "stepRequired": "(обов'язково)", "stepOptional": "(необов'язково)", "startingExecution": "Початок виконання...", "pressEnterToContinue": "Натисніть Enter, щоб продовжити...", "runningSelectedSteps": "Виконання вибраних кроків...", "invalidStepNumber": "Недійсний номер кроку: {stepNum}", "executionReport": "Звіт про виконання:", "requiredFailedSteps": "Необхідні кроки не виконано: {count}", "stepDetails": "Деталі кроку:", "reportSavedTo": "Звіт збережено в: {path}", "overallStatusSuccess": "SUCCESS", "overallStatusFailed": "FAILED", "overallStatus": "Загальний статус: {status}", "pressEnterForDefaults": "Натисніть Enter, щоб використовувати налаштування за замовчуванням для будь-якого запиту.", "sourceDirPrompt": "Введіть вихідний каталог (за замовчуванням: {default}):", "sourceLangPrompt": "Введіть вихідну мову (за замовчуванням: {default}):", "targetLangsPrompt": "Введіть цільові мови (через кому, за замовчуванням: {default}):", "translationMarkerPrompt": "Введіть маркер перекладу (за замовчуванням: {default}):", "outputDirPrompt": "Введіть вихідний каталог для звітів (за замовчуванням: {default}):", "settingsUpdatedSuccessfully": "Налаштування успішно оновлено!", "errorConfiguringSettings": "Помилка налаштування параметрів: {error}", "configurationComplete": "Налаштування завершено.", "runAutoRunCommand": "Тепер ви можете запустити команду автозапуску.", "configurationFailed": "Помилка конфігурації: {error}", "noValidStepNumbers": "Не надано дійсних номерів кроків.", "autoRunFailed": "Помилка автоматичного запуску: {error}", "stepCompleteTranslations": "Повні переклади", "stepAnalyzeSizing": "Проаналізуйте розміри", "stepCompletedIcon": "✅", "stepRunningWithNumber": "[{stepNumber}/{totalSteps}] Крок '{stepName}'біжить...", "stepFailedIcon": "❌", "translationLoadWarning": "Попередження: не вдалося завантажити {lang} переклади", "configReadError": "Помилка читання {file}" }, "analyze": { "help_message": "Використання аналізатора перекладу I18n: вузол i18ntk-analyze.js [параметри] Параметри: --source-dir <dir> Вихідний каталог для сканування (за замовчуванням: ./src) --i18n-dir <dir> Каталог I18n (за замовчуванням: ./src/locales) --output-report Створити докладний звіт --output-dir <dir> Вихідний каталог для звітів (за замовчуванням: ./reports) --help Показати цю довідку Приклади: node i18ntk-analyze.js --output-report node i18ntk-analyze.js --source-dir=./app --i18n-dir=./locales node i18ntk-analyze.js --output-dir=./analysis --output-report", "source_directory": "📁 Вихідний каталог: {sourceDir}", "i18n_directory": "🌐 Каталог I18n: {i18nDir}", "loading_translation_files": "📋 Завантаження файлів перекладу...", "sourceDirectoryLabel": "📁 Вихідний каталог: {sourceDir}", "sourceLanguageLabel": "🌍 Мова оригіналу: {sourceLanguage}", "strictModeLabel": "⚙️ Строгий режим: {mode}", "found_translation_files_count": "✅ Знайдено {count} файли перекладу", "analyzing_translations": "🔍 Аналізуємо переклади...", "analysis_completed_successfully": "🎉 Аналіз успішно завершено!", "analysis_results": "📊 ANALYSIS RESULTS", "language_analysis_stats": "{language}: {translatedKeys}/{totalKeys} ({percentage}% перекладено)", "sample_missing_keys": "Зразок відсутніх ключів:", "missing_key": "- {key}", "and_more_missing": "...і {count} більше.", "sample_unused_keys": "Зразки невикористаних ключів:", "unused_key": "- {key}", "and_more_unused": "...і {count} більше.", "recommendations": "📋 РЕКОМЕНДАЦІЇ", "add_missing_translations": "💡 Додайте відсутні переклади, щоб покращити покриття.", "remove_unused_translations": "💡 Видаліть невикористані переклади, щоб ваш проект був чистим.", "next_steps": "📋 NEXT STEPS", "review_analysis_results": "1. Перегляньте результати аналізу в консолі або створений звіт.", "run_with_output_report": "2. Запустіть з --output-report для детального звіту.", "add_or_remove_translations": "3. Додайте відсутні переклади або видаліть невикористані.", "rerun_analysis": "4. Повторно запустіть аналіз, щоб перевірити покращення.", "analysis_summary": "📊 ANALYSIS SUMMARY", "source_files_scanned": "Відскановані вихідні файли: {fileCount}", "translation_files_checked": "Перевірено файли перекладу: {translationFileCount}", "total_keys": "Всього ключів: {totalKeys}", "translated_keys": "Перекладені ключі: {translatedKeys}", "missing_keys": "Відсутні ключі: {missingKeys}", "unused_keys": "Невикористані ключі: {unusedKeys}", "translation_coverage": "Покриття перекладу: {coverage}%", "analysis_passed_for_language": "✅Аналіз пройдено {language}", "analysis_failed_for_language": "❌ Не вдалося виконати аналіз {language} ({missingKeys} відсутній, {unusedKeys} невикористаний)", "starting": "🔍 Початок аналізу перекладу...", "foundLanguages": "📋 Знайдено {count} мови для аналізу: {languages}", "analyzing": "🔄 Аналізуємо {language}...", "reportTitle": "📊 ЗВІТ ПРО АНАЛІЗ ПЕРЕКЛАДУ", "generated": "Створено: {timestamp}", "status": "Статус: {translated}/{total} ключі ({percentage}% перекладено)", "filesAnalyzed": "Проаналізовано файли: {analyzed}/{total}", "keysNeedingTranslation": "Ключі потребують перекладу: {count}", "fileBreakdown": "📋 РОЗБІК ФАЙЛУ", "error": "Помилка", "completed": "✅ Аналіз виконано для {language}", "progress": "📊 Загальний прогрес: {translated}/{total} оброблених мов", "reportSaved": "Звіт збережено: {reportPath}", "summary": "📊 ANALYSIS SUMMARY", "finished": "✅ Аналіз успішно завершено!", "statusFileMissing": "❌ Відсутній файл перекладу", "sourceKeys": "📊 Ключі вихідних кодів: {count}", "translation": "📊 Переклад: {translated}/{total} ({percentage}%)", "structure": "🗂️ Структура: {status}", "consistent": "Послідовний", "inconsistent": "Непослідовний", "missingKeys": "Відсутні ключі: {count}", "extraKeys": "Додаткові ключі: {count}", "issues": "⚠️ Знайдено проблеми: {count}", "issueType": { "not_translated": "Не перекладено: {count}", "empty_value": "Порожні значення: {count}", "partial_translation": "Часткові переклади: {count}", "format_mismatch": "Невідповідність формату: {count}", "type_mismatch": "Типові невідповідності: {count}", "structure_mismatch": "Невідповідності структури: {count}", "same_as_source": "Те саме, що джерело: {count}" }, "keysToTranslate": "📋 КЛЮЧІ ДЛЯ ПЕРЕКЛАДУ", "key": "ключ", "english": "англійська", "needsTranslation": "ПОТРЕБУЄ ПЕРЕКЛАДУ", "andMoreKeys": "...і {count} більше ключів.", "noLanguages": "⚠️ Цільові мови не знайдено.", "languageStats": "{language}: {percentage}% виконано ({translated}/{total} ключі)", "invalidReportFilePath": "Недійсний шлях до файлу звіту", "failedToWriteReportFile": "Не вдалося безпечно записати файл звіту" }, "complete": { "configLoadedSuccessfully": "Конфігурація успішно завантажена", "configLoadingFailed": "Помилка завантаження конфігурації", "sourceLanguageNotFound": "Каталог вихідної мови не знайдено: {sourceLanguage}", "couldNotParseTarget": "Не вдалося проаналізувати цільовий файл: {file}", "couldNotParseSource": "Не вдалося проаналізувати вихідний файл: {file}", "reportGenerated": "Звіт створено: {path}", "generateReportPrompt": "Бажаєте створити звіт?", "title": "🌍 I18NTK ЗАВЕРШЕННЯ ПЕРЕКЛАДУ", "separator": "============================================================", "sourceDir": "📁 Вихідний каталог: {sourceDir}", "sourceLanguage": "🌐 Мова оригіналу: {sourceLanguage}", "dryRunMode": "🧪 Режим сухого ходу - жодних змін не буде", "languages": "🌍 Доступні мови: {languages}", "addingMissingKeys": "➕ Додавання відсутніх ключів до файлів перекладу...", "processing": "🔄 Обробка {language}...", "addedKeys": "✅ Додано {count} відсутні ключі", "noChangesNeeded": "✅ Ніяких змін не потрібно {language}", "summaryTitle": "📊 ПІДСУМКИ ЗАВЕРШЕННЯ", "totalChanges": "📝 Загальні зміни: {totalChanges}", "languagesProcessed": "🌍 Оброблені мови: {languagesProcessed}", "missingKeysAdded": "➕ Додано відсутні ключі: {missingKeysAdded}", "nextStepsTitle": "📋 NEXT STEPS", "nextStep1": "1. Виконайте аналіз використання:", "nextStep2": "вузол i18ntk-usage.js --вихідний звіт", "nextStep3": "2. Перевірте переклади:", "nextStep4": "вузол i18ntk-validate.js", "nextStep5": "3. Проаналізуйте шаблони:", "nextStep6": "вузол i18ntk-analyze.js", "allKeysAvailable": "🎉 Усі ключі перекладу тепер доступні!", "runWithoutDryRun": "💡 Запустіть без --dry-run, щоб застосувати зміни", "deletingOldReport": "🗑️ Видалення старого звіту...", "generatingFreshAnalysis": "📊 Створення нового аналізу використання...", "couldNotGenerate": "❌ Не вдалося створити аналіз використання", "reportNotFound": "📋 Звіт про використання не знайдено. Використання загальних ключів...", "foundMissingKeys": "📋 Знайдено {count} відсутні ключі в аналізі використання", "couldNotParse": "❌ Не вдалося проаналізувати звіт про використання. Використання загальних ключів...", "errorDuringCompletion": "❌ Помилка під час завершення: {error}", "fatalError": "❌ Фатальна помилка: {error}", "configurationValidationFailed": "Помилка перевірки конфігурації: відсутні обов’язкові поля" }, "sizing": { "separator": "================================================================================", "lineSeparator": "--------------------------------------------------------------------------------", "analysisStats": "{stats}", "sourceDirectoryLabel": "📁 Вихідний каталог: {sourceDir}", "sourceLanguageLabel": "🌍 Мова оригіналу: {sourceLanguage}", "strictModeLabel": "⚙️ Суворий режим: {mode}", "invalidSourceDirectoryError": "Недійсний шлях вихідного каталогу: {sourceDir}", "sourceDirectoryNotFoundError": "Вихідний каталог не знайдено: {sourceDir}", "invalidOutputDirectoryError": "Недійсний вихідний шлях каталогу: {outputDir}", "invalidReportFileError": "Недійсний шлях до файлу звіту", "problematic_keys": "Проблемні ключі: {problematicKeys}", "problematicKeysLabel": "Проблемні ключі: {problematicKeys}", "long_translations": "Довгі переклади: {longTranslations}", "failedToSaveReportError": "Не вдалося безпечно зберегти звіт", "invalidCsvFileError": "Недійсний шлях до файлу CSV", "failedToSaveCsvError": "Не вдалося безпечно зберегти звіт CSV", "fatalError": "❌ Помилка аналізу розміру: {error}", "starting_i18n_sizing_analysis": "Початок аналізу розмірів i18n...", "source_directory": "Вихідний каталог: {sourceDir}", "found_languages": "Знайдені мови: {languages}", "analyzing_file_sizes": "Аналіз розмірів файлів...", "analyzing_translation_content": "Аналіз вмісту перекладу...", "generating_size_comparisons": "Порівняння розмірів...", "no_languages_found_for_comparison": "Не знайдено мов для порівняння", "sizing_analysis_results": "Результати аналізу розмірів I18n", "file_sizes_title": "Розміри файлів", "file_sizes_header": "Мова Розмір (КБ) Рядки Символи", "file_size_row": "{lang} {sizeKB} {lines} {characters}", "language_statistics_title": "Мовна статистика", "language_stats_header": "Мовні ключі Символи Середня довжина Макс. довжина Порожній Довгий", "language_stats_row": "{lang} {totalKeys} {totalCharacters} {averageKeyLength} {maxKeyLength} {emptyKeys} {longKeys}", "size_variations_title": "Варіації розміру", "size_variations_header": "Мова Char Diff % Diff Проблематична", "size_variation_row": "{lang} {characterDifference} {percentageDifference}% {problematic}", "problematic_yes": "так", "problematic_no": "немає", "recommendations_title": "Рекомендації", "recommendation_item": "{index}. {recommendation}", "problematic_key_detail": "{index}. Ключ: '{key}' - Варіації: {variations}", "generating_detailed_report": "Створення детального звіту...", "keysHaveSignificantSizeVariations": "ключі мають значні варіації розміру", "longTranslationsDetected": "${lang} має переклади ${data.longKeys}, які довші за 100 символів - розбийте їх на частини", "longer": "довше", "shorter": "коротше", "review_translations": "Подумайте про перегляд {lang} переклади - вони є {percentageDifference}% {comparison} ніж базовий рівень", "report_saved_to": "Звіт збережено в: {reportPath}", "considerReviewingTranslations": "Подумайте про перегляд ${lang} переклади – вони на ${data.percentageDifference}% довші за базову лінію", "csv_report_saved_to": "Звіт CSV збережено в: {csvPath}", "human_report_saved": "Читабельний звіт збережено: {reportPath}", "folder_summary_title": "Резюме папки", "folder_summary_table_header": "Мова Розмір (КБ) Ключі Середня довжина Загальна кількість символів", "folder_summary_row": "{lang} {sizeKB} {totalKeys} {avgLength} {totalChars}", "language_comparison_title": "Мовне порівняння", "language_comparison_row": "{lang}: {diff} символи ({percent}%) {status}", "summary_stats": "📊 Підсумок: {totalLanguages} мови, {totalKeys} ключі - Звіти зберігаються в {reportPath}", "detailedKeysDescription": "Показати детальний аналіз рівня ключів у консолі", "too_many_keys_warning": "⚠️ Забагато клавіш для відображення в консолі - перевірте файл детального звіту для повного аналізу", "no_translation_files_found": "Файлів перекладу не знайдено", "analysis_completed": "Аналіз завершено в {duration}РС", "analysis_failed": "Аналіз не виконано: {errorMessage}", "starting_analysis": "Початок аналізу...", "found_files": "знайдено {count} файли", "failed_to_parse_language_error": "Не вдалося розібрати {language} переклади: {errorMessage}", "recommendations": { "keys_have_significant_size_variations": "ключі мають значні варіації розміру", "consider_reviewing_translations": "Подумайте про перегляд {lang} переклади - вони є {percentageDifference}% {comparison} ніж базовий рівень", "long_translations_detected": "{lang} має {longKeys} переклади довші ніж {threshold} символи - подумайте про те, щоб розбити їх" }, "detailed_key_analysis_title": "Детальний аналіз ключів", "key_analysis_detail": "{lang}: {length} символи ({status}) - {translation}", "key_analysis_header": "ключ: {key}", "status_empty": "порожній", "status_long": "довго", "status_ok": "добре" }, "usage": { "help_message": "Використання аналізатора використання I18n: вузол i18ntk-usage.js [параметри] Параметри: --source-dir <dir> Вихідний каталог для сканування (за замовчуванням: ./src) --i18n-dir <dir> Каталог I18n (за замовчуванням: ./src/locales) --output-report Створити докладний звіт --output-dir <dir> Вихідний каталог для звітів (за замовчуванням: ./reports) --help Показати цю довідку Приклади: node i18ntk-usage.js --output-report node i18ntk-usage.js --source-dir=./app --i18n-dir=./locales node i18ntk-usage.js --output-dir=./analysis --output-report", "source_directory_thissourcedir": "📁 Вихідний каталог: {sourceDir}", "translationCompletenessTitle": "🌍 Повнота перекладу:", "i18n_directory_thisi18ndir": "🌐 Каталог I18n: {i18nDir}", "failed_to_parse_filename_error": "⚠️ Не вдалося проаналізувати {fileName}: {errorMessage}", "analyzing_source_files": "🔍 Аналіз вихідних файлів...", "found_files_in_source": "📂 Знайдено {numFiles} файлів у вихідному каталозі", "found_thisusedkeyssize_unique_": "🎯 Знайдено {usedKeysSize} унікальні використані ключі", "total_key_usages_totalkeysfoun": "📊 Загальна кількість ключових використань: {totalKeysFound}", "loading_available_translation_": "📋 Завантаження доступних ключів перекладу...", "found_thisavailablekeyssize_av": "✅ Знайдено {availableKeysSize} доступні ключі", "foundTranslationFiles": "✅ Знайдено {count} файли перекладу", "errorReadingI18nDirectory": "⚠️ Помилка читання каталогу i18n: {error}", "pressEnterToReturnToMenu": "📝 Натисніть Enter, щоб повернутися до головного меню...", "notTranslatedKeysTotal": "⚠️ Неперекладені ключі: {total}", "noSourceFilesFound": "⚠️ У вихідному каталозі не знайдено вихідних файлів.", "reviewNotTranslatedKeys": "💡 Перегляньте неперекладені ключі", "analysisCompletedSuccessfully": "🎉 Аналіз успішно завершено!", "detectedSourceDirectory": "Виявлений вихідний каталог: {sourceDir}", "detectedI18nDirectory": "Виявлено каталог i18n: {i18nDir}", "fileInfo": "📄 {namespace}: {keys} ключі", "failedToAnalyzeUsage": "❌ Не вдалося проаналізувати використання: {error}", "failedToAnalyzeFile": "❌ Не вдалося проаналізувати файл: {error}", "failedToExtractKeys": "❌ Не вдалося отримати ключі з {filePath}: {error}", "analysisFailedError": "❌ Аналіз не вдалося: {error}", "analyzerInitialized": "Аналізатор ініціалізовано", "analyzerInitFailed": "Помилка ініціалізації аналізатора: {error}", "argsParsed": "Розібрані аргументи", "processedFiles": "Оброблено {processedFiles} з {totalFiles} файли.", "argsParseFailed": "Помилка аналізу аргументу: {error}", "translationDiscoveryError": "Помилка виявлення перекладу: {error}", "fileTraversalError": "Помилка проходження файлу: {error}", "sourceEqualsI18nWarn": "{reason}. Аналіз використання не скануватиме файли локалі як вихідний код.", "i18nEqualsSourceWarn": "⚠️ Каталог I18n і вихідний каталог однакові. Це може спричинити проблеми з аналізом.", "usageAnalysisFailed": "⚠️ Помилка аналізу використання: {error}", "translationFileParseError": "⚠️ Помилка аналізу файлу перекладу: {error}", "translationKeysLoadError": "⚠️ Помилка завантаження ключів перекладу: {error}", "languageCompletenessStats": "🌐 {language}: {translated}/{total} ({completeness}% перекладено)", "missingKeysCount": "⚠️ Відсутні ключі: {count}", "analyzingTranslationCompleteness": "Аналіз повноти перекладу...", "unusedKeysCount": "Невикористані ключі: {count}", "usedKeysCount": "Використані ключі: {count}", "availableKeysCount": "Доступні ключі: {count}", "analysisResults": "Результати аналізу:", "i18nDirectoryNotFound": "⚠️ Каталог I18n не знайдено. Будь ласка, перевірте шлях.", "sourceDirectoryNotFound": "⚠️ Вихідний каталог не знайдено: {dir}", "checkUsage": { "title": "🔍 I18NTK USAGE ANALYSIS", "analyzing_source_files": "🔍 Аналіз вихідних файлів...", "source_directory_thissourcedir": "📁 Вихідний каталог: {sourceDir}", "i18n_directory_thisi18ndir": "📁 Каталог i18n: {i18nDir}", "found_files_in_source": "✅ Знайдено {numFiles} файлів у вихідному каталозі", "no_source_files_found": "⚠️ У вказаному каталозі не знайдено вихідних файлів", "processedFiles": "📊 Оброблено {processedFiles} з {totalFiles} файли", "failedToProcessFile": "❌ Не вдалося обробити", "found_thisusedkeyssize_unique_": "🔍 Знайдено {usedKeysSize} унікальні використані ключі", "total_key_usages_totalkeysfoun": "📊 Загальна кількість ключових використань: {totalKeysFound}", "loading_available_translation_": "📂 Завантаження доступних ключів перекладу...", "found_thisavailablekeyssize_av": "✅ Знайдено {availableKeysSize} доступні ключі", "message": "Аналіз використання ключа перекладу у вашому проекті...", "usage_analysis_results": "📊 USAGE ANALYSIS RESULTS", "source_files_scanned_thisfileu": "📁 Відскановані вихідні файли: {fileUsageSize}", "available_translation_keys_thi": "✅ Доступні ключі перекладу: {availableKeysSize}", "used_translation_keys_thisused": "🔍 Використані ключі перекладу: {usedKeysSize}", "dynamic_keys_detected_dynamick": "⚡ Виявлено динамічні ключі: {dynamicKeysLength}", "unused_keys_unusedkeyslength": "🗑️ Невикористані ключі: {unusedKeysLength}", "missing_keys_missingkeyslength": "❌ Відсутні ключі: {missingKeysLength}", "translation_completeness_title": "📈 ПОВНОТА ПЕРЕКЛАДУ", "language_completeness_stats": "{language}: {translated}/{total} ключі ({percentage}%)", "n_sample_unused_keys": "🗑️ ЗРАЗКИ НЕВИКОРИСТАНИХ КЛЮЧІВ (перші 5):", "key": "🔑 {key}", "and_unusedkeyslength_5_more": "... і {count} більше невикористаних ключів", "n_sample_missing_keys": "❌ ЗРАЗКИ ВІДСУТНИХ КЛЮЧІВ (перші 5):", "and_missingkeyslength_5_more": "... і {count} більше відсутніх ключів", "n_generating_detailed_report": "📊 Створення детального звіту...", "report_saved_reportpath": "📄 Звіт збережено: {reportPath}", "n_recommendations": "💡 РЕКОМЕНДАЦІЇ:", "consider_removing_unused_trans": "🗑️ Подумайте про видалення невикористаних перекладів, щоб зменшити розмір пакета", "add_missing_translation_keys_t": "➕ Додайте відсутні ключі перекладу, щоб зберегти узгодженість", "review_dynamic_keys_manually_t": "🔍 Перегляньте динамічні ключі вручну (вони можуть бути дійсними)", "all_translation_keys_are_prope": "✅ Усі ключі перекладу використовуються правильно!", "n_next_steps": "🎯 NEXT STEPS:", "2_check_the_detailed_report_fo": "2. Перевірте докладний звіт щодо конкретних питань", "help_message": "Використання аналізатора використання I18n: вузол i18ntk-usage.js [параметри] Параметри: --source-dir <dir> Вихідний каталог для сканування (за замовчуванням: ./src) --i18n-dir <dir> Каталог I18n (за замовчуванням: ./src/locales) --output-report Створити докладний звіт --output-dir <dir> Вихідний каталог для звітів (за замовчуванням: ./reports) --help Показати цю довідку Приклади: node i18ntk-usage.js --output-report node i18ntk-usage.js --source-dir=./app --i18n-dir=./locales node i18ntk-usage.js --output-dir=./analysis --output-report", "1_review_the_analysis_results": "1. Перегляньте результати аналізу в консолі або створений звіт.", "2_run_with_outputreport_for_de": "2. Запустіть з --output-report для детального звіту.", "3_remove_unused_keys_or_add_mi": "3. Видаліть невикористовувані ключі або додайте відсутні ключі до вихідного коду.", "4_rerun_analysis_to_verify_imp": "4. Повторно запустіть аналіз, щоб перевірити покращення.", "noSourceFilesFound": "Не знайдено вихідних файлів для аналізу.", "i18nDirectoryNotFound": "Каталог I18n не знайдено: {i18nDir}", "noTranslationLanguagesFound": "Не знайдено мов перекладу.", "failedToAnalyzeFile": "Не вдалося проаналізувати файл {filePath}: {error}", "failedToAnalyzeLanguage": "Не вдалося проаналізувати мову {language}: {error}", "translationCompletenessAnalysisFailed": "Помилка аналізу повноти перекладу: {error}", "n": "\\n" }, "complete": { "configLoadedSuccessfully": "Конфігурація успішно завантажена", "configLoadingFailed": "Помилка завантаження конфігурації", "title": "🌍 I18NTK ЗАВЕРШЕННЯ ПЕРЕКЛАДУ", "separator": "============================================================", "sourceDir": "📁 Вихідний каталог: {sourceDir}", "sourceLanguage": "🌐 Мова оригіналу: {sourceLanguage}", "dryRunMode": "🧪 Режим сухого ходу - жодних змін не буде", "languages": "🌍 Доступні мови: {languages}", "addingMissingKeys": "➕ Додавання відсутніх ключів до файлів перекладу...", "processing": "🔄 Обробка {language}...", "addedKeys": "✅ Додано {count} відсутні ключі", "changeDetails": "📝 {file}: {key}", "andMore": "...і {count} більше", "noChangesNeeded": "✅ Ніяких змін не потрібно {language}", "summaryTitle": "📊 ПІДСУМКИ ЗАВЕРШЕННЯ", "totalChanges": "📝 Загальні зміни: {totalChanges}", "languagesProcessed": "🌍 Оброблені мови: {languagesProcessed}", "missingKeysAdded": "➕ Додано відсутні ключі: {missingKeysAdded}", "nextStepsTitle": "📋 NEXT STEPS", "nextStep1": "1. Виконайте аналіз використання:", "nextStep2": "вузол i18ntk-usage.js --вихідний звіт", "nextStep3": "2. Перевірте переклади:", "nextStep4": "вузол i18ntk-validate.js", "nextStep5": "3. Проаналізуйте шаблони:", "nextStep6": "вузол i18ntk-analyze.js", "allKeysAvailable": "🎉 Усі ключі перекладу тепер доступні!", "runWithoutDryRun": "💡 Запустіть без --dry-run, щоб застосувати зміни", "deletingOldReport": "🗑️ Видалення старого звіту...", "generatingFreshAnalysis": "📊 Створення нового аналізу використання...", "couldNotGenerate": "❌ Не вдалося створити аналіз використання", "reportNotFound": "📋 Звіт про використання не знайдено. Використання загальних ключів...", "foundMissingKeys": "📋 Знайдено {count} відсутні ключі в аналізі використання", "couldNotParse": "❌ Не вдалося проаналізувати звіт про використання. Використання загальних ключів..." }, "noTranslationLanguagesFound": "Мови перекладу не знайдено", "failedToAnalyzeLanguage": "Не вдалося проаналізувати мову", "translationCompletenessAnalysisFailed": "Помилка аналізу повноти перекладу", "failedToProcessFile": "Не вдалося обробити файл:", "failedToSaveReport": "Не вдалося зберегти звіт про використання: {error}", "i18nDirectoryDoesNotExist": "Каталог I18n не існує: {dir}", "reportSavedTo": "Звіт про використання збережено в: {reportPath}", "sourceDirectoryDoesNotExist": "Вихідний каталог не існує: {dir}", "noSourceDirectoryConfigured": "(не налаштовано)" }, "validate": { "help_message": "Використання засобу перевірки перекладу I18n: вузол i18ntk-validate.js [параметри] Параметри: --source-dir <dir> Вихідний каталог для сканування (за замовчуванням: ./src) --i18n-dir <dir> Каталог I18n (за замовчуванням: ./src/locales) --output-report Створити докладний звіт --output-dir <dir> Вихідний каталог для звітів (за замовчуванням: ./reports) --help Показати цю довідку Приклади: node i18ntk-validate.js --output-report node i18ntk-validate.js --source-dir=./app --i18n-dir=./locales node i18ntk-validate.js --output-dir=./analysis --output-report", "title": "🔍 Перевірка перекладу I18n", "message": "Початок процесу перевірки...", "sourceDirectory": "📁 Вихідний каталог: {dir}", "sourceLanguage": "🌍 Мова оригіналу: {sourceLanguage}", "strictMode": "⚙️ Суворий режим: {mode}", "noTargetLanguages": "Цільові мови не налаштовано; пропуск перевірки цілі. Додайте мови за допомогою \"i18ntk init --languages=de,fr\".", "validatingLanguages": "🌍 Перевірка мов: {langs}", "validatingLanguage": "🔍 Мова перевірки: {lang}", "filesCount": "📄 Файли: {count}", "keysCount": "🔑 Ключі: {count}", "missingFilesCount": "📁 Відсутні файли: {count}", "syntaxErrorsCount": "❌ Синтаксичні помилки: {count}", "translationPercentage": "🎯 Переклад: {percentage}% ({translated}/{total} ключі)", "validationSummary": "📊 РЕЗЮМЕ ПЕРЕВІРКИ", "validation_failed": "❌ Помилка перевірки: {error}", "totalErrors": "❌ Всього помилок: {count}", "totalWarnings": "⚠️ Сумарні попередження: {count}", "errorsSection": "❌ ERRORS", "warningsSection": "⚠️ WARNINGS", "recommendationsSection": "💡 РЕКОМЕНДАЦІЇ", "fixErrorsFirst": "1. Спочатку виправте всі помилки", "resolveMissingFilesAndSyntaxErrors": "1. Виправте відсутні файли та синтаксичні помилки", "fixStructuralInconsistencies": "2. Виправте структурні невідповідності", "completeMissingTranslations": "3. Доповніть відсутні переклади", "rerunValidation": "4. Перезапустіть перевірку, щоб перевірити виправлення", "addressWarnings": "Звертайте увагу на попередження, щоб покращити якість", "reviewWarnings": "Перегляньте попередження та виправте, якщо потрібно", "considerRunningWithStrict": "2. Розгляньте можливість запуску з прапорцем --strict для суворішої перевірки", "allValidationsPassed": "🎉 Усі перевірки пройшли!", "considerRunningUsageAnalysis": "Спробуйте запустити аналіз використання: вузол i18ntk-usage.js", "deletedOldReport": "🗑️ Видалено старий звіт перевірки", "sourceDir": "📁 Вихідний каталог: {sourceDir}", "i18nDir": "🌐 Каталог I18n: {i18nDir}", "loadingTranslationFiles": "📋 Завантаження файлів перекладу...", "foundTranslationFilesCount": "✅ Знайдено {count} файли перекладу", "analyzingTranslations": "🔍 Аналізуємо переклади...", "validationCompletedSuccessfully": "🎉 Перевірку успішно завершено!", "validationErrorsFound": "⚠️ Знайдено помилки перевірки: {count}", "validationWarningsFound": "⚠️ Знайдено попередження перевірки: {count}", "validationPassed": "✅ Перевірка пройшла без помилок", "validationFailed": "Помилка перевірки: {error}", "startingValidationProcess": "🔍 Початок процесу перевірки...", "validationProcessCompletedSuccessfully": "✅ Процес перевірки успішно завершено", "stackTrace": "Трасування стека: {stack}", "authenticationFailed": "❌ Помилка автентифікації. Доступ заборонено.", "fatalValidationError": "❌ Критична помилка перевірки: {error}", "configAccess": "Доступ до конфігурації для перевірки", "configValidated": "Конфігурація успішно перевірена", "configError": "Помилка конфігурації: {error}", "validatorInit": "Ініціалізація валідатора I18n", "validatorInitialized": "Валідатор I18n успішно ініціалізовано", "validatorInitError": "Помилка ініціалізації валідатора: {error}", "argsParsing": "Розбір аргументів командного рядка", "argsParsed": "Аргументи командного рядка проаналізовано успішно", "argsParseError": "Помилка аналізу аргументу: {error}", "languagesScan": "Сканування доступних мов", "languagesFound": "знайдено {count} мови", "languagesScanError": "Помилка сканування мови: {error}", "filesScan": "знайдено {count} файли в {language}", "filesScanError": "Помилка сканування файлу: {error}", "jsonValidated": "Перевірено синтаксис JSON: {filePath}", "jsonValidationError": "Помилка перевірки JSON: {error}", "languageValidation": "Мова перевірки: {language}", "languageValidationError": "Помилка підтвердження мови: {error}", "fileDeleted": "Файл видалено", "runStarted": "Початок перевірки", "runCompleted": "Перевірка успішно завершена", "runError": "Помилка перевірки: {error}", "scriptExecution": "Виконання сценарію", "validationCompleted": "Перевірку завершено", "validationError": "Помилка підтвердження: {error}", "separator": "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━", "languageHeader": "🌐 Мова: {language}", "validationResults": "📊 Результати перевірки", "noErrors": "✅ Помилок не виявлено", "noWarnings": "✅ Попереджень не знайдено", "summaryHeader": "📋 OVERALL SUMMARY", "progressIndicator": "⏳ Обробка...", "completedIndicator": "✅ Виконано", "errorIndicator": "❌ Помилка", "warningIndicator": "⚠️ Попередження", "infoIndicator": "ℹ️ Інформація", "sourceDirNotConfigured": "Вихідний каталог не налаштовано", "sourceLanguageNotConfigured": "Вихідна мова не налаштована", "translationFunctionNotInitialized": "Функція перекладу не ініціалізована належним чином", "sourceLanguageDirectoryNotFound": "Каталог вихідної мови не знайдено", "specifiedLanguageNotFound": "Вказана мова не знайдена", "noJsonFilesFound": "У вихідному каталозі не знайдено файлів JSON: {sourceDir}", "i18nDirectoryNotFound": "Каталог I18n не знайдено: {i18nDir}", "invalidDirectoryPaths": "Виявлено недійсні шляхи до каталогу", "invalidSampleFilePath": "Недійсний шлях до файлу зразка", "failedToCreateSampleTranslationFile": "Не вдалося створити зразок файлу перекладу", "invalidFilePathDetected": "Виявлено недійсний шлях до файлу", "failedToWriteFile": "Не вдалося записати файл: {filePath}", "invalidSourceDirectory": "Недійсний вихідний каталог: {sourceDir}", "invalidSourceLanguageDirectory": "Недійсний каталог вихідної мови: {sourceDir}" }, "adminCli": { "setupPinProtectionTitle": "🔐 Налаштування захисту PIN-кодом адміністратора", "setupPinProtectionDescription": "Для адміністративних операцій потрібен 4-6-значний PIN-код.", "enablePinProtectionPrompt": "Бажаєте ввімкнути захист PIN-кодом адміністратора?", "setupCancelled": "Налаштування захисту PIN-кодом адміністратора скасовано.", "enterPinPrompt": "Введіть PIN-код із 4-6 цифр:", "pinFormatError": "❌ ПІН має складатися з 4-6 цифр. Спробуйте ще раз.", "confirmPinPrompt": "Підтвердьте PIN-код:", "pinMismatchError": "❌ PIN-коди не збігаються. Спробуйте ще раз.", "pinProtectionEnabledSuccess": "✅ Захист PIN-кодом адміністратора успішно ввімкнено!", "pinRecoveryWarning": "⚠️ Запам’ятайте свій PIN-код – у разі втрати його неможливо відновити.", "setupPinProtectionFailed": "❌ Не вдалося налаштувати захист PIN-кодом адміністратора.", "errorSettingUpPin": "❌ Помилка налаштування PIN-коду адміністратора: {message}", "authRequiredForOperation": "🔐 Автентифікація адміністратора потрібна для: {operation}", "invalidPinFormat": "❌ Недійсний формат PIN-коду. PIN-код має містити 4-6 цифр.", "authenticationSuccess": "✅ Автентифікація успішна!", "invalidPinAttemptsRemaining": "❌ Недійсний PIN-код. {remaining} залишилося спроб.", "authenticationFailedAccessDenied": "❌ Помилка автентифікації. Доступ заборонено.", "authenticationError": "❌ Помилка автентифікації: {message}", "pinProtectionNotEnabled": "Захист PIN-кодом адміністратора наразі не ввімкнено.", "disablingPinProtectionTitle": "🔓 Вимкнення захисту PIN-кодом адміністратора", "confirmDisablePinProtection": "Ви впевнені, що бажаєте вимкнути захист PIN-кодом адміністратора?", "operationCancelled": "Операцію скасовано.", "pinProtectionDisabledSuccess": "✅ Захист PIN-кодом адміністратора вимкнено.", "disablePinProtectionFailed": "❌ Не вдалося вимкнути захист