{
  "meta": {
    "version": "1.5.3",
    "consolidated": "2025-08-06T14:36:37.512Z",
    "sourceFiles": 256
  },
  "common": {
    "welcome": "Добро пожаловать",
    "hello": "Привет",
    "goodbye": "Пока",
    "yes": "Да",
    "no": "Нет",
    "save": "Сохранить",
    "cancel": "Отмена",
    "delete": "Удалить",
    "edit": "Редактировать",
    "loading": "Загрузка...",
    "offlineTitle": "В offline",
    "offlineMessage": "Вы находитесь в offline",
    "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}}",
    "errorGeneratingStatusSummary": "Ошибка генерации сводки статуса: {error}",
    "errorRunningDebugTool": "Ошибка запуска инструмента отладки '{displayName}': {error}",
    "errorReadingDebugLogs": "Ошибка чтения журналов отладки: {error}",
    "errorAnalyzingLogFile": "Ошибка анализа файла журнала: {error}",
    "errorAnalyzingTranslationKeys": "Ошибка анализа ключей перевода: {error}",
    "errorAnalyzingTranslationCompleteness": "Ошибка анализа полноты перевода: {error}",
    "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": "Успешно завершено!",
    "errors": "Ошибки:",
    "warnings": "Предупреждения:",
    "completedKeys": "Завершенные ключи:",
    "missingKeys": "Отсутствующие ключи:",
    "partialKeys": "Частичные ключи:"
  },
  "analyze": {
    "help_message": "\nI18n Анализатор переводов\n\nИспользование: node i18ntk-analyze.js [опции]\n\nОпции:\n  --source-dir <dir>     Директория исходников для сканирования (по умолчанию: ./src)\n  --i18n-dir <dir>       Директория I18n (по умолчанию: ./src/locales)\n  --output-report        Сгенерировать подробный отчёт\n  --output-dir <dir>     Директория для отчётов (по умолчанию: ./reports)\n  --help                 Показать справку\n\nПримеры:\n  node i18ntk-analyze.js --output-report\n  node i18ntk-analyze.js --source-dir=./app --i18n-dir=./locales\n  node i18ntk-analyze.js --output-dir=./analysis --output-report\n",
    "source_directory": "📁 Директория исходников: {sourceDir}",
    "i18n_directory": "🌐 Директория I18n: {i18nDir}",
    "loading_translation_files": "📋 Загрузка файлов переводов...",
    "sourceDirectoryLabel": "📁 Директория исходников: {{sourceDir}}",
    "sourceLanguageLabel": "🌍 Исходный язык: {{sourceLanguage}}",
    "strictModeLabel": "⚙️ Режим строгого контроля: {{mode}}\n",
    "found_translation_files_count": "✅ Найдено файлов переводов: {count}",
    "analyzing_translations": "🔍 Анализ переводов...",
    "analysis_completed_successfully": "🎉 Анализ успешно завершён!",
    "analysis_results": "📊 РЕЗУЛЬТАТЫ АНАЛИЗА",
    "language_analysis_stats": "  {language}: {translatedKeys}/{totalKeys} ({percentage}% переведено)",
    "sample_missing_keys": "\nПример отсутствующих ключей:",
    "missing_key": "- {key}",
    "and_more_missing": "...и ещё {count}.",
    "sample_unused_keys": "\nПример неиспользуемых ключей:",
    "unused_key": "- {key}",
    "and_more_unused": "...и ещё {count}.",
    "recommendations": "\n📋 РЕКОМЕНДАЦИИ",
    "add_missing_translations": "💡 Добавьте недостающие переводы для повышения покрытия.",
    "remove_unused_translations": "💡 Удалите неиспользуемые переводы для чистоты проекта.",
    "next_steps": "\n📋 ДАЛЬНЕЙШИЕ ШАГИ",
    "review_analysis_results": "1. Просмотрите результаты анализа в консоли или в сгенерированном отчёте.",
    "run_with_output_report": "2. Запустите с --output-report для подробного отчёта.",
    "add_or_remove_translations": "3. Добавьте недостающие переводы или удалите неиспользуемые.",
    "rerun_analysis": "4. Повторно запустите анализ для проверки изменений.",
    "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": "📊 СВОДКА АНАЛИЗА",
    "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": "Сбой загрузки конфигурации",
    "title": "🌍 ЗАВЕРШЕНИЕ I18N ПЕРЕВОДА",
    "separator": "============================================================",
    "sourceDir": "📁 Директория исходников: {sourceDir}",
    "sourceLanguage": "🌐 Исходный язык: {sourceLanguage}",
    "dryRunMode": "🧪 Режим тестового запуска — без изменений",
    "languages": "🌍 Доступные языки: {languages}",
    "addingMissingKeys": "➕ Добавление отсутствующих ключей в файлы переводов...",
    "processing": "🔄 Обработка {language}...",
    "addedKeys": "✅ Добавлено {count} отсутствующих ключей",
    "noChangesNeeded": "✅ Для {language} изменений не требуется",
    "summaryTitle": "📊 ИТОГОВАЯ СВОДКА",
    "totalChanges": "📝 Всего изменений: {totalChanges}",
    "languagesProcessed": "🌍 Обработано языков: {languagesProcessed}",
    "missingKeysAdded": "➕ Добавлено недостающих ключей: {missingKeysAdded}",
    "nextStepsTitle": "📋 ДАЛЬНЕЙШИЕ ШАГИ",
    "nextStep1": "1. Запустите анализ использования:",
    "nextStep2": "   node i18ntk-usage.js --output-report",
    "nextStep3": "2. Проверьте переводы:",
    "nextStep4": "   node i18ntk-validate.js",
    "nextStep5": "3. Проанализируйте шаблоны:",
    "nextStep6": "   node 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": "Язык    Разн. симв.  % Разн.  Проблемные",
    "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 символов — рассмотрите возможность их разбить",
    "report_saved_to": "Отчёт сохранён в: {{reportPath}}",
    "considerReviewingTranslations": "Рассмотрите возможность пересмотра переводов {{lang}} — они на {{data.percentageDifference}}% длиннее базового",
    "csv_report_saved_to": "CSV-отчёт сохранён в: {{csvPath}}",
    "no_translation_files_found": "Файлы переводов не найдены",
    "analysis_completed": "Анализ завершён за {{duration}}мс",
    "analysis_failed": "Анализ не удался: {{errorMessage}}",
    "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}} символов — рассмотрите возможность их разбить",
    "hardcodedTexts": {
      "keysHaveSignificantSizeVariations": "ключи имеют значительные вариации в размерах",
      "considerReviewingTranslations": "Рассмотрите возможность пересмотра переводов {{lang}} — они на {{percentageDifference}}% {{comparison}} базового",
      "longTranslationsDetected": "{{lang}} содержит {{longKeys}} переводов длиной более {{threshold}} символов — рассмотрите возможность их разбить"
    }
  }
  },
  "usage": {
    "help_message": "\nI18n Анализатор использования\n\nИспользование: node i18ntk-usage.js [опции]\n\nОпции:\n  --source-dir <dir>     Директория исходников для сканирования (по умолчанию: ./src)\n  --i18n-dir <dir>       Директория I18n (по умолчанию: ./src/locales)\n  --output-report        Сгенерировать подробный отчёт\n  --output-dir <dir>     Директория для отчётов (по умолчанию: ./reports)\n  --help                 Показать справку\n\nПримеры:\n  node i18ntk-usage.js --output-report\n  node i18ntk-usage.js --source-dir=./app --i18n-dir=./locales\n  node i18ntk-usage.js --output-dir=./analysis --output-report\n",
    "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}",
    "pressEnterToReturnToMenu": "📝 Нажмите Enter, чтобы вернуться в главное меню...",
    "notTranslatedKeysTotal": "⚠️  Непереведённые ключи: {total}",
    "noSourceFilesFound": "⚠️  В директории исходников не найдено файлов.",
    "reviewNotTranslatedKeys": "💡 Проверьте непереведённые ключи",
    "analysisCompletedSuccessfully": "🎉 Анализ успешно завершён!",
    "detectedSourceDirectory": "Обнаружена директория исходников: {{sourceDir}}",
    "detectedI18nDirectory": "Обнаружена директория I18n: {i18nDir}",
    "fileInfo": "   📄 {namespace}: {keys} ключей",
    "failedToAnalyzeUsage": "❌ Не удалось проанализировать использование: {error}",
    "failedToAnalyzeFile": "❌ Не удалось проанализировать файл: {error}",
    "analyzerInitialized": "Анализатор инициализирован",
    "analyzerInitFailed": "Не удалось инициализировать анализатор: {error}",
    "argsParsed": "Аргументы разобраны",
    "argsParseFailed": "Не удалось разобрать аргументы: {error}",
    "translationDiscoveryError": "Ошибка обнаружения переводов: {error}",
    "fileTraversalError": "Ошибка обхода файлов: {error}",
    "usageAnalysisFailed": "Анализ использования не удался: {error}",
    "translationFileParseError": "Ошибка парсинга файла перевода: {error}",
    "translationKeysLoadError": "Ошибка загрузки ключей перевода: {error}",
    "languageCompletenessStats": "{language}: {translated}/{total} ({completeness}% переведено)",
    "missingKeysCount": "Отсутствующих ключей: {count}",
    "analyzingTranslationCompleteness": "Анализ полноты перевода...",
    "unusedKeysCount": "Неиспользуемых ключей: {count}",
    "usedKeysCount": "Используемых ключей: {count}",
    "availableKeysCount": "Доступных ключей: {count}",
    "analysisResults": "Результаты анализа:",
    "checkUsage": {
      "title": "🔍 АНАЛИЗ ИСПОЛЬЗОВАНИЯ I18N",
      "message": "Анализ использования ключей i18n в проекте.",
      "help_message": "\nI18n Usage Analyzer\n\nUsage: node i18ntk-usage.js [options]\n\nOptions:\n  --source-dir <dir>     Source directory to scan (default: ./src)\n  --i18n-dir <dir>       I18n directory (default: ./src/locales)\n  --output-report        Generate detailed report\n  --output-dir <dir>     Output directory for reports (default: ./reports)\n  --help                 Show this help\n\nExamples:\n  node i18ntk-usage.js --output-report\n  node i18ntk-usage.js --source-dir=./app --i18n-dir=./locales\n  node i18ntk-usage.js --output-dir=./analysis --output-report\n",
      "source_directory_thissourcedir": "📁 Директория исходников: {sourceDir}",
      "i18n_directory_thisi18ndir": "🌐 Директория I18n: {i18nDir}",
      "loading_available_translation_": "📋 Загрузка доступных ключей перевода...",
      "found_thisavailablekeyssize_av": "✅ Найдено доступных ключей: {availableKeysSize}",
      "analyzing_source_files": "🔍 Анализ исходных файлов...",
      "found_files_in_source": "📂 Найдено файлов в директории исходников: {numFiles}",
      "found_thisusedkeyssize_unique_": "🎯 Обнаружено уникальных используемых ключей: {usedKeysSize}",
      "total_key_usages_totalkeysfoun": "📊 Всего использований ключей: {totalKeysFound}",
      "translation_completeness_title": "📊 ПОЛНОТА ПЕРЕВОДА",
      "language_completeness_stats": "  {language}: {translated}/{total} ({completeness}% переведено)",
      "n_sample_unused_keys": "\nПример неиспользуемых ключей:",
      "key": "- {key}",
      "and_unusedkeyslength_5_more": "...и ещё {count}.",
      "n_recommendations": "\n📋 РЕКОМЕНДАЦИИ",
      "consider_removing_unused_trans": "💡 Рассмотрите удаление неиспользуемых переводов для чистоты проекта.",
      "n_next_steps": "\n📋 ДАЛЬНЕЙШИЕ ШАГИ",
      "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. Повторно запустите анализ для проверки изменений.",
      "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}",
      "noSourceFilesFound": "Нет файлов для анализа.",
      "processedFiles": "Обработано {processedFiles} из {totalFiles} файлов.",
      "i18nDirectoryNotFound": "Директория I18n не найдена: {i18nDir}",
      "noTranslationLanguagesFound": "Целевые языки не найдены.",
      "failedToAnalyzeFile": "Не удалось проанализировать файл {filePath}: {error}",
      "failedToAnalyzeLanguage": "Не удалось проанализировать язык {language}: {error}",
      "translationCompletenessAnalysisFailed": "Анализ полноты перевода не удался: {error}",
      "n": ""
    },
    "complete": {
      "configLoadedSuccessfully": "Configuration loaded successfully",
      "configLoadingFailed": "Configuration loading failed",
      "title": "🌍 I18N TRANSLATION COMPLETION",
      "separator": "============================================================",
      "sourceDir": "📁 Source directory: {sourceDir}",
      "sourceLanguage": "🌐 Source language: {sourceLanguage}",
      "dryRunMode": "🧪 Dry run mode - no changes will be made",
      "languages": "🌍 Available languages: {languages}",
      "addingMissingKeys": "➕ Adding missing keys to translation files...",
      "processing": "🔄 Processing {language}...",
      "addedKeys": "✅ Added {count} missing keys",
      "noChangesNeeded": "✅ No changes needed for {language}",
      "summaryTitle": "📊 COMPLETION SUMMARY",
      "totalChanges": "📝 Total changes: {totalChanges}",
      "languagesProcessed": "🌍 Languages processed: {languagesProcessed}",
      "missingKeysAdded": "➕ Missing keys added: {missingKeysAdded}",
      "nextStepsTitle": "📋 NEXT STEPS",
      "nextStep1": "1. Run usage analysis:",
      "nextStep2": "   node i18ntk-usage.js --output-report",
      "nextStep3": "2. Validate translations:",
      "nextStep4": "   node i18ntk-validate.js",
      "nextStep5": "3. Analyze patterns:",
      "nextStep6": "   node i18ntk-analyze.js",
      "allKeysAvailable": "🎉 All translation keys are now available!",
      "runWithoutDryRun": "💡 Run without --dry-run to apply changes",
      "deletingOldReport": "🗑️  Deleting old report...",
      "generatingFreshAnalysis": "📊 Generating fresh usage analysis...",
      "couldNotGenerate": "❌ Could not generate usage analysis",
      "reportNotFound": "📋 Usage report not found. Using common keys...",
      "foundMissingKeys": "📋 Found {count} missing keys from usage analysis",
      "couldNotParse": "❌ Could not parse usage report. Using common keys..."
    }
  },
  "validate": {
    "help_message": "\nI18n Валидатор переводов\n\nИспользование: node i18ntk-validate.js [опции]\n\nОпции:\n  --source-dir <dir>     Директория исходников для сканирования (по умолчанию: ./src)\n  --i18n-dir <dir>       Директория I18n (по умолчанию: ./src/locales)\n  --output-report        Сгенерировать подробный отчёт\n  --output-dir <dir>     Директория для отчётов (по умолчанию: ./reports)\n  --help                 Показать справку\n\nПримеры:\n  node i18ntk-validate.js --output-report\n  node i18ntk-validate.js --source-dir=./app --i18n-dir=./locales\n  node i18ntk-validate.js --output-dir=./analysis --output-report\n",
    "title": "🔍 I18n Валидатор переводов",
    "message": "Запуск процесса валидации...",
    "sourceDirectory": "📁 Директория исходников: {dir}",
    "sourceLanguage": "🌍 Исходный язык: {sourceLanguage}",
    "strictMode": "⚙️  Режим строгой проверки: {mode}",
    "noTargetLanguages": "⚠️  Не найдено целевых языков для проверки",
    "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": "❌ ОШИБКИ",
    "warningsSection": "⚠️  ПРЕДУПРЕЖДЕНИЯ",
    "recommendationsSection": "💡 РЕКОМЕНДАЦИИ",
    "fixErrorsFirst": "1. Сначала исправьте все ошибки",
    "resolveMissingFilesAndSyntaxErrors": "1. Устраните отсутствующие файлы и синтаксические ошибки",
    "fixStructuralInconsistencies": "2. Исправьте структурные несоответствия",
    "completeMissingTranslations": "3. Завершите недостающие переводы",
    "rerunValidation": "4. Повторно запустите валидацию для проверки исправлений",
    "addressWarnings": "Устраните предупреждения для повышения качества",
    "reviewWarnings": "Просмотрите предупреждения и исправьте по необходимости",
    "considerRunningWithStrict": "2. Рассмотрите запуск с флагом --strict для более строгой проверки",
    "allValidationsPassed": "🎉 Все проверки пройдены!",
    "considerRunningUsageAnalysis": "Рассмотрите запуск анализа использования: node 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": "Найдено файлов в {language}: {count}",
    "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": "📋 ОБЩАЯ СВОДКА",
    "progressIndicator": "⏳ В процессе...",
    "completedIndicator": "✅ Завершено",
    "errorIndicator": "❌ Ошибка",
    "warningIndicator": "⚠️  Предупреждение",
    "infoIndicator": "ℹ️  Информация",
    "sourceDirNotConfigured": "Директория исходников не настроена",
    "sourceLanguageNotConfigured": "Исходный язык не настроен",
    "translationFunctionNotInitialized": "Функция перевода не инициализирована",
    "sourceLanguageDirectoryNotFound": "Директория исходного языка не найдена",
    "specifiedLanguageNotFound": "Указанный язык не найден",
    "noJsonFilesFound": "JSON-файлы не найдены в директории исходников: {sourceDir}",
    "i18nDirectoryNotFound": "Директория I18n не найдена: {i18nDir}",
    "invalidDirectoryPaths": "Обнаружены недопустимые пути",
    "invalidSampleFilePath": "Недопустимый путь к примерному файлу",
    "failedToCreateSampleTranslationFile": "Не удалось создать примерный файл перевода",
    "invalidFilePathDetected": "Обнаружен недопустимый путь к файлу",
    "failedToWriteFile": "Не удалось записать файл: {filePath}"
  },
  "adminCli": {
    "setupPinProtectionTitle": "\n🔐 Настройка защиты админ-PIN",
    "setupPinProtectionDescription": "Это потребует 4–6-значный PIN для административных операций.",
    "enablePinProtectionPrompt": "Вы хотите включить защиту админ-PIN?",
    "setupCancelled": "Настройка защиты админ-PIN отменена.",
    "enterPinPrompt": "Введите 4–6-значный PIN: ",
    "pinFormatError": "❌ PIN должен состоять из 4–6 цифр. Пожалуйста, попробуйте снова.",
    "confirmPinPrompt": "Подтвердите PIN: ",
    "pinMismatchError": "❌ PIN не совпадают. Пожалуйста, попробуйте снова.",
    "pinProtectionEnabledSuccess": "✅ Защита админ-PIN успешно включена!",
    "pinRecoveryWarning": "⚠️  Запомните ваш PIN — восстановлению он не подлежит.",
    "setupPinProtectionFailed": "❌ Не удалось настроить защиту админ-PIN.",
    "errorSettingUpPin": "❌ Ошибка при настройке PIN: {message}",
    "authRequiredForOperation": "\n🔐 Требуется аутентификация админа для: {operation}",
    "invalidPinFormat": "❌ Неверный формат PIN. PIN должен содержать 4–6 цифр.",
    "authenticationSuccess": "✅ Аутентификация прошла успешно!",
    "invalidPinAttemptsRemaining": "❌ Неверный PIN. Осталось попыток: {remaining}.",
    "authenticationFailedAccessDenied": "❌ Аутентификация не удалась. Доступ запрещён.",
    "authenticationError": "❌ Ошибка аутентификации: {message}",
    "pinProtectionNotEnabled": "Защита админ-PIN в данный момент не включена.",
    "disablingPinProtectionTitle": "\n🔓 Отключение защиты админ-PIN",
    "confirmDisablePinProtection": "Вы уверены, что хотите отключить защиту админ-PIN?",
    "operationCancelled": "Операция отменена.",
    "pinProtectionDisabledSuccess": "✅ Защита админ-PIN отключена.",
    "disablePinProtectionFailed": "❌ Не удалось отключить защиту админ-PIN.",
    "errorDisablingPinProtection": "❌ Ошибка при отключении защиты: {message}",
    "adminProtectionStatusTitle": "\n🔐 Статус защиты админа",
    "statusEnabled": "Статус: ✅ ВКЛЮЧЕНО",
    "protectionDetails": "Защита: для админ-операций требуется PIN (4–6 цифр)",
    "lockoutDetails": "Блокировка: 3 неудачные попытки = 15-минутная блокировка",
    "statusDisabled": "Статус: ❌ ОТКЛЮЧЕНО",
    "noAuthRequired": "Защита: аутентификация не требуется",
    "unprotectedRisk": "Риск: административные операции не защищены",
    "errorCheckingAdminStatus": "❌ Ошибка при проверке статуса админа: {message}",
    "authRequired": "🔐 Требуется аутентификация админа.",
    "invalidPin": "❌ Неверный PIN.",
    "authSuccess": "✅ Аутентификация прошла успешно!",
    "adminPinSetupCli": "admin_pin_setup_cli",
    "adminAuthFailedCli": "admin_auth_failed_cli",
    "adminAuthDisabledCli": "admin_auth_disabled_cli",
    "protectedAccess": "Доступ защищён: для чувствительных операций требуется аутентификация админа.",
    "enterPin": "Введите админ-PIN: ",
    "accessGranted": "Доступ разрешён."
  },
  "adminPin": {
    "setup_title": "🔐 Настройка админ-PIN",
    "setup_separator": "============================================================",
    "setup_description": "Создайте 4–6-значный PIN для доступа к чувствительным настройкам.",
    "required_for_title": "Этот PIN будет требоваться для:",
    "required_for_1": "  • Изменения настроек безопасности",
    "required_for_2": "  • Изменения расширенных конфигураций",
    "required_for_3": "  • Доступа к инструментам отладки",
    "required_for_4": "  • Сброса настроек",
    "setup_note": "💡 При вводе будут показываться звездочки (*).",
    "setup_digits_only": "   Допускаются только цифры 0–9.",
    "invalid_pin_length": "❌ Неверный PIN. Должен содержать 4–6 цифр.",
    "invalid_pin_example": "   Пример: 1234 или 567890",
    "pins_do_not_match": "❌ PIN не совпадают.",
    "setup_success": "✅ Админ-PIN успешно установлен!",
    "setup_warning": "⚠️  Храните PIN в безопасности. Восстановлению он не подлежит.",
    "setup_error": "❌ Ошибка при настройке PIN:",
    "session_expired": "\n⏰ Сессия админа истекла из-за бездействия.",
    "no_pin_set_setting_up": "⚠️  PIN не установлен. Настройка PIN...",
    "no_pin_configured_access_denied": "⚠️  PIN не настроен. Доступ запрещён.",
    "use_admin_settings_to_set_pin": "💡 Настройте PIN в админ-настройках.",
    "locked_out": "🔒 Доступ заблокирован из-за слишком большого числа неудачных попыток.",
    "wait_before_retry": "Пожалуйста, подождите 5 минут перед повторной попыткой.",
    "access_granted": "✅ Доступ к админ-настройкам разрешён.",
    "incorrect_pin": "❌ Неверный PIN. Осталось попыток: {attempts}.",
    "verify_pin_error": "❌ Ошибка при проверке PIN:",
    "already_configured": "✅ Админ-PIN уже настроен.",
    "optional_setup_title": "\n🔐 Настройка админ-PIN (опционально)",
    "optional_setup_description": "Защита админ-PIN обеспечивает безопасность для:",
    "setup_prompt": "Хотите настроить админ-PIN? (y/N): ",
    "skipping_setup": "⏭️  Пропуск настройки PIN. Настроить можно позже.",
    "setup_prompt_error": "❌ Ошибка при запросе настройки PIN:",
    "protectedAccess": "Доступ защищён: для чувствительных операций требуется аутентификация.",
    "enterPin": "Введите админ-PIN: ",
    "accessGranted": "Доступ разрешён.",
    "invalidPin": "❌ Неверный PIN. Пожалуйста, попробуйте снова.",
    "weak_pin_warning": "⚠️  ВНИМАНИЕ: PIN выглядит слишком простым.",
    "weak_pin_suggestion": "💡 Рекомендуется использовать более сложный PIN.",
    "use_anyway_prompt": "Введите «yes», чтобы использовать его, или нажмите Enter для выбора другого PIN: ",
    "enter_new_pin": "Введите новый админ-PIN (4–6 цифр): ",
    "confirm_pin": "Подтвердите админ-PIN: ",
    "not_set": "Не задан",
    "pin_display_mask": "####"
  },
  "autorun": {
    "missingRequiredFile": "Отсутствует обязательный файл: {file}",
    "runInitializationFirst": "Сначала выполните инициализацию.",
    "initializationCheckPassed": "Проверка инициализации пройдена.",
    "runningStep": "Выполняется шаг: {stepName}",
    "commandLabel": "Команда: {command}",
    "stepRunning": "Шаг «{stepName}» выполняется...",
    "stepCompletedWithTime": "Шаг «{stepName}» выполнен за {duration} мс.",
    "stepCompleted": "Шаг «{stepName}» завершён.",
    "stepFailed": "Шаг «{stepName}» завершился с ошибкой.",
    "errorLabel": "Ошибка: {error}",
    "stepFailedWithError": "Шаг «{stepName}» завершился ошибкой: {error}",
    "requiredStepFailed": "Обязательный шаг не выполнен. Остановка.",
    "optionalStepFailed": "Необязательный шаг не выполнен. Продолжаем.",
    "startingAutoRunWorkflow": "Запуск автоматического выполнения...",
    "workflowIncludesSteps": "Рабочий процесс включает {count} шагов:",
    "stepRequired": "(Обязательно)",
    "stepOptional": "(Опционально)",
    "startingExecution": "Начало выполнения...",
    "workflowStopped": "Рабочий процесс остановлен.",
    "workflowCompleted": "Рабочий процесс завершён.",
    "pressEnterToContinue": "Нажмите Enter, чтобы продолжить...",
    "runningSelectedSteps": "Выполнение выбранных шагов...",
    "invalidStepNumber": "Недопустимый номер шага: {stepNum}",
    "executionReport": "Отчёт о выполнении:",
    "successfulSteps": "Успешных шагов: {count}",
    "failedSteps": "Шагов с ошибками: {count}",
    "requiredFailedSteps": "Неудачных обязательных шагов: {count}",
    "stepDetails": "Детали шага:",
    "errorDetails": "Ошибка: {error}",
    "reportSavedTo": "Отчёт сохранён в: {path}",
    "overallStatusSuccess": "УСПЕШНО",
    "overallStatusFailed": "НЕИСПОЛЬНО",
    "overallStatus": "Общий статус: {status}",
    "customSettingsConfiguration": "Настройка пользовательских параметров",
    "pressEnterForDefaults": "Нажмите Enter для значений по умолчанию.",
    "sourceDirPrompt": "Директория исходников (по умолчанию: {default}): ",
    "sourceLangPrompt": "Исходный язык (по умолчанию: {default}): ",
    "targetLangsPrompt": "Языки перевода (через запятую, по умолчанию: {default}): ",
    "translationMarkerPrompt": "Маркер перевода (по умолчанию: {default}): ",
    "outputDirPrompt": "Директория для отчётов (по умолчанию: {default}): ",
    "settingsUpdatedSuccessfully": "Настройки успешно обновлены!",
    "errorConfiguringSettings": "Ошибка настройки параметров: {error}",
    "autoRunScriptTitle": "Скрипт Auto-Run",
    "usageTitle": "Использование:",
    "runAllSteps": "node i18ntk-autorun.js --all — Запустить все шаги из i18ntk-config.json",
    "configureSettingsFirst": "node i18ntk-autorun.js --config — Настроить параметры рабочего процесса",
    "runSpecificSteps": "node i18ntk-autorun.js --steps <номера> — Запустить указанные шаги (например, --steps 1,3,5)",
    "showHelp": "node i18ntk-autorun.js --help — Показать справку",
    "availableSteps": "Доступные шаги:",
    "examplesTitle": "Примеры:",
    "configExample": "node i18ntk-autorun.js --config",
    "stepsExample1": "node i18ntk-autorun.js --steps 1,2,3",
    "stepsExample2": "node i18ntk-autorun.js --all",
    "configurationComplete": "Настройка завершена.",
    "runAutoRunCommand": "Теперь вы можете запустить команду auto-run.",
    "configurationFailed": "Не удалось настроить: {error}",
    "noValidStepNumbers": "Не указан ни один корректный номер шага.",
    "autoRunFailed": "Auto-run завершился с ошибкой: {error}",
    "stepInitializeProject": "Инициализация проекта",
    "stepAnalyzeTranslations": "Анализ переводов",
    "stepValidateTranslations": "Валидация переводов",
    "stepCheckUsage": "Анализ использования",
    "stepCompleteTranslations": "Завершение переводов",
    "stepAnalyzeSizing": "Анализ размеров",
    "stepGenerateSummary": "Генерация итогового отчёта...",
    "stepCompletedIcon": "✅",
    "stepCompletedWithIcon": "✅ Шаг «{stepName}» завершён.",
    "stepRunningWithNumber": "[{stepNumber}/{totalSteps}] Выполнение шага «{stepName}»...",
    "stepFailedIcon": "❌",
    "translationLoadWarning": "Предупреждение: не удалось загрузить переводы {lang}",
    "configReadError": "Ошибка чтения {file}",
    "separator": "=================================================="
  },
  "debug": {
    "title": "🔧 Инструменты отладки",
    "separator": "============================================================",
    "mainDebuggerSystemDiagnostics": "1. Системная диагностика",
    "_consoleTranslationsCheck": "// 2. Проверка переводов в консоли",
    "_exportMissingKeys": "// 3. Экспорт отсутствующих ключей перевода",
    "_replaceHardcodedConsole": "// 4. Заменить жёстко прописанные строки в консоли",
    "_consoleKeyChecker": "// 5. Проверка ключей консоли",
    "debugLogs": "2. Логи отладки",
    "backToMainMenu": "0. Вернуться в главное меню",
    "selectOption": "Выберите инструмент отладки: ",
    "runningDebugTool": "Запуск {displayName}...",
    "debugToolNotFound": "❌ Инструмент отладки не найден: {toolName}",
    "recentDebugLogs": "📄 Последние логи отладки",
    "noDebugLogsFound": "❌ Логи отладки не найдены.",
    "debugLogsDirectoryNotFound": "❌ Директория с логами отладки не найдена.",
    "selectLogPrompt": "Выберите файл лога для просмотра (1-{count}): ",
    "invalidChoiceSelectRange": "Неверный выбор. Пожалуйста, выберите из доступного диапазона.",
    "contentOf": "📄 Содержание {filename}:",
    "pressEnterToContinue": "Нажмите Enter, чтобы продолжить..."
  },
  "detect_language_mismatches": {
    "tool_title": "🔍 Инструмент обнаружения несовпадений языков",
    "separator": "=====================================\n",
    "analyzing_file": "📄 Анализ {language}.json...",
    "error_analyzing_file": "❌ Ошибка при анализе {filename}: {errorMessage}",
    "results_title": "📊 РЕЗУЛЬТАТЫ ОБНАРУЖЕНИЯ НЕСОВПАДЕНИЙ ЯЗЫКОВ",
    "results_separator": "========================================\n",
    "summary_title": "📋 ИТОГИ:",
    "total_files_analyzed": "   Файлов проанализировано: {totalFiles}",
    "files_with_mismatches": "   Файлов с несовпадениями: {filesWithMismatches}",
    "total_mismatches_found": "   Всего найдено несовпадений: {totalMismatches}\n",
    "no_mismatches_found": "✅ Несовпадений не найдено! Все переводы соответствуют своим языкам.\n",
    "detailed_results_title": "🔍 ПОДРОБНЫЕ РЕЗУЛЬТАТЫ:\n",
    "file_mismatch_header": "📄 {filename} ({language})",
    "mismatches_count": "   Найдено несовпадений: {count}:\n",
    "mismatch_details": "   {index}. Ключ: {key}",
    "mismatch_value": "      Значение: \"{value}\"",
    "mismatch_issue": "      Проблема: {description}",
    "recommendations_title": "💡 РЕКОМЕНДАЦИИ:\n",
    "recommendation_1": "1. Проверьте и переведите все записи, отмеченные [TRANSLATE]",
    "recommendation_2": "2. Замените языковые префиксы (например, [DE], [FR]) на правильные переводы",
    "recommendation_3": "3. Переведите английский текст на соответствующий целевой язык",
    "recommendation_4": "4. Используйте эквиваленты на родном языке для всего текста, отображаемого пользователю",
    "recommendation_5": "5. Запустите этот инструмент снова после исправлений, чтобы проверить результаты\n",
    "detailed_report_saved": "📄 Подробный отчёт сохранён: {reportPath}\n",
    "error_saving_report": "❌ Ошибка при сохранении отчёта: {errorMessage}\n",
    "auto_fix_mode": "🔧 Режим автоисправления {dryRun}",
    "auto_fix_separator": "=====================================\n",
    "fixed_file": "✅ Исправлен {filename}",
    "auto_fix_summary_title": "\n📊 Итоги автоисправления:",
    "total_fixes_applied": "   Всего применено исправлений: {count}",
    "preview_fixes_title": "\n🔍 Предпросмотр исправлений:",
    "fix_details": "   {file}: {key}\n     Старое: \"{old}\"\n     Новое: \"{new}\"\n",
    "more_fixes": "   ... и ещё {count} исправлений\n",
    "run_with_apply_fixes": "💡 Запустите с --apply для применения этих исправлений\n",
    "error_general": "❌ Ошибка:",
    "mainDebuggerSystemDiagnostics": "Системная диагностика",
    "exportMissingKeys": "Экспорт отсутствующих ключей",
    "replaceHardcodedConsole": "Замена жёстко прописанных строк",
    "consoleKeyChecker": "Проверка ключей консоли",
    "debugLogs": "Логи отладки",
    "backToMainMenu": "Вернуться в главное меню",
    "invalidChoiceSelectRange": "❌ Неверный выбор. Пожалуйста, выберите номер из отображаемого диапазона.",
    "runningDebugTool": "Запуск инструмента: {displayName}",
    "debugToolNotFound": "Инструмент '{toolName}' не найден.",
    "recentDebugLogs": "Последние логи отладки",
    "noDebugLogsFound": "Логи отладки не найдены.",
    "logEntry": "Запись лога: {timestamp} – {message}",
    "debugLogsDirectoryNotFound": "Директория логов отладки не найдена."
  },
  "help": {
    "title": "📊 СПРАВКА ПО УПРАВЛЕНИЮ I18N\n\n",
    "usage": "Использование: node i18ntk-manage.js [опции]\n",
    "interactiveMode": "\n💡 Используйте: node i18ntk-manage.js --command=<команда> для прямого выполнения\n",
    "showHelp": "\n📖 Используйте: node i18ntk-manage.js --help для просмотра доступных команд\n",
    "availableCommands": "\n📖 Доступные команды:\n",
    "initProject": "🚀 Инициализировать новые языки",
    "analyzeTranslations": "🔍 Анализ переводов",
    "validateTranslations": "✅ Валидация переводов",
    "checkUsage": "📊 Проверка использования ключей",
    "initCommand": "  init      - Инициализировать новые языки",
    "analyzeCommand": "  analyze   - Анализ переводов",
    "validateCommand": "  validate  - Валидация переводов",
    "usageCommand": "  usage     - Проверка использования ключей",
    "sizingCommand": "  sizing    - Анализ размеров",
    "completeCommand": "  complete  - Завершение переводов (100% покрытия)",
    "summaryCommand": "  summary   - Показать статус проекта",
    "debugCommand": "  debug     - Отладка проблем перевода",
    "menu": {
      "title": "\n🌐 МЕНЮ УПРАВЛЕНИЯ I18N\n",
      "description": "Интерактивное меню для управления интернационализацией\n",
      "exit": "\n🚪 Выход"
    },
    "commands": {
      "init": "\n  init      - Инициализировать новые языки",
      "analyze": "  analyze   - Анализ переводов",
      "validate": "  validate  - Валидация переводов",
      "usage": "  usage     - Проверка использования ключей",
      "sizing": "  sizing    - Анализ размеров",
      "complete": "  complete  - Завершение переводов (100% покрытия)",
      "summary": "  summary   - Показать статус проекта",
      "debug": "  debug     - Отладка проблем перевода"
    },
    "options": {
      "sourceDir": "\n  --source-dir <dir>     Директория исходников для анализа",
      "output": "  --output <file>        Файл для вывода отчёта",
      "verbose": "  --verbose, -v           Подробный вывод",
      "keepReports": "  --keep-reports          Сохранить существующие отчёты",
      "deleteReports": "  --delete-reports        Удалить существующие отчёты",
      "help": "  --help, -h              Показать справку"
    },
    "examples": {
      "title": "\nПримеры:\n",
      "example1": "  node i18ntk-manage.js",
      "example2": "  node i18ntk-manage.js --source-dir ./locales",
      "example3": "  node i18ntk-manage.js --output summary-report.txt",
      "example4": "  node i18ntk-manage.js --verbose",
      "example5": "  node i18ntk-manage.js --source-dir ./locales --output report.json"
    },
    "features": {
      "initProject": "🚀 Инициализировать новые языки",
      "analyzeTranslations": "🔍 Анализ переводов",
      "validateTranslations": "✅ Валидация переводов",
      "checkUsage": "📊 Проверка использования ключей",
      "completeTranslations": "🎯 Завершение переводов (100% покрытия)",
      "showSizing": "📏 Анализ размеров",
      "runWorkflow": "🔄 Запуск полного процесса",
      "showStatus": "📋 Показать статус проекта",
      "deleteReports": "🗑️  Удалить все отчёты",
      "changeLanguage": "🌍 Сменить язык интерфейса",
      "settings": "⚙️  Настройки",
      "showHelp": "❓ Справка",
      "debugTools": "🔧 Инструменты отладки"
    },
    "messages": {
      "selectOption": "Выберите опцию:",
      "invalidOption": "❌ Неверная опция. Пожалуйста, попробуйте снова.",
      "operationCompleted": "✅ Операция успешно завершена!",
      "pressEnter": "Нажмите Enter для продолжения...",
      "goodbye": "👋 До свидания!",
      "unknownCommand": "Неизвестная команда: {{command}}",
      "nonInteractive": "⚠️ Обнаружен неинтерактивный режим. Меню отображается только для справки."
    },
    "i18n_helper": {
      "translation_file_not_found": "Файл перевода не найден: {translationFile}",
      "error_loading_translations": "Ошибка загрузки переводов: {errorMessage}",
      "translation_not_found": "Перевод для ключа не найден: {key}",
      "translation_key_not_string": "Значение ключа перевода не является строкой: {key}",
      "error_reading_locales_directory": "Ошибка чтения директории локалей: {errorMessage}"
    }
  },
  "init": {
    "initializationTitle": "🚀 Набор инструментов i18n — Инициализация проекта",
    "sourceDirectoryLabel": "📁 Директория исходников: {dir}",
    "sourceLanguageLabel": "🌍 Исходный язык: {language}",
    "detectedI18nFrameworks": "🔍 Обнаружены фреймворки i18n: {frameworks}",
    "existingDirectoriesFound": "📁 Найдены существующие директории переводов:",
    "useExistingDirectoryPrompt": "Вы хотите использовать существующую директорию? (y/n)",
    "autoDetectedI18nDirectory": "📂 Автоопределённая директория i18n: {directory}",
    "initializingProject": "⚙️  Инициализация конфигурации проекта...",
    "createdSampleTranslationFile": "✅ Создан пример файла перевода: {file}",
    "languageSelectionTitle": "🌐 Конфигурация языков",
    "available": "Доступно",
    "defaultLanguages": "📝 Языки по умолчанию: {languages}",
    "enterLanguageCodes": "🎯 Введите коды целевых языков (через запятую, например de, es, fr, ru):",
    "targetLanguages": "🌍 Целевые языки",
    "foundSourceFiles": "📄 Найдено исходных файлов для анализа: {count}",
    "processingLanguage": "🔄 Обработка языка: {language}",
    "fileProcessingResult": "✅ Обработан {file}: {translated}/{total} ключей ({percentage}%)",
    "overallProgress": "📊 Общий прогресс: обработано {translated}/{total} ключей ({percentage}%)",
    "initializationSummaryTitle": "📋 Итог инициализации",
    "languageSummary": "{icon} {name} ({code}): {percentage}% готово",
    "languageFiles": "   📄 Файлов: {count}",
    "languageKeys": "   🔤 Ключей: {translated}/{total}",
    "languageMissing": "   ⚠️  Отсутствуют: {count}",
    "initializationCompletedSuccessfully": "🎉 Инициализация проекта успешно завершена!",
    "nextStepsTitle": "🚀 Следующие шаги",
    "nextStep1": "1. Проверьте сгенерированные файлы переводов в директории locales/",
    "nextStep2": "2. Добавьте переводы для каждого целевого языка",
    "nextStep3": "3. Запустите «npm run i18ntk» снова для валидации переводов",
    "detectedFrameworks": "✅ Обнаружены фреймворки i18n: {frameworks}",
    "warnings.noPackageJson": "Не найден package.json. Невозможно определить фреймворк автоматически.",
    "errorsNoFramework": "Фреймворк i18n не обнаружен. Пожалуйста, установите его или укажите вручную.",
    "suggestions": {
      "noFramework": "Фреймворк i18n не обнаружен. Рассмотрите использование одного из следующих:",
      "installFramework": "Для установки фреймворка выполните: npm install <имя-пакета>"
    },
    "frameworks": {
      "react": "- React i18next (react-i18next)",
      "vue": "- Vue i18n (vue-i18n)",
      "i18next": "- i18next (i18next)",
      "nuxt": "- Nuxt i18n (@nuxtjs/i18n)",
      "svelte": "- Svelte i18n (svelte-i18n)"
    },
    "continueWithoutI18nPrompt": "Фреймворк i18n не обнаружен. Продолжить без него? (y/N): ",
    "detectedI18nFramework": "Обнаружен фреймворк i18n: {frameworks}",
    "existingDirectoryItem": "  {index}. {location}",
    "usingExistingStructure": "Используется существующая структура: {dir}",
    "creatingSourceDirectory": "Создание директории исходников: {dir}",
    "creatingSourceLanguageDirectory": "Создание директории исходного языка: {dir}",
    "errors": {
      "sourceDirectoryNotFound": "Директория исходников не найдена: {dir}",
      "sourceLanguageDirectoryNotFound": "Директория исходного языка не найдена: {dir}",
      "noJsonFilesInSourceDirectory": "В директории исходников не найдено JSON-файлов: {dir}",
      "invalidFilePathDetected": "Обнаружен недопустимый путь к файлу",
      "initializationFailed": "Инициализация не удалась: {error}"
    },
    "processingFile": "Обработка {file} для языка {language}...",
    "fileAlreadyExistsMerging": "Файл {file} уже существует. Объединяются новые ключи.",
    "createdNewFile": "Создан новый файл: {file}",
    "updatedFile": "Обновлён файл: {file}",
    "skippingExcludedFile": "Пропуск {file} для языка {language} — файл исключён."
  },
  "language": {
    "title": "🌍 Сменить язык",
    "separator": "============================================================",
    "current": "Текущий язык: {language}",
    "available": "Доступные языки:",
    "languageOption": "{index}. {displayName}{current}",
    "backToMainMenu": "Вернуться в главное меню",
    "prompt": "Выберите язык (0-8):",
    "cancelled": "Смена языка отменена.",
    "invalid": "Неверный выбор. Пожалуйста, попробуйте снова.",
    "changed": "Язык изменён на: {language}",
    "pressEnterToContinue": "Нажмите Enter для продолжения..."
  },
  "maintainLanguagePurity": {
    "workflow_title": "🚀 Рабочий процесс поддержания чистоты языков",
    "step1_title": "📊 ШАГ 1: Первичная оценка чистоты языков",
    "step2_title": "\n🔧 ШАГ 2: Обнаружение и автоисправление языковых несовпадений",
    "step3_title": "\n🌐 ШАГ 3: Применение автоматических переводов",
    "step4_title": "\n✅ ШАГ 4: Финальная оценка чистоты языков",
    "workflow_error": "❌ Ошибка рабочего процесса: {errorMessage}",
    "running_initial_validation": "Выполняется первичная проверка чистоты языков...",
    "initial_assessment_complete": "✅ Первичная оценка завершена: найдено {count} нарушений\n",
    "initial_assessment_warnings": "⚠️  Первая оценка завершена с предупреждениями\n",
    "detecting_fixing_mismatches": "Обнаружение и исправление языковых несовпадений...",
    "detection_complete_applying_fixes": "Обнаружение завершено. Применяются исправления...",
    "mismatch_fixes_complete": "✅ Исправления языковых несовпадений завершены: применено {count} исправлений\n",
    "mismatch_fixes_warnings": "⚠️  Исправления языковых несовпадений завершены с предупреждениями\n",
    "applying_automatic_translations": "Применение автоматических переводов...",
    "translation_preview_complete": "Предпросмотр переводов завершён. Применение переводов..."
  },
  "menu": {
    "title": "🌐 МЕНЮ УПРАВЛЕНИЯ I18N",
    "separator": "============================================================",
    "options": {
      "init": "🚀 Инициализировать новые языки",
      "analyze": "🔍 Анализ переводов",
      "validate": "✅ Проверить переводы",
      "usage": "📊 Проверить использование ключей",
      "complete": "🎯 Завершить переводы (100% покрытия)",
      "sizing": "📏 Анализ размеров",
      "workflow": "🔄 Запустить полный рабочий процесс",
      "status": "📋 Показать статус проекта",
      "delete": "🗑️ Удалить все отчёты",
      "language": "🌍 Сменить язык интерфейса",
      "settings": "⚙️ Настройки",
      "help": "❓ Справка",
      "debug": "🔧 Инструменты отладки",
      "exit": "🚪 Выход"
    },
    "update": "📦 Обновить пакет",
    "goodbye": "👋 До свидания!",
    "invalidChoice": "❌ Неверный выбор. Пожалуйста выберите 0-13.",
    "returning": "🔄 Возвращаюсь в главное меню...",
    "invalidOption": "❌ Недопустимая опция. Попробуйте ещё раз.",
    "nonInteractiveModeWarning": "⚠️ Обнаружен неинтерактивный режим. Меню показано только для справки.",
    "useDirectExecution": "💡 Используйте: node main/i18ntk-manage.js --command=<command> для прямого выполнения.",
    "useHelpForCommands": "📖 Используйте: node main/i18ntk-manage.js --help для просмотра доступных команд.",
    "returnToMainMenu": "Нажмите Enter, чтобы вернуться в главное меню.",
    "pressEnterToContinue": "Нажмите Enter, чтобы продолжить...",
    "selectOptionPrompt": "Выберите опцию:",
    "selectDebugToolPrompt": "Выберите инструмент отладки:",
    "selectLogPrompt": "Выберите файл лога (1-{count}):",
    "autoDetectedI18nDirectory": "📂 Автоопределённая директория i18n: {directory}",
    "executingCommand": "Выполняется команда: {command}",
    "unknownCommand": "Неизвестная команда: {command}",
    "languageOption": "  {{index}}. {{displayName}}{{current}}",
    "debugTools": {
      "1": "Анализ файлов логов",
      "2": "Анализ использования ключей перевода",
      "3": "Анализ полноты перевода",
      "4": "Анализ формата перевода",
      "5": "Анализ типов перевода",
      "6": "Анализ структуры перевода"
    },
    "native_translations": {
      "exact_translation_found": "  ✅ {keyPath}: {value}",
      "no_exact_translation": "  ⚠️ Точный перевод для '{keyPath}' не найден, найдены похожие ключи:",
      "similar_key": "    - {key} (совпадение {similarity}%)",
      "processing_language_files": "🔄 Обработка {count} файлов языка...\n",
      "file_not_found": "⚠️ Файл не найден: {file}",
      "processing_translations": "🌍 Обработка переводов {code}...",
      "backup_created": "📋 Создана резервная копия: {filename}",
      "error_parsing_json": "❌ Ошибка при разборе {code}.json: {errorMessage}",
      "existing_keys_found": "📊 {code}: Найдено существующих ключей: {count}",
      "error_writing_json": "❌ Ошибка при записи {code}.json: {errorMessage}",
      "translations_replaced": "📊 {code}: Заменено переводов: {count}",
      "translation_replacement_complete": "\n✅ Замена переводов завершена!",
      "total_replacements": "📊 Всего замен: {count}",
      "dry_run_mode": "\n⚠️ РЕЖИМ ПРОГОНА БЕЗ ИЗМЕНЕНИЙ — файлы не будут модифицированы",
      "tool_title": "🌍 Переключатель родных переводов v1.5.3",
      "tool_separator": "======================================\n",
      "dry_run_warning": "⚠️ Запуск в режиме DRY RUN — файлы не будут изменены\n",
      "error_during_replacement": "❌ Ошибка во время замены переводов:"
    }
  },
  "operations": {
    "completed": "✅ Операция успешно завершена!",
    "deleteReportsTitle": "🗑️ Удалить отчёты и логи",
    "scanningForFiles": "🔍 Поиск файлов для удаления...",
    "noFilesFoundToDelete": "✅ Файлы для удаления не найдены.",
    "availableDirectories": "📁 Доступные директории:",
    "allDirectories": "Все директории",
    "cancelOption": "Отмена",
    "cancelReportOption": "Отмена / Вернуться в меню",
    "invalidSelection": "❌ Неверный выбор.",
    "foundFilesInSelectedDirectories": "📊 Найдено {count} файлов в выбранных директориях:",
    "deletionOptions": "🗑️ Параметры удаления:",
    "deleteAllFiles": "Удалить все файлы",
    "keepLast3Files": "Сохранить последние 3 файла (по дате)",
    "keepLast5Files": "Сохранить последние 5 файлов (по дате)",
    "noFilesToDelete": "✅ Нет файлов для удаления.",
    "filesToDeleteCount": "📋 Файлов на удаление: {count}",
    "filesToKeepCount": "📋 Файлов на сохранение: {count}",
    "confirmDeletion": "⚠️ Вы уверены, что хотите удалить эти файлы? (y/N):",
    "deletedFile": "✅ Удалён: {filename}",
    "failedToDeleteFile": "❌ Не удалось удалить {filename}: {error}",
    "cancelled": "❌ Операция отменена.",
    "init": {
      "title": "🚀 Инициализация Нового Языка"
    },
    "usage": {
      "title": "📊 Проверка Использования Ключей Перевода"
    },
    "analyze": {
      "title": "🔍 Анализ Переводов"
    },
    "validate": {
      "title": "✅ Проверка Переводов"
    },
    "settings": {
      "title": "⚙️  Настройка Менеджера Переводов",
      "separator": "============================================================"
    },
    "complete": {
      "deletingOldReport": "🗑️ Удаление старого отчёта использования для свежего анализа",
      "generatingFreshAnalysis": "🔄 Генерация нового анализа использования...",
      "couldNotGenerate": "⚠️ Не удалось сгенерировать анализ использования. Используются общие отсутствующие ключи.",
      "reportNotFound": "⚠️ Отчёт об использовании не найден. Генерируется новый анализ...",
      "foundMissingKeys": "🔍 Найдено {count} отсутствующих ключей по анализу использования",
      "couldNotParse": "⚠️ Не удалось разобрать отчёт об использовании. Используются общие отсутствующие ключи.",
      "title": "🎯 ЗАВЕРШЕНИЕ ПЕРЕВОДОВ",
      "separator": "============================================================",
      "sourceDir": "📁 Директория исходников: {sourceDir}",
      "sourceLanguage": "🔤 Исходный язык: {sourceLanguage}",
      "dryRunMode": "🧪 РЕЖИМ ПРОГОНА БЕЗ ИЗМЕНЕНИЙ — файлы не будут изменены",
      "languages": "🎯 Целевые языки: {languages}",
      "addingMissingKeys": "➕ Добавление отсутствующих ключей в файлы перевода...",
      "processing": "🔄 Обработка {language}...",
      "addedKeys": "✅ Добавлено {count} ключей",
      "changeDetails": "📝 {file}: {key}",
      "noChangesNeeded": "✅ Для {language} изменений не требуется",
      "summaryTitle": "📊 ИТОГИ ЗАВЕРШЕНИЯ",
      "totalChanges": "📝 Всего изменений: {totalChanges}",
      "languagesProcessed": "🌐 Обработано языков: {languagesProcessed}",
      "missingKeysAdded": "➕ Добавлено отсутствующих ключей: {missingKeysAdded}",
      "nextStepsTitle": "📋 ДАЛЬНЕЙШИЕ ШАГИ",
      "nextStep1": "1. Запустите анализ использования:",
      "nextStep2": "2. Проверьте переводы:",
      "nextStep3": "3. Проанализируйте полноту:",
      "allKeysAvailable": "🎉 Все ключи перевода теперь доступны!",
      "runWithoutDryRun": "💡 Запустите без --dry-run для применения изменений",
      "pressEnterToContinue": "Нажмите Enter для продолжения..."
    },
    "updatePackage": {
      "title": "📦 Обновить пакет i18n-toolkit",
      "description": "Это обновит пакет i18n-toolkit до последней версии из npm.",
      "command": "Команда для выполнения",
      "confirm": "Вы уверены, что хотите продолжить обновление? (y/N): ",
      "updating": "Обновление пакета... Это может занять несколько минут.",
      "success": "✅ i18n-toolkit успешно обновлён!",
      "error": "❌ Не удалось обновить i18n-toolkit",
      "cancelled": "❌ Обновление отменено."
    }
  },
  "security": {
    "pathValidationFailed": "path_validation_failed",
    "invalidInputType": "invalid_input_type",
    "pathTraversalAttempt": "path_traversal_attempt",
    "pathValidated": "✅ Путь успешно проверен",
    "pathValidationError": "path_validation_error",
    "fileTooLarge": "Безопасность: Файл слишком большой: {filePath}",
    "fileReadError": "Безопасность: Ошибка чтения файла: {errorMessage}",
    "contentTooLargeForFile": "Безопасность: Содержимое слишком велико для файла: {filePath}",
    "fileWriteError": "Безопасность: Ошибка записи файла: {errorMessage}",
    "jsonStringTooLarge": "Безопасность: JSON-строка слишком длинная",
    "jsonParseError": "Безопасность: Ошибка разбора JSON: {errorMessage}",
    "inputContainsDisallowedCharacters": "Безопасность: Ввод содержит недопустимые символы",
    "unknownCommandArgument": "Безопасность: Неизвестный аргумент команды: {key}",
    "unknown_command_argument": "Безопасность: Неизвестный аргумент команды: {key}",
    "unknownConfigKey": "Безопасность: Неизвестный ключ конфигурации: {key}",
    "unknown_config_key": "Безопасность: Неизвестный ключ конфигурации: {key}",
    "securityAlert": "[ALERT БЕЗОПАСНОСТИ] {timestamp}: {event}",
    "contentTooLarge": "Безопасность: Содержимое слишком велико для файла: {validatedPath}",
    "inputDisallowedCharacters": "Безопасность: Ввод содержит недопустимые символы",
    "unknownCommandArg": "Неизвестный аргумент команды",
    "logMessage": "[БЕЗОПАСНОСТЬ {level}] {timestamp}: {event}",
    "alertMessage": "[ALERT БЕЗОПАСНОСТИ] {timestamp}: {event}",
    "securityWarning": "[ПРЕДУПРЕЖДЕНИЕ БЕЗОПАСНОСТИ] {timestamp}: {event}",
    "json_parse_error": "Безопасность: Ошибка разбора JSON: {errorMessage}"
  },
  "settings-cli": {
    "settings": {
      "mainMenu": {
        "title": "Главное меню:",
        "uiSettings": "Настройки интерфейса",
        "uiSettingsDesc": "Язык, тема и параметры интерфейса",
        "directorySettings": "Параметры директорий",
        "directorySettingsDesc": "Пути к исходным и выходным директориям",
        "scriptDirectorySettings": "Параметры директорий скриптов",
        "scriptDirectorySettingsDesc": "Пути директорий для отдельных операций скриптов",
        "processingSettings": "Параметры обработки",
        "processingSettingsDesc": "Размер пакета, конкуренция и производительность",
        "advancedSettings": "Расширенные настройки",
        "advancedSettingsDesc": "Валидация, логирование и экспертные опции",
        "viewAllSettings": "Показать все настройки",
        "viewAllSettingsDesc": "Отобразить текущую конфигурацию",
        "importExport": "Импорт/Экспорт",
        "importExportDesc": "Резервное копирование и восстановление настроек",
        "resetToDefaults": "Сбросить до значений по умолчанию",
        "resetToDefaultsDesc": "Восстановить заводские настройки",
        "reportBug": "Сообщить об ошибке",
        "reportBugDesc": "Создать issue на GitHub",
        "saveChanges": "Сохранить изменения",
        "saveChangesDesc": "Сохранить текущие настройки в файл",
        "updatePackage": "Обновить пакет",
        "updatePackageDesc": "Обновить пакет i18n-toolkit через npm",
        "help": "Справка",
        "helpDesc": "Показать подробную справку",
        "quit": "Выход",
        "quitDesc": "Выйти из настроек (с запросом на сохранение изменений)",
        "unsavedChangesWarning": "⚠️ У вас есть несохранённые изменения",
        "saveChangesBeforeQuit": "Сохранить изменения перед выходом? (y/N): ",
        "selectOption": "Выберите опцию: ",
        "goodbyeMessage": "Спасибо за использование менеджера настроек i18n!"
      },
      "goodbyeMessage": "Спасибо за использование менеджера настроек i18n!",
      "relativePathHint": "Используйте относительные пути от этого каталога (например, ./src/i18n/locales)",
      "currentDirectory": "Текущий проектный каталог"
    },
    "settings_manager": {
      "error_loading_settings": "❌ Ошибка при загрузке настроек:",
      "error_saving_settings": "❌ Ошибка при сохранении настроек:",
      "error_setting_value": "❌ Ошибка при установке значения:",
      "missing_required_setting": "❌ Отсутствует обязательная настройка: {prop}",
      "invalid_language": "❌ Неверный язык: {language}",
      "invalid_source_language": "❌ Неверный исходный язык: {sourceLanguage}",
      "default_languages_must_be_array": "❌ defaultLanguages должен быть массивом",
      "invalid_date_format": "❌ Неверный формат даты: {dateFormat}. Допустимые форматы: {validFormats}",
      "invalid_time_format": "❌ Неверный формат времени: {timeFormat}. Допустимые форматы: {validFormats}",
      "notifications_types_must_be_object": "❌ notifications.types должен быть объектом",
      "exclude_files_must_be_array": "❌ excludeFiles должен быть массивом",
      "exclude_dirs_must_be_array": "❌ excludeDirs должен быть массивом",
      "include_extensions_must_be_array": "❌ includeExtensions должен быть массивом",
      "invalid_batch_size": "❌ Неверный размер пакета. Должно быть положительным числом",
      "invalid_max_concurrent_files": "❌ Неверное максимальное количество одновременных файлов. Должно быть положительным числом",
      "invalid_sizing_threshold": "❌ Неверный порог измерения размеров. Должно быть положительным числом",
      "invalid_timeout": "❌ Неверный таймаут. Должно быть не менее 1000 мс",
      "invalid_sizing_format": "❌ Неверный формат измерения размеров: {sizingFormat}. Допустимые форматы: {validFormats}",
      "error_validating_settings": "❌ Ошибка проверки настроек:",
      "backup_created": "📋 Создана резервная копия: {backupPath}",
      "error_creating_backup": "❌ Ошибка при создании резервной копии:",
      "language_not_supported": "Язык '{language}' не поддерживается. Доступные: {availableLanguages}",
      "ui_language_set": "🌍 Язык интерфейса установлен: {language}"
    }
  },
  "settings": {
    "title": "⚙️ Управление настройками",
    "separator": "============================================================",
    "goodbyeMessage": "Спасибо за использование менеджера настроек i18ntk!",
    "relativePathHint": "Используйте относительные пути от этой директории (например, ./src/i18n/locales)",
    "currentDirectory": "Текущая директория проекта",
    "pin": "PIN:",
    "mainMenu": {
      "title": "Главное меню:",
      "uiSettings": "Настройки интерфейса",
      "uiSettingsDesc": "Язык, тема и параметры интерфейса",
      "directorySettings": "Настройки директорий",
      "directorySettingsDesc": "Пути к исходным и выходным директориям",
      "processingSettings": "Настройки обработки",
      "processingSettingsDesc": "Размер пакета, параллелизм и производительность",
      "advancedSettings": "Расширенные настройки",
      "advancedSettingsDesc": "Валидация, логирование и экспертные опции",
      "viewAllSettings": "Просмотреть все настройки",
      "viewAllSettingsDesc": "Отобразить текущую конфигурацию",
      "importExport": "Импорт/Экспорт",
      "updatePackage": "Обновить пакет",
      "updatePackageDesc": "Обновить пакет i18n-toolkit через npm",
      "importExportDesc": "Резервное копирование и восстановление настроек",
      "resetToDefaults": "Сбросить настройки",
      "resetToDefaultsDesc": "Восстановить заводские настройки",
      "reportBug": "Сообщить об ошибке",
      "reportBugDesc": "Создать issue на GitHub",
      "saveChanges": "Сохранить изменения",
      "saveChangesDesc": "Сохранить текущие настройки в файл",
      "help": "Справка",
      "helpDesc": "Показать подробную справку",
      "quit": "Выйти",
      "quitDesc": "Выйти из настроек (с запросом на сохранение изменений)",
      "unsavedChangesWarning": "⚠️  У вас есть несохранённые изменения",
      "saveChangesBeforeQuit": "Сохранить изменения перед выходом? (y/N): ",
      "selectOption": "Выберите опцию: ",
      "selectSettingPrompt": "Выберите настройку для редактирования (или 'b' для возврата): ",
      "enterNewValue": "Введите новое значение: ",
      "updatedSuccessfully": "{setting} успешно обновлено!",
      "scriptDirectorySettings": "Настройки директорий скриптов",
      "scriptDirectoryDesc": "Укажите индивидуальные директории для каждого скрипта",
      "scriptDirectorySettingsDesc": "Можно указать отдельные директории для каждого скрипта. Если не указано, будут использованы глобальные настройки.",
      "securitySettings": "Настройки безопасности",
      "securitySettingsDesc": "Admin PIN и другие параметры безопасности"
    },
    "updatePackage": {
      "title": "Обновить пакет",
      "description": "Обновить пакет i18n-toolkit через npm",
      "command": "npm update i18ntk -g",
      "success": "Обновление успешно завершено.",
      "failed": "Обновление не удалось.",
      "prompt": "Хотите обновить пакет сейчас? (y/N): ",
      "promptDesc": "Это обновит пакет i18ntk до последней версии.",
      "confirm": "y",
      "cancelled": "Обновление отменено."
    },
    "admin": {
      "selectOption": "Выберите опцию: ",
      "updateSuccess": "Admin PIN успешно обновлён!",
      "updateFailed": "Не удалось обновить Admin PIN.",
      "protectionRemoved": "Защита Admin PIN отключена.",
      "configSuccess": "Admin PIN настроен успешно!",
      "configFailed": "Не удалось настроить Admin PIN.",
      "setupPinPrompt": "Хотите настроить Admin PIN? (y/N): ",
      "pinUpdatedSuccess": "Admin PIN успешно изменён!",
      "pinUpdatedFailed": "Не удалось изменить Admin PIN.",
      "pinRemoved": "Защита Admin PIN отключена.",
      "pinConfiguredSuccess": "Admin PIN настроен успешно!",
      "pinConfiguredFailed": "Не удалось настроить Admin PIN.",
      "accessDenied": "❌ Доступ запрещён. Возврат в меню.",
      "setupPin": "🔐 Настройка Admin PIN...",
      "setupFailed": "❌ Не удалось настроить Admin PIN. Настройка не изменена.",
      "pinConfigured": "📌 Admin PIN настроен.",
      "options": "Опции:",
      "changePin": "1) Изменить существующий PIN",
      "removePin": "2) Отключить защиту PIN",
      "cancel": "3) Отмена",
      "verifyCurrentPin": "\n🔐 Сначала подтвердите текущий PIN:",
      "settingNewPin": "\n🔄 Настройка нового PIN...",
      "verifyToRemove": "\n🔐 Подтвердите текущий PIN для отключения:",
      "noPinConfigured": "🔓 Admin PIN не настроен.",
      "pinBenefits": "Настройка Admin PIN обеспечит безопасность для:",
      "benefitSecurity": "• Изменения настроек безопасности",
      "benefitAdvanced": "• Изменения расширенных конфигураций",
      "benefitDebug": "• Доступа к инструментам отладки",
      "benefitReset": "• Сброса настроек",
      "setupCancelled": "⏭️  Настройка Admin PIN отменена.",
      "operationCancelled": "❌ Операция отменена.",
      "startingSettings": "🎛️  Запуск CLI настроек...",
      "authRequired": "🔒 Требуется аутентификация Admin для: {{label}}",
      "pinSetupTitle": "Настройка Admin PIN",
      "browserOpenFailed": "Не удалось автоматически открыть браузер.",
      "manualVisit": "Пожалуйста, вручную перейдите по адресу: {{url}}",
      "browserOpened": "✅ Браузер успешно открыт!"
    },
    "importExport": {
      "enterFilename": "Введите имя файла (или нажмите Enter для значения по умолчанию): ",
      "exportSuccess": "Настройки экспортированы в {{file}}",
      "exportFailed": "Не удалось экспортировать настройки: {{error}}",
      "importFilename": "Введите имя файла для импорта: ",
      "fileNotFound": "Файл не найден.",
      "invalidFormat": "Неверный формат файла настроек.",
      "confirmImport": "Это заменит все текущие настройки. Продолжить? (y/N): ",
      "importSuccess": "Настройки успешно импортированы.",
      "importFailed": "Не удалось импортировать настройки: {{error}}",
      "backupSuccess": "Резервная копия создана: {{file}}",
      "backupFailed": "Не удалось создать резервную копию: {{error}}"
    },
    "resetConfirm": "Вы уверены, что хотите продолжить? (y/N): ",
    "resetSuccess": "Настройки успешно сброшены до значений по умолчанию.",
    "resetFailed": "Не удалось сбросить настройки: {error}",
    "saveSuccess": "Настройки успешно сохранены.",
    "saveFailed": "Не удалось сохранить настройки.",
    "pressEnter": "Нажмите Enter для продолжения...",
    "initFailed": "Не удалось инициализировать настройки: {error}",
    "invalidValueFormat": "Неверный формат значения.",
    "help": {
      "title": "Справка по настройкам",
      "navigationTitle": "Навигация",
      "navigation1": "1. Общие настройки — язык интерфейса, тема и базовые предпочтения",
      "navigation2": "2. Настройки директорий — пути к исходным и отчётным директориям",
      "navigation3": "3. Настройки обработки — размер пакета, параллелизм и производительность",
      "navigation4": "4. Расширенные настройки — режим отладки, аудит и безопасность",
      "categoriesTitle": "Категории настроек",
      "categoryUI": "• Настройки интерфейса: язык, цветовая тема и параметры отображения",
      "categoryDirectory": "• Настройки директорий: директории исходников и отчётов",
      "categoryProcessing": "• Настройки обработки: пакетная обработка и лимиты файлов",
      "categoryAdvanced": "• Расширенные настройки: режим отладки и логирование",
      "envVarsTitle": "Переменные окружения",
      "envVar1": "• I18N_SOURCE_DIR: Переопределить директорию исходников",
      "envVar2": "• I18N_OUTPUT_DIR: Переопределить директорию отчётов",
      "envVar3": "• I18N_DEBUG: Включить режим отладки (true/false)",
      "cliUsageTitle": "Примеры использования CLI",
      "cliUsage1": "• npx i18ntk --settings — Открыть интерактивное меню настроек",
      "cliUsage2": "• npx i18ntk --settings --lang de — Открыть настройки на немецком",
      "cliUsage3": "• npx i18ntk --reset-settings — Сбросить все настройки до значений по умолчанию",
      "navigation": "Используйте цифры для выбора, 'b' для возврата",
      "editing": "Введите новое значение или нажмите Enter для сохранения текущего",
      "saving": "Нажмите 's' для сохранения перед выходом",
      "reset": "Используйте опцию 7 для сброса всех настроек"
    },
    "categories": {
      "uiSettings": "Настройки интерфейса",
      "directorySettings": "Настройки директорий",
      "processingSettings": "Настройки обработки",
      "advancedSettings": "Расширенные настройки",
      "scriptDirectorySettings": "Настройки директорий скриптов",
      "securitySettings": "Настройки безопасности"
    },
    "security": {
      "title": "🔐 Настройки безопасности",
      "description": "Настройте защиту Admin PIN и параметры безопасности",
      "currentPin": "Текущий PIN:",
      "pinConfigured": "✅ Настроено",
      "pinNotConfigured": "❌ Не настроено",
      "pinDisplay": "Отображение PIN:",
      "menu": {
        "enableDisable": "1) Включить/Отключить защиту PIN",
        "setupChange": "2) Настроить/Изменить PIN",
        "sessionTimeout": "3) Таймаут сессии",
        "maxAttempts": "4) Макс. попыток",
        "lockoutDuration": "5) Длительность блокировки",
        "back": "b) Назад в главное меню"
      },
      "prompts": {
        "enablePin": "Включить защиту Admin PIN? (y/N): ",
        "disablePin": "Отключить защиту Admin PIN? (y/N): ",
        "enterTimeout": "Введите таймаут сессии (минуты): ",
        "enterMaxAttempts": "Введите макс. число неудачных попыток: ",
        "enterLockoutDuration": "Введите длительность блокировки (минуты): "
      },
      "messages": {
        "pinEnabled": "Защита Admin PIN включена",
        "pinDisabled": "Защита Admin PIN отключена",
        "timeoutUpdated": "Таймаут сессии обновлён до {{minutes}} минут",
        "maxAttemptsUpdated": "Макс. число попыток обновлено до {{attempts}}",
        "lockoutDurationUpdated": "Длительность блокировки обновлена до {{minutes}} минут"
      }
    },
    "fields": {
      "language": {
        "label": "Язык интерфейса",
        "description": "Язык для пользовательского интерфейса",
        "current": "Текущий: {value}",
        "help": "Выберите предпочитаемый язык интерфейса"
      },
      "theme": {
        "label": "Цветовая тема",
        "description": "Предпочитаемая тема UI",
        "current": "Текущий: {value}",
        "help": "Выберите светлую, тёмную или системную тему"
      },
      "dateFormat": {
        "label": "Формат даты",
        "description": "Формат отображения дат",
        "current": "Текущий: {value}",
        "help": "Выберите формат даты для отчётов"
      },
      "notifications": {
        "enabled": {
          "label": "Включить уведомления",
          "description": "Показывать уведомления на рабочем столе",
          "current": "Текущий: {value}",
          "help": "Включить уведомления о завершении операций"
        }
      },
      "sourceDir": {
        "label": "Директория исходников",
        "description": "Директория с файлами перевода",
        "current": "Текущий: {value}",
        "help": "Путь к директории с исходными переводами"
      },
      "outputDir": {
        "label": "Директория отчётов",
        "description": "Директория для сохраняемых отчётов",
        "current": "Текущий: {value}",
        "help": "Куда сохранять отчёты и файлы"
      },
      "batchSize": {
        "label": "Размер пакета",
        "description": "Число элементов в пакете",
        "current": "Текущий: {value}",
        "help": "Сколько файлов обрабатывать за раз"
      },
      "maxConcurrentFiles": {
        "label": "Макс. одновременных файлов",
        "description": "Максимум файлов в обработке одновременно",
        "current": "Текущий: {value}",
        "help": "Максимальное число параллельных обработок"
      },
      "sizingThreshold": {
        "label": "Порог вариации размера (%)",
        "description": "Порог для предупреждений о размере",
        "current": "Текущий: {value}%",
        "help": "Процент для обнаружения несоответствий размеров"
      },
      "strictMode": {
        "label": "Строгий режим проверки",
        "description": "Включить строгую валидацию",
        "current": "Текущий: {value}",
        "help": "Требовать строгую проверку файлов перевода"
      },
      "backupBeforeChanges": {
        "label": "Авто-резервное копирование",
        "description": "Создавать резервные копии перед изменениями",
        "current": "Текущий: {value}",
        "help": "Автоматически создавать бэкапы перед правками"
      },
      "adminPinEnabled": {
        "label": "Защита Admin PIN",
        "description": "Требовать Admin PIN для чувствительных настроек",
        "current": "Текущий: {value}",
        "help": "Требовать PIN для изменений безопасности и расширенных опций"
      },
      "sessionTimeout": {
        "label": "Таймаут сессии",
        "description": "Время активности админ-сессии (минуты)",
        "current": "Текущий: {value} минут",
        "help": "Сколько минут сессия остаётся активной до повторной аутентификации"
      },
      "maxFailedAttempts": {
        "label": "Макс. неудачных попыток",
        "description": "Максимум неудачных PIN-попыток до блокировки",
        "current": "Текущий: {value} попыток",
        "help": "Число неудачных попыток до временной блокировки"
      },
      "lockoutDuration": {
        "label": "Длительность блокировки",
        "description": "Время блокировки после превышения попыток",
        "current": "Текущий: {value} минут",
        "help": "Как долго система будет заблокирована после превышения попыток"
      }
    },
    "actions": {
      "editSetting": "Редактировать {setting}: ",
      "settingUpdated": "✅ {setting} успешно обновлено!",
      "invalidValue": "❌ Неверное значение. Пожалуйста, попробуйте снова.",
      "pressEnter": "Нажмите Enter для продолжения...",
      "backToMenu": "Вернуться в главное меню",
      "saveSuccess": "✅ Настройки успешно сохранены!",
      "saveFailed": "❌ Не удалось сохранить настройки: {error}",
      "resetConfirm": "Сбросить все настройки до значений по умолчанию? (y/N): ",
      "resetSuccess": "✅ Настройки сброшены до значений по умолчанию!",
      "importSuccess": "✅ Настройки успешно импортированы!",
      "exportSuccess": "✅ Настройки успешно экспортированы!",
      "fileNotFound": "❌ Файл не найден: {path}",
      "invalidFormat": "❌ Неверный формат файла настроек",
      "pinProtectionUpdated": "✅ Защита PIN для {script} успешно обновлена!",
      "pinProtectionReset": "✅ Все настройки защиты PIN сброшены до значений по умолчанию!",
      "pinProtectionConfigure": "Настроить защиту PIN для отдельных скриптов",
      "pinProtectionSelectScript": "Выберите скрипт для переключения защиты PIN:",
      "pinProtectionCurrentStatus": "Текущий статус: {status}",
      "pinProtectionEnabled": "Включено",
      "pinProtectionDisabled": "Отключено",
      "pinProtectionToggle": "Переключить защиту PIN",
      "pinProtectionResetAll": "Сбросить все до значений по умолчанию",
      "pinProtectionBack": "Назад к настройкам безопасности"
    },
    "themes": {
      "light": "Светлая",
      "dark": "Тёмная",
      "system": "Системная"
    },
    "languages": {
      "en": "Английский",
      "de": "Немецкий",
      "es": "Испанский",
      "fr": "Французский",
      "ru": "Русский",
      "ja": "Японский",
      "zh": "Китайский"
    },
    "viewAll": {
      "title": "Просмотреть все настройки"
    },
    "current": "Текущий",
    "back": "Назад в главное меню",
    "selectSettingPrompt": "Выберите настройку для редактирования (или b — назад, r — сброс): ",
    "invalidOption": "Неверная опция.",
    "editing": "Редактирование",
    "enterNewValue": "Введите новое значение (или нажмите Enter для сохранения текущего, введите 'default' для системного):",
    "validOptions": "Доступные варианты",
    "updatedSuccessfully": "успешно обновлено!",
    "noHelp": "Для этой настройки справка недоступна",
    "resetScriptDirectories": "Сбросить до значений по умолчанию",
    "resetScriptDirectoriesTitle": "Сброс директорий скриптов до значений по умолчанию",
    "resetScriptDirectoriesWarning1": "Это сбросит все настройки директорий скриптов к системным значениям.",
    "resetScriptDirectoriesWarning2": "Все пользовательские пути будут удалены. Действие необратимо.",
    "resetScriptDirectoriesConfirm": "Вы уверены, что хотите сбросить все директории скриптов до значений по умолчанию? (y/N): "
  },
  "summary": {
    "separator": "============================================================",
    "configurationTitle": "🔧 Конфигурация:",
    "sourceLanguage": "   Исходный язык: {sourceLanguage}",
    "supportedExtensions": "   Поддерживаемые расширения: {extensions}",
    "excludedFiles": "   Исключённые файлы: {files}",
    "reportContent": "\n{report}",
    "fatalError": "❌ Фатальная ошибка: {error}",
    "helpTitle": "📊 ГЕНЕРАТОР ОТЧЁТА I18N SUMMARY",
    "helpDescription": "Анализирует структуру папок i18n и генерирует сводный отчёт с основными статистиками, анализом структуры файлов и проверками.",
    "helpUsage": "Использование: node i18ntk-summary.js [options]",
    "helpOptions": "  --source-dir <dir>     Директория для анализа",
    "helpSourceDir": "  --source-dir <dir>     Директория для анализа",
    "helpOutput": "  --output <file>        Файл для вывода отчёта",
    "helpVerbose": "  --verbose, -v           Подробный вывод",
    "helpKeepReports": "  --keep-reports          Сохранить существующие отчёты",
    "helpDeleteReports": "  --delete-reports        Удалить существующие отчёты",
    "helpHelp": "  --help, -h              Показать справку",
    "helpExamples": "\nПримеры:",
    "helpExample1": "  node i18ntk-summary.js",
    "helpExample2": "  node i18ntk-summary.js --source-dir ./locales",
    "helpExample3": "  node i18ntk-summary.js --output summary-report.txt",
    "helpExample4": "  node i18ntk-summary.js --verbose",
    "helpExample5": "  node i18ntk-summary.js --source-dir ./locales --output report.json",
    "couldNotReadFile": "⚠️  Не удалось прочитать файл: {filePath}",
    "couldNotParseJSFile": "⚠️  Не удалось разобрать JS/TS файл: {filePath}",
    "errorReadingFile": "⚠️  Ошибка при чтении файла {filePath}: {error}",
    "analyzingFolder": "\n🔍 Анализ структуры папок...\n",
    "noLanguageDirectoriesFound": "\n❌ В указанной директории не найдены папки языков.\n",
    "foundLanguages": "\n✅ Найдено языков: {count}: {languages}\n",
    "referenceLanguageFiles": "\n📁 В эталонном языке '{language}' файлов: {count}\n",
    "analyzingLanguage": "\n🌍 Анализ языка: {language}",
    "keysInFiles": "\n📊 Найдено ключей: {keys} в {files} файлах\n",
    "checkingInconsistentKeys": "\n🔍 Проверка несовпадений ключей между языками...",
    "generatingSummaryReport": "\n📝 Генерация сводного отчёта...\n",
    "reportTitle": "\n📊 ОТЧЁТ I18N SUMMARY\n",
    "generated": "\nСгенерировано: {timestamp}\n",
    "sourceDirectory": "\nДиректория исходников: {dir}\n",
    "overview": "\n📈 ОБЗОР",
    "languagesCount": "Языков: {count}",
    "totalFiles": "Всего файлов: {count}",
    "totalKeys": "Всего ключей: {count}",
    "avgKeysPerLanguage": "Среднее число ключей на язык: {count}",
    "languagesBreakdown": "\n🌍 РАЗБИВКА ПО ЯЗЫКАМ",
    "languageBreakdown": "{language}: {files} файлов, {keys} ключей",
    "fileStructure": "\n📁 СТРУКТУРА ФАЙЛОВ",
    "fileKeys": "{file}: {keys} ключей",
    "missingInLanguages": "   ⚠️ Отсутствует в: {languages}",
    "issuesFound": "\n❌ НАЙДЕНЫ ПРОБЛЕМЫ",
    "missingFiles": "📁 Отсутствующие файлы:",
    "emptyFiles": "📄 Пустые файлы:",
    "malformedFiles": "⚠️ Некорректные файлы:",
    "duplicateKeys": "🔑 Дублирующиеся ключи:",
    "inconsistentKeys": "🔍 Несовпадающие ключи:",
    "missingKeys": "   Отсутствуют: {keys}{more}",
    "extraKeys": "   Лишние: {keys}{more}",
    "noIssuesFound": "\n✅ ПРОБЛЕМ НЕ НАЙДЕНО",
    "allFilesConsistent": "Все файлы переводов согласованы между языками.",
    "recommendations": "\n💡 РЕКОМЕНДАЦИИ",
    "createMissingFiles": "• Создайте отсутствующие файлы перевода",
    "addContentToEmptyFiles": "• Добавьте содержимое в пустые файлы перевода",
    "fixMalformedFiles": "• Исправьте некорректные JSON/JS файлы",
    "removeDuplicateKeys": "• Удалите дублирующиеся ключи из файлов",
    "synchronizeKeys": "• Синхронизируйте ключи во всех языках",
    "splitLargeFiles": "• Разбейте большие файлы на более мелкие пространства имён",
    "addMoreLanguages": "• Рассмотрите добавление дополнительных языков",
    "nextSteps": "🎯 ДАЛЬНЕЙШИЕ ШАГИ",
    "nextStep1": "1. Исправьте выявленные проблемы",
    "nextStep2": "2. Запустите валидацию для проверки согласованности",
    "nextStep3": "3. Используйте i18ntk-validate для подробной проверки",
    "nextStep4": "4. Регулярный мониторинг рекомендуется",
    "couldNotFindI18nDirectory": "❌ Не найдена директория i18n. Укажите --source-dir.",
    "sourceDirectoryDoesNotExist": "❌ Директория исходников не существует: {dir}"
  },
  "ui": {
    "autoDetectedI18nDirectory": "Автоопределённая директория i18n: {path}",
    "executingCommand": "🔄 Выполнение команды: {command}",
    "unknownCommand": "❌ Неизвестная команда: {command}",
    "errorExecutingCommand": "❌ Ошибка при выполнении команды: {error}",
    "errorLoadingTranslationFile": "❌ Ошибка при загрузке файла перевода для «{language}»: {error}",
    "errorSavingLanguagePreference": "❌ Ошибка при сохранении предпочтения языка: {error}",
    "noActiveReadlineInterface": "❌ Нет активного интерфейса readline",
    "uiLanguageUpdated": "🌍 Язык интерфейса обновлён на: {language}",
    "selectOptionPrompt": "Выберите опцию:",
    "pressEnterToReturn": "Нажмите Enter, чтобы вернуться в главное меню…",
    "detectedSourceDirectory": "Обнаружена директория исходников: {sourceDir}",
    "detectedI18nDirectory": "Обнаружена директория i18n: {directory}",
    "toolkitTitle": "🌍 i18ntk — Корпоративный инструмент управления i18n",
    "versionInfo": "📦 Версия: {version}",
    "releaseDate": "📅 Дата выпуска: {date}",
    "maintainer": "👤 Поддерживает: {maintainer}",
    "nodeVersion": "🔧 Node.js: {version}",
    "license": "📄 Лицензия: {license}",
    "whatsNew": "✨ Что нового в версии {version}:",
    "changeItem": "   {change}",
    "documentation": "📚 Документация: {url}",
    "issues": "🐛 Задачи: {url}",
    "versionInfoUnavailable": "Информация о версии i18ntk недоступна",
    "versionInfoError": "Ошибка: {error}"
  },
  "validateLanguagePurity": {
    "phrase_debug_tools": "инструменты отладки",
    "phrase_settings": "настройки",
    "phrase_configuration": "конфигурация",
    "phrase_invalid_choice": "неверный выбор",
    "phrase_please_select": "пожалуйста, выберите",
    "phrase_back_to_main_menu": "вернуться в главное меню",
    "phrase_error": "ошибка",
    "phrase_warning": "предупреждение",
    "phrase_success": "успешно",
    "phrase_failed": "не удалось",
    "phrase_loading": "загрузка",
    "phrase_saving": "сохранение",
    "phrase_full_system_debug": "полная отладка системы",
    "phrase_configuration_debug": "отладка конфигурации",
    "phrase_translation_debug": "отладка перевода",
    "phrase_performance_debug": "отладка производительности",
    "phrase_admin_pin_setup": "настройка Admin PIN",
    "phrase_enter_admin_pin": "введите Admin PIN",
    "phrase_confirm_admin_pin": "подтвердите Admin PIN",
    "phrase_authentication_failed": "аутентификация не удалась",
    "phrase_access_denied": "доступ запрещён",
    "phrase_security_log": "журнал безопасности",
    "language_german": "Немецкий",
    "language_french": "Французский",
    "language_spanish": "Испанский",
    "language_russian": "Русский",
    "language_japanese": "Японский",
    "language_chinese": "Китайский",
    "validator_title": "🔍 Валидатор чистоты языка",
    "validating_file": "📄 Проверка {language}.json ({name})…",
    "valid_file_message": "   ✅ Валиден — нарушений чистоты языка не обнаружено",
    "invalid_file_message": "   ❌ Не прошёл проверку — найдено {count} нарушений",
    "no_validation_rules": "Для языка «{language}» нет определённых правил проверки",
    "error_reading_file": "Ошибка чтения файла: {errorMessage}",
    "issue_forbidden_marker": "Содержит запрещённый маркер: {marker}",
    "issue_english_phrase": "Содержит английскую фразу: «{phrase}»",
    "issue_english_words": "Содержит английские слова: {words}",
    "issue_missing_cyrillic": "Длинный текст должен содержать кириллические символы для русского",
    "issue_missing_japanese": "Длинный текст должен содержать японские иероглифы",
    "issue_missing_chinese": "Длинный текст должен содержать китайские символы",
    "summary_title": "📊 СВОДКА ВАЛИДАЦИИ",
    "overall_results_header": "📋 Общие результаты:",
    "total_files_validated": "   Всего файлов проверено: {count}",
    "valid_files": "   Валидных файлов: {count}",
    "invalid_files": "   Невалидных файлов: {count}",
    "total_violations": "   Всего нарушений: {count}\n",
    "violations_by_file_header": "❌ НАРУШЕНИЯ ПО ФАЙЛАМ:\n"
  },
  "workflow": {
    "title": "Управление рабочими процессами",
    "description": "Управление рабочими процессами i18n.",
    "select_workflow_file": "Выберите файл рабочего процесса для запуска:",
    "no_workflow_files": "В директории workflows не найдено файлов рабочих процессов.",
    "invalid_selection": "Неверный выбор. Пожалуйста, введите номер файла рабочего процесса.",
    "workflow_execution_started": "Запуск рабочего процесса: {workflowName}",
    "workflow_execution_completed": "Рабочий процесс завершён: {workflowName}",
    "workflow_execution_failed": "Рабочий процесс не выполнен: {workflowName} — {error}",
    "workflow_cancelled": "Выполнение рабочего процесса отменено.",
    "press_enter_to_continue": "Нажмите Enter, чтобы продолжить!",
    "starting": "🚀 Запуск рабочего процесса…",
    "completed": "✅ Рабочий процесс успешно завершён!",
    "checkReports": "📄 Проверьте отчёты для подробностей.",
    "exitingCompleted": "📝 Рабочий процесс завершён. Выход…",
    "summary": {
      "title": "📋 ИТОГИ РАБОЧЕГО ПРОЦЕССА",
      "separator": "===================",
      "completedAt": "🕐 Завершено: {timestamp}",
      "initialViolations": "📊 Первоначальные нарушения: {count}",
      "finalViolations": "📉 Итоговые нарушения: {count}",
      "totalFixes": "🔧 Всего исправлений: {count}",
      "improvement": "📈 Улучшение: {percentage}%",
      "stepResults": "📝 РЕЗУЛЬТАТЫ ШАГОВ:\n",
      "stepDetail": "{number}. {status} {stepName}",
      "violations": "   Нарушений: {count}",
      "fixesApplied": "   Исправлений: {count}",
      "nextSteps": "💡 ДАЛЬНЕЙШИЕ ШАГИ:\n",
      "congratulations": "🎉 Поздравляем! Все файлы локалей теперь безупречны!",
      "cicdIntegration": "✅ Рассмотрите интеграцию валидатора в ваш CI/CD",
      "automatedChecks": "✅ Настройте автоматические проверки новых переводов",
      "greatProgress": "🎯 Большая часть проблем решена.",
      "manualReview": "🔍 Проведите ручной обзор оставшихся нарушений",
      "addMappings": "🌐 Рассмотрите добавление перевода для редких случаев",
      "goodProgress": "📈 Хороший прогресс, но есть что доработать.",
      "expandMappings": "🔧 Расширьте автоматические правила перевода",
      "professionalReview": "👥 Рассмотрите профессиональный перевод для сложных случаев",
      "runAgain": "🔄 Запустите процесс снова после добавления новых правил",
      "limitedProgress": "⚠️  Прогресс ограничен. Требуется вмешательство.",
      "reviewMappings": "🔍 Проверьте и дополните правила перевода",
      "professionalServices": "👥 Обратитесь к профессиональным переводчикам",
      "checkIssues": "🔧 Проверьте системные проблемы в файлах локалей",
      "success": "✅",
      "warning": "⚠️"
    }
  }
}