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