i18ntk
Version:
i18ntk (i18n Toolkit) - A comprehensive, enterprise-grade internationalization (i18n) management toolkit for JavaScript/TypeScript projects with advanced analysis, validation, and automation features
794 lines • 131 kB
JSON
{
"meta": {
"version": "1.5.3",
"consolidated": "2025-08-06T14:36:37.512Z",
"sourceFiles": 256
},
"common": {
"welcome": "Добро пожаловать",
"hello": "Привет",
"goodbye": "Пока",
"yes": "Да",
"no": "Нет",
"save": "Сохранить",
"cancel": "Отмена",
"delete": "Удалить",
"edit": "Редактировать",
"loading": "Загрузка...",
"offlineTitle": "В offline",
"offlineMessage": "Вы находитесь в offline",
"tryReconnect": "Попытка переподключения",
"logout": "Выход",
"login": "Войти",
"amount": "Сумма",
"success": "Успех",
"error": "Ошибка",
"warning": "Предупреждение",
"info": "Информация:",
"debug": "Отладка",
"progress": "Прогресс:",
"remaining": "Осталось:",
"total": "Всего:",
"completed": "7. Успешно завершено!",
"missing": "Отсутствует",
"partial": "Частично",
"sameAsSource": "Такие же как источник:",
"formatMismatch": "Несоответствие формата:",
"typeMismatch": "Несоответствие типа:",
"structureMismatch": "Несоответствие структуры:",
"invalidOption": "Неверная опция",
"separator": "==================================================",
"initializationFailed": "❌ Ошибка инициализации: {error}",
"stackTrace": "Трассировка стека: {stack}",
"pressEnterToContinue": "Нажмите Enter для продолжения...",
"pressEnterToReturn": "Нажмите Enter для возврата в главное меню...",
"stepCompleted": "Шаг '{stepName}' завершен.",
"stepFailed": "Шаг '{stepName}' не удался.",
"runningStep": "Выполнение шага: {stepName}",
"command": "Команда: {command}",
"startingWorkflow": "Запуск рабочего процесса...",
"workflowCompleted": "Рабочий процесс завершен.",
"checkReports": "Проверьте отчеты для получения подробностей.",
"errorExecutingCommand": "Ошибка выполнения команды: {error}",
"genericError": "❌ Ошибка: {{error}}",
"errorGeneratingStatusSummary": "Ошибка генерации сводки статуса: {error}",
"errorRunningDebugTool": "Ошибка запуска инструмента отладки '{displayName}': {error}",
"errorReadingDebugLogs": "Ошибка чтения журналов отладки: {error}",
"errorAnalyzingLogFile": "Ошибка анализа файла журнала: {error}",
"errorAnalyzingTranslationKeys": "Ошибка анализа ключей перевода: {error}",
"errorAnalyzingTranslationCompleteness": "Ошибка анализа полноты перевода: {error}",
"errorAnalyzingTranslationFormat": "Ошибка анализа формата перевода: {error}",
"errorAnalyzingTranslationType": "Ошибка анализа типа перевода: {error}",
"errorAnalyzingTranslationStructure": "Ошибка анализа структуры перевода: {error}",
"errorAnalyzingTranslationFormatMismatch": "Ошибка анализа несоответствия формата перевода: {error}",
"errorAnalyzingTranslationTypeMismatch": "Ошибка анализа несоответствия типа перевода: {error}",
"errorAnalyzingTranslationStructureMismatch": "Ошибка анализа несоответствия структуры перевода: {error}",
"errorAnalyzingTranslationSameAsSource": "Ошибка анализа перевода совпадающего с источником: {error}",
"title": "Статус",
"nextStep1": "1. Проверить анализ использования:",
"nextStep2": "2. Проверить переводы:",
"nextStep3": "3. Проанализировать полноту:",
"nextStep4": "4. Завершить отсутствующие переводы:",
"nextStep5": "5. Сгенерировать сводный отчет:",
"nextStep6": "6. Проверить и завершить переводы:",
"generating": "Генерация сводного отчета...",
"review": "Проверка переводов...",
"finalizing": "Завершение переводов...",
"finalized": "Успешно завершено!",
"errors": "Ошибки:",
"warnings": "Предупреждения:",
"completedKeys": "Завершенные ключи:",
"missingKeys": "Отсутствующие ключи:",
"partialKeys": "Частичные ключи:"
},
"analyze": {
"help_message": "\nI18n Анализатор переводов\n\nИспользование: node i18ntk-analyze.js [опции]\n\nОпции:\n --source-dir <dir> Директория исходников для сканирования (по умолчанию: ./src)\n --i18n-dir <dir> Директория I18n (по умолчанию: ./src/locales)\n --output-report Сгенерировать подробный отчёт\n --output-dir <dir> Директория для отчётов (по умолчанию: ./reports)\n --help Показать справку\n\nПримеры:\n node i18ntk-analyze.js --output-report\n node i18ntk-analyze.js --source-dir=./app --i18n-dir=./locales\n node i18ntk-analyze.js --output-dir=./analysis --output-report\n",
"source_directory": "📁 Директория исходников: {sourceDir}",
"i18n_directory": "🌐 Директория I18n: {i18nDir}",
"loading_translation_files": "📋 Загрузка файлов переводов...",
"sourceDirectoryLabel": "📁 Директория исходников: {{sourceDir}}",
"sourceLanguageLabel": "🌍 Исходный язык: {{sourceLanguage}}",
"strictModeLabel": "⚙️ Режим строгого контроля: {{mode}}\n",
"found_translation_files_count": "✅ Найдено файлов переводов: {count}",
"analyzing_translations": "🔍 Анализ переводов...",
"analysis_completed_successfully": "🎉 Анализ успешно завершён!",
"analysis_results": "📊 РЕЗУЛЬТАТЫ АНАЛИЗА",
"language_analysis_stats": " {language}: {translatedKeys}/{totalKeys} ({percentage}% переведено)",
"sample_missing_keys": "\nПример отсутствующих ключей:",
"missing_key": "- {key}",
"and_more_missing": "...и ещё {count}.",
"sample_unused_keys": "\nПример неиспользуемых ключей:",
"unused_key": "- {key}",
"and_more_unused": "...и ещё {count}.",
"recommendations": "\n📋 РЕКОМЕНДАЦИИ",
"add_missing_translations": "💡 Добавьте недостающие переводы для повышения покрытия.",
"remove_unused_translations": "💡 Удалите неиспользуемые переводы для чистоты проекта.",
"next_steps": "\n📋 ДАЛЬНЕЙШИЕ ШАГИ",
"review_analysis_results": "1. Просмотрите результаты анализа в консоли или в сгенерированном отчёте.",
"run_with_output_report": "2. Запустите с --output-report для подробного отчёта.",
"add_or_remove_translations": "3. Добавьте недостающие переводы или удалите неиспользуемые.",
"rerun_analysis": "4. Повторно запустите анализ для проверки изменений.",
"analysis_summary": "📊 ИТОГ АНАЛИЗА",
"source_files_scanned": "Просканировано файлов исходников: {fileCount}",
"translation_files_checked": "Проверено файлов переводов: {translationFileCount}",
"total_keys": "Всего ключей: {totalKeys}",
"translated_keys": "Переведено ключей: {translatedKeys}",
"missing_keys": "Отсутствующих ключей: {missingKeys}",
"unused_keys": "Неиспользуемых ключей: {unusedKeys}",
"translation_coverage": "Покрытие переводов: {coverage}%",
"analysis_passed_for_language": "✅ Анализ пройден для {language}",
"analysis_failed_for_language": "❌ Анализ не пройден для {language} ({missingKeys} отсутствует, {unusedKeys} не используется)",
"starting": "🔍 Запуск анализа переводов...",
"foundLanguages": "📋 Найдено языков для анализа: {count}: {languages}",
"analyzing": "🔄 Анализируется {language}...",
"reportTitle": "📊 ОТЧЁТ ОБ АНАЛИЗЕ ПЕРЕВОДОВ",
"generated": "Сгенерировано: {timestamp}",
"status": "Статус: {translated}/{total} ключей ({percentage}% переведено)",
"filesAnalyzed": "Просмотрено файлов: {analyzed}/{total}",
"keysNeedingTranslation": "Ключей, требующих перевода: {count}",
"fileBreakdown": "📋 РАЗБИВКА ПО ФАЙЛАМ",
"error": "Ошибка",
"completed": "✅ Анализ завершён для {language}",
"progress": "📊 Общий прогресс: обработано {translated}/{total} языков",
"reportSaved": " Отчёт сохранён: {reportPath}",
"summary": "📊 СВОДКА АНАЛИЗА",
"finished": "✅ Анализ успешно завершён!",
"statusFileMissing": "❌ Файл перевода отсутствует",
"sourceKeys": "📊 Исходных ключей: {count}",
"translation": "📊 Перевод: {translated}/{total} ({percentage}%)",
"structure": "🗂️ Структура: {status}",
"consistent": "Согласовано",
"inconsistent": "Несогласовано",
"missingKeys": "Отсутствующих ключей: {count}",
"extraKeys": "Лишних ключей: {count}",
"issues": "⚠️ Найдено проблем: {count}",
"issueType": {
"not_translated": "Не переведено: {count}",
"empty_value": "Пустые значения: {count}",
"partial_translation": "Частичные переводы: {count}",
"format_mismatch": "Несоответствия формата: {count}",
"type_mismatch": "Несоответствия типа: {count}",
"structure_mismatch": "Несоответствия структуры: {count}",
"same_as_source": "Совпадает с исходником: {count}"
},
"keysToTranslate": "📋 КЛЮЧИ ДЛЯ ПЕРЕВОДА",
"key": "Ключ",
"english": "Английский",
"needsTranslation": "ТРЕБУЕТ ПЕРЕВОДА",
"andMoreKeys": "...и ещё {count} ключей.",
"noLanguages": "⚠️ Целевые языки не найдены.",
"languageStats": "{language}: {percentage}% готово ({translated}/{total} ключей)",
"invalidReportFilePath": "Неверный путь к файлу отчёта",
"failedToWriteReportFile": "Не удалось безопасно записать файл отчёта"
},
"complete": {
"configLoadedSuccessfully": "Конфигурация успешно загружена",
"configLoadingFailed": "Сбой загрузки конфигурации",
"title": "🌍 ЗАВЕРШЕНИЕ I18N ПЕРЕВОДА",
"separator": "============================================================",
"sourceDir": "📁 Директория исходников: {sourceDir}",
"sourceLanguage": "🌐 Исходный язык: {sourceLanguage}",
"dryRunMode": "🧪 Режим тестового запуска — без изменений",
"languages": "🌍 Доступные языки: {languages}",
"addingMissingKeys": "➕ Добавление отсутствующих ключей в файлы переводов...",
"processing": "🔄 Обработка {language}...",
"addedKeys": "✅ Добавлено {count} отсутствующих ключей",
"noChangesNeeded": "✅ Для {language} изменений не требуется",
"summaryTitle": "📊 ИТОГОВАЯ СВОДКА",
"totalChanges": "📝 Всего изменений: {totalChanges}",
"languagesProcessed": "🌍 Обработано языков: {languagesProcessed}",
"missingKeysAdded": "➕ Добавлено недостающих ключей: {missingKeysAdded}",
"nextStepsTitle": "📋 ДАЛЬНЕЙШИЕ ШАГИ",
"nextStep1": "1. Запустите анализ использования:",
"nextStep2": " node i18ntk-usage.js --output-report",
"nextStep3": "2. Проверьте переводы:",
"nextStep4": " node i18ntk-validate.js",
"nextStep5": "3. Проанализируйте шаблоны:",
"nextStep6": " node i18ntk-analyze.js",
"allKeysAvailable": "🎉 Все ключи перевода теперь доступны!",
"runWithoutDryRun": "💡 Запустите без --dry-run для применения изменений",
"deletingOldReport": "🗑️ Удаление старого отчёта...",
"generatingFreshAnalysis": "📊 Генерация нового анализа использования...",
"couldNotGenerate": "❌ Не удалось сгенерировать анализ использования",
"reportNotFound": "📋 Отчёт об использовании не найден. Используются общие ключи...",
"foundMissingKeys": "📋 Найдено {count} отсутствующих ключей по результатам анализа использования",
"couldNotParse": "❌ Не удалось разобрать отчёт об использовании. Используются общие ключи...",
"errorDuringCompletion": "❌ Ошибка во время завершения: {error}",
"fatalError": "❌ Фатальная ошибка: {error}",
"configurationValidationFailed": "Сбой проверки конфигурации: отсутствуют обязательные поля"
},
"sizing": {
"separator": "================================================================================",
"lineSeparator": "--------------------------------------------------------------------------------",
"analysisStats": "{{stats}}",
"sourceDirectoryLabel": "📁 Директория исходников: {{sourceDir}}",
"sourceLanguageLabel": "🌍 Исходный язык: {{sourceLanguage}}",
"strictModeLabel": "⚙️ Режим строгого контроля: {{mode}}",
"invalidSourceDirectoryError": "Недопустимый путь к директории исходников: {{sourceDir}}",
"sourceDirectoryNotFoundError": "Директория исходников не найдена: {{sourceDir}}",
"invalidOutputDirectoryError": "Недопустимый путь к директории вывода: {{outputDir}}",
"invalidReportFileError": "Недопустимый путь к файлу отчёта",
"problematic_keys": "Проблемные ключи: {problematicKeys}",
"problematicKeysLabel": "Проблемные ключи: {problematicKeys}",
"long_translations": "Длинные переводы: {longTranslations}",
"failedToSaveReportError": "Не удалось безопасно сохранить отчёт",
"invalidCsvFileError": "Недопустимый путь к CSV-файлу",
"failedToSaveCsvError": "Не удалось безопасно сохранить CSV-отчёт",
"fatalError": "❌ Анализ размеров не удался: {{error}}",
"starting_i18n_sizing_analysis": "Запуск анализа размеров i18n...",
"source_directory": "Директория исходников: {{sourceDir}}",
"found_languages": "Найдены языки: {{languages}}",
"analyzing_file_sizes": "Анализ размеров файлов...",
"analyzing_translation_content": "Анализ содержимого переводов...",
"generating_size_comparisons": "Генерация сравнений размеров...",
"no_languages_found_for_comparison": "Языки для сравнения не найдены",
"sizing_analysis_results": "Результаты анализа размеров i18n",
"file_sizes_title": "Размеры файлов",
"file_sizes_header": "Язык Размер(КБ) Строки Символы",
"file_size_row": "{{lang}} {{sizeKB}} {{lines}} {{characters}}",
"language_statistics_title": "Статистика по языкам",
"language_stats_header": "Язык Ключей Символов Ср. длина Макс. длина Пустые Длинные",
"language_stats_row": "{{lang}} {{totalKeys}} {{totalCharacters}} {{averageKeyLength}} {{maxKeyLength}} {{emptyKeys}} {{longKeys}}",
"size_variations_title": "Вариации размеров",
"size_variations_header": "Язык Разн. симв. % Разн. Проблемные",
"size_variation_row": "{{lang}} {{characterDifference}} {{percentageDifference}}% {{problematic}}",
"problematic_yes": "Да",
"problematic_no": "Нет",
"recommendations_title": "Рекомендации",
"recommendation_item": "{{index}}. {{recommendation}}",
"problematic_key_detail": " {{index}}. Ключ: '{{key}}' — Вариации: {{variations}}",
"generating_detailed_report": "Генерация подробного отчёта...",
"keysHaveSignificantSizeVariations": "ключи имеют значительные вариации в размерах",
"longTranslationsDetected": "{{lang}} содержит {{data.longKeys}} переводов длиной более 100 символов — рассмотрите возможность их разбить",
"report_saved_to": "Отчёт сохранён в: {{reportPath}}",
"considerReviewingTranslations": "Рассмотрите возможность пересмотра переводов {{lang}} — они на {{data.percentageDifference}}% длиннее базового",
"csv_report_saved_to": "CSV-отчёт сохранён в: {{csvPath}}",
"no_translation_files_found": "Файлы переводов не найдены",
"analysis_completed": "Анализ завершён за {{duration}}мс",
"analysis_failed": "Анализ не удался: {{errorMessage}}",
"failed_to_parse_language_error": "Не удалось разобрать переводы {{language}}: {{errorMessage}}",
"recommendations": {
"keys_have_significant_size_variations": "ключи имеют значительные вариации в размерах",
"consider_reviewing_translations": "Рассмотрите возможность пересмотра переводов {{lang}} — они на {{percentageDifference}}% {{comparison}} базового",
"long_translations_detected": "{{lang}} содержит {{longKeys}} переводов длиной более {{threshold}} символов — рассмотрите возможность их разбить",
"hardcodedTexts": {
"keysHaveSignificantSizeVariations": "ключи имеют значительные вариации в размерах",
"considerReviewingTranslations": "Рассмотрите возможность пересмотра переводов {{lang}} — они на {{percentageDifference}}% {{comparison}} базового",
"longTranslationsDetected": "{{lang}} содержит {{longKeys}} переводов длиной более {{threshold}} символов — рассмотрите возможность их разбить"
}
}
},
"usage": {
"help_message": "\nI18n Анализатор использования\n\nИспользование: node i18ntk-usage.js [опции]\n\nОпции:\n --source-dir <dir> Директория исходников для сканирования (по умолчанию: ./src)\n --i18n-dir <dir> Директория I18n (по умолчанию: ./src/locales)\n --output-report Сгенерировать подробный отчёт\n --output-dir <dir> Директория для отчётов (по умолчанию: ./reports)\n --help Показать справку\n\nПримеры:\n node i18ntk-usage.js --output-report\n node i18ntk-usage.js --source-dir=./app --i18n-dir=./locales\n node i18ntk-usage.js --output-dir=./analysis --output-report\n",
"source_directory_thissourcedir": "📁 Директория исходников: {sourceDir}",
"translationCompletenessTitle": "🌍 Полнота перевода:",
"i18n_directory_thisi18ndir": "🌐 Директория I18n: {i18nDir}",
"failed_to_parse_filename_error": "⚠️ Не удалось разобрать {fileName}: {errorMessage}",
"analyzing_source_files": "🔍 Анализ исходных файлов...",
"found_files_in_source": "📂 Найдено файлов в директории исходников: {numFiles}",
"found_thisusedkeyssize_unique_": "🎯 Обнаружено уникальных используемых ключей: {usedKeysSize}",
"total_key_usages_totalkeysfoun": "📊 Всего использований ключей: {totalKeysFound}",
"loading_available_translation_": "📋 Загрузка доступных ключей перевода...",
"found_thisavailablekeyssize_av": "✅ Найдено доступных ключей: {availableKeysSize}",
"foundTranslationFiles": "✅ Найдено файлов переводов: {count}",
"pressEnterToReturnToMenu": "📝 Нажмите Enter, чтобы вернуться в главное меню...",
"notTranslatedKeysTotal": "⚠️ Непереведённые ключи: {total}",
"noSourceFilesFound": "⚠️ В директории исходников не найдено файлов.",
"reviewNotTranslatedKeys": "💡 Проверьте непереведённые ключи",
"analysisCompletedSuccessfully": "🎉 Анализ успешно завершён!",
"detectedSourceDirectory": "Обнаружена директория исходников: {{sourceDir}}",
"detectedI18nDirectory": "Обнаружена директория I18n: {i18nDir}",
"fileInfo": " 📄 {namespace}: {keys} ключей",
"failedToAnalyzeUsage": "❌ Не удалось проанализировать использование: {error}",
"failedToAnalyzeFile": "❌ Не удалось проанализировать файл: {error}",
"analyzerInitialized": "Анализатор инициализирован",
"analyzerInitFailed": "Не удалось инициализировать анализатор: {error}",
"argsParsed": "Аргументы разобраны",
"argsParseFailed": "Не удалось разобрать аргументы: {error}",
"translationDiscoveryError": "Ошибка обнаружения переводов: {error}",
"fileTraversalError": "Ошибка обхода файлов: {error}",
"usageAnalysisFailed": "Анализ использования не удался: {error}",
"translationFileParseError": "Ошибка парсинга файла перевода: {error}",
"translationKeysLoadError": "Ошибка загрузки ключей перевода: {error}",
"languageCompletenessStats": "{language}: {translated}/{total} ({completeness}% переведено)",
"missingKeysCount": "Отсутствующих ключей: {count}",
"analyzingTranslationCompleteness": "Анализ полноты перевода...",
"unusedKeysCount": "Неиспользуемых ключей: {count}",
"usedKeysCount": "Используемых ключей: {count}",
"availableKeysCount": "Доступных ключей: {count}",
"analysisResults": "Результаты анализа:",
"checkUsage": {
"title": "🔍 АНАЛИЗ ИСПОЛЬЗОВАНИЯ I18N",
"message": "Анализ использования ключей i18n в проекте.",
"help_message": "\nI18n Usage Analyzer\n\nUsage: node i18ntk-usage.js [options]\n\nOptions:\n --source-dir <dir> Source directory to scan (default: ./src)\n --i18n-dir <dir> I18n directory (default: ./src/locales)\n --output-report Generate detailed report\n --output-dir <dir> Output directory for reports (default: ./reports)\n --help Show this help\n\nExamples:\n node i18ntk-usage.js --output-report\n node i18ntk-usage.js --source-dir=./app --i18n-dir=./locales\n node i18ntk-usage.js --output-dir=./analysis --output-report\n",
"source_directory_thissourcedir": "📁 Директория исходников: {sourceDir}",
"i18n_directory_thisi18ndir": "🌐 Директория I18n: {i18nDir}",
"loading_available_translation_": "📋 Загрузка доступных ключей перевода...",
"found_thisavailablekeyssize_av": "✅ Найдено доступных ключей: {availableKeysSize}",
"analyzing_source_files": "🔍 Анализ исходных файлов...",
"found_files_in_source": "📂 Найдено файлов в директории исходников: {numFiles}",
"found_thisusedkeyssize_unique_": "🎯 Обнаружено уникальных используемых ключей: {usedKeysSize}",
"total_key_usages_totalkeysfoun": "📊 Всего использований ключей: {totalKeysFound}",
"translation_completeness_title": "📊 ПОЛНОТА ПЕРЕВОДА",
"language_completeness_stats": " {language}: {translated}/{total} ({completeness}% переведено)",
"n_sample_unused_keys": "\nПример неиспользуемых ключей:",
"key": "- {key}",
"and_unusedkeyslength_5_more": "...и ещё {count}.",
"n_recommendations": "\n📋 РЕКОМЕНДАЦИИ",
"consider_removing_unused_trans": "💡 Рассмотрите удаление неиспользуемых переводов для чистоты проекта.",
"n_next_steps": "\n📋 ДАЛЬНЕЙШИЕ ШАГИ",
"1_review_the_analysis_results": "1. Просмотрите результаты анализа в консоли или в отчёте.",
"2_run_with_outputreport_for_de": "2. Запустите с --output-report для подробного отчёта.",
"3_remove_unused_keys_or_add_mi": "3. Удалите неиспользуемые ключи или добавьте недостающие в код.",
"4_rerun_analysis_to_verify_imp": "4. Повторно запустите анализ для проверки изменений.",
"usage_analysis_results": "📊 РЕЗУЛЬТАТЫ АНАЛИЗА ИСПОЛЬЗОВАНИЯ",
"source_files_scanned_thisfileu": "Просканировано файлов: {fileUsageSize}",
"available_translation_keys_thi": "Доступных ключей перевода: {availableKeysSize}",
"used_translation_keys_thisused": "Используемых ключей перевода: {usedKeysSize}",
"dynamic_keys_detected_dynamick": "Обнаружено динамических ключей: {dynamicKeysLength}",
"unused_keys_unusedkeyslength": "Неиспользуемых ключей: {unusedKeysLength}",
"missing_keys_missingkeyslength": "Отсутствующих ключей: {missingKeysLength}",
"noSourceFilesFound": "Нет файлов для анализа.",
"processedFiles": "Обработано {processedFiles} из {totalFiles} файлов.",
"i18nDirectoryNotFound": "Директория I18n не найдена: {i18nDir}",
"noTranslationLanguagesFound": "Целевые языки не найдены.",
"failedToAnalyzeFile": "Не удалось проанализировать файл {filePath}: {error}",
"failedToAnalyzeLanguage": "Не удалось проанализировать язык {language}: {error}",
"translationCompletenessAnalysisFailed": "Анализ полноты перевода не удался: {error}",
"n": ""
},
"complete": {
"configLoadedSuccessfully": "Configuration loaded successfully",
"configLoadingFailed": "Configuration loading failed",
"title": "🌍 I18N TRANSLATION COMPLETION",
"separator": "============================================================",
"sourceDir": "📁 Source directory: {sourceDir}",
"sourceLanguage": "🌐 Source language: {sourceLanguage}",
"dryRunMode": "🧪 Dry run mode - no changes will be made",
"languages": "🌍 Available languages: {languages}",
"addingMissingKeys": "➕ Adding missing keys to translation files...",
"processing": "🔄 Processing {language}...",
"addedKeys": "✅ Added {count} missing keys",
"noChangesNeeded": "✅ No changes needed for {language}",
"summaryTitle": "📊 COMPLETION SUMMARY",
"totalChanges": "📝 Total changes: {totalChanges}",
"languagesProcessed": "🌍 Languages processed: {languagesProcessed}",
"missingKeysAdded": "➕ Missing keys added: {missingKeysAdded}",
"nextStepsTitle": "📋 NEXT STEPS",
"nextStep1": "1. Run usage analysis:",
"nextStep2": " node i18ntk-usage.js --output-report",
"nextStep3": "2. Validate translations:",
"nextStep4": " node i18ntk-validate.js",
"nextStep5": "3. Analyze patterns:",
"nextStep6": " node i18ntk-analyze.js",
"allKeysAvailable": "🎉 All translation keys are now available!",
"runWithoutDryRun": "💡 Run without --dry-run to apply changes",
"deletingOldReport": "🗑️ Deleting old report...",
"generatingFreshAnalysis": "📊 Generating fresh usage analysis...",
"couldNotGenerate": "❌ Could not generate usage analysis",
"reportNotFound": "📋 Usage report not found. Using common keys...",
"foundMissingKeys": "📋 Found {count} missing keys from usage analysis",
"couldNotParse": "❌ Could not parse usage report. Using common keys..."
}
},
"validate": {
"help_message": "\nI18n Валидатор переводов\n\nИспользование: node i18ntk-validate.js [опции]\n\nОпции:\n --source-dir <dir> Директория исходников для сканирования (по умолчанию: ./src)\n --i18n-dir <dir> Директория I18n (по умолчанию: ./src/locales)\n --output-report Сгенерировать подробный отчёт\n --output-dir <dir> Директория для отчётов (по умолчанию: ./reports)\n --help Показать справку\n\nПримеры:\n node i18ntk-validate.js --output-report\n node i18ntk-validate.js --source-dir=./app --i18n-dir=./locales\n node i18ntk-validate.js --output-dir=./analysis --output-report\n",
"title": "🔍 I18n Валидатор переводов",
"message": "Запуск процесса валидации...",
"sourceDirectory": "📁 Директория исходников: {dir}",
"sourceLanguage": "🌍 Исходный язык: {sourceLanguage}",
"strictMode": "⚙️ Режим строгой проверки: {mode}",
"noTargetLanguages": "⚠️ Не найдено целевых языков для проверки",
"validatingLanguages": "🌍 Проверка языков: {langs}",
"validatingLanguage": "🔍 Проверка языка: {lang}",
"filesCount": "📄 Файлов: {count}",
"keysCount": "🔑 Ключей: {count}",
"missingFilesCount": "📁 Отсутствующих файлов: {count}",
"syntaxErrorsCount": "❌ Синтаксических ошибок: {count}",
"translationPercentage": "🎯 Перевод: {percentage}% ({translated}/{total} ключей)",
"validationSummary": "📊 СВОДКА ВАЛИДАЦИИ",
"validation_failed": "❌ Валидация не пройдена: {error}",
"totalErrors": "❌ Всего ошибок: {count}",
"totalWarnings": "⚠️ Всего предупреждений: {count}",
"errorsSection": "❌ ОШИБКИ",
"warningsSection": "⚠️ ПРЕДУПРЕЖДЕНИЯ",
"recommendationsSection": "💡 РЕКОМЕНДАЦИИ",
"fixErrorsFirst": "1. Сначала исправьте все ошибки",
"resolveMissingFilesAndSyntaxErrors": "1. Устраните отсутствующие файлы и синтаксические ошибки",
"fixStructuralInconsistencies": "2. Исправьте структурные несоответствия",
"completeMissingTranslations": "3. Завершите недостающие переводы",
"rerunValidation": "4. Повторно запустите валидацию для проверки исправлений",
"addressWarnings": "Устраните предупреждения для повышения качества",
"reviewWarnings": "Просмотрите предупреждения и исправьте по необходимости",
"considerRunningWithStrict": "2. Рассмотрите запуск с флагом --strict для более строгой проверки",
"allValidationsPassed": "🎉 Все проверки пройдены!",
"considerRunningUsageAnalysis": "Рассмотрите запуск анализа использования: node i18ntk-usage.js",
"deletedOldReport": "🗑️ Старый отчёт валидации удалён",
"sourceDir": "📁 Директория исходников: {sourceDir}",
"i18nDir": "🌐 Директория I18n: {i18nDir}",
"loadingTranslationFiles": "📋 Загрузка файлов перевода...",
"foundTranslationFilesCount": "✅ Найдено файлов переводов: {count}",
"analyzingTranslations": "🔍 Анализ переводов...",
"validationCompletedSuccessfully": "🎉 Валидация успешно завершена!",
"validationErrorsFound": "⚠️ Найдено ошибок валидации: {count}",
"validationWarningsFound": "⚠️ Найдено предупреждений валидации: {count}",
"validationPassed": "✅ Валидация пройдена без ошибок",
"validationFailed": "Валидация не пройдена: {error}",
"startingValidationProcess": "🔍 Запуск процесса валидации...",
"validationProcessCompletedSuccessfully": "✅ Процесс валидации успешно завершён",
"stackTrace": "Трассировка стека: {{stack}}",
"authenticationFailed": "❌ Аутентификация не удалась. Доступ запрещён.",
"fatalValidationError": "❌ Фатальная ошибка валидации: {{error}}",
"configAccess": "Доступ к конфигурации для валидации",
"configValidated": "Конфигурация успешно проверена",
"configError": "Ошибка конфигурации: {error}",
"validatorInit": "Инициализация валидатора I18n",
"validatorInitialized": "Валидатор I18n успешно инициализирован",
"validatorInitError": "Ошибка инициализации валидатора: {error}",
"argsParsing": "Парсинг аргументов командной строки",
"argsParsed": "Аргументы командной строки разобраны успешно",
"argsParseError": "Ошибка разбора аргументов: {error}",
"languagesScan": "Сканирование доступных языков",
"languagesFound": "Найдено языков: {count}",
"languagesScanError": "Ошибка сканирования языков: {error}",
"filesScan": "Найдено файлов в {language}: {count}",
"filesScanError": "Ошибка сканирования файлов: {error}",
"jsonValidated": "Синтаксис JSON проверен: {filePath}",
"jsonValidationError": "Ошибка валидации JSON: {error}",
"languageValidation": "Проверка языка: {language}",
"languageValidationError": "Ошибка проверки языка: {error}",
"fileDeleted": "Файл удалён",
"runStarted": "Запуск валидации",
"runCompleted": "Валидация успешно завершена",
"runError": "Запуск валидации не удался: {error}",
"scriptExecution": "Выполнение скрипта",
"validationCompleted": "Валидация завершена",
"validationError": "Ошибка валидации: {error}",
"separator": "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━",
"languageHeader": "🌐 Язык: {language}",
"validationResults": "📊 Результаты валидации",
"noErrors": "✅ Ошибок не найдено",
"noWarnings": "✅ Предупреждений не найдено",
"summaryHeader": "📋 ОБЩАЯ СВОДКА",
"progressIndicator": "⏳ В процессе...",
"completedIndicator": "✅ Завершено",
"errorIndicator": "❌ Ошибка",
"warningIndicator": "⚠️ Предупреждение",
"infoIndicator": "ℹ️ Информация",
"sourceDirNotConfigured": "Директория исходников не настроена",
"sourceLanguageNotConfigured": "Исходный язык не настроен",
"translationFunctionNotInitialized": "Функция перевода не инициализирована",
"sourceLanguageDirectoryNotFound": "Директория исходного языка не найдена",
"specifiedLanguageNotFound": "Указанный язык не найден",
"noJsonFilesFound": "JSON-файлы не найдены в директории исходников: {sourceDir}",
"i18nDirectoryNotFound": "Директория I18n не найдена: {i18nDir}",
"invalidDirectoryPaths": "Обнаружены недопустимые пути",
"invalidSampleFilePath": "Недопустимый путь к примерному файлу",
"failedToCreateSampleTranslationFile": "Не удалось создать примерный файл перевода",
"invalidFilePathDetected": "Обнаружен недопустимый путь к файлу",
"failedToWriteFile": "Не удалось записать файл: {filePath}"
},
"adminCli": {
"setupPinProtectionTitle": "\n🔐 Настройка защиты админ-PIN",
"setupPinProtectionDescription": "Это потребует 4–6-значный PIN для административных операций.",
"enablePinProtectionPrompt": "Вы хотите включить защиту админ-PIN?",
"setupCancelled": "Настройка защиты админ-PIN отменена.",
"enterPinPrompt": "Введите 4–6-значный PIN: ",
"pinFormatError": "❌ PIN должен состоять из 4–6 цифр. Пожалуйста, попробуйте снова.",
"confirmPinPrompt": "Подтвердите PIN: ",
"pinMismatchError": "❌ PIN не совпадают. Пожалуйста, попробуйте снова.",
"pinProtectionEnabledSuccess": "✅ Защита админ-PIN успешно включена!",
"pinRecoveryWarning": "⚠️ Запомните ваш PIN — восстановлению он не подлежит.",
"setupPinProtectionFailed": "❌ Не удалось настроить защиту админ-PIN.",
"errorSettingUpPin": "❌ Ошибка при настройке PIN: {message}",
"authRequiredForOperation": "\n🔐 Требуется аутентификация админа для: {operation}",
"invalidPinFormat": "❌ Неверный формат PIN. PIN должен содержать 4–6 цифр.",
"authenticationSuccess": "✅ Аутентификация прошла успешно!",
"invalidPinAttemptsRemaining": "❌ Неверный PIN. Осталось попыток: {remaining}.",
"authenticationFailedAccessDenied": "❌ Аутентификация не удалась. Доступ запрещён.",
"authenticationError": "❌ Ошибка аутентификации: {message}",
"pinProtectionNotEnabled": "Защита админ-PIN в данный момент не включена.",
"disablingPinProtectionTitle": "\n🔓 Отключение защиты админ-PIN",
"confirmDisablePinProtection": "Вы уверены, что хотите отключить защиту админ-PIN?",
"operationCancelled": "Операция отменена.",
"pinProtectionDisabledSuccess": "✅ Защита админ-PIN отключена.",
"disablePinProtectionFailed": "❌ Не удалось отключить защиту админ-PIN.",
"errorDisablingPinProtection": "❌ Ошибка при отключении защиты: {message}",
"adminProtectionStatusTitle": "\n🔐 Статус защиты админа",
"statusEnabled": "Статус: ✅ ВКЛЮЧЕНО",
"protectionDetails": "Защита: для админ-операций требуется PIN (4–6 цифр)",
"lockoutDetails": "Блокировка: 3 неудачные попытки = 15-минутная блокировка",
"statusDisabled": "Статус: ❌ ОТКЛЮЧЕНО",
"noAuthRequired": "Защита: аутентификация не требуется",
"unprotectedRisk": "Риск: административные операции не защищены",
"errorCheckingAdminStatus": "❌ Ошибка при проверке статуса админа: {message}",
"authRequired": "🔐 Требуется аутентификация админа.",
"invalidPin": "❌ Неверный PIN.",
"authSuccess": "✅ Аутентификация прошла успешно!",
"adminPinSetupCli": "admin_pin_setup_cli",
"adminAuthFailedCli": "admin_auth_failed_cli",
"adminAuthDisabledCli": "admin_auth_disabled_cli",
"protectedAccess": "Доступ защищён: для чувствительных операций требуется аутентификация админа.",
"enterPin": "Введите админ-PIN: ",
"accessGranted": "Доступ разрешён."
},
"adminPin": {
"setup_title": "🔐 Настройка админ-PIN",
"setup_separator": "============================================================",
"setup_description": "Создайте 4–6-значный PIN для доступа к чувствительным настройкам.",
"required_for_title": "Этот PIN будет требоваться для:",
"required_for_1": " • Изменения настроек безопасности",
"required_for_2": " • Изменения расширенных конфигураций",
"required_for_3": " • Доступа к инструментам отладки",
"required_for_4": " • Сброса настроек",
"setup_note": "💡 При вводе будут показываться звездочки (*).",
"setup_digits_only": " Допускаются только цифры 0–9.",
"invalid_pin_length": "❌ Неверный PIN. Должен содержать 4–6 цифр.",
"invalid_pin_example": " Пример: 1234 или 567890",
"pins_do_not_match": "❌ PIN не совпадают.",
"setup_success": "✅ Админ-PIN успешно установлен!",
"setup_warning": "⚠️ Храните PIN в безопасности. Восстановлению он не подлежит.",
"setup_error": "❌ Ошибка при настройке PIN:",
"session_expired": "\n⏰ Сессия админа истекла из-за бездействия.",
"no_pin_set_setting_up": "⚠️ PIN не установлен. Настройка PIN...",
"no_pin_configured_access_denied": "⚠️ PIN не настроен. Доступ запрещён.",
"use_admin_settings_to_set_pin": "💡 Настройте PIN в админ-настройках.",
"locked_out": "🔒 Доступ заблокирован из-за слишком большого числа неудачных попыток.",
"wait_before_retry": "Пожалуйста, подождите 5 минут перед повторной попыткой.",
"access_granted": "✅ Доступ к админ-настройкам разрешён.",
"incorrect_pin": "❌ Неверный PIN. Осталось попыток: {attempts}.",
"verify_pin_error": "❌ Ошибка при проверке PIN:",
"already_configured": "✅ Админ-PIN уже настроен.",
"optional_setup_title": "\n🔐 Настройка админ-PIN (опционально)",
"optional_setup_description": "Защита админ-PIN обеспечивает безопасность для:",
"setup_prompt": "Хотите настроить админ-PIN? (y/N): ",
"skipping_setup": "⏭️ Пропуск настройки PIN. Настроить можно позже.",
"setup_prompt_error": "❌ Ошибка при запросе настройки PIN:",
"protectedAccess": "Доступ защищён: для чувствительных операций требуется аутентификация.",
"enterPin": "Введите админ-PIN: ",
"accessGranted": "Доступ разрешён.",
"invalidPin": "❌ Неверный PIN. Пожалуйста, попробуйте снова.",
"weak_pin_warning": "⚠️ ВНИМАНИЕ: PIN выглядит слишком простым.",
"weak_pin_suggestion": "💡 Рекомендуется использовать более сложный PIN.",
"use_anyway_prompt": "Введите «yes», чтобы использовать его, или нажмите Enter для выбора другого PIN: ",
"enter_new_pin": "Введите новый админ-PIN (4–6 цифр): ",
"confirm_pin": "Подтвердите админ-PIN: ",
"not_set": "Не задан",
"pin_display_mask": "####"
},
"autorun": {
"missingRequiredFile": "Отсутствует обязательный файл: {file}",
"runInitializationFirst": "Сначала выполните инициализацию.",
"initializationCheckPassed": "Проверка инициализации пройдена.",
"runningStep": "Выполняется шаг: {stepName}",
"commandLabel": "Команда: {command}",
"stepRunning": "Шаг «{stepName}» выполняется...",
"stepCompletedWithTime": "Шаг «{stepName}» выполнен за {duration} мс.",
"stepCompleted": "Шаг «{stepName}» завершён.",
"stepFailed": "Шаг «{stepName}» завершился с ошибкой.",
"errorLabel": "Ошибка: {error}",
"stepFailedWithError": "Шаг «{stepName}» завершился ошибкой: {error}",
"requiredStepFailed": "Обязательный шаг не выполнен. Остановка.",
"optionalStepFailed": "Необязательный шаг не выполнен. Продолжаем.",
"startingAutoRunWorkflow": "Запуск автоматического выполнения...",
"workflowIncludesSteps": "Рабочий процесс включает {count} шагов:",
"stepRequired": "(Обязательно)",
"stepOptional": "(Опционально)",
"startingExecution": "Начало выполнения...",
"workflowStopped": "Рабочий процесс остановлен.",
"workflowCompleted": "Рабочий процесс завершён.",
"pressEnterToContinue": "Нажмите Enter, чтобы продолжить...",
"runningSelectedSteps": "Выполнение выбранных шагов...",
"invalidStepNumber": "Недопустимый номер шага: {stepNum}",
"executionReport": "Отчёт о выполнении:",
"successfulSteps": "Успешных шагов: {count}",
"failedSteps": "Шагов с ошибками: {count}",
"requiredFailedSteps": "Неудачных обязательных шагов: {count}",
"stepDetails": "Детали шага:",
"errorDetails": "Ошибка: {error}",
"reportSavedTo": "Отчёт сохранён в: {path}",
"overallStatusSuccess": "УСПЕШНО",
"overallStatusFailed": "НЕИСПОЛЬНО",
"overallStatus": "Общий статус: {status}",
"customSettingsConfiguration": "Настройка пользовательских параметров",
"pressEnterForDefaults": "Нажмите Enter для значений по умолчанию.",
"sourceDirPrompt": "Директория исходников (по умолчанию: {default}): ",
"sourceLangPrompt": "Исходный язык (по умолчанию: {default}): ",
"targetLangsPrompt": "Языки перевода (через запятую, по умолчанию: {default}): ",
"translationMarkerPrompt": "Маркер перевода (по умолчанию: {default}): ",
"outputDirPrompt": "Директория для отчётов (по умолчанию: {default}): ",
"settingsUpdatedSuccessfully": "Настройки успешно обновлены!",
"errorConfiguringSettings": "Ошибка настройки параметров: {error}",
"autoRunScriptTitle": "Скрипт Auto-Run",
"usageTitle": "Использование:",
"runAllSteps": "node i18ntk-autorun.js --all — Запустить все шаги из i18ntk-config.json",
"configureSettingsFirst": "node i18ntk-autorun.js --config — Настроить параметры рабочего процесса",
"runSpecificSteps": "node i18ntk-autorun.js --steps <номера> — Запустить указанные шаги (например, --steps 1,3,5)",
"showHelp": "node i18ntk-autorun.js --help — Показать справку",
"availableSteps": "Доступные шаги:",
"examplesTitle": "Примеры:",
"configExample": "node i18ntk-autorun.js --config",
"stepsExample1": "node i18ntk-autorun.js --steps 1,2,3",
"stepsExample2": "node i18ntk-autorun.js --all",
"configurationComplete": "Настройка завершена.",
"runAutoRunCommand": "Теперь вы можете запустить команду auto-run.",
"configurationFailed": "Не удалось настроить: {error}",
"noValidStepNumbers": "Не указан ни один корректный номер шага.",
"autoRunFailed": "Auto-run завершился с ошибкой: {error}",
"stepInitializeProject": "Инициализация проекта",
"stepAnalyzeTranslations": "Анализ переводов",
"stepValidateTranslations": "Валидация переводов",
"stepCheckUsage": "Анализ использования",
"stepCompleteTranslations": "Завершение переводов",
"stepAnalyzeSizing": "Анализ размеров",
"stepGenerateSummary": "Генерация итогового отчёта...",
"stepCompletedIcon": "✅",
"stepCompletedWithIcon": "✅ Шаг «{stepName}» завершён.",
"stepRunningWithNumber": "[{stepNumber}/{totalSteps}] Выполнение шага «{stepName}»...",
"stepFailedIcon": "❌",
"translationLoadWarning": "Предупреждение: не удалось загрузить переводы {lang}",
"configReadError": "Ошибка чтения {file}",
"separator": "=================================================="
},
"debug": {
"title": "🔧 Инструменты отладки",
"separator": "============================================================",
"mainDebuggerSystemDiagnostics": "1. Системная диагностика",
"_consoleTranslationsCheck": "// 2. Проверка переводов в консоли",
"_exportMissingKeys": "// 3. Экспорт отсутствующих ключей перевода",
"_replaceHardcodedConsole": "// 4. Заменить жёстко прописанные строки в консоли",
"_consoleKeyChecker": "// 5. Проверка ключей консоли",
"debugLogs": "2. Логи отладки",
"backToMainMenu": "0. Вернуться в главное меню",
"selectOption": "Выберите инструмент отладки: ",
"runningDebugTool": "Запуск {displayName}...",
"debugToolNotFound": "❌ Инструмент отладки не найден: {toolName}",
"recentDebugLogs": "📄 Последние логи отладки",
"noDebugLogsFound": "❌ Логи отладки не найдены.",
"debugLogsDirectoryNotFound": "❌ Директория с логами отладки не найдена.",
"selectLogPrompt": "Выберите файл лога для просмотра (1-{count}): ",
"invalidChoiceSelectRange": "Неверный выбор. Пожалуйста, выберите из доступного диапазона.",
"contentOf": "📄 Содержание {filename}:",
"pressEnterToContinue": "Нажмите Enter, чтобы продолжить..."
},
"detect_language_mismatches": {
"tool_title": "🔍 Инструмент обнаружения несовпадений языков",
"separator": "=====================================\n",
"analyzing_file": "📄 Анализ {language}.json...",
"error_analyzing_file": "❌ Ошибка при анализе {filename}: {errorMessage}",
"results_title": "📊 РЕЗУЛЬТАТЫ ОБНАРУЖЕНИЯ НЕСОВПАДЕНИЙ ЯЗЫКОВ",
"results_separator": "========================================\n",
"summary_title": "📋 ИТОГИ:",
"total_files_analyzed": " Файлов проанализировано: {totalFiles}",
"files_with_mismatches": " Файлов с несовпадениями: {filesWithMismatches}",
"total_mismatches_found": " Всего найдено несовпадений: {totalMismatches}\n",
"no_mismatches_found": "✅ Несовпадений не найдено! Все переводы соответствуют своим языкам.\n",
"detailed_results_title": "🔍 ПОДРОБНЫЕ РЕЗУЛЬТАТЫ:\n",
"file_mismatch_header": "📄 {filename} ({language})",
"mismatches_count": " Найдено несовпадений: {count}:\n",
"mismatch_details": " {index}. Ключ: {key}",
"mismatch_value": " Значение: \"{value}\"",
"mismatch_issue": " Проблема: {description}",
"recommendations_title": "💡 РЕКОМЕНДАЦИИ:\n",
"recommendation_1": "1. Проверьте и переведите все записи, отмеченные [TRANSLATE]",
"recommendation_2": "2. Замените языковые префиксы (например, [DE], [FR]) на правильные переводы",
"recommendation_3": "3. Переведите английский текст на соответствующий целевой язык",
"recommendation_4": "4. Используйте эквиваленты на родном языке для всего текста, отображаемого пользователю",
"recommendation_5": "5. Запустите этот инструмент снова после исправлений, чтобы проверить результаты\n",
"detailed_report_saved": "📄 Подробный отчёт сохранён: {reportPath}\n",
"error_saving_report": "❌ Ошибка при сохранении отчёта: {errorMessage}\n",
"auto_fix_mode": "🔧 Режим автоисправления {dryRun}",
"auto_fix_separator": "=====================================\n",
"fixed_file": "✅ Исправлен {filename}",
"auto_fix_summary_title": "\n📊 Итоги автоисправления:",
"total_fixes_applied": " Всего применено исправлений: {count}",
"preview_fixes_title": "\n🔍 Предпросмотр исправлений:",
"fix_details": " {file}: {key}\n Старое: \"{old}\"\n Новое: \"{new}\"\n",
"more_fixes": " ... и ещё {count} исправлений\n",
"run_with_apply_fixes": "💡 Запустите с --apply для применения этих исправлений\n",
"error_general": "❌ Ошибка:",
"mainDebuggerSystemDiagnostics": "Системная диагностика",
"exportMissingKeys": "Экспорт отсутствующих ключей",
"replaceHardcodedConsole": "Замена жёстко прописанных строк",
"consoleKeyChecker": "Проверка ключей консоли",
"debugLogs": "Логи отладки",
"backToMainMenu": "Вернуться в главное меню",
"invalidChoiceSelectRange": "❌ Неверный выбор. Пожалуйста, выберите номер из отображаемого диапазона.",
"runningDebugTool": "Запуск инструмента: {displayName}",
"debugToolNotFound": "Инструмент '{toolName}' не найден.",
"recentDebugLogs": "Последние логи отладки",
"noDebugLogsFound": "Логи отладки не найдены.",
"logEntry": "Запись лога: {timestamp} – {message}",
"debugLogsDirectoryNotFound": "Директория логов отладки не найдена."
},
"help": {
"title": "📊 СПРАВКА ПО УПРАВЛЕНИЮ I18N\n\n",
"usage": "Использование: node i18ntk-manage.js [опции]\n",
"interactiveMode": "\n💡 Используйте: node i18ntk-manage.js --command=<команда> для прямого выполнения\n",
"showHelp": "\n📖 Используйте: node i18ntk-manage.js --help для просмотра доступных команд\n",
"availableCommands": "\n📖 Доступные команды:\n",
"initProject": "🚀 Инициализировать новые языки",
"analyzeTranslations": "🔍 Анализ переводов",
"validateTranslations": "✅ Валидация переводов",
"checkUsage": "📊 Проверка использования ключей",
"initCommand": " init - Инициализировать новые языки",
"analyzeCommand": " analyze - Анализ переводов",
"validateCommand": " validate - Валидация переводов",
"usageCommand": " usage - Проверка использования ключей",
"sizingCommand": " sizing - Анализ размеров",
"completeCommand": " complete - Завершение переводов (100% покрытия)",
"summaryCommand": " summary - Показать статус проекта",
"debugCommand": " debug - Отладка проблем перевода",
"menu": {
"title": "\n🌐 МЕНЮ УПРАВЛЕНИЯ I18N\n",
"description": "Интерактивное меню для управления интернационализацией\n",
"exit": "\n🚪 Выход"
},
"commands": {
"init": "\n init - Инициализировать новые языки",
"analyze": " analyze - Анализ переводов",
"validate": " validate - Валидация переводов",
"usage": " usage - Проверка использования ключей",
"sizing": " sizing - Анализ размеров",
"complete": " complete - Завершение переводов (100% покрытия)",
"summary": " summary - Показать статус проекта",
"debug": " debug - Отладка проблем перевода"
},
"options": {
"sourceDir": "\n --source-dir <dir> Директория исходников для анализа",
"output": " --output <file> Файл для вывода отчёта",
"verbose": " --verbose, -v Подробный вывод",
"keepReports": " --keep-reports Сохранить существующие отчёты",
"deleteReports": " --delete-reports Удалить существующие отчёты",
"help": " --help, -h Показать справку"
},
"examples": {
"title": "\nПримеры:\n",
"example1": " node i18ntk-manage.js",
"example2": " node i18ntk-manage.js --source-dir ./locales",
"example3": " node i18ntk-manage.js --output summary-report.txt",
"example4": " node i18ntk-manage.js --verbose",
"example5": " node i18ntk-manage.js --source-dir ./locales --output report.json"
},
"features": {
"initProject": "🚀 Инициализировать новые языки",
"analyzeTranslations": "🔍 Анализ переводов",
"validateTranslations": "✅ Валидация переводов",
"checkUsage": "📊 Проверка использования ключей",
"completeTranslations": "🎯 Завершение переводов (100% покрытия)",
"showSizing": "📏 Анализ размеров",
"runWorkflow": "🔄 Запуск полного процесса",
"showStatus": "📋 Показать статус проекта",
"deleteReports": "🗑️ Удалить все отчёты",
"changeLanguage": "🌍 Сменить язык интерфейса",
"settings": "⚙️ Настройки",
"showHelp": "❓ Справка",
"debugTools": "🔧 Инструменты отладки"
},
"messages": {
"selectOption": "Выберите опцию:",
"invalidOption": "❌ Неверная опция. Пожалуйста, попробуйте снова.",
"operationCompleted": "✅ Операция успешно завершена!",
"pressEnter": "Нажмите Enter для продолжения...",
"goodbye": "👋 До свидания!",
"unknownCommand": "Неизвестная команда: {{command}}",
"nonInteractive": "⚠️ Обнаружен неинтерактивный режим. Меню отображается только для справки."
},
"i18n_helper": {
"translation_file_not_found": "Файл перевода не найден: {translationFile}",
"error_loading_translations": "Ошибка загрузки переводов: {errorMessage}",
"translation_not_found": "Перевод для ключа не найден: {key}",
"translation_key_not_string": "Значение ключа перевода не является строкой: {key}",
"error_reading_locales_directory": "Ошибка чтения директории локалей: {errorMessage}"
}
},
"init": {
"initializationTitle": "🚀 Набор инструментов i18n — Инициализация проекта",
"sourceDirectoryLabel": "📁 Директория исходников: {dir}",
"sourceLanguageLabel": "🌍 Исходный язык: {language}",
"detectedI18nFrameworks": "🔍 Обнаружены фреймворки i18n: {frameworks}",
"existingDirectoriesFound": "📁 Найдены существующие директории переводов:",
"useExistingDirectoryPrompt": "Вы хотите использовать существующую директорию? (y/n)",
"autoDetectedI18nDirectory": "📂 Автоопределённая директория i18n: {directory}",
"initializingProject": "⚙️ Инициализация конфигурации проекта...",
"c