{
  "meta": {
    "version": "1.10.0",
    "updated": "2025-08-16"
  },
  "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}",
    "errors": {
      "errors": "Ошибки:",
      "genericError": "❌ Ошибка: {error}",
      "initializationFailed": "❌ Инициализация не удалась: {error}",
      "translationKeyNotFound": "❌ Ключ перевода не найден: {key}",
      "sourceDirectoryNotFound": "❌ Исходная директория не найдена: {directory}",
      "configLoadingFailed": "❌ Загрузка конфигурации не удалась",
      "invalidSourceDirectory": "❌ Неверная исходная директория: {directory}",
      "securityViolation": "⚠️ Нарушение безопасности обнаружено",
      "authenticationFailed": "❌ Аутентификация не удалась",
      "sourceEqualsI18nWarn": "⚠️ sourceDir equals i18nDir ({sourceDir}). Falling back to {fallback} for source scanning."
    },
    "errorGeneratingStatusSummary": "Ошибка генерации сводки статуса: {error}",
    "errorRunningDebugTool": "Ошибка запуска инструмента отладки '{displayName}': {error}",
    "errorReadingDebugLogs": "Ошибка чтения журналов отладки: {error}",
    "errorAnalyzingLogFile": "Ошибка анализа файла журнала: {error}",
    "errorAnalyzingTranslationKeys": "Ошибка анализа ключей перевода: {error}",
    "errorAnalyzingTranslationCompleteness": "Ошибка анализа полноты перевода: {error}",
    "analyzingTranslationCompleteness": "🔍  Анализ полноты перевода по всем языкам...",
    "i18nDirectoryNotFound": "⚠️  i18n директория не найдена: {i18nDir}",
    "translationCompletenessAnalysisFailed": "⚠️  Анализ полноты перевода не удался: {error}",
    "failedToAnalyzeLanguage": "❌  Не удалось проанализировать язык {language}: {error}",
    "errorReadingI18nDirectory": "❌  Чтение i18n директории не удалось: {error}",
    "languageCompletenessTitle": "📈  ПОЛНОТА ПЕРЕВОДА ПО ЯЗЫКАМ",
    "errorAnalyzingTranslationFormat": "Ошибка анализа формата перевода: {error}",
    "errorAnalyzingTranslationType": "Ошибка анализа типа перевода: {error}",
    "errorAnalyzingTranslationStructure": "Ошибка анализа структуры перевода: {error}",
    "errorAnalyzingTranslationFormatMismatch": "Ошибка анализа несоответствия формата перевода: {error}",
    "errorAnalyzingTranslationTypeMismatch": "Ошибка анализа несоответствия типа перевода: {error}",
    "errorAnalyzingTranslationStructureMismatch": "Ошибка анализа несоответствия структуры перевода: {error}",
    "errorAnalyzingTranslationSameAsSource": "Ошибка анализа перевода совпадающего с источником: {error}",
    "title": "Статус",
    "nextStep1": "1. Проверить анализ использования:",
    "nextStep2": "2. Проверить переводы:",
    "nextStep3": "3. Проанализировать полноту:",
    "nextStep4": "4. Завершить отсутствующие переводы:",
    "nextStep5": "5. Сгенерировать сводный отчет:",
    "nextStep6": "6. Проверить и завершить переводы:",
    "generating": "Генерация сводного отчета...",
    "review": "Проверка переводов...",
    "finalizing": "Завершение переводов...",
    "finalized": "Успешно завершено!",
    "warnings": "Предупреждения:",
    "completedKeys": "Завершенные ключи:",
    "missingKeys": "Отсутствующие ключи:",
    "partialKeys": "Частичные ключи:",
    "home": "Дом",
    "settings": "Настройки",
    "startingSettings": "🎛️  Начальные настройки CLI...",
    "confirm": "Подтвердить"
  },
  "errors": {
    "readlineClosed": "Поток ввода закрыт; работа в неинтерактивном режиме.",
    "noPackageJson": "Файл package.json не найден. Невозможно автоматически определить фреймворк i18n.",
    "noI18nDir": "Директория i18n не найдена в корне проекта.",
    "noI18nConfig": "Файл конфигурации i18n не найден в корне проекта."
  },
  "fixer": {
    "help_message": "\nI18n Исправление Переводов\n\nИспользование: node i18ntk-fixer.js [опции]\n\nОпции:\n  --source-dir <dir>     Исходный каталог для сканирования (по умолчанию: ./locales)\n  --languages <langs>    Список языков для исправления, разделенный запятыми\n  --markers <markers>    Список маркеров, которые считать непереведенными, разделенный запятыми\n  --no-backup           Пропустить автоматическое создание резервной копии\n  --help                Показать эту справку\n\nПримеры:\n  node i18ntk-fixer.js --languages de,fr\n  node i18ntk-fixer.js --source-dir=./locales --markers NOT_TRANSLATED\n  node i18ntk-fixer.js --no-backup\n",
    "starting": "🚀 Запуск исправления переводов для языков: {languages}",
    "sourceDirectory": "📁 Исходный каталог: {sourceDir}",
    "sourceLanguage": "🔤 Исходный язык: {sourceLanguage}",
    "markers": "🏷️  Маркеры для исправления: {markers}",
    "scanningLanguage": "📊 Сканирование {language}...",
    "noLanguages": "❌ Языки для исправления не указаны.",
    "allComplete": "🎉 Все переводы уже завершены!",
    "fullReportSaved": "📊 Полный отчет сохранен в: {reportPath}",
    "reviewReport": "Пожалуйста, просмотрите отчет перед продолжением.",
    "backupCreated": "💾 Резервная копия успешно создана.",
    "applyingFixes": "🔄 Применение исправлений...",
    "fixingComplete": "✅ Исправление переводов завершено!",
    "operationCancelled": "❌ Операция отменена пользователем.",
    "analysisTitle": "🔍 АНАЛИЗ ИСПРАВЛЕНИЯ ПЕРЕВОДОВ",
    "analysisSeparator": "==================================================",
    "totalIssues": "Всего найдено проблем: {totalIssues}",
    "missingTranslations": "Отсутствующие переводы: {missing}",
    "placeholderTranslations": "Переводы с маркерами: {placeholder}",
    "noIssues": "✅ Проблем не найдено. Все переводы завершены.",
    "detailedIssues": "📋 ПОДРОБНЫЕ ПРОБЛЕМЫ:",
    "detailedSeparator": "--------------------------------------------------",
    "filePath": "📄 {file} → {path}",
    "missingKey": "❌ ОТСУТСТВУЕТ: {source} → {new}",
    "placeholderKey": "⚠️  МАРКЕР: \"{target}\" → \"{new}\"",
    "moreIssues": "... и еще {count} проблем. См. файл отчета для полных деталей.",
    "confirmationTitle": "🤔 Продолжить с этими исправлениями?",
    "confirmationOptions": "Опции:",
    "optionYes": "д - Да, применить все исправления",
    "optionNo": "н - Нет, отменить операцию",
    "optionShow": "п - Показать подробные проблемы",
    "choicePrompt": "Ваш выбор (д/н/п): ",
    "nonInteractiveMode": "⚡ Обнаружен неинтерактивный режим - автоматическое применение исправлений...",
    "reportGenerated": "📊 Сгенерирован отчет об исправлении: {path}",
    "summary": {
      "totalIssues": "Всего проблем: {total}",
      "missingKeys": "Отсутствующие ключи: {missing}",
      "placeholderKeys": "Ключи с маркерами: {placeholder}",
      "languages": "Языки: {languages}"
    },
    "welcome": {
      "title": "🎯 Добро пожаловать в инструмент исправления переводов!",
      "description": "Этот инструмент поможет вам исправить сломанные переводы и маркеры в ваших языковых файлах."
    },
    "markerPrompt": {
      "title": "🏷️ Настройка маркеров плейсхолдеров",
      "description": "Введите маркеры, которые указывают на непереведенный текст (через запятую):",
      "currentDefaults": "Маркеры по умолчанию: {markers}",
      "input": "Маркеры (или Enter для использования по умолчанию): "
    },
    "languagePrompt": {
      "title": "🌍 Выбор языков для исправления",
      "available": "Доступные языки: {languages}",
      "description": "Введите языки для исправления (через запятую) или Enter для всех:",
      "input": "Языки: ",
      "noLanguages": "Языки для исправления не найдены."
    },
    "directoryPrompt": {
      "title": "📁 Выбор директории",
      "current": "Текущая директория: {dir}",
      "description": "Введите директорию с вашими языковыми файлами (или Enter для текущей директории):",
      "input": "Директория: "
    }
  },
  "autorun": {
    "stepAnalyzeTranslations": "Анализ переводов",
    "stepCompletedWithIcon": "✅ Шаг «{stepName}» завершён.",
    "stepValidateTranslations": "Валидация переводов",
    "stepRunning": "Шаг «{stepName}» выполняется...",
    "separator": "==================================================",
    "stepFailed": "Шаг «{stepName}» завершился с ошибкой.",
    "errorLabel": "Ошибка: {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 — Показать справку",
    "examplesTitle": "Примеры:",
    "configExample": "node i18ntk-autorun.js --config",
    "stepsExample1": "node i18ntk-autorun.js --steps 1,2,3",
    "stepsExample2": "node i18ntk-autorun.js --all",
    "customSettingsConfiguration": "Настройка пользовательских параметров",
    "availableSteps": "Доступные шаги:",
    "startingAutoRunWorkflow": "Запуск автоматического выполнения...",
    "workflowIncludesSteps": "Рабочий процесс включает {count} шагов:",
    "missingRequiredFile": "Отсутствует обязательный файл: {file}",
    "workflowStopped": "Рабочий процесс остановлен.",
    "workflowCompleted": "Рабочий процесс завершён.",
    "successfulSteps": "Успешных шагов: {count}",
    "failedSteps": "Шагов с ошибками: {count}",
    "stepInitializeProject": "Инициализация проекта",
    "stepCheckUsage": "Анализ использования",
    "stepGenerateSummary": "Генерация итогового отчёта...",
    "runInitializationFirst": "Сначала выполните инициализацию.",
    "initializationCheckPassed": "Проверка инициализации пройдена.",
    "runningStep": "Выполняется шаг: {stepName}",
    "commandLabel": "Команда: {command}",
    "stepCompletedWithTime": "Шаг «{stepName}» выполнен за {duration} мс.",
    "stepCompleted": "Шаг «{stepName}» завершён.",
    "stepFailedWithError": "Шаг «{stepName}» завершился ошибкой: {error}",
    "requiredStepFailed": "Обязательный шаг не выполнен. Остановка.",
    "optionalStepFailed": "Необязательный шаг не выполнен. Продолжаем.",
    "stepRequired": "(Обязательно)",
    "stepOptional": "(Опционально)",
    "startingExecution": "Начало выполнения...",
    "pressEnterToContinue": "Нажмите Enter, чтобы продолжить...",
    "runningSelectedSteps": "Выполнение выбранных шагов...",
    "invalidStepNumber": "Недопустимый номер шага: {stepNum}",
    "executionReport": "Отчёт о выполнении:",
    "requiredFailedSteps": "Неудачных обязательных шагов: {count}",
    "stepDetails": "Детали шага:",
    "reportSavedTo": "Отчёт сохранён в: {path}",
    "overallStatusSuccess": "УСПЕШНО",
    "overallStatusFailed": "НЕИСПОЛЬНО",
    "overallStatus": "Общий статус: {status}",
    "pressEnterForDefaults": "Нажмите Enter для значений по умолчанию.",
    "sourceDirPrompt": "Директория исходников (по умолчанию: {default}): ",
    "sourceLangPrompt": "Исходный язык (по умолчанию: {default}): ",
    "targetLangsPrompt": "Языки перевода (через запятую, по умолчанию: {default}): ",
    "translationMarkerPrompt": "Маркер перевода (по умолчанию: {default}): ",
    "outputDirPrompt": "Директория для отчётов (по умолчанию: {default}): ",
    "settingsUpdatedSuccessfully": "Настройки успешно обновлены!",
    "errorConfiguringSettings": "Ошибка настройки параметров: {error}",
    "configurationComplete": "Настройка завершена.",
    "runAutoRunCommand": "Теперь вы можете запустить команду auto-run.",
    "configurationFailed": "Не удалось настроить: {error}",
    "noValidStepNumbers": "Не указан ни один корректный номер шага.",
    "autoRunFailed": "Auto-run завершился с ошибкой: {error}",
    "stepCompleteTranslations": "Завершение переводов",
    "stepAnalyzeSizing": "Анализ размеров",
    "stepCompletedIcon": "✅",
    "stepRunningWithNumber": "[{stepNumber}/{totalSteps}] Выполнение шага «{stepName}»...",
    "stepFailedIcon": "❌",
    "translationLoadWarning": "Предупреждение: не удалось загрузить переводы {lang}",
    "configReadError": "Ошибка чтения {file}"
  },
  "analyze": {
    "help_message": "\nI18n Анализатор переводов\n\nИспользование: node i18ntk-analyze.js [опции]\n\nОпции:\n  --source-dir <dir>     Директория исходников для сканирования (по умолчанию: ./locales)\n  --i18n-dir <dir>       Директория I18n (по умолчанию: ./locales)\n  --output-report        Сгенерировать подробный отчёт\n  --output-dir <dir>     Директория для отчётов (по умолчанию: ./i18ntk-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": "Сбой загрузки конфигурации",
    "sourceLanguageNotFound": "Исходный язык не найден",
    "couldNotParseTarget": "Не удалось разобрать целевой язык",
    "couldNotParseSource": "Не удалось разобрать исходный язык",
    "reportGenerated": "Отчёт сгенерирован",
    "generateReportPrompt": "Сгенерировать отчёт?",
    "title": "🌍 ЗАВЕРШЕНИЕ I18NTK ПЕРЕВОДА",
    "separator": "============================================================",
    "sourceDir": "📁 Директория исходников: {sourceDir}",
    "sourceLanguage": "🌐 Исходный язык: {sourceLanguage}",
    "dryRunMode": "🧪 Режим тестового запуска — без изменений",
    "languages": "🌍 Доступные языки: {languages}",
    "addingMissingKeys": "➕ Добавление отсутствующих ключей в файлы переводов...",
    "processing": "🔄 Обработка {language}...",
    "addedKeys": "✅ Добавлено {count} отсутствующих ключей",
    "noChangesNeeded": "✅ Для {language} изменений не требуется",
    "summaryTitle": "📊 ИТОГОВАЯ СВОДКА",
    "totalChanges": "📝 Всего изменений: {totalChanges}",
    "languagesProcessed": "🌍 Обработано языков: {languagesProcessed}",
    "missingKeysAdded": "➕ Добавлено недостающих ключей: {missingKeysAdded}",
    "nextStepsTitle": "📋 ДАЛЬНЕЙШИЕ ШАГИ",
    "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 символов — рассмотрите возможность их разбить",
    "longer": "дольше",
    "shorter": "коротше",
    "review_translations": "Рассмотрите возможность пересмотра переводов {lang} — они на {percentageDifference}% {comparison} чем базовый",
    "report_saved_to": "Отчёт сохранён в: {reportPath}",
    "considerReviewingTranslations": "Рассмотрите возможность пересмотра переводов {lang} — они на {data.percentageDifference}% длиннее базового",
    "csv_report_saved_to": "CSV-отчет сохранен в: {csvPath}",
    "human_report_saved": "Читаемый отчет сохранен: {reportPath}",
    "folder_summary_title": "Сводка папки",
    "folder_summary_table_header": "Язык    Размер(KB)    Ключи    Средняя длина    Всего символов",
    "folder_summary_row": "{lang}      {sizeKB}      {totalKeys}    {avgLength}    {totalChars}",
    "language_comparison_title": "Сравнение языков",
    "language_comparison_row": "{lang}: {diff} символов ({percent}%) {status}",
    "summary_stats": "📊 Сводка: {totalLanguages} языков, {totalKeys} ключей - Отчеты сохранены в {reportPath}",
    "detailedKeysDescription": "Показать детальный анализ ключей в консоли",
    "too_many_keys_warning": "⚠️ Слишком много ключей для отображения в консоли - см. подробный отчет для полного анализа",
    "no_translation_files_found": "Файлы переводов не найдены",
    "analysis_completed": "Анализ завершен за {duration}мс",
    "analysis_failed": "Анализ не удался: {errorMessage}",
    "starting_analysis": "🔍  Начало анализа...",
    "found_files": "📂  Найдено {count} файлов",
    "failed_to_parse_language_error": "Не удалось разобрать переводы {language}: {errorMessage}",
    "recommendations": {
      "keys_have_significant_size_variations": "ключи имеют значительные вариации в размерах",
      "consider_reviewing_translations": "Рассмотрите возможность пересмотра переводов {lang} — они на {percentageDifference}% {comparison} базового",
      "long_translations_detected": "{lang} содержит {longKeys} переводов длиной более {threshold} символов — рассмотрите возможность их разбить"
    }
  },
  "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}",
    "errorReadingI18nDirectory": "⚠️  Чтение i18n директории не удалось: {error}",
    "pressEnterToReturnToMenu": "📝 Нажмите Enter, чтобы вернуться в главное меню...",
    "notTranslatedKeysTotal": "⚠️  Непереведённые ключи: {total}",
    "noSourceFilesFound": "⚠️  В директории исходников не найдено файлов.",
    "reviewNotTranslatedKeys": "💡 Проверьте непереведённые ключи",
    "analysisCompletedSuccessfully": "🎉 Анализ успешно завершён!",
    "detectedSourceDirectory": "Обнаружена директория исходников: {sourceDir}",
    "detectedI18nDirectory": "Обнаружена директория I18n: {i18nDir}",
    "fileInfo": "   📄 {namespace}: {keys} ключей",
    "failedToAnalyzeUsage": "❌ Не удалось проанализировать использование: {error}",
    "failedToAnalyzeFile": "❌ Не удалось проанализировать файл: {error}",
    "failedToExtractKeys": "Не удалось извлечь ключи",
    "analysisFailedError": "❌  Анализ не удался: {error}",
    "analyzerInitialized": "Анализатор инициализирован",
    "analyzerInitFailed": "Не удалось инициализировать анализатор: {error}",
    "argsParsed": "Аргументы разобраны",
    "processedFiles": "Обработано {processedFiles} из {totalFiles} файлов.",
    "argsParseFailed": "Не удалось разобрать аргументы: {error}",
    "translationDiscoveryError": "Ошибка обнаружения переводов: {error}",
    "fileTraversalError": "⚠️  Ошибка обхода файлов: {error}",
    "sourceEqualsI18nWarn": "⚠️  Source directory and i18n directory are the same. This may cause issues with the analysis.",
    "i18nEqualsSourceWarn": "⚠️  I18n directory and source directory are the same. This may cause issues with the analysis.",
    "usageAnalysisFailed": "⚠️  Анализ использования не удался: {error}",
    "translationFileParseError": "⚠️  Ошибка парсинга файла перевода: {error}",
    "translationKeysLoadError": "⚠️  Ошибка загрузки ключей перевода: {error}",
    "languageCompletenessStats": "🌍 {language}: {translated}/{total} ({completeness}% переведено)",
    "missingKeysCount": "⚠️  Отсутствующих ключей: {count}",
    "analyzingTranslationCompleteness": "⚠️  Анализ полноты перевода...",
    "unusedKeysCount": "Неиспользуемых ключей: {count}",
    "usedKeysCount": "Используемых ключей: {count}",
    "availableKeysCount": "Доступных ключей: {count}",
    "analysisResults": "Результаты анализа:",
    "i18nDirectoryNotFound": "⚠️  Директория I18n не найдена: {dir}",
    "sourceDirectoryNotFound": "⚠️  Директория исходников не найдена: {dir}",
    "checkUsage": {
      "title": "🔍 АНАЛИЗ ИСПОЛЬЗОВАНИЯ I18NTK",
      "analyzing_source_files": "🔍 Анализ исходных файлов...",
      "source_directory_thissourcedir": "📁 Директория исходников: {sourceDir}",
      "i18n_directory_thisi18ndir": "🌐 Директория I18n: {i18nDir}",
      "found_files_in_source": "📂 Найдено файлов в директории исходников: {numFiles}",
      "no_source_files_found": "⚠️  В директории исходников не найдено файлов.",
      "processedFiles": "Обработано {processedFiles} из {totalFiles} файлов.",
      "failedToProcessFile": "❌ Обработка файла не удалась: {error}",
      "found_thisusedkeyssize_unique_": "🎯 Обнаружено уникальных используемых ключей: {usedKeysSize}",
      "total_key_usages_totalkeysfoun": "📊 Всего использований ключей: {totalKeysFound}",
      "loading_available_translation_": "📋 Загрузка доступных ключей перевода...",
      "found_thisavailablekeyssize_av": "✅ Найдено доступных ключей: {availableKeysSize}",
      "message": "Анализ использования ключей i18n в проекте.",
      "usage_analysis_results": "📊 РЕЗУЛЬТАТЫ АНАЛИЗА ИСПОЛЬЗОВАНИЯ",
      "source_files_scanned_thisfileu": "Просканировано файлов: {fileUsageSize}",
      "available_translation_keys_thi": "Доступных ключей перевода: {availableKeysSize}",
      "used_translation_keys_thisused": "Используемых ключей перевода: {usedKeysSize}",
      "dynamic_keys_detected_dynamick": "Обнаружено динамических ключей: {dynamicKeysLength}",
      "unused_keys_unusedkeyslength": "Неиспользуемых ключей: {unusedKeysLength}",
      "missing_keys_missingkeyslength": "Отсутствующих ключей: {missingKeysLength}",
      "translation_completeness_title": "📊 ПОЛНОТА ПЕРЕВОДА",
      "language_completeness_stats": "  {language}: {translated}/{total} ({completeness}% переведено)",
      "n_sample_unused_keys": "\nПример неиспользуемых ключей:",
      "key": "- {key}",
      "and_unusedkeyslength_5_more": "...и ещё {count}.",
      "n_sample_missing_keys": "\n❌ ПРИМЕРЫ ОТСУТСТВУЮЩИХ КЛЮЧЕЙ (первые 5):",
      "and_missingkeyslength_5_more": "... и еще {count} отсутствующих ключей",
      "n_generating_detailed_report": "\n📊 Генерация подробного отчета...", 
      "report_saved_reportpath": "📄 Отчет сохранен: {reportPath}",
      "n_recommendations": "\n📋 РЕКОМЕНДАЦИИ",
      "consider_removing_unused_trans": "💡 Рассмотрите удаление неиспользуемых переводов для чистоты проекта.",
      "add_missing_translation_keys_t": "➕ Добавьте отсутствующие переводы ключей для поддержки согласованности",
      "review_dynamic_keys_manually_t": "🔍 Проверьте динамические ключи вручную (они могут быть валидными)",
      "all_translation_keys_are_prope": "✅ Все переводы ключей используются правильно!",
      "n_next_steps": "\n📋 ДАЛЬНЕЙШИЕ ШАГИ",
      "2_check_the_detailed_report_fo": "2. Проверьте подробный отчет для конкретных проблем",
      "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",
      "1_review_the_analysis_results": "1. Просмотрите результаты анализа в консоли или в отчёте.",
      "2_run_with_outputreport_for_de": "2. Запустите с --output-report для подробного отчёта.",
      "3_remove_unused_keys_or_add_mi": "3. Удалите неиспользуемые ключи или добавьте недостающие в код.",
      "4_rerun_analysis_to_verify_imp": "4. Повторно запустите анализ для проверки изменений.",
      "noSourceFilesFound": "Нет файлов для анализа.",
      "i18nDirectoryNotFound": "Директория I18n не найдена: {i18nDir}",
      "noTranslationLanguagesFound": "Целевые языки не найдены.",
      "failedToAnalyzeFile": "Не удалось проанализировать файл {filePath}: {error}",
      "failedToAnalyzeLanguage": "Не удалось проанализировать язык {language}: {error}",
      "translationCompletenessAnalysisFailed": "Анализ полноты перевода не удался: {error}",
      "n": ""
    },
    "complete": {
      "configLoadedSuccessfully": "⚙️  Конфигурация успешно загружена",
      "configLoadingFailed": "⚙️  Загрузка конфигурации не удалась",
      "title": "🌍 I18NTK ПОЛНОТА ПЕРЕВОДА",
      "separator": "============================================================",
      "sourceDir": "📁 Исходный каталог: {sourceDir}",
      "sourceLanguage": "🌐 Исходный язык: {sourceLanguage}",
      "dryRunMode": "🧪 Режим тестового запуска - изменения не будут применены",
      "languages": "🌍 Доступные языки: {languages}",
      "addingMissingKeys": "➕ Добавление отсутствующих ключей в файлы перевода...",
      "processing": "🔄 Обработка {language}...",
      "addedKeys": "✅ Добавлено {count} отсутствующих ключей",
      "changeDetails": "📝 {file}: {key}",
      "andMore": "...и ещё {count}",
      "noChangesNeeded": "✅ Для {language} не требуется изменений",
      "summaryTitle": "📊 Сводка по завершению перевода",
      "totalChanges": "📝 Всего изменений: {totalChanges}",
      "languagesProcessed": "🌍 Обработано языков: {languagesProcessed}",
      "missingKeysAdded": "➕ Добавлено отсутствующих ключей: {missingKeysAdded}",
      "nextStepsTitle": "📋 ДАЛЬНЕЙШИЕ ШАГИ",
      "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": "❌ Не удалось разобрать отчёт использования. Используется общие ключи..."
    },
    "noTranslationLanguagesFound": "🌍 Целевых языков не найдено",
    "failedToAnalyzeLanguage": "❌ Не удалось проанализировать язык",
    "translationCompletenessAnalysisFailed": "❌ Анализ полноты перевода не удался"
  },
  "validate": {
    "help_message": "\nI18n Валидатор переводов\n\nИспользование: node i18ntk-validate.js [опции]\n\nОпции:\n  --source-dir <dir>     Директория исходников для сканирования (по умолчанию: ./locales)\n  --i18n-dir <dir>       Директория I18n (по умолчанию: ./locales)\n  --output-report        Сгенерировать подробный отчёт\n  --output-dir <dir>     Директория для отчётов (по умолчанию: ./i18ntk-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": "Целевые языки не настроены; пропуск проверки целевых языков. Добавьте языки через \"i18ntk init --languages=de,fr\".",
    "validatingLanguages": "🌍 Проверка языков: {langs}",
    "validatingLanguage": "🔍 Проверка языка: {lang}",
    "filesCount": "📄 Файлов: {count}",
    "keysCount": "🔑 Ключей: {count}",
    "missingFilesCount": "📁 Отсутствующих файлов: {count}",
    "syntaxErrorsCount": "❌ Синтаксических ошибок: {count}",
    "translationPercentage": "🎯 Перевод: {percentage}% ({translated}/{total} ключей)",
    "validationSummary": "📊 СВОДКА ВАЛИДАЦИИ",
    "validation_failed": "❌ Валидация не пройдена: {error}",
    "totalErrors": "❌ Всего ошибок: {count}",
    "totalWarnings": "⚠️  Всего предупреждений: {count}",
    "errorsSection": "❌ ОШИБКИ",
    "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": "####"
  },
  "debug": {
    "title": "🔧 Инструменты отладки",
    "separator": "============================================================",
    "mainDebuggerSystemDiagnostics": "1. Системная диагностика",
    "_consoleTranslationsCheck": "// 2. Проверка переводов в консоли",
    "_exportMissingKeys": "// 3. Экспорт отсутствующих ключей перевода",
    "_replaceHardcodedConsole": "// 4. Заменить жёстко прописанные строки в консоли",
    "_consoleKeyChecker": "// 5. Проверка ключей консоли",
    "debugLogs": "2. Логи отладки",
    "backToMainMenu": "0. Вернуться в главное меню",
    "selectOption": "Выберите инструмент отладки: ",
    "runningDebugTool": "Запуск {displayName}...",
    "debugToolNotFound": "❌ Инструмент отладки не найден: {toolName}",
    "errorRunningDebugTool": "❌ Ошибка при запуске {displayName}: {error}",
    "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": "📊 СПРАВКА ПО УПРАВЛЕНИЮ I18NTK\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     - Отладка проблем перевода",
    "scannerCommand": "  scanner   - 🔍 Сканирование проблем i18n",
    "menu": {
      "pressEnterToContinue": "Нажмите Enter, чтобы продолжить...",
      "title": "\n🌐 МЕНЮ УПРАВЛЕНИЯ I18NTK\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 — Инициализация проекта",
    "initializationCancelled": "🚫 Инициализация отменена пользователем.",
    "sourceDirectoryLabel": "📁 Директория исходников: {dir}",
    "createdSourceLanguageDirectory": "✅ Создано директория исходников: {dir}",
    "requiredTitle": "Требуется инициализация",
    "requiredBody": "Этот проект должен быть инициализирован перед запуском этой команды.",
    "promptRunNow": "Хотите выполнить инициализацию сейчас? (y/N): ",
    "sourceLanguageLabel": "🌍 Исходный язык: {language}",
    "detectedI18nFrameworks": "🔍 Обнаружены фреймворки i18n: {frameworks}",
    "existingDirectoriesFound": "📁 Найдены существующие директории переводов:",
    "useExistingDirectoryPrompt": "Вы хотите использовать существующую директорию? (y/n)",
    "selectDirectoryPrompt": "Выберите директорию, введите номер (или выберите 'Создать новую директорию'):",
    "enterNewDirectoryName": "Введите имя новой директории:",
    "createdNewDirectory": "✅ Создана новая директория: {dir}",
    "pinMustBe4Digits": "🔐 PIN должен содержать 4 цифры.",
    "directoryAlreadyExists": "⚠️ Директория уже существует: {dir}",
    "invalidDirectoryName": "❌ Неверное имя директории: {dir}",
    "usingExistingDirectory": "Использует существующую директорию: {dir}",
    "adminPinSetupOptional": "🔐 Настройка PIN администратора необязательна (рекомендуется для безопасности)",
    "adminPinSeparator": "------------------------------",
    "adminPinDescription1": "PIN администратора: 4-значное число для безопасного доступа",
    "adminPinDescription2": "Оставьте пустым, чтобы пропустить настройку PIN",
    "adminPinDescription3": "PIN будет требоваться для всех последующих операций",
    "adminPinDescription4": "Настройка PIN завершена",
    "adminPinSetupPrompt": "Введите PIN администратора (4 цифры) или оставьте пустым, чтобы пропустить:",
    "skippingAdminPinSetup": "Пропуск настройки PIN администратора...",
    "settingUpAdminPin": "🔐 Настройка PIN администратора...",
    "enterAdminPin": "Введите PIN администратора:",
    "confirmAdminPin": "Подтвердите PIN администратора:",
    "pinMismatch": "PINs не совпадают. Пожалуйста, попробуйте снова.",
    "adminPinSetupSuccess": "🔐 Настройка PIN администратора завершена успешно!",
    "adminPinSetupFailure": "🔐 Настройка PIN администратора завершена с ошибкой. Пожалуйста, попробуйте снова.",
    "adminProtectionEnabled": "🔐 Защита администратора включена. Все операции требуют ввода PIN.",
    "adminProtectionDisabled": "🔐 Защита администратора выключена. Все операции теперь доступны без PIN.",
    "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}",
    "setup": {
      "title": "Настройка",
      "question": "Вопрос настройки",
      "opt_single": "Одиночный файл",
      "opt_modular": "Модульный",
      "opt_existing": "Существующий",
      "choice_prompt": "Выберите опцию:",
      "opt_confirm": "Подтвердить",
      "opt_cancel": "Отменить",
      "apply_all_prompt": "Применить эту структуру ко всем языкам? (y/Н): ",
      "per_language_intro": "Вы выбрали настройку языков по отдельности. Доступные языки:",
      "available_languages": "Доступные языки: {languages}",
      "include_prompt": "Введите коды языков через запятую (например, 'de,fr,es'): "
    },
    "warnings": {
      "noPackageJson": "Не найден package.json. Невозможно определить фреймворк автоматически."
    },
    "errorsPackageJsonRead": "Ошибка чтения package.json: {error}",
    "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": {
      "errorExecutingCommand": "Ошибка при выполнении команды: {error}",
      "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": "\n🌐 МЕНЮ УПРАВЛЕНИЯ I18NTK\n",
    "separator": "============================================================",
    "options": {
      "init": "🚀 Инициализировать новые языки",
      "analyze": "🔍 Анализ переводов",
      "validate": "✅ Проверить переводы",
      "usage": "📊 Проверить использование ключей",
      "complete": "🎯 Завершить переводы (100% покрытия)",
      "sizing": "📏 Анализ размеров",
      "fix": "🛠️  Исправить переводы-заглушки",
      "workflow": "🔄 Запустить полный рабочий процесс",
      "status": "📋 Показать статус проекта",
      "delete": "🗑️ Удалить все отчёты",
      "language": "🌍 Сменить язык интерфейса",
      "settings": "⚙️ Настройки",
      "help": "❓ Справка",
      "debug": "🔧 Инструменты отладки",
      "scanner": "🔍 Сканировать проблемы i18n",
      "exit": "🚪 Выход"
    },
    "update": "📦 Обновить пакет",
    "goodbye": "👋 До свидания!",
    "invalidChoice": "❌ Неверный выбор. Пожалуйста выберите 0-15.",
    "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.10.1",
      "tool_separator": "======================================\n",
      "dry_run_warning": "⚠️ Запуск в режиме DRY RUN — файлы не будут изменены\n",
      "error_during_replacement": "❌ Ошибка во время замены переводов:"
    }
  },
  "config": {
    "dirFallbackWarning": "⚠️ Каталог {dir} не найден. Используется {fallback}.",
    "dirInvalidError": "❌ Недействительный каталог: {dir}"
  },
  "operations": {
    "completed": "✅ Операция успешно завершена!",
    "deleteReportsTitle": "🗑️ Удалить отчёты и логи",
    "scanningForFiles": "🔍 Поиск файлов для удаления...",
    "noFilesFoundToDelete": "✅ Файлы для удаления не найдены.",
    "availableDirectories": "📁 Доступные директории:",
    "allDirectories": "Все директории",
    "andMore": "и ещё {count} директорий",
    "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": "📊 Проверка Использования Ключей Перевода",
      "noUsedKeysHint": "🔍 Найдено переводы, но они не используются в исходном коде. Проверьте --source-dir и translationPatterns."
    },
    "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}",
    "file_too_large": "Безопасность: Файл слишком большой",
    "file_read_error": "Безопасность: Ошибка чтения файла",
    "content_too_large_for_file": "Безопасность: Содержимое слишком велико для файла",
    "file_write_error": "Безопасность: Ошибка записи файла",
    "json_string_too_large": "Безопасность: JSON-строка слишком длинная",
    "security_alert": "Безопасность: Уведомление"
  },
  "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": "Текущая директория проекта",
    "startingSettings": "Начальные настройки:",
    "pin": "PIN:",
    "reportBug": {
      "title": "Сообщить об ошибке",
      "description": "Сообщите о любых проблемах или ошибках, которые вы обнаружили",
      "guidance": "Чтобы сообщить об ошибке, выполните следующие шаги:",
      "checkLogs": "1. Проверьте последние журналы отладки на наличие ошибок",
      "documentIssue": "2. Задокументируйте проблему с шагами воспроизведения",
      "contactSupport": "3. Свяжитесь со службой поддержки или используйте соответствующий канал отчетности",
      "completed": "✅ Процесс отчета об ошибке завершен",
      "instructions": "Следуйте инструкциям выше, чтобы сообщить об ошибке."
    },
    "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": "Выберите опцию: ",
      "goodbyeMessage": "Спасибо за использование менеджера настроек i18ntk!",
      "selectSettingPrompt": "Выберите настройку для редактирования (или 'b' для возврата): ",
      "enterNewValue": "Введите новое значение: ",
      "updatedSuccessfully": "{setting} успешно обновлено!",
      "scriptDirectorySettings": "Настройки директорий скриптов",
      "scriptDirectoryDesc": "Укажите индивидуальные директории для каждого скрипта",
      "scriptDirectorySettingsDesc": "Можно указать отдельные директории для каждого скрипта. Если не указано, будут использованы глобальные настройки.",
      "currentDirectory": "Текущая директория",
      "securitySettings": "Настройки безопасности",
      "securitySettingsDesc": "Admin PIN и другие параметры безопасности",
      "backupSettings": "Настройки резервного копирования",
      "backupSettingsDesc": "Резервное копирование и восстановление конфигурации"
    },
    "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": {
      "title": "Импорт/Экспорт",
      "export": "Экспорт",
      "import": "Импорт",
      "backup": "Резервное копирование",
      "enterFilename": "Введите имя файла (или нажмите Enter для значения по умолчанию): ",
      "exportSuccess": "Настройки экспортированы в {file}",
      "exportFailed": "Не удалось экспортировать настройки: {error}",
      "importFilename": "Введите имя файла для импорта: ",
      "fileNotFound": "Файл не найден.",
      "invalidFormat": "Неверный формат файла настроек.",
      "confirmImport": "Это заменит все текущие настройки. Продолжить? (y/N): ",
      "importSuccess": "Настройки успешно импортированы.",
      "importFailed": "Не удалось импортировать настройки: {error}",
      "backupSuccess": "Резервная копия создана: {file}",
      "backupFailed": "Не удалось создать резервную копию: {error}"
    },
    "selectOption": "Выберите опцию: ",
    "resetToDefaultsTitle": "Сброс настроек к значениям по умолчанию",
    "resetWarning1": "Это сбросит все настройки к их значениям по умолчанию.",
    "resetWarning2": "Все изменения будут потеряны. Продолжить? (y/N): ",
    "resetConfirm": "Вы уверены, что хотите продолжить? (y/N): ",
    "resetSuccess": "Настройки успешно сброшены до значений по умолчанию.",
    "resetFailed": "Не удалось сбросить настройки: {error}",
    "resetDone": "Настройки успешно сброшены до значений по умолчанию.",
    "resetScriptDirsDone": "Каталоги скриптов успешно сброшены до системных значений по умолчанию.",
    "saveSuccess": "Настройки успешно сохранены.",
    "saveFailed": "Не удалось сохранить настройки.",
    "saveError": "Ошибка сохранения настроек: {error}",
    "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": "Настройки UI",
      "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": {
      "backup.enabled": {
        "label": "Включить резервное копирование",
        "description": "Включить автоматическое резервное копирование настроек",
        "help": "Включить/отключить функцию резервного копирования"
      },
      "backup.singleFileMode": {
        "label": "Режим единственного файла",
        "description": "Использовать единый файл для резервных копий",
        "help": "Режим резервного копирования в единый файл"
      },
      "backup.singleBackupFile": {
        "label": "Путь к файлу резервной копии",
        "description": "Путь к файлу резервной копии",
        "help": "Путь к файлу резервной копии"
      },
      "backup.retentionDays": {
        "label": "Срок хранения резервных копий",
        "description": "Число дней, за которое нужно хранить резервные копии",
        "help": "Число дней, за которое нужно хранить резервные копии"
      },
      "backup.maxBackups": {
        "label": "Максимальное число резервных копий",
        "description": "Максимальное число резервных копий",
        "help": "Максимальное число резервных копий"
      },
      "backup.confirm": {
        "label": "Подтверждение резервного копирования",
        "description": "Требуется подтверждение для операций резервного копирования",
        "help": "Подтвердите операцию резервного копирования"
      },
      "i18nDir": {
        "label": "Директория переводов",
        "description": "Директория, содержащая файлы переводов",
        "current": "Текущая: {value}",
        "help": "Путь к директории с файлами переводов"
      },
      "projectRoot": {
        "label": "Корневая директория проекта",
        "description": "Корневая директория проекта",
        "current": "Текущая: {value}",
        "help": "Путь к корневой директории проекта"
      },
      "checkUsage": {
        "usage_analysis_failed": "Анализ использования завершился с ошибкой",
        "usage_analysis_success": "Анализ использования был успешным",
        "usage_analysis_complete": "Анализ использования завершен",
        "usage_analysis_in_progress": "Анализ использования в процессе",
        "usage_analysis_started": "Анализ использования начат",
        "usage_analysis_skipped": "Анализ использования пропущен"
      },
      "language": {
        "label": "Язык интерфейса",
        "description": "Язык интерфейса",
        "current": "Текущее: {value}",
        "help": "Выберите предпочитаемый язык интерфейса"
      },
      "scriptDirectories": {
        "analyzeLabel": "Анализ скриптов",
        "analyzeHelp": "Анализ скриптов",
        "completeLabel": "Завершить настройку скриптов",
        "initLabel": "Инициализация скриптов",
        "manageLabel": "Управление скриптами",
        "sizingLabel": "Оценка скриптов",
        "summaryLabel": "Сводка скриптов",
        "usageLabel": "Использование скриптов",
        "validateLabel": "Валидация скриптов"
      },
      "theme": {
        "label": "Тема интерфейса",
        "description": "Тема интерфейса",
        "current": "Текущее: {value}",
        "help": "Выберите предпочитаемую тему интерфейса"
      },
      "dateFormat": {
        "label": "Формат даты",
        "description": "Формат даты",
        "current": "Текущее: {value}",
        "help": "Выберите формат отображения дат в отчетах"
      },
      "notifications": {
        "enabled": {
          "label": "Включить уведомления",
          "description": "Показывать уведомления на рабочем столе",
          "current": "Текущее: {value}",
          "help": "Включить/отключить показ уведомлений на рабочем столе"
        }
      },
      "sourceDir": {
        "label": "Директория источника",
        "description": "Директория, содержащая файлы переводов",
        "current": "Текущая: {value}",
        "help": "Путь к директории с исходными файлами переводов"
      },
      "sourceLanguage": {
        "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": "Включить строгий режим валидации для файлов переводов"
      },
      "enableAuditLog": {
        "label": "Включить аудит-лог",
        "description": "Включить аудит-лог",
        "current": "Текущее: {value}",
        "help": "Включить аудит-лог для отслеживания всех изменений переводов"
      },
      "backupBeforeChanges": {
        "label": "Автоматическое резервное копирование",
        "description": "Автоматическое резервное копирование",
        "current": "Текущее: {value}",
        "help": "Автоматическое резервное копирование перед внесением изменений"
      },
      "advanced_maxConcurrentFiles": {
        "label": "Максимальное число файлов",
        "description": "Максимальное число файлов",
        "current": "Текущее: {value}",
        "help": "Максимальное число файлов, обработанных одновременно"
      },
      "advanced_strictMode": {
        "label": "Строгий режим валидации",
        "description": "Включить строгий режим валидации",
        "current": "Текущее: {value}",
        "help": "Включить строгий режим валидации для файлов переводов"
      },
      "adminPinEnabled": {
        "label": "Включить защиту PIN",
        "description": "Включить защиту PIN",
        "current": "Текущее: {value}",
        "help": "Включить защиту PIN для изменения настроек безопасности и продвинутых функций"
      },
      "sessionTimeout": {
        "label": "Время сессии",
        "description": "Время сессии",
        "current": "Текущее: {value} минут",
        "help": "Время, в течение которого сессия администратора остается активной, прежде чем требуется повторная аутентификация"
      },
      "maxFailedAttempts": {
        "label": "Максимальное число попыток",
        "description": "Максимальное число попыток",
        "current": "Текущее: {value} попыток",
        "help": "Число попыток, допустимое до временной блокировки"
      },
      "lockoutDuration": {
        "label": "Время блокировки",
        "description": "Время блокировки",
        "current": "Текущее: {value} минут",
        "help": "Время, в течение которого система остается заблокированной после достижения максимального числа попыток"
      },
      "scriptDirectories_analyze": {
        "label": "Директория анализа",
        "description": "Директория анализа",
        "current": "Текущая: {value}",
        "help": "Укажите пользовательскую исходную директорию для скрипта анализа. Оставьте пустым, чтобы использовать глобальную настройку."
      },
      "scriptDirectories_complete": {
        "label": "Директория завершения",
        "description": "Директория завершения",
        "current": "Текущая: {value}",
        "help": "Укажите пользовательскую исходную директорию для скрипта завершения. Оставьте пустым, чтобы использовать глобальную настройку."
      },
      "scriptDirectories_init": {
        "label": "Директория инициализации",
        "description": "Директория инициализации",
        "current": "Текущая: {value}",
        "help": "Укажите пользовательскую исходную директорию для скрипта инициализации. Оставьте пустым, чтобы использовать глобальную настройку."
      },
      "scriptDirectories_manage": {
        "label": "Директория управления",
        "description": "Директория управления",
        "current": "Текущая: {value}",
        "help": "Укажите пользовательскую исходную директорию для скрипта управления. Оставьте пустым, чтобы использовать глобальную настройку."
      },
      "scriptDirectories_sizing": {
        "label": "Директория оценки",
        "description": "Директория оценки",
        "current": "Текущая: {value}",
        "help": "Укажите пользовательскую исходную директорию для скрипта оценки. Оставьте пустым, чтобы использовать глобальную настройку."
      },
      "scriptDirectories_summary": {
        "label": "Директория сводки",
        "description": "Директория сводки",
        "current": "Текущая: {value}",
        "help": "Укажите пользовательскую исходную директорию для скрипта сводки. Оставьте пустым, чтобы использовать глобальную настройку."
      },
      "scriptDirectories_usage": {
        "label": "Директория использования",
        "description": "Директория использования",
        "current": "Текущая: {value}",
        "help": "Укажите пользовательскую исходную директорию для скрипта использования. Оставьте пустым, чтобы использовать глобальную настройку."
      },
      "scriptDirectories_validate": {
        "label": "Директория валидации",
        "description": "Директория валидации",
        "current": "Текущая: {value}",
        "help": "Укажите пользовательскую исходную директорию для скрипта валидации. Оставьте пустым, чтобы использовать глобальную настройку."
      },
      "security_adminPinEnabled": {
        "label": "Включить защиту PIN",
        "description": "Включить защиту PIN",
        "current": "Текущее: {value}",
        "help": "Включить защиту PIN для изменения настроек безопасности и продвинутых функций"
      },
      "fields": {
        "adminPinEnabled": {
          "label": "Включить защиту PIN",
          "description": "Включить защиту PIN",
          "help": "Включить защиту PIN для изменения настроек безопасности и продвинутых функций"
        }
      },
      "security_pinProtection_enabled": {
        "label": "Включить защиту PIN",
        "description": "Включить защиту PIN",
        "current": "Текущее: {value}",
        "help": "Включить защиту PIN для изменения настроек безопасности и продвинутых функций"
      },
      "pinProtection_configure": {
        "label": "Настроить защищенные скрипты PIN",
        "description": "Настроить защищенные скрипты PIN",
        "help": "Выберите отдельные скрипты, требующие аутентификации PIN"
      },
      "pinProtection_debugMenu": {
        "label": "Отладка меню",
        "description": "Отладка меню",
        "current": "Текущее: {value}",
        "help": "Включить защиту PIN для доступа к инструментам отладки"
      },
      "pinProtection_deleteReports": {
        "label": "Удалить отчеты",
        "description": "Удалить отчеты",
        "current": "Текущее: {value}",
        "help": "Включить защиту PIN для удаления отчетов"
      },
      "pinProtection_summaryReports": {
        "label": "Сводка отчетов",
        "description": "Сводка отчетов",
        "current": "Текущее: {value}",
        "help": "Включить защиту PIN для генерации сводки отчетов"
      },
      "pinProtection_settingsMenu": {
        "label": "Настройки меню",
        "description": "Настройки меню",
        "current": "Текущее: {value}",
        "help": "Включить защиту PIN для доступа к настройкам"
      },
      "pinProtection_initScript": {
        "label": "Инициализация скрипта",
        "description": "Инициализация скрипта",
        "current": "Текущее: {value}",
        "help": "Включить защиту PIN для запуска скрипта инициализации"
      },
      "pinProtection_resetDefaults": {
        "label": "Сбросить защиту PIN",
        "description": "Сбросить защиту PIN",
        "help": "Сбросить все настройки защиты PIN к их умолчанию"
      },
      "removeUiLanguages": {
        "label": "Удалить языки интерфейса",
        "description": "Удалить языки интерфейса",
        "help": "Удалить языки интерфейса, которые не установлены"
      },
      "${helperKey}": {
        "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): ",
    "backup": {
      "title": "Настройки резервного копирования",
      "description": "Сохранить текущие настройки в файл",
      "confirm": "Вы уверены, что хотите создать резервную копию текущих настроек? (д/Н): ",
      "success": "✅ Настройки успешно сохранены в {backupFile}",
      "failed": "❌ Не удалось создать резервную копию настроек: {error}",
      "enabled": "Включить резервное копирование",
      "enabledHelp": "Включить/отключить функцию резервного копирования",
      "singleFileMode": "Режим одного файла",
      "singleFileModeHelp": "Сохранять настройки в один файл",
      "singleBackupFile": "Единый файл резервной копии",
      "singleBackupFileHelp": "Путь к единому файлу резервной копии",
      "retentionDays": "Срок хранения",
      "retentionDaysHelp": "Количество дней, за которое нужно хранить старые файлы резервной копии",
      "maxBackups": "Максимальное количество резервных копий",
      "maxBackupsHelp": "Максимальное количество файлов резервной копии, которые нужно сохранить",
      "confirmHelp": "Подтвердить операцию резервного копирования",
      "confirmYes": "Да",
      "confirmNo": "Нет"
    }
  },
  "summary": {
    "separator": "============================================================",
    "configurationTitle": "🔧 Конфигурация:",
    "sourceLanguage": "   Исходный язык: {sourceLanguage}",
    "supportedExtensions": "   Поддерживаемые расширения: {extensions}",
    "excludedFiles": "   Исключённые файлы: {files}",
    "reportContent": "\n{report}",
    "fatalError": "❌ Фатальная ошибка: {error}",
    "helpTitle": "📊 ГЕНЕРАТОР ОТЧЁТА I18NTK 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📊 ОТЧЁТ I18NTK 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}",
    "i18nSummaryReportGenerator": "Генератор сводного отчёта I18NTK",
    "analysisComplete": "Анализ завершен",
    "analyzedLanguages": "Анализировано языков: {count}",
    "processedFiles": "Обработано файлов: {count}",
    "foundTranslationKeys": "Найдено ключей перевода: {count}",
    "foundIssues": "Найдено проблем: {count}",
    "noIssuesConsole": "Нет проблем в консоли",
    "errorDuringAnalysis": "Ошибка при анализе: {error}",
    "usageReportTitle": "Отчёт использования переводов",
    "usageReportGenerated": "Отчёт сгенерирован: {timestamp}",
    "usageReportSourceDir": "Исходная директория: {dir}",
    "usageReportI18nDir": "Директория переводов: {dir}",
    "usageReportSummary": "Сводка",
    "usageReportSourceFilesScanned": "Сканировано исходных файлов: {count}",
    "usageReportTranslationFilesFound": "Найдено файлов перевода: {count}",
    "usageReportAvailableKeys": "Доступных ключей: {count}",
    "usageReportUsedKeys": "Использованных ключей: {count}",
    "usageReportDynamicKeys": "Динамических ключей: {count}",
    "usageReportUnusedKeys": "Неиспользованных ключей: {count}",
    "usageReportMissingKeys": "Отсутствующих ключей: {count}",
    "usageReportNotTranslatedKeys": "Непереведенных ключей: {count}",
    "usageReportTranslationCompleteness": "Степень перевода: {completeness}%",
    "usageReportLanguageCompleteness": "Степень перевода языка: {completeness}%",
    "usageReportNotTranslatedInLanguage": "Непереведенных ключей в языке: {count}",
    "usageReportTranslationFilesDiscovered": "Найдено файлов перевода: {count}",
    "usageReportFileInfo": "Информация о файле: {file}",
    "usageReportUnusedTranslationKeys": "Неиспользованных ключей перевода: {count}",
    "usageReportUnusedKeysDescription": "Ключи, которые не используются в коде, но есть в переводе.",
    "usageReportUnusedKey": "Неиспользованный ключ: {key}",
    "usageReportMoreUnusedKeys": "Еще {count} неиспользованных ключей",
    "usageReportMissingTranslationKeys": "Отсутствующих ключей перевода: {count}",
    "usageReportMissingKeysDescription": "Ключи, которые есть в переводе, но не используются в коде.",
    "usageReportMissingKey": "Отсутствующий ключ: {key}",
    "usageReportUsedIn": "Используется в: {file}",
    "usageReportMoreFiles": "Еще {count} файлов",
    "usageReportDynamicTranslationKeys": "Динамических ключей перевода: {count}",
    "usageReportDynamicKeysDescription": "Ключи, которые могут быть переведены динамически.",
    "usageReportDynamicKey": "Динамический ключ: {key}",
    "usageReportFileUsageBreakdown": "Разбивка использования по файлам",
    "usageReportFileUsage": "Использование в файле: {file}",
    "status": {
      "generating": "Генерация отчёта",
      "completed": "Отчёт сгенерирован"
    },
    "help": {
      "usage": "Использование: i18ntk-usage [опции]",
      "interactiveMode": "Взаимодействие с пользователем",
      "initProject": "Инициализация проекта",
      "analyzeTranslations": "Анализ переводов",
      "validateTranslations": "Валидация переводов",
      "checkUsage": "Проверка использования",
      "showHelp": "Показать помощь",
      "availableCommands": "Доступные команды",
      "initCommand": "Инициализация команды",
      "analyzeCommand": "Анализ команды",
      "validateCommand": "Валидация команды",
      "usageCommand": "Использование команды",
      "sizingCommand": "Оценка команды",
      "completeCommand": "Завершение команды",
      "summaryCommand": "Сводка команды",
      "debugCommand": "Отладка команды",
      "scannerCommand": "  scanner   - 🔍 Сканирование проблем i18n"
    },
    "test_complete_system": {
      "starting_test": "Начало теста",
      "separator": "------------------------------",
      "testing_ui_translations": "Тестирование переводов интерфейса",
      "testing_settings_manager": "Тестирование менеджера настроек",
      "testing_main_scripts": "Тестирование основных скриптов",
      "checking_translation_consistency": "Проверка согласованности переводов",
      "non_critical_missing_keys": "Ненавязчивые отсутствующие ключи",
      "extra_keys": "Дополнительные ключи",
      "generating_report": "Генерация отчёта",
      "final_test_report_title": "Итоговый отчёт теста",
      "passed": "Успешно",
      "failed": "Неудачно",
      "warnings": "Предупреждения",
      "missing_translations_title": "Отсутствующие переводы",
      "missing_translation_key": "Отсутствующий ключ перевода: {key}",
      "missing_translations_more": "Еще {count} отсутствующих ключей",
      "errors_title": "Ошибки",
      "error_message": "Ошибка: {message}",
      "overall_status": "Общий статус",
      "success_message": "Тест пройден",
      "failure_message": "Тест не пройден",
      "failure_error_message": "Тест не пройден: {message}",
      "warning_message": "Предупреждение: {message}",
      "test_runner_failed": "Тестовый раннер завершился с ошибкой",
      "recommendations": {
        "add_missing_translation_keys": "Добавьте отсутствующие ключи перевода",
        "fix_failing_scripts": "Исправьте скрипты, которые завершились с ошибкой",
        "review_warning_messages": "Проверьте предупреждения",
        "system_ready_for_deployment": "Система готова к развертыванию"
      },
      "hardcodedTexts": {
        "addMissingTranslationKeys": "Добавьте отсутствующие ключи перевода",
        "fixFailingScripts": "Исправьте скрипты, которые завершились с ошибкой",
        "reviewWarningMessages": "Проверьте предупреждения",
        "systemReadyForDeployment": "Система готова к развертыванию"
      }
    },
    "testConsoleI18n": {
      "found_target_file": "Найдено целевого файла",
      "scanning_files_for_console_statements": "Сканирование файлов для поиска консольных вызовов",
      "found_javascript_files": "Найдено JavaScript файлов",
      "console_i18n_analysis_results": "Результаты анализа консольных вызовов",
      "total_console_statements": "Общее количество консольных вызовов",
      "translated_statements": "Переведенных вызовов",
      "hardcoded_statements": "Непереведенных вызовов",
      "translation_coverage": "Коэффициент перевода",
      "coverage_by_file": "Коэффициент перевода по файлу",
      "file_coverage_stats": "Статистика перевода по файлу",
      "hardcoded_console_statements": "Непереведенных вызовов в файле",
      "file_header": "Файл",
      "line_statement": "Строка",
      "suggested_key": "Предложенный ключ",
      "suggested_replacement": "Предложенный замена",
      "recommendations": "Рекомендации",
      "recommendation_1": "Добавьте отсутствующие ключи перевода",
      "recommendation_2": "Исправьте скрипты, которые завершились с ошибкой",
      "recommendation_3": "Проверьте предупреждения",
      "recommendation_4": "Система готова к развертыванию",
      "translation_keys_to_add": "Ключи перевода, которые необходимо добавить",
      "add_keys_instruction": "Добавьте отсутствующие ключи перевода",
      "perfect_translation_coverage": "Иdealный коэффициент перевода",
      "all_statements_using_translation": "Все вызовы используют перевод",
      "i18n_console_translation_checker": "Проверка перевода консольных вызовов",
      "script_description_line1": "Этот скрипт проверяет переводы консольных вызовов в вашем проекте.",
      "script_description_line2": "Он выявляет непереведенные вызовы и предлагает рекомендации по их исправлению.",
      "analysis_completed_in_duration": "Анализ завершен за {duration}",
      "report_saved_to_path": "Отчёт сохранён в {path}",
      "found_hardcoded_messages": "Найдено непереведенных сообщений",
      "all_console_messages_use_translation": "Все консольные сообщения используют перевод",
      "consoleTranslationsCheck": "Проверка перевода консольных вызовов"
    },
    "translate_mismatches": {
      "title": "Несоответствия переводов",
      "separator": "------------------------------",
      "processing_file": "Обработка файла",
      "translation_summary_title": "Сводка перевода",
      "total_translations_applied": "Общее количество применённых переводов",
      "run_with_apply_instruction": "Запустите скрипт с опцией --apply, чтобы применить переводы",
      "no_translation_mappings": "Нет сопоставлений перевода",
      "translation_applied": "Применён перевод",
      "saved_translations": "Сохранённые переводы",
      "found_translatable_items": "Найдено переведуемых элементов",
      "no_automatic_translations": "Нет автоматических переводов",
      "error_processing_file": "Ошибка при обработке файла",
      "coverage_report_title": "Отчёт покрытия перевода",
      "coverage_report_separator": "------------------------------",
      "file_header": "Файл",
      "total_keys": "Общее количество ключей",
      "translated_keys": "Переведённых ключей",
      "untranslated_markers": "   Непереведённых маркеров: {untranslated}",
      "contains_english": "Содержит английский",
      "coverage_percentage": "Коэффициент перевода",
      "error_general": "Общая ошибка",
      "use_help": "Используйте --help, чтобы получить справку"
    }
  },
  "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": "⚠️"
    }
  },
  "consoleI18nTester": {
    "found_target_file": "Найден целевой файл",
    "scanning_files_for_console_statements": "Сканирование файлов на наличие операторов console",
    "found_javascript_files": "Найдены JavaScript файлы",
    "console_i18n_analysis_results": "Результаты анализа i18n консоли",
    "total_console_statements": "Всего операторов console",
    "translated_statements": "Переведенные операторы",
    "hardcoded_statements": "Жестко закодированные операторы",
    "translation_coverage": "Покрытие переводом",
    "coverage_by_file": "Покрытие по файлам",
    "file_coverage_stats": "Статистика покрытия файлов",
    "hardcoded_console_statements": "Жестко закодированные операторы console",
    "file_header": "Заголовок файла",
    "line_statement": "Оператор строки",
    "suggested_key": "Предлагаемый ключ",
    "suggested_replacement": "Предлагаемая замена",
    "recommendations": "Рекомендации",
    "recommendation_1": "Рекомендация 1",
    "recommendation_2": "Рекомендация 2",
    "recommendation_3": "Рекомендация 3",
    "recommendation_4": "Рекомендация 4",
    "translation_keys_to_add": "Ключи перевода для добавления",
    "add_keys_instruction": "Инструкция по добавлению ключей",
    "perfect_translation_coverage": "Идеальное покрытие переводом",
    "all_statements_using_translation": "Все операторы используют перевод",
    "i18n_console_translation_checker": "Проверка переводов консоли i18n",
    "script_description_line1": "Описание скрипта строка 1",
    "script_description_line2": "Описание скрипта строка 2",
    "analysis_completed_in_duration": "Анализ завершен за время",
    "report_saved_to_path": "Отчет сохранен по пути",
    "found_hardcoded_messages": "Найдены жестко закодированные сообщения",
    "all_console_messages_use_translation": "Все сообщения консоли используют перевод"
  },
  "\\nSelect directory to clean (0-${availableDirs": {
    "length + 1}): ": " "
  },
  "exportTranslations": {
    "createdDirectory": "Создана директория",
    "foundFiles": "Найдены файлы",
    "createdTemplate": "Создан шаблон",
    "skippedExisting": "Пропущены существующие",
    "title": "Заголовок",
    "creatingTemplates": "Создание шаблонов",
    "summary": "Сводка",
    "summaryLanguages": "Сводка по языкам",
    "summaryFilesPerLanguage": "Файлов на язык",
    "summaryTotalFiles": "Всего файлов",
    "success": "Успешно",
    "location": "Расположение",
    "nextSteps": "Следующие шаги"
  },
  ")) {\n          console": {
    "log(": "Лог("
  },
  "dashboard": {
    "title": "Заголовок",
    "overview": "Обзор"
  },
  "auth": {
    "title": "Заголовок",
    "email": "Электронная почта",
    "password": "Пароль",
    "signIn": "Войти",
    "forgotPassword": "Забыли пароль",
    "signUp": "Зарегистрироваться"
  },
  "scanner": {
    "title": "🕵️ i18n Сканнер Текста",
    "description": "Сканирует исходные файлы на наличие жестко закодированного английского текста",
    "usage": "Использование: i18ntk-scanner [опции]",
    "options": {
      "sourceDir": "Директория для сканирования",
      "outputDir": "Директория для отчетов",
      "patterns": "Пользовательские паттерны регулярных выражений",
      "framework": "Фреймворк (react, vue, angular, vanilla)",
      "extensions": "Расширения файлов для сканирования",
      "exclude": "Паттерны для исключения",
      "minLength": "Минимальная длина текста для сканирования",
      "maxLength": "Максимальная длина текста для сканирования"
    },
    "status": {
      "scanning": "🔍 Сканирование файлов...",
      "analyzing": "📊 Анализ найденного текста...",
      "generating": "📄 Генерация отчета...",
      "complete": "✅ Сканирование завершено",
      "found": "🎯 Найдено {count} элементов для перевода"
    },
    "results": {
      "title": "📊 Результаты Сканирования",
      "summary": "Сводка",
      "filesScanned": "Просканировано файлов",
      "textItemsFound": "Найдено текстовых элементов",
      "uniqueTexts": "Уникальные тексты",
      "filesWithText": "Файлы с текстом",
      "exportLocation": "Расположение экспорта"
    },
    "prompts": {
      "selectFramework": "Выберите фреймворк:",
      "enterSourceDir": "Введите директорию исходников",
      "enterOutputDir": "Введите директорию вывода",
      "confirmScan": "Начать сканирование?",
      "saveReport": "Сохранить отчет?"
    },
    "errors": {
      "invalidDirectory": "Неверная директория",
      "noFilesFound": "Файлы для сканирования не найдены",
      "scanFailed": "Ошибка сканирования",
      "exportFailed": "Ошибка экспорта отчета"
    },
    "help": {
      "examples": "Примеры использования:",
      "example1": "i18ntk-scanner --source-dir ./src --framework react",
      "example2": "i18ntk-scanner --patterns 'console\\.log\\s*\\([^)]*'",
      "example3": "i18ntk-scanner --extensions js,ts,tsx --min-length 3"
    },
    "help_options": {
      "source_dir": "Директория для сканирования",
      "output_dir": "Файл для вывода результатов",
      "framework": "Целевой фреймворк (react, vue, angular, vanilla)",
      "patterns": "Пользовательские паттерны регулярных выражений (через запятую)",
      "exclude": "Директории для исключения (через запятую)",
      "output_report": "Файл для вывода отчета",
      "min_length": "Минимальная длина текста для включения",
      "max_length": "Максимальная длина текста для включения",
      "include_tests": "Включать тестовые файлы в сканирование"
    }
  }
}