i18ntk 3.2.0 → 3.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,145 +1,145 @@
1
1
  {
2
2
  "meta": {
3
3
  "version": "3.1.2",
4
- "updated": "2026-05-07"
4
+ "updated": "07.05.2026"
5
5
  },
6
6
  "common": {
7
7
  "welcome": "Добро пожаловать",
8
8
  "hello": "Привет",
9
- "goodbye": "Пока",
9
+ "goodbye": "До свидания",
10
10
  "yes": "Да",
11
11
  "no": "Нет",
12
- "save": "Сохранить",
12
+ "save": "Сохранять",
13
13
  "cancel": "Отмена",
14
14
  "delete": "Удалить",
15
15
  "edit": "Редактировать",
16
16
  "loading": "Загрузка...",
17
- "offlineTitle": "В offline",
18
- "offlineMessage": "Вы находитесь в offline",
19
- "tryReconnect": "Попытка переподключения",
20
- "logout": "Выход",
21
- "login": "Войти",
22
- "amount": "Сумма",
17
+ "offlineTitle": "Вы оффлайн",
18
+ "offlineMessage": "Пожалуйста, проверьте подключение к Интернету",
19
+ "tryReconnect": "Попробуйте переподключиться",
20
+ "logout": "Выход из системы",
21
+ "login": "Авторизоваться",
22
+ "amount": "Количество",
23
23
  "success": "Успех",
24
24
  "error": "Ошибка",
25
25
  "warning": "Предупреждение",
26
26
  "info": "Информация:",
27
- "debug": "Отладка",
27
+ "debug": "Отлаживать",
28
28
  "progress": "Прогресс:",
29
- "remaining": "Осталось:",
30
- "total": "Всего:",
31
- "completed": "7. Успешно завершено!",
32
- "missing": "Отсутствует",
33
- "partial": "Частично",
34
- "sameAsSource": "Такие же как источник:",
29
+ "remaining": "Оставшийся:",
30
+ "total": "Общий:",
31
+ "completed": "7. Завершено успешно!",
32
+ "missing": "Отсутствующий",
33
+ "partial": "Частичный",
34
+ "sameAsSource": "То же, что источник:",
35
35
  "formatMismatch": "Несоответствие формата:",
36
36
  "typeMismatch": "Несоответствие типа:",
37
37
  "structureMismatch": "Несоответствие структуры:",
38
- "invalidOption": "Неверная опция",
39
- "separator": "==================================================",
38
+ "invalidOption": "Неверный вариант",
39
+ "separator": "===============================================",
40
40
  "initializationFailed": "❌ Ошибка инициализации: {error}",
41
41
  "stackTrace": "Трассировка стека: {stack}",
42
- "pressEnterToContinue": "Нажмите Enter для продолжения...",
43
- "pressEnterToReturn": "Нажмите Enter для возврата в главное меню...",
44
- "stepCompleted": "Шаг '{stepName}' завершен.",
45
- "stepFailed": "Шаг '{stepName}' не удался.",
46
- "runningStep": "Выполнение шага: {stepName}",
42
+ "pressEnterToContinue": "Нажмите Enter, чтобы продолжить...",
43
+ "pressEnterToReturn": "Нажмите Enter, чтобы вернуться в главное меню...",
44
+ "stepCompleted": "Шаг '{stepName}' завершенный.",
45
+ "stepFailed": "Шаг '{stepName}' неуспешный.",
46
+ "runningStep": "Шаг бега: {stepName}",
47
47
  "command": "Команда: {command}",
48
48
  "startingWorkflow": "Запуск рабочего процесса...",
49
49
  "workflowCompleted": "Рабочий процесс завершен.",
50
- "checkReports": "Проверьте отчеты для получения подробностей.",
50
+ "checkReports": "Подробности смотрите в отчетах.",
51
51
  "errorExecutingCommand": "Ошибка выполнения команды: {error}",
52
52
  "genericError": "❌ Ошибка: {error}",
53
53
  "errors": {
54
54
  "errors": "Ошибки:",
55
55
  "genericError": "❌ Ошибка: {error}",
56
- "initializationFailed": "❌ Инициализация не удалась: {error}",
56
+ "initializationFailed": "❌ Ошибка инициализации: {error}",
57
57
  "initializationCancelled": "❌ Инициализация отменена пользователем.",
58
- "translationKeyNotFound": "Ключ перевода не найден: {key}",
59
- "sourceDirectoryNotFound": " Исходная директория не найдена: {directory}",
60
- "configLoadingFailed": "Загрузка конфигурации не удалась",
61
- "invalidSourceDirectory": " Неверная исходная директория: {directory}",
62
- "securityViolation": "⚠️ Нарушение безопасности обнаружено",
63
- "authenticationFailed": "Аутентификация не удалась",
64
- "sourceEqualsI18nWarn": "⚠️ sourceDir равен i18nDir ({sourceDir}). Возврат к {fallback} для сканирования источника."
58
+ "translationKeyNotFound": "Ключ перевода не найден: {key}",
59
+ "sourceDirectoryNotFound": "Исходный каталог не найден: {directory}",
60
+ "configLoadingFailed": "Загрузка конфигурации не удалась",
61
+ "invalidSourceDirectory": "Неверный исходный каталог: {directory}",
62
+ "securityViolation": "Обнаружено нарушение безопасности",
63
+ "authenticationFailed": "Аутентификация не удалась",
64
+ "sourceEqualsI18nWarn": "⚠️ sourceDir равен i18nDir ({sourceDir}). Возвращаясь к {fallback} для сканирования источника."
65
65
  },
66
- "errorGeneratingStatusSummary": "Ошибка генерации сводки статуса: {error}",
66
+ "errorGeneratingStatusSummary": "Ошибка создания сводки статуса: {error}",
67
67
  "errorRunningDebugTool": "Ошибка запуска инструмента отладки '{displayName}': {error}",
68
68
  "errorReadingDebugLogs": "Ошибка чтения журналов отладки: {error}",
69
69
  "errorAnalyzingLogFile": "Ошибка анализа файла журнала: {error}",
70
70
  "errorAnalyzingTranslationKeys": "Ошибка анализа ключей перевода: {error}",
71
71
  "errorAnalyzingTranslationCompleteness": "Ошибка анализа полноты перевода: {error}",
72
- "analyzingTranslationCompleteness": "🔍 Анализ полноты перевода по всем языкам...",
73
- "i18nDirectoryNotFound": "⚠️ i18n директория не найдена: {i18nDir}",
74
- "translationCompletenessAnalysisFailed": "⚠️ Анализ полноты перевода не удался: {error}",
75
- "failedToAnalyzeLanguage": "❌ Не удалось проанализировать язык {language}: {error}",
76
- "errorReadingI18nDirectory": "❌ Чтение i18n директории не удалось: {error}",
77
- "languageCompletenessTitle": "📈 ПОЛНОТА ПЕРЕВОДА ПО ЯЗЫКАМ",
72
+ "analyzingTranslationCompleteness": "Анализ полноты перевода на всех языках...",
73
+ "i18nDirectoryNotFound": "⚠️ Каталог i18n не найден: {i18nDir}",
74
+ "translationCompletenessAnalysisFailed": "⚠️ Не удалось выполнить анализ полноты перевода: {error}",
75
+ "failedToAnalyzeLanguage": "❌ Не удалось проанализировать язык {language}: {error}",
76
+ "errorReadingI18nDirectory": "❌ Ошибка чтения каталога i18n:",
77
+ "languageCompletenessTitle": "📈 ПОЛНОТА ПЕРЕВОДА ПО ЯЗЫКАМ",
78
78
  "errorAnalyzingTranslationFormat": "Ошибка анализа формата перевода: {error}",
79
79
  "errorAnalyzingTranslationType": "Ошибка анализа типа перевода: {error}",
80
80
  "errorAnalyzingTranslationStructure": "Ошибка анализа структуры перевода: {error}",
81
81
  "errorAnalyzingTranslationFormatMismatch": "Ошибка анализа несоответствия формата перевода: {error}",
82
82
  "errorAnalyzingTranslationTypeMismatch": "Ошибка анализа несоответствия типа перевода: {error}",
83
83
  "errorAnalyzingTranslationStructureMismatch": "Ошибка анализа несоответствия структуры перевода: {error}",
84
- "errorAnalyzingTranslationSameAsSource": "Ошибка анализа перевода совпадающего с источником: {error}",
84
+ "errorAnalyzingTranslationSameAsSource": "Ошибка анализа перевода, такого же, как исходный: {error}",
85
85
  "title": "Статус",
86
- "nextStep1": "1. Проверить анализ использования:",
87
- "nextStep2": "2. Проверить переводы:",
88
- "nextStep3": "3. Проанализировать полноту:",
89
- "nextStep4": "4. Завершить отсутствующие переводы:",
90
- "nextStep5": "5. Сгенерировать сводный отчет:",
91
- "nextStep6": "6. Проверить и завершить переводы:",
92
- "generating": "Генерация сводного отчета...",
86
+ "nextStep1": "1. Проверьте анализ использования:",
87
+ "nextStep2": "2. Проверка перевода:",
88
+ "nextStep3": "3. Проанализируйте полноту:",
89
+ "nextStep4": "4. Дополните недостающие переводы:",
90
+ "nextStep5": "5. Создать сводный отчет:",
91
+ "nextStep6": "6. Просмотрите и доработайте переводы:",
92
+ "generating": "Создание сводного отчета...",
93
93
  "review": "Проверка переводов...",
94
- "finalizing": "Завершение переводов...",
95
- "finalized": "Успешно завершено!",
94
+ "finalizing": "Завершение перевода...",
95
+ "finalized": "Завершено успешно!",
96
96
  "warnings": "Предупреждения:",
97
- "completedKeys": "Завершенные ключи:",
98
- "missingKeys": "Отсутствующие ключи:",
97
+ "completedKeys": "Готовые ключи:",
98
+ "missingKeys": "Недостающие ключи:",
99
99
  "partialKeys": "Частичные ключи:",
100
100
  "home": "Дом",
101
101
  "settings": "Настройки",
102
- "startingSettings": "🎛️ Начальные настройки CLI...",
103
- "confirm": "Подтвердить",
102
+ "startingSettings": "🎛️ Запуск командной строки настроек...",
103
+ "confirm": "Подтверждать",
104
104
  "errorExiting": "Ошибка при выходе."
105
105
  },
106
106
  "errors": {
107
- "invalidOption": "❌ Неверный параметр: {option}. Пожалуйста, попробуйте еще раз.",
108
- "readlineClosed": "Поток ввода закрыт; работа в неинтерактивном режиме.",
109
- "noPackageJson": "Файл package.json не найден. Невозможно автоматически определить фреймворк i18n.",
110
- "noI18nDir": "Директория i18n не найдена в корне проекта.",
111
- "noI18nConfig": "Файл конфигурации i18n не найден в корне проекта.",
112
- "errorReadingDebugLogs": "Ошибка чтения журналов отладки: {error}."
107
+ "invalidOption": "❌ Неверный вариант: {option}. Пожалуйста, попробуйте еще раз.",
108
+ "readlineClosed": "Входной поток закрыт; работает в неинтерактивном режиме.",
109
+ "noPackageJson": "Пакет package.json не найден. Невозможно автоматически обнаружить платформу i18n.",
110
+ "noI18nDir": "В корне проекта не найден каталог i18n.",
111
+ "noI18nConfig": "В корне проекта не найден файл конфигурации i18n.",
112
+ "errorReadingDebugLogs": "Ошибка чтения журналов отладки: {error}"
113
113
  },
114
114
  "scanner": {
115
- "help_message": "Использование сканера текста I18n: node i18ntk-scanner.js [options] Options: --source-dir <dir> Source directory to scan (default: ./src) --output <file> Output file for scan results (default: ./i18ntk-scanner-report.json) --framework <name> Framework to target (react, vue, angular, vanilla) --patterns <patterns> Custom regex patterns (comma-separated) --include-tests Include test files in scan --exclude-dirs <dirs> Directories to exclude (comma-separated) --help Show this help Examples: 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",
115
+ "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",
116
116
  "help_options": {
117
- "source_dir": "Директория для сканирования",
118
- "output_dir": "Файл для вывода результатов",
119
- "framework": "Целевой фреймворк (react, vue, angular, vanilla)",
120
- "patterns": "Пользовательские паттерны регулярных выражений (через запятую)",
121
- "exclude": "Директории для исключения (через запятую)",
122
- "output_report": "Файл для вывода отчета",
123
- "min_length": "Минимальная длина текста для включения",
124
- "max_length": "Максимальная длина текста для включения",
125
- "include_tests": "Включать тестовые файлы в сканирование"
117
+ "source_dir": "Исходный каталог для сканирования на наличие проблем i18n",
118
+ "output_dir": "Каталог для отчетов и результатов сканирования",
119
+ "framework": "Целевая платформа (реагировать, vue, angular, vanilla)",
120
+ "patterns": "Пользовательские шаблоны регулярных выражений для обнаружения текста",
121
+ "exclude": "Шаблоны файлов, которые следует исключить из сканирования",
122
+ "output_report": "Создать подробный отчет о сканировании",
123
+ "min_length": "Минимальная длина текста, которую следует учитывать при переводе",
124
+ "max_length": "Максимальная длина текста, которую следует учитывать при переводе",
125
+ "include_tests": "Включите тестовые файлы в процесс сканирования"
126
126
  },
127
127
  "starting": "🔍 Запуск сканера текста для фреймворка: {framework}",
128
128
  "sourceDirectory": "📁 Каталог сканирования: {sourceDir}",
129
- "frameworkDetected": "🎯 Обнаруженный фреймворк: {framework}",
130
- "scanningFiles": "📊 Сканирование {fileCount} файлов...",
131
- "foundTexts": "📝 Найдено {textCount} текстов, требующих перевода",
129
+ "frameworkDetected": "🎯 Обнаруженные рамки: {framework}",
130
+ "scanningFiles": "📊 Сканирование {fileCount} файлы...",
131
+ "foundTexts": "📝 Найден {textCount} тексты требующие перевода",
132
132
  "generatingReport": "📊 Формируем подробный отчет...",
133
- "reportSaved": "💾 Отчет о сканировании сохранен в: {reportPath}.",
133
+ "reportSaved": "💾 Отчет о сканировании сохранен в: {reportPath}",
134
134
  "noTextsFound": "✅ Не найдено жестко закодированных английских текстов.",
135
135
  "scanComplete": "🎉 Сканирование успешно завершено!",
136
136
  "analysisTitle": "🔍 СКАН-АНАЛИЗ ПЕРЕВОДА",
137
- "fileSummary": "📄 {file}: найдено {count} текстов",
138
- "textLocation": "📍 Строка {line}: {text}",
139
- "foundText": "Обнаружено {count} потенциальных экземпляров жестко запрограммированного текста.",
137
+ "fileSummary": "📄 {file}: {count} найдены тексты",
138
+ "textLocation": "📍 Линия {line}: {text}",
139
+ "foundText": "Найденный {count} потенциальные экземпляры жестко запрограммированного текста",
140
140
  "context": "📝 Контекст: {context}",
141
- "severity": "⚠️ Серьезность: {severity}.",
142
- "recommendation": "💡 Рекомендация: {recommendation}",
141
+ "severity": "⚠️ Тяжесть: {severity}",
142
+ "recommendation": "💡Рекомендация: {recommendation}",
143
143
  "welcome": {
144
144
  "title": "🎯 Добро пожаловать в Сканер текста!",
145
145
  "description": "Этот инструмент сканирует исходный код на предмет жестко закодированного текста на английском языке, который может нуждаться в переводе."
@@ -164,764 +164,765 @@
164
164
  "reportGenerated": "Создан отчет о сканировании: {path}"
165
165
  },
166
166
  "fixer": {
167
- "help_message": "I18n Исправление Переводов Использование: node 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",
168
- "starting": "🚀 Запуск исправления переводов для языков: {languages}",
167
+ "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",
168
+ "starting": "🚀 Начинаем исправление перевода для языков: {languages}",
169
169
  "sourceDirectory": "📁 Исходный каталог: {sourceDir}",
170
170
  "sourceLanguage": "🔤 Исходный язык: {sourceLanguage}",
171
- "markers": "🏷️ Маркеры для исправления: {markers}",
171
+ "markers": "🏷️ Маркеры для исправления: {markers}",
172
172
  "scanningLanguage": "📊 Сканирование {language}...",
173
- "noLanguages": " Языки для исправления не указаны.",
174
- "allComplete": "🎉 Все переводы уже завершены!",
173
+ "noLanguages": "❌Не указаны языки для исправления.",
174
+ "allComplete": "🎉Все переводы уже готовы!",
175
175
  "fullReportSaved": "📊 Полный отчет сохранен в: {reportPath}",
176
- "reviewReport": "Пожалуйста, просмотрите отчет перед продолжением.",
176
+ "reviewReport": "Прежде чем продолжить, ознакомьтесь с отчетом.",
177
177
  "backupCreated": "💾 Резервная копия успешно создана.",
178
- "applyingFixes": "🔄 Применение исправлений...",
179
- "fixingComplete": "✅ Исправление переводов завершено!",
178
+ "applyingFixes": "🔄 Внесение исправлений...",
179
+ "fixingComplete": "✅ Исправление перевода завершено!",
180
180
  "operationCancelled": "❌ Операция отменена пользователем.",
181
- "analysisTitle": "🔍 АНАЛИЗ ИСПРАВЛЕНИЯ ПЕРЕВОДОВ",
182
- "analysisSeparator": "==================================================",
181
+ "analysisTitle": "🔍 АНАЛИЗ ИСПРАВЛЕНИЯ ПЕРЕВОДА",
182
+ "analysisSeparator": "===============================================",
183
183
  "totalIssues": "Всего найдено проблем: {totalIssues}",
184
- "missingTranslations": "Отсутствующие переводы: {missing}",
185
- "placeholderTranslations": "Переводы с маркерами: {placeholder}",
186
- "noIssues": " Проблем не найдено. Все переводы завершены.",
187
- "detailedIssues": "📋 ПОДРОБНЫЕ ПРОБЛЕМЫ:",
184
+ "missingTranslations": "Недостающие переводы: {missing}",
185
+ "placeholderTranslations": "Переводы заполнителей: {placeholder}",
186
+ "noIssues": "✅Проблем не обнаружено. Все переводы завершены.",
187
+ "detailedIssues": "📋 ПОДРОБНЫЕ ВОПРОСЫ:",
188
188
  "detailedSeparator": "--------------------------------------------------",
189
189
  "filePath": "📄 {file} → {path}",
190
- "missingKey": " ОТСУТСТВУЕТ: {source} → {new}",
191
- "placeholderKey": "⚠️ МАРКЕР: \"{target}\" → \"{new}\"",
192
- "moreIssues": "... и еще {count} проблем. См. файл отчета для полных деталей.",
193
- "confirmationTitle": "🤔 Продолжить с этими исправлениями?",
194
- "confirmationOptions": "Опции:",
195
- "optionYes": "д - Да, применить все исправления",
196
- "optionNo": "н - Нет, отменить операцию",
197
- "optionShow": "п - Показать подробные проблемы",
198
- "choicePrompt": "Ваш выбор (д/н/п):",
199
- "nonInteractiveMode": "⚡ Обнаружен неинтерактивный режим - автоматическое применение исправлений...",
200
- "reportGenerated": "📊 Сгенерирован отчет об исправлении: {path}",
190
+ "missingKey": "❌ОТСУТСТВУЕТ: {source} → {new}",
191
+ "placeholderKey": "⚠️ ЗАМЕСИТЕЛЬ: \"{target}\" → \"{new}\"",
192
+ "moreIssues": "... и {count} больше проблем. Проверьте файл отчета для получения полной информации.",
193
+ "confirmationTitle": "🤔 Хотите продолжить исправления?",
194
+ "confirmationOptions": "Параметры:",
195
+ "optionYes": "y - Да, применить все исправления",
196
+ "optionNo": "n - Нет, отменить операцию",
197
+ "optionShow": "s Показать подробные проблемы",
198
+ "choicePrompt": "Ваш выбор (да/нет/ы):",
199
+ "nonInteractiveMode": "⚡ Обнаружен неинтерактивный режим исправления применяются автоматически...",
200
+ "reportGenerated": "📊 Создан отчет Fixer: {path}",
201
201
  "summary": "Краткое описание фиксера:",
202
202
  "welcome": {
203
- "title": "🎯 Добро пожаловать в инструмент исправления переводов!",
204
- "description": "Этот инструмент поможет вам исправить сломанные переводы и маркеры в ваших языковых файлах."
203
+ "title": "🎯 Добро пожаловать в Fixer Translation!",
204
+ "description": "Этот инструмент поможет вам исправить неправильные переводы и заполнители в файлах локали."
205
205
  },
206
206
  "markerPrompt": {
207
- "title": "🏷️ Настройка маркеров плейсхолдеров",
208
- "description": "Введите маркеры, которые указывают на непереведенный текст (через запятую):",
207
+ "title": "🏷️ Настройте маркеры-заполнители",
208
+ "description": "Введите маркеры, обозначающие непереведенный текст (через запятую):",
209
209
  "currentDefaults": "Маркеры по умолчанию: {markers}",
210
- "input": "Маркеры (или Enter для использования по умолчанию):"
210
+ "input": "Маркеры (или нажмите Enter для значений по умолчанию):"
211
211
  },
212
212
  "languagePrompt": {
213
- "title": "🌍 Выбор языков для исправления",
213
+ "title": "🌍 Выберите языки для исправления",
214
214
  "available": "Доступные языки: {languages}",
215
- "description": "Введите языки для исправления (через запятую) или Enter для всех:",
215
+ "description": "Введите языки, которые нужно исправить (через запятую) или нажмите Enter для всех:",
216
216
  "input": "Языки:",
217
- "noLanguages": "Языки для исправления не найдены."
217
+ "noLanguages": "Языки, которые можно исправить, не найдены."
218
218
  },
219
219
  "directoryPrompt": {
220
- "title": "📁 Выбор директории",
221
- "current": "Текущая директория: {dir}",
222
- "description": "Введите директорию с вашими языковыми файлами (или Enter для текущей директории):",
223
- "input": "Директория:"
220
+ "title": "📁 Выберите каталог",
221
+ "current": "Текущий каталог: {dir}",
222
+ "description": "Введите каталог, содержащий файлы вашей локали (или нажмите Enter для текущего):",
223
+ "input": "Каталог:"
224
224
  },
225
225
  "backupLocation": "Местоположение резервной копии: {dir}",
226
226
  "completed": "Исправление завершено.",
227
227
  "creatingBackup": "Создание резервной копии в {dir}...",
228
- "dryRunMode": "Режим пробного прогона: {mode}",
228
+ "dryRunMode": "Режим сухого хода: {mode}",
229
229
  "error": "Исправление не удалось: {error}",
230
230
  "fixing": "Исправление {language}...",
231
- "foundLanguages": "Найдено {count} языков: {languages}",
232
- "languageFixed": "{language}: исправлены клавиши {fixed}, пропущены {skipped}.",
231
+ "foundLanguages": "Найденный {count} языки: {languages}",
232
+ "languageFixed": "{language}: зафиксированный {fixed} ключ(и), пропущен {skipped}.",
233
233
  "running": "Запуск средства исправления перевода...",
234
- "totalFixed": "Всего исправлено: {count}"
234
+ "totalFixed": "Всего фиксировано: {count}"
235
235
  },
236
236
  "autorun": {
237
237
  "stepAnalyzeTranslations": "Анализ переводов",
238
- "stepCompletedWithIcon": "✅ Шаг «{stepName}» завершён.",
239
- "stepValidateTranslations": "Валидация переводов",
240
- "stepRunning": "Шаг «{stepName}» выполняется...",
241
- "separator": "==================================================",
242
- "stepFailed": "Шаг «{stepName}» завершился с ошибкой.",
243
- "errorLabel": "Ошибка: {error}",
244
- "autoRunScriptTitle": "Скрипт Auto-Run",
245
- "usageTitle": "Использование:",
246
- "runAllSteps": "node i18ntk-autorun.js --all — Запустить все шаги из i18ntk-config.json",
247
- "configureSettingsFirst": "node i18ntk-autorun.js --config Настроить параметры рабочего процесса",
248
- "runSpecificSteps": "node i18ntk-autorun.js --steps <номера> Запустить указанные шаги (например, --steps 1,3,5)",
249
- "showHelp": "node i18ntk-autorun.js --help Показать справку",
250
- "examplesTitle": "Примеры:",
251
- "configExample": "node i18ntk-autorun.js --config",
252
- "stepsExample1": "node i18ntk-autorun.js --steps 1,2,3",
253
- "stepsExample2": "node i18ntk-autorun.js --all",
254
- "customSettingsConfiguration": "Настройка пользовательских параметров",
255
- "availableSteps": "Доступные шаги:",
256
- "startingAutoRunWorkflow": "Запуск автоматического выполнения...",
257
- "workflowIncludesSteps": "Рабочий процесс включает {count} шагов:",
258
- "missingRequiredFile": "Отсутствует обязательный файл: {file}",
259
- "workflowStopped": "Рабочий процесс остановлен.",
260
- "workflowCompleted": "Рабочий процесс завершён.",
261
- "successfulSteps": "Успешных шагов: {count}",
262
- "failedSteps": "Шагов с ошибками: {count}",
263
- "stepInitializeProject": "Инициализация проекта",
264
- "stepCheckUsage": "Анализ использования",
265
- "stepGenerateSummary": "Генерация итогового отчёта...",
266
- "runInitializationFirst": "Сначала выполните инициализацию.",
238
+ "stepCompletedWithIcon": "✅ Выполнено: {stepName}",
239
+ "stepValidateTranslations": "Проверка переводов",
240
+ "stepRunning": "▶️ Шаг {stepNumber}/{totalSteps}: {stepName}",
241
+ "separator": "===============================================",
242
+ "stepFailed": " Не удалось: {stepName}",
243
+ "errorLabel": "Ошибка",
244
+ "autoRunScriptTitle": "🧪 Автоматический запуск рабочего процесса",
245
+ "usageTitle": "Использование",
246
+ "runAllSteps": "Запустить: узел i18ntk-autorun.js",
247
+ "configureSettingsFirst": "Конфигурация: i18ntk-config.json или флаги CLI.",
248
+ "runSpecificSteps": "Используйте --steps=1,3 или --list, чтобы показать шаги.",
249
+ "showHelp": "--help для получения дополнительной информации",
250
+ "examplesTitle": "Примеры",
251
+ "configExample": "узел i18ntk-autorun.js --ui-language=zh",
252
+ "stepsExample1": "узел i18ntk-autorun.js --steps=анализировать,проверить",
253
+ "stepsExample2": "узел i18ntk-autorun.js --list",
254
+ "customSettingsConfiguration": "Пользовательские настройки автозапуска",
255
+ "availableSteps": "Доступные шаги",
256
+ "startingAutoRunWorkflow": "🚀 Запуск автоматического запуска рабочего процесса...",
257
+ "workflowIncludesSteps": "Рабочий процесс включает в себя {count} шаги:",
258
+ "missingRequiredFile": "Отсутствует необходимый файл: {file}",
259
+ "workflowStopped": "Рабочий процесс остановлен из-за сбоя.",
260
+ "workflowCompleted": "🎉Рабочий процесс завершен!",
261
+ "successfulSteps": "Успешные шаги: {count}",
262
+ "failedSteps": "Неудачные шаги: {count}",
263
+ "stepInitializeProject": "Инициализировать проект",
264
+ "stepCheckUsage": "Проверьте использование ключа",
265
+ "stepGenerateSummary": "Создать сводный отчет",
266
+ "runInitializationFirst": "Пожалуйста, сначала запустите инициализацию.",
267
267
  "initializationCheckPassed": "Проверка инициализации пройдена.",
268
- "runningStep": "Выполняется шаг: {stepName}",
268
+ "runningStep": "Шаг бега: {stepName}",
269
269
  "commandLabel": "Команда: {command}",
270
- "stepCompletedWithTime": "Шаг «{stepName}» выполнен за {duration} мс.",
271
- "stepCompleted": "Шаг «{stepName}» завершён.",
272
- "stepFailedWithError": "Шаг «{stepName}» завершился ошибкой: {error}",
273
- "requiredStepFailed": "Обязательный шаг не выполнен. Остановка.",
274
- "optionalStepFailed": "Необязательный шаг не выполнен. Продолжаем.",
275
- "stepRequired": "(Обязательно)",
276
- "stepOptional": "(Опционально)",
277
- "startingExecution": "Начало выполнения...",
270
+ "stepCompletedWithTime": "Шаг '{stepName}' завершено в {duration}РС.",
271
+ "stepCompleted": "Шаг '{stepName}' завершенный.",
272
+ "stepFailedWithError": "Шаг '{stepName}'не удалось с ошибкой: {error}",
273
+ "requiredStepFailed": "Не удалось выполнить требуемый шаг. Остановка рабочего процесса.",
274
+ "optionalStepFailed": "Необязательный шаг не выполнен. Продолжающийся рабочий процесс.",
275
+ "stepRequired": "(Необходимый)",
276
+ "stepOptional": "(Необязательный)",
277
+ "startingExecution": "Начинаем выполнение...",
278
278
  "pressEnterToContinue": "Нажмите Enter, чтобы продолжить...",
279
279
  "runningSelectedSteps": "Выполнение выбранных шагов...",
280
- "invalidStepNumber": "Недопустимый номер шага: {stepNum}",
281
- "executionReport": "Отчёт о выполнении:",
282
- "requiredFailedSteps": "Неудачных обязательных шагов: {count}",
280
+ "invalidStepNumber": "Неверный номер шага: {stepNum}",
281
+ "executionReport": "Отчет о выполнении:",
282
+ "requiredFailedSteps": "Не удалось выполнить необходимые шаги: {count}",
283
283
  "stepDetails": "Детали шага:",
284
- "reportSavedTo": "Отчёт сохранён в: {path}",
285
- "overallStatusSuccess": "УСПЕШНО",
286
- "overallStatusFailed": "НЕИСПОЛЬНО",
284
+ "reportSavedTo": "Отчет сохранен в: {path}",
285
+ "overallStatusSuccess": "УСПЕХ",
286
+ "overallStatusFailed": "НЕУСПЕШНЫЙ",
287
287
  "overallStatus": "Общий статус: {status}",
288
- "pressEnterForDefaults": "Нажмите Enter для значений по умолчанию.",
289
- "sourceDirPrompt": "Директория исходников (по умолчанию: {default}):",
290
- "sourceLangPrompt": "Исходный язык (по умолчанию: {default}):",
291
- "targetLangsPrompt": "Языки перевода (через запятую, по умолчанию: {default}):",
292
- "translationMarkerPrompt": "Маркер перевода (по умолчанию: {default}):",
293
- "outputDirPrompt": "Директория для отчётов (по умолчанию: {default}):",
288
+ "pressEnterForDefaults": "Нажмите Enter, чтобы использовать настройки по умолчанию для любого запроса.",
289
+ "sourceDirPrompt": "Введите исходный каталог (по умолчанию: {default}):",
290
+ "sourceLangPrompt": "Введите исходный язык (по умолчанию: {default}):",
291
+ "targetLangsPrompt": "Введите целевые языки (через запятую, по умолчанию: {default}):",
292
+ "translationMarkerPrompt": "Введите маркер перевода (по умолчанию: {default}):",
293
+ "outputDirPrompt": "Введите выходной каталог для отчетов (по умолчанию: {default}):",
294
294
  "settingsUpdatedSuccessfully": "Настройки успешно обновлены!",
295
295
  "errorConfiguringSettings": "Ошибка настройки параметров: {error}",
296
- "configurationComplete": "Настройка завершена.",
297
- "runAutoRunCommand": "Теперь вы можете запустить команду auto-run.",
298
- "configurationFailed": "Не удалось настроить: {error}",
299
- "noValidStepNumbers": "Не указан ни один корректный номер шага.",
300
- "autoRunFailed": "Auto-run завершился с ошибкой: {error}",
301
- "stepCompleteTranslations": "Завершение переводов",
296
+ "configurationComplete": "Конфигурация завершена.",
297
+ "runAutoRunCommand": "Теперь вы можете запустить команду автозапуска.",
298
+ "configurationFailed": "Конфигурация не удалась: {error}",
299
+ "noValidStepNumbers": "Не указаны допустимые номера шагов.",
300
+ "autoRunFailed": "Не удалось выполнить автозапуск: {error}",
301
+ "stepCompleteTranslations": "Полные переводы",
302
302
  "stepAnalyzeSizing": "Анализ размеров",
303
303
  "stepCompletedIcon": "✅",
304
- "stepRunningWithNumber": "[{stepNumber}/{totalSteps}] Выполнение шага «{stepName}»...",
304
+ "stepRunningWithNumber": "[{stepNumber}/{totalSteps}] Шаг '{stepName}' бег...",
305
305
  "stepFailedIcon": "❌",
306
- "translationLoadWarning": "Предупреждение: не удалось загрузить переводы {lang}",
306
+ "translationLoadWarning": "Предупреждение: не удалось загрузить {lang} переводы",
307
307
  "configReadError": "Ошибка чтения {file}"
308
308
  },
309
309
  "analyze": {
310
- "help_message": "I18n Анализатор переводов Использование: node i18ntk-analyze.js [опции] Опции: --source-dir <dir> Директория исходников для сканирования (по умолчанию: ./locales) --i18n-dir <dir> Директория I18n (по умолчанию: ./locales) --output-report Сгенерировать подробный отчёт --output-dir <dir> Директория для отчётов (по умолчанию: ./i18ntk-reports) --help Показать справку Примеры: node i18ntk-analyze.js --output-report node i18ntk-analyze.js --source-dir=./app --i18n-dir=./locales node i18ntk-analyze.js --output-dir=./analysis --output-report",
311
- "source_directory": "📁 Директория исходников: {sourceDir}",
312
- "i18n_directory": "🌐 Директория I18n: {i18nDir}",
313
- "loading_translation_files": "📋 Загрузка файлов переводов...",
314
- "sourceDirectoryLabel": "📁 Директория исходников: {sourceDir}",
315
- "sourceLanguageLabel": "🌍 Исходный язык: {sourceLanguage}",
316
- "strictModeLabel": "⚙️ Режим строгого контроля: {mode}",
317
- "found_translation_files_count": "✅ Найдено файлов переводов: {count}",
318
- "analyzing_translations": "🔍 Анализ переводов...",
319
- "analysis_completed_successfully": "🎉 Анализ успешно завершён!",
310
+ "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",
311
+ "source_directory": "📁 Исходный каталог: {sourceDir}",
312
+ "i18n_directory": "🌐 Каталог I18n: {i18nDir}",
313
+ "loading_translation_files": "📋 Загрузка файлов перевода...",
314
+ "sourceDirectoryLabel": "📁 Каталог исходников: {sourceDir}",
315
+ "sourceLanguageLabel": "🌍Исходный язык: {sourceLanguage}",
316
+ "strictModeLabel": "⚙️ Строгий режим: {mode}",
317
+ "found_translation_files_count": "✅ Найден {count} файлы перевода",
318
+ "analyzing_translations": "🔍Анализ переводов...",
319
+ "analysis_completed_successfully": "🎉Анализ успешно завершен!",
320
320
  "analysis_results": "📊 РЕЗУЛЬТАТЫ АНАЛИЗА",
321
321
  "language_analysis_stats": "{language}: {translatedKeys}/{totalKeys} ({percentage}% переведено)",
322
322
  "sample_missing_keys": "Пример отсутствующих ключей:",
323
323
  "missing_key": "- {key}",
324
- "and_more_missing": "...и ещё {count}.",
324
+ "and_more_missing": "...и {count} более.",
325
325
  "sample_unused_keys": "Пример неиспользуемых ключей:",
326
326
  "unused_key": "- {key}",
327
- "and_more_unused": "...и ещё {count}.",
327
+ "and_more_unused": "...и {count} более.",
328
328
  "recommendations": "📋 РЕКОМЕНДАЦИИ",
329
- "add_missing_translations": "💡 Добавьте недостающие переводы для повышения покрытия.",
330
- "remove_unused_translations": "💡 Удалите неиспользуемые переводы для чистоты проекта.",
329
+ "add_missing_translations": "💡 Добавьте недостающие переводы, чтобы улучшить охват.",
330
+ "remove_unused_translations": "💡 Удалите неиспользуемые переводы, чтобы сохранить ваш проект в чистоте.",
331
331
  "next_steps": "📋 ДАЛЬНЕЙШИЕ ШАГИ",
332
- "review_analysis_results": "1. Просмотрите результаты анализа в консоли или в сгенерированном отчёте.",
333
- "run_with_output_report": "2. Запустите с --output-report для подробного отчёта.",
332
+ "review_analysis_results": "1. Просмотрите результаты анализа в консоли или созданном отчете.",
333
+ "run_with_output_report": "2. Запустите --output-report для получения подробного отчета.",
334
334
  "add_or_remove_translations": "3. Добавьте недостающие переводы или удалите неиспользуемые.",
335
- "rerun_analysis": "4. Повторно запустите анализ для проверки изменений.",
336
- "analysis_summary": "📊 ИТОГ АНАЛИЗА",
337
- "source_files_scanned": "Просканировано файлов исходников: {fileCount}",
338
- "translation_files_checked": "Проверено файлов переводов: {translationFileCount}",
335
+ "rerun_analysis": "4. Повторно проведите анализ для проверки улучшений.",
336
+ "analysis_summary": "📊 РЕЗЮМЕ АНАЛИЗА",
337
+ "source_files_scanned": "Исходные файлы отсканированы: {fileCount}",
338
+ "translation_files_checked": "Файлы перевода проверены: {translationFileCount}",
339
339
  "total_keys": "Всего ключей: {totalKeys}",
340
- "translated_keys": "Переведено ключей: {translatedKeys}",
341
- "missing_keys": "Отсутствующих ключей: {missingKeys}",
342
- "unused_keys": "Неиспользуемых ключей: {unusedKeys}",
343
- "translation_coverage": "Покрытие переводов: {coverage}%",
344
- "analysis_passed_for_language": "✅ Анализ пройден для {language}",
345
- "analysis_failed_for_language": "❌ Анализ не пройден для {language} ({missingKeys} отсутствует, {unusedKeys} не используется)",
346
- "starting": "🔍 Запуск анализа переводов...",
347
- "foundLanguages": "📋 Найдено языков для анализа: {count}: {languages}",
348
- "analyzing": "🔄 Анализируется {language}...",
349
- "reportTitle": "📊 ОТЧЁТ ОБ АНАЛИЗЕ ПЕРЕВОДОВ",
340
+ "translated_keys": "Переведенные ключи: {translatedKeys}",
341
+ "missing_keys": "Недостающие ключи: {missingKeys}",
342
+ "unused_keys": "Неиспользуемые ключи: {unusedKeys}",
343
+ "translation_coverage": "Охват перевода: {coverage}%",
344
+ "analysis_passed_for_language": "✅ Анализ сдан на {language}",
345
+ "analysis_failed_for_language": "❌ Анализ не удался {language} ({missingKeys} отсутствующий, {unusedKeys} неиспользованный)",
346
+ "starting": "🔍 Начинаем анализ перевода...",
347
+ "foundLanguages": "📋 Найден {count} языки для анализа: {languages}",
348
+ "analyzing": "🔄Анализ {language}...",
349
+ "reportTitle": "📊 ОТЧЕТ ОБ АНАЛИЗЕ ПЕРЕВОДА",
350
350
  "generated": "Сгенерировано: {timestamp}",
351
- "status": "Статус: {translated}/{total} ключей ({percentage}% переведено)",
352
- "filesAnalyzed": "Просмотрено файлов: {analyzed}/{total}",
353
- "keysNeedingTranslation": "Ключей, требующих перевода: {count}",
354
- "fileBreakdown": "📋 РАЗБИВКА ПО ФАЙЛАМ",
351
+ "status": "Статус: {translated}/{total} ключи ({percentage}% переведено)",
352
+ "filesAnalyzed": "Проанализированные файлы: {analyzed}/{total}",
353
+ "keysNeedingTranslation": "Ключи, требующие перевода: {count}",
354
+ "fileBreakdown": "📋 РАЗБИВКА ФАЙЛОВ",
355
355
  "error": "Ошибка",
356
- "completed": "✅ Анализ завершён для {language}",
357
- "progress": "📊 Общий прогресс: обработано {translated}/{total} языков",
358
- "reportSaved": "Отчёт сохранён: {reportPath}",
359
- "summary": "📊 СВОДКА АНАЛИЗА",
360
- "finished": "✅ Анализ успешно завершён!",
361
- "statusFileMissing": "❌ Файл перевода отсутствует",
362
- "sourceKeys": "📊 Исходных ключей: {count}",
356
+ "completed": "✅ Анализ выполнен на {language}",
357
+ "progress": "📊 Общий прогресс: {translated}/{total} обработанные языки",
358
+ "reportSaved": "Отчет сохранен: {reportPath}",
359
+ "summary": "📊 РЕЗЮМЕ АНАЛИЗА",
360
+ "finished": "✅ Анализ выполнен успешно!",
361
+ "statusFileMissing": "❌ Отсутствует файл перевода",
362
+ "sourceKeys": "📊 Исходные ключи: {count}",
363
363
  "translation": "📊 Перевод: {translated}/{total} ({percentage}%)",
364
- "structure": "🗂️ Структура: {status}",
365
- "consistent": "Согласовано",
366
- "inconsistent": "Несогласовано",
367
- "missingKeys": "Отсутствующих ключей: {count}",
368
- "extraKeys": "Лишних ключей: {count}",
369
- "issues": "⚠️ Найдено проблем: {count}",
364
+ "structure": "🗂️Состав: {status}",
365
+ "consistent": "Последовательный",
366
+ "inconsistent": "непоследовательный",
367
+ "missingKeys": "Недостающие ключи: {count}",
368
+ "extraKeys": "Дополнительные ключи: {count}",
369
+ "issues": "⚠️ Обнаружены проблемы: {count}",
370
370
  "issueType": {
371
371
  "not_translated": "Не переведено: {count}",
372
372
  "empty_value": "Пустые значения: {count}",
373
373
  "partial_translation": "Частичные переводы: {count}",
374
- "format_mismatch": "Несоответствия формата: {count}",
375
- "type_mismatch": "Несоответствия типа: {count}",
376
- "structure_mismatch": "Несоответствия структуры: {count}",
377
- "same_as_source": "Совпадает с исходником: {count}"
374
+ "format_mismatch": "Несоответствие формата: {count}",
375
+ "type_mismatch": "Типовые несоответствия: {count}",
376
+ "structure_mismatch": "Несоответствие структуры: {count}",
377
+ "same_as_source": "То же, что источник: {count}"
378
378
  },
379
379
  "keysToTranslate": "📋 КЛЮЧИ ДЛЯ ПЕРЕВОДА",
380
380
  "key": "Ключ",
381
381
  "english": "Английский",
382
- "needsTranslation": "ТРЕБУЕТ ПЕРЕВОДА",
383
- "andMoreKeys": "...и ещё {count} ключей.",
384
- "noLanguages": "⚠️ Целевые языки не найдены.",
385
- "languageStats": "{language}: {percentage}% готово ({translated}/{total} ключей)",
386
- "invalidReportFilePath": "Неверный путь к файлу отчёта",
387
- "failedToWriteReportFile": "Не удалось безопасно записать файл отчёта"
382
+ "needsTranslation": "ТРЕБУЕТСЯ ПЕРЕВОД",
383
+ "andMoreKeys": "...и {count} больше ключей.",
384
+ "noLanguages": "⚠️ Целевые языки не найдены.",
385
+ "languageStats": "{language}: {percentage}% полный ({translated}/{total} ключи)",
386
+ "invalidReportFilePath": "Неверный путь к файлу отчета",
387
+ "failedToWriteReportFile": "Не удалось безопасно записать файл отчета."
388
388
  },
389
389
  "complete": {
390
390
  "configLoadedSuccessfully": "Конфигурация успешно загружена",
391
- "configLoadingFailed": "Сбой загрузки конфигурации",
392
- "sourceLanguageNotFound": "Исходный язык не найден",
393
- "couldNotParseTarget": "Не удалось разобрать целевой язык",
394
- "couldNotParseSource": "Не удалось разобрать исходный язык",
395
- "reportGenerated": "Отчёт сгенерирован",
396
- "generateReportPrompt": "Сгенерировать отчёт?",
397
- "title": "🌍 ЗАВЕРШЕНИЕ I18NTK ПЕРЕВОДА",
398
- "separator": "============================================================",
399
- "sourceDir": "📁 Директория исходников: {sourceDir}",
391
+ "configLoadingFailed": "Загрузка конфигурации не удалась",
392
+ "sourceLanguageNotFound": "Каталог исходного языка не найден: {sourceLanguage}",
393
+ "couldNotParseTarget": "Не удалось проанализировать целевой файл: {file}",
394
+ "couldNotParseSource": "Не удалось разобрать исходный файл: {file}",
395
+ "reportGenerated": "Отчет создан: {path}",
396
+ "generateReportPrompt": "Хотите, чтобы был создан отчет?",
397
+ "title": "🌍 ЗАВЕРШЕНИЕ ПЕРЕВОДА I18NTK",
398
+ "separator": "=========================================================",
399
+ "sourceDir": "📁 Исходный каталог: {sourceDir}",
400
400
  "sourceLanguage": "🌐 Исходный язык: {sourceLanguage}",
401
- "dryRunMode": "🧪 Режим тестового запуска — без изменений",
402
- "languages": "🌍 Доступные языки: {languages}",
403
- "addingMissingKeys": "➕ Добавление отсутствующих ключей в файлы переводов...",
404
- "processing": "🔄 Обработка {language}...",
405
- "addedKeys": "✅ Добавлено {count} отсутствующих ключей",
406
- "noChangesNeeded": "✅ Для {language} изменений не требуется",
407
- "summaryTitle": "📊 ИТОГОВАЯ СВОДКА",
401
+ "dryRunMode": "🧪 Режим пробного запуска — никаких изменений вноситься не будет.",
402
+ "languages": "🌍Доступные языки: {languages}",
403
+ "addingMissingKeys": "➕ Добавление недостающих ключей в файлы перевода...",
404
+ "processing": "🔄Обработка {language}...",
405
+ "addedKeys": "✅ Добавлено {count} недостающие ключи",
406
+ "noChangesNeeded": "✅ Никаких изменений не требуется {language}",
407
+ "summaryTitle": "📊 РЕЗЮМЕ ЗАВЕРШЕНИЯ",
408
408
  "totalChanges": "📝 Всего изменений: {totalChanges}",
409
- "languagesProcessed": "🌍 Обработано языков: {languagesProcessed}",
410
- "missingKeysAdded": "➕ Добавлено недостающих ключей: {missingKeysAdded}",
409
+ "languagesProcessed": "🌍 Обработанные языки: {languagesProcessed}",
410
+ "missingKeysAdded": "➕ Добавлены недостающие клавиши: {missingKeysAdded}",
411
411
  "nextStepsTitle": "📋 ДАЛЬНЕЙШИЕ ШАГИ",
412
412
  "nextStep1": "1. Запустите анализ использования:",
413
- "nextStep2": "node i18ntk-usage.js --output-report",
414
- "nextStep3": "2. Проверьте переводы:",
415
- "nextStep4": "node i18ntk-validate.js",
416
- "nextStep5": "3. Проанализируйте шаблоны:",
417
- "nextStep6": "node i18ntk-analyze.js",
413
+ "nextStep2": "узел i18ntk-usage.js --output-report",
414
+ "nextStep3": "2. Проверка перевода:",
415
+ "nextStep4": "узел i18ntk-validate.js",
416
+ "nextStep5": "3. Анализируйте закономерности:",
417
+ "nextStep6": "узел i18ntk-analyze.js",
418
418
  "allKeysAvailable": "🎉 Все ключи перевода теперь доступны!",
419
- "runWithoutDryRun": "💡 Запустите без --dry-run для применения изменений",
420
- "deletingOldReport": "🗑️ Удаление старого отчёта...",
421
- "generatingFreshAnalysis": "📊 Генерация нового анализа использования...",
422
- "couldNotGenerate": "❌ Не удалось сгенерировать анализ использования",
423
- "reportNotFound": "📋 Отчёт об использовании не найден. Используются общие ключи...",
424
- "foundMissingKeys": "📋 Найдено {count} отсутствующих ключей по результатам анализа использования",
425
- "couldNotParse": "❌ Не удалось разобрать отчёт об использовании. Используются общие ключи...",
426
- "errorDuringCompletion": "❌ Ошибка во время завершения: {error}",
427
- "fatalError": "❌ Фатальная ошибка: {error}",
428
- "configurationValidationFailed": "Сбой проверки конфигурации: отсутствуют обязательные поля"
419
+ "runWithoutDryRun": "💡 Запустите без --dry-run, чтобы применить изменения.",
420
+ "deletingOldReport": "🗑️ Удаление старого отчета...",
421
+ "generatingFreshAnalysis": "📊 Создание свежего анализа использования...",
422
+ "couldNotGenerate": "❌ Не удалось создать анализ использования.",
423
+ "reportNotFound": "📋 Отчет об использовании не найден. Использование общих ключей...",
424
+ "foundMissingKeys": "📋 Найден {count} недостающие ключи из анализа использования",
425
+ "couldNotParse": "❌ Не удалось проанализировать отчет об использовании. Использование общих ключей...",
426
+ "errorDuringCompletion": "❌ Ошибка при завершении: {error}",
427
+ "fatalError": "❌ Неустранимая ошибка: {error}",
428
+ "configurationValidationFailed": "Проверка конфигурации не удалась: отсутствуют обязательные поля."
429
429
  },
430
430
  "sizing": {
431
- "separator": "================================================================================",
432
- "lineSeparator": "--------------------------------------------------------------------------------",
431
+ "separator": "===========================================================================",
432
+ "lineSeparator": "----------------------------------------------------------------------------------",
433
433
  "analysisStats": "{stats}",
434
- "sourceDirectoryLabel": "📁 Директория исходников: {sourceDir}",
435
- "sourceLanguageLabel": "🌍 Исходный язык: {sourceLanguage}",
436
- "strictModeLabel": "⚙️ Режим строгого контроля: {mode}",
437
- "invalidSourceDirectoryError": "Недопустимый путь к директории исходников: {sourceDir}",
438
- "sourceDirectoryNotFoundError": "Директория исходников не найдена: {sourceDir}",
439
- "invalidOutputDirectoryError": "Недопустимый путь к директории вывода: {outputDir}",
440
- "invalidReportFileError": "Недопустимый путь к файлу отчёта",
441
- "problematic_keys": "Проблемные ключи: {problematicKeys}",
442
- "problematicKeysLabel": "Проблемные ключи: {problematicKeys}",
434
+ "sourceDirectoryLabel": "📁 Исходный каталог: {sourceDir}",
435
+ "sourceLanguageLabel": "🌍Исходный язык: {sourceLanguage}",
436
+ "strictModeLabel": "⚙️ Строгий режим: {mode}",
437
+ "invalidSourceDirectoryError": "Неверный путь к исходному каталогу: {sourceDir}",
438
+ "sourceDirectoryNotFoundError": "Исходный каталог не найден: {sourceDir}",
439
+ "invalidOutputDirectoryError": "Неверный путь к выходному каталогу: {outputDir}",
440
+ "invalidReportFileError": "Неверный путь к файлу отчета",
441
+ "problematic_keys": "Проблемные клавиши: {problematicKeys}",
442
+ "problematicKeysLabel": "Проблемные клавиши: {problematicKeys}",
443
443
  "long_translations": "Длинные переводы: {longTranslations}",
444
- "failedToSaveReportError": "Не удалось безопасно сохранить отчёт",
445
- "invalidCsvFileError": "Недопустимый путь к CSV-файлу",
446
- "failedToSaveCsvError": "Не удалось безопасно сохранить CSV-отчёт",
444
+ "failedToSaveReportError": "Не удалось безопасно сохранить отчет.",
445
+ "invalidCsvFileError": "Неверный путь к файлу CSV.",
446
+ "failedToSaveCsvError": "Не удалось безопасно сохранить отчет CSV.",
447
447
  "fatalError": "❌ Анализ размеров не удался: {error}",
448
- "starting_i18n_sizing_analysis": "Запуск анализа размеров i18n...",
449
- "source_directory": "Директория исходников: {sourceDir}",
450
- "found_languages": "Найдены языки: {languages}",
448
+ "starting_i18n_sizing_analysis": "Начинаем анализ размеров i18n...",
449
+ "source_directory": "Исходный каталог: {sourceDir}",
450
+ "found_languages": "Найдено языков: {languages}",
451
451
  "analyzing_file_sizes": "Анализ размеров файлов...",
452
- "analyzing_translation_content": "Анализ содержимого переводов...",
453
- "generating_size_comparisons": "Генерация сравнений размеров...",
452
+ "analyzing_translation_content": "Анализ содержания перевода...",
453
+ "generating_size_comparisons": "Создание сравнений размеров...",
454
454
  "no_languages_found_for_comparison": "Языки для сравнения не найдены",
455
- "sizing_analysis_results": "Результаты анализа размеров i18n",
455
+ "sizing_analysis_results": "Результаты анализа размеров I18n",
456
456
  "file_sizes_title": "Размеры файлов",
457
- "file_sizes_header": "Язык Размер(КБ) Строки Символы",
458
- "file_size_row": "{lang} {sizeKB} {lines} {characters}",
459
- "language_statistics_title": "Статистика по языкам",
460
- "language_stats_header": "Язык Ключей Символов Ср. длина Макс. длина Пустые Длинные",
461
- "language_stats_row": "{lang} {totalKeys} {totalCharacters} {averageKeyLength} {maxKeyLength} {emptyKeys} {longKeys}",
457
+ "file_sizes_header": "Язык Размер (КБ) Строки Символы",
458
+ "file_size_row": "{lang} {sizeKB} {lines} {characters}",
459
+ "language_statistics_title": "Языковая статистика",
460
+ "language_stats_header": "Языковые клавиши Символы Средняя длина Макс. длина Пусто Длинный",
461
+ "language_stats_row": "{lang} {totalKeys} {totalCharacters} {averageKeyLength} {maxKeyLength} {emptyKeys} {longKeys}",
462
462
  "size_variations_title": "Вариации размеров",
463
- "size_variations_header": "Язык Разн. симв. % Разн. Проблемные",
464
- "size_variation_row": "{lang} {characterDifference} {percentageDifference}% {problematic}",
463
+ "size_variations_header": "Язык Char Diff % Diff Проблема",
464
+ "size_variation_row": "{lang} {characterDifference} {percentageDifference}% {problematic}",
465
465
  "problematic_yes": "Да",
466
466
  "problematic_no": "Нет",
467
467
  "recommendations_title": "Рекомендации",
468
468
  "recommendation_item": "{index}. {recommendation}",
469
- "problematic_key_detail": "{index}. Ключ: '{key}' Вариации: {variations}",
470
- "generating_detailed_report": "Генерация подробного отчёта...",
471
- "keysHaveSignificantSizeVariations": "ключи имеют значительные вариации в размерах",
472
- "longTranslationsDetected": "{lang} содержит {data.longKeys} переводов длиной более 100 символов рассмотрите возможность их разбить",
469
+ "problematic_key_detail": "{index}. Ключ: '{key}' - Вариации: {variations}",
470
+ "generating_detailed_report": "Создание подробного отчета...",
471
+ "keysHaveSignificantSizeVariations": "ключи имеют значительные различия в размерах",
472
+ "longTranslationsDetected": "${lang} имеет переводы ${data.longKeys} длиной более 100 символов – рассмотрите возможность их разделения",
473
473
  "longer": "дольше",
474
- "shorter": "коротше",
475
- "review_translations": "Рассмотрите возможность пересмотра переводов {lang} они на {percentageDifference}% {comparison} чем базовый",
476
- "report_saved_to": "Отчёт сохранён в: {reportPath}",
477
- "considerReviewingTranslations": "Рассмотрите возможность пересмотра переводов {lang} они на {data.percentageDifference}% длиннее базового",
478
- "csv_report_saved_to": "CSV-отчет сохранен в: {csvPath}",
474
+ "shorter": "короче",
475
+ "review_translations": "Рассмотрите возможность просмотра {lang} переводы - они есть {percentageDifference}% {comparison} чем базовый уровень",
476
+ "report_saved_to": "Отчет сохранен в: {reportPath}",
477
+ "considerReviewingTranslations": "Рассмотрите возможность просмотра ${lang} переводы – они на ${data.percentageDifference} % длиннее базового уровня.",
478
+ "csv_report_saved_to": "Отчет в формате CSV сохранен в: {csvPath}",
479
479
  "human_report_saved": "Читаемый отчет сохранен: {reportPath}",
480
480
  "folder_summary_title": "Сводка папки",
481
- "folder_summary_table_header": "Язык Размер(KB) Ключи Средняя длина Всего символов",
482
- "folder_summary_row": "{lang} {sizeKB} {totalKeys} {avgLength} {totalChars}",
481
+ "folder_summary_table_header": "Язык Размер (КБ) Ключи Средняя длина Всего символов",
482
+ "folder_summary_row": "{lang} {sizeKB} {totalKeys} {avgLength} {totalChars}",
483
483
  "language_comparison_title": "Сравнение языков",
484
- "language_comparison_row": "{lang}: {diff} символов ({percent}%) {status}",
485
- "summary_stats": "📊 Сводка: {totalLanguages} языков, {totalKeys} ключей - Отчеты сохранены в {reportPath}",
486
- "detailedKeysDescription": "Показать детальный анализ ключей в консоли",
487
- "too_many_keys_warning": "⚠️ Слишком много ключей для отображения в консоли - см. подробный отчет для полного анализа",
488
- "no_translation_files_found": "Файлы переводов не найдены",
489
- "analysis_completed": "Анализ завершен за {duration}мс",
484
+ "language_comparison_row": "{lang}: {diff} символы ({percent}%) {status}",
485
+ "summary_stats": "📊Резюме: {totalLanguages} языки, {totalKeys} клавиши отчеты сохраняются в {reportPath}",
486
+ "detailedKeysDescription": "Показать подробный анализ на уровне ключей в консоли",
487
+ "too_many_keys_warning": "⚠️ Слишком много ключей для отображения в консоли для полного анализа проверьте файл подробного отчета.",
488
+ "no_translation_files_found": "Файлы перевода не найдены",
489
+ "analysis_completed": "Анализ завершен в {duration}РС",
490
490
  "analysis_failed": "Анализ не удался: {errorMessage}",
491
- "starting_analysis": "🔍 Начало анализа...",
492
- "found_files": "📂 Найдено {count} файлов",
493
- "failed_to_parse_language_error": "Не удалось разобрать переводы {language}: {errorMessage}",
491
+ "starting_analysis": "Начинаю анализ...",
492
+ "found_files": "Найденный {count} файлы",
493
+ "failed_to_parse_language_error": "Не удалось проанализировать {language} переводы: {errorMessage}",
494
494
  "recommendations": {
495
- "keys_have_significant_size_variations": "ключи имеют значительные вариации в размерах",
496
- "consider_reviewing_translations": "Рассмотрите возможность пересмотра переводов {lang} они на {percentageDifference}% {comparison} базового",
497
- "long_translations_detected": "{lang} содержит {longKeys} переводов длиной более {threshold} символов рассмотрите возможность их разбить"
495
+ "keys_have_significant_size_variations": "ключи имеют значительные различия в размерах",
496
+ "consider_reviewing_translations": "Рассмотрите возможность просмотра {lang} переводы - они есть {percentageDifference}% {comparison} чем базовый уровень",
497
+ "long_translations_detected": "{lang} имеет {longKeys} переводы длиннее, чем {threshold} персонажи - подумайте о том, чтобы разбить их"
498
498
  },
499
499
  "detailed_key_analysis_title": "Детальный ключевой анализ",
500
- "key_analysis_detail": "{lang}: {length} символов ({status}) – {translation}",
500
+ "key_analysis_detail": "{lang}: {length} символы ({status}) - {translation}",
501
501
  "key_analysis_header": "Ключ: {key}",
502
502
  "status_empty": "пустой",
503
503
  "status_long": "длинный",
504
504
  "status_ok": "хорошо"
505
505
  },
506
506
  "usage": {
507
- "help_message": "I18n Анализатор использования Использование: node 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",
508
- "source_directory_thissourcedir": "📁 Директория исходников: {sourceDir}",
507
+ "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",
508
+ "source_directory_thissourcedir": "📁 Исходный каталог: {sourceDir}",
509
509
  "translationCompletenessTitle": "🌍 Полнота перевода:",
510
- "i18n_directory_thisi18ndir": "🌐 Директория I18n: {i18nDir}",
511
- "failed_to_parse_filename_error": "⚠️ Не удалось разобрать {fileName}: {errorMessage}",
510
+ "i18n_directory_thisi18ndir": "🌐 Каталог I18n: {i18nDir}",
511
+ "failed_to_parse_filename_error": "⚠️ Не удалось разобрать {fileName}: {errorMessage}",
512
512
  "analyzing_source_files": "🔍 Анализ исходных файлов...",
513
- "found_files_in_source": "📂 Найдено файлов в директории исходников: {numFiles}",
514
- "found_thisusedkeyssize_unique_": "🎯 Обнаружено уникальных используемых ключей: {usedKeysSize}",
515
- "total_key_usages_totalkeysfoun": "📊 Всего использований ключей: {totalKeysFound}",
513
+ "found_files_in_source": "📂 Найден {numFiles} файлы в исходном каталоге",
514
+ "found_thisusedkeyssize_unique_": "🎯 Найден {usedKeysSize} уникальные используемые ключи",
515
+ "total_key_usages_totalkeysfoun": "📊 Общее количество использований ключей: {totalKeysFound}",
516
516
  "loading_available_translation_": "📋 Загрузка доступных ключей перевода...",
517
- "found_thisavailablekeyssize_av": "✅ Найдено доступных ключей: {availableKeysSize}",
518
- "foundTranslationFiles": "✅ Найдено файлов переводов: {count}",
519
- "errorReadingI18nDirectory": "⚠️ Чтение i18n директории не удалось: {error}",
517
+ "found_thisavailablekeyssize_av": "✅ Найден {availableKeysSize} доступные ключи",
518
+ "foundTranslationFiles": "✅ Найден {count} файлы перевода",
519
+ "errorReadingI18nDirectory": "⚠️ Ошибка чтения каталога i18n: {error}",
520
520
  "pressEnterToReturnToMenu": "📝 Нажмите Enter, чтобы вернуться в главное меню...",
521
- "notTranslatedKeysTotal": "⚠️ Непереведённые ключи: {total}",
522
- "noSourceFilesFound": "⚠️ В директории исходников не найдено файлов.",
523
- "reviewNotTranslatedKeys": "💡 Проверьте непереведённые ключи",
524
- "analysisCompletedSuccessfully": "🎉 Анализ успешно завершён!",
525
- "detectedSourceDirectory": "Обнаружена директория исходников: {sourceDir}",
526
- "detectedI18nDirectory": "Обнаружена директория I18n: {i18nDir}",
527
- "fileInfo": "📄 {namespace}: {keys} ключей",
521
+ "notTranslatedKeysTotal": "⚠️ Не переведенные ключи: {total}",
522
+ "noSourceFilesFound": "⚠️ В исходном каталоге не найдено исходных файлов.",
523
+ "reviewNotTranslatedKeys": "💡 Просмотр не переведенных ключей",
524
+ "analysisCompletedSuccessfully": "🎉Анализ успешно завершен!",
525
+ "detectedSourceDirectory": "Обнаружен исходный каталог: {sourceDir}",
526
+ "detectedI18nDirectory": "Обнаружен каталог i18n: {i18nDir}",
527
+ "fileInfo": "📄 {namespace}: {keys} ключи",
528
528
  "failedToAnalyzeUsage": "❌ Не удалось проанализировать использование: {error}",
529
529
  "failedToAnalyzeFile": "❌ Не удалось проанализировать файл: {error}",
530
- "failedToExtractKeys": "Не удалось извлечь ключи",
531
- "analysisFailedError": "❌ Анализ не удался: {error}",
530
+ "failedToExtractKeys": "Не удалось извлечь ключи из {filePath}: {error}",
531
+ "analysisFailedError": "❌ Анализ не удался: {error}",
532
532
  "analyzerInitialized": "Анализатор инициализирован",
533
- "analyzerInitFailed": "Не удалось инициализировать анализатор: {error}",
534
- "argsParsed": "Аргументы разобраны",
535
- "processedFiles": "Обработано {processedFiles} из {totalFiles} файлов.",
536
- "argsParseFailed": "Не удалось разобрать аргументы: {error}",
537
- "translationDiscoveryError": "Ошибка обнаружения переводов: {error}",
538
- "fileTraversalError": "⚠️ Ошибка обхода файлов: {error}",
533
+ "analyzerInitFailed": "Инициализация анализатора не удалась: {error}",
534
+ "argsParsed": "Аргументы проанализированы",
535
+ "processedFiles": "Обработано {processedFiles} из {totalFiles} файлы.",
536
+ "argsParseFailed": "Разбор аргументов не удался: {error}",
537
+ "translationDiscoveryError": "Ошибка обнаружения перевода: {error}",
538
+ "fileTraversalError": "Ошибка обхода файла: {error}",
539
539
  "sourceEqualsI18nWarn": "⚠️Исходный каталог и каталог i18n совпадают. Это может вызвать проблемы с анализом.",
540
540
  "i18nEqualsSourceWarn": "⚠️ Каталог I18n и исходный каталог совпадают. Это может вызвать проблемы с анализом.",
541
- "usageAnalysisFailed": "⚠️ Анализ использования не удался: {error}",
542
- "translationFileParseError": "⚠️ Ошибка парсинга файла перевода: {error}",
543
- "translationKeysLoadError": "⚠️ Ошибка загрузки ключей перевода: {error}",
544
- "languageCompletenessStats": "🌍 {language}: {translated}/{total} ({completeness}% переведено)",
545
- "missingKeysCount": "⚠️ Отсутствующих ключей: {count}",
546
- "analyzingTranslationCompleteness": "⚠️ Анализ полноты перевода...",
547
- "unusedKeysCount": "Неиспользуемых ключей: {count}",
548
- "usedKeysCount": "Используемых ключей: {count}",
549
- "availableKeysCount": "Доступных ключей: {count}",
541
+ "usageAnalysisFailed": "⚠️ Анализ использования не удался: {error}",
542
+ "translationFileParseError": "⚠️ Ошибка разбора файла перевода: {error}",
543
+ "translationKeysLoadError": "⚠️ Ошибка загрузки ключей перевода: {error}",
544
+ "languageCompletenessStats": "🌐 {language}: {translated}/{total} ({completeness}% переведено)",
545
+ "missingKeysCount": "⚠️ Недостающие ключи: {count}",
546
+ "analyzingTranslationCompleteness": "Анализ полноты перевода...",
547
+ "unusedKeysCount": "Неиспользуемые ключи: {count}",
548
+ "usedKeysCount": "Используемые ключи: {count}",
549
+ "availableKeysCount": "Доступные ключи: {count}",
550
550
  "analysisResults": "Результаты анализа:",
551
- "i18nDirectoryNotFound": "⚠️ Директория I18n не найдена: {dir}",
552
- "sourceDirectoryNotFound": "⚠️ Директория исходников не найдена: {dir}",
551
+ "i18nDirectoryNotFound": "⚠️ Каталог I18n не найден. Пожалуйста, проверьте путь.",
552
+ "sourceDirectoryNotFound": "⚠️ Исходный каталог не найден: {dir}",
553
553
  "checkUsage": {
554
554
  "title": "🔍 АНАЛИЗ ИСПОЛЬЗОВАНИЯ I18NTK",
555
555
  "analyzing_source_files": "🔍 Анализ исходных файлов...",
556
- "source_directory_thissourcedir": "📁 Директория исходников: {sourceDir}",
557
- "i18n_directory_thisi18ndir": "🌐 Директория I18n: {i18nDir}",
558
- "found_files_in_source": "📂 Найдено файлов в директории исходников: {numFiles}",
559
- "no_source_files_found": "⚠️ В директории исходников не найдено файлов.",
560
- "processedFiles": "Обработано {processedFiles} из {totalFiles} файлов.",
561
- "failedToProcessFile": "❌ Обработка файла не удалась: {error}",
562
- "found_thisusedkeyssize_unique_": "🎯 Обнаружено уникальных используемых ключей: {usedKeysSize}",
563
- "total_key_usages_totalkeysfoun": "📊 Всего использований ключей: {totalKeysFound}",
564
- "loading_available_translation_": "📋 Загрузка доступных ключей перевода...",
565
- "found_thisavailablekeyssize_av": "✅ Найдено доступных ключей: {availableKeysSize}",
566
- "message": "Анализ использования ключей i18n в проекте.",
556
+ "source_directory_thissourcedir": "📁 Исходный каталог: {sourceDir}",
557
+ "i18n_directory_thisi18ndir": "📁 каталог i18n: {i18nDir}",
558
+ "found_files_in_source": " Найден {numFiles} файлы в исходном каталоге",
559
+ "no_source_files_found": "⚠️ В указанном каталоге не найдены исходные файлы.",
560
+ "processedFiles": "📊 Обработано {processedFiles} из {totalFiles} файлы",
561
+ "failedToProcessFile": "❌ Не удалось обработать",
562
+ "found_thisusedkeyssize_unique_": "🔍 Найден {usedKeysSize} уникальные используемые ключи",
563
+ "total_key_usages_totalkeysfoun": "📊 Общее количество использований ключей: {totalKeysFound}",
564
+ "loading_available_translation_": "📂 Загрузка доступных ключей перевода...",
565
+ "found_thisavailablekeyssize_av": "✅ Найден {availableKeysSize} доступные ключи",
566
+ "message": "Анализ использования ключа перевода в вашем проекте...",
567
567
  "usage_analysis_results": "📊 РЕЗУЛЬТАТЫ АНАЛИЗА ИСПОЛЬЗОВАНИЯ",
568
- "source_files_scanned_thisfileu": "Просканировано файлов: {fileUsageSize}",
569
- "available_translation_keys_thi": "Доступных ключей перевода: {availableKeysSize}",
570
- "used_translation_keys_thisused": "Используемых ключей перевода: {usedKeysSize}",
571
- "dynamic_keys_detected_dynamick": "Обнаружено динамических ключей: {dynamicKeysLength}",
572
- "unused_keys_unusedkeyslength": "Неиспользуемых ключей: {unusedKeysLength}",
573
- "missing_keys_missingkeyslength": "Отсутствующих ключей: {missingKeysLength}",
574
- "translation_completeness_title": "📊 ПОЛНОТА ПЕРЕВОДА",
575
- "language_completeness_stats": "{language}: {translated}/{total} ({completeness}% переведено)",
576
- "n_sample_unused_keys": "Пример неиспользуемых ключей:",
577
- "key": "- {key}",
578
- "and_unusedkeyslength_5_more": "...и ещё {count}.",
579
- "n_sample_missing_keys": "❌ ПРИМЕРЫ ОТСУТСТВУЮЩИХ КЛЮЧЕЙ (первые 5):",
580
- "and_missingkeyslength_5_more": "... и еще {count} отсутствующих ключей",
581
- "n_generating_detailed_report": "📊 Генерация подробного отчета...",
568
+ "source_files_scanned_thisfileu": "📁 Отсканированы исходные файлы: {fileUsageSize}",
569
+ "available_translation_keys_thi": " Доступные ключи перевода: {availableKeysSize}",
570
+ "used_translation_keys_thisused": "🔍 Используемые ключи перевода: {usedKeysSize}",
571
+ "dynamic_keys_detected_dynamick": " Обнаружены динамические клавиши: {dynamicKeysLength}",
572
+ "unused_keys_unusedkeyslength": "🗑️ Неиспользуемые ключи: {unusedKeysLength}",
573
+ "missing_keys_missingkeyslength": " Недостающие ключи: {missingKeysLength}",
574
+ "translation_completeness_title": "📈 ПОЛНОТА ПЕРЕВОДА",
575
+ "language_completeness_stats": "{language}: {translated}/{total} ключи ({percentage}%)",
576
+ "n_sample_unused_keys": "🗑️ ПРИМЕР НЕИСПОЛЬЗУЕМЫХ КЛЮЧЕЙ (первые 5):",
577
+ "key": "🔑 {key}",
578
+ "and_unusedkeyslength_5_more": "... и {count} больше неиспользуемых ключей",
579
+ "n_sample_missing_keys": "❌ ПРИМЕР ОТСУТСТВУЮЩИХ КЛЮЧЕЙ (первые 5):",
580
+ "and_missingkeyslength_5_more": "... и {count} еще недостающие ключи",
581
+ "n_generating_detailed_report": "📊 Формируем подробный отчет...",
582
582
  "report_saved_reportpath": "📄 Отчет сохранен: {reportPath}",
583
- "n_recommendations": "📋 РЕКОМЕНДАЦИИ",
584
- "consider_removing_unused_trans": "💡 Рассмотрите удаление неиспользуемых переводов для чистоты проекта.",
585
- "add_missing_translation_keys_t": "➕ Добавьте отсутствующие переводы ключей для поддержки согласованности",
586
- "review_dynamic_keys_manually_t": "🔍 Проверьте динамические ключи вручную (они могут быть валидными)",
587
- "all_translation_keys_are_prope": "✅ Все переводы ключей используются правильно!",
588
- "n_next_steps": "📋 ДАЛЬНЕЙШИЕ ШАГИ",
589
- "2_check_the_detailed_report_fo": "2. Проверьте подробный отчет для конкретных проблем",
590
- "help_message": "Использование анализатора использования I18n: node i18ntk-usage.js [options] Options: --source-dir <dir> Source directory to scan (default: ./src) --i18n-dir <dir> I18n directory (default: ./src/locales) --output-report Generate detailed report --output-dir <dir> Output directory for reports (default: ./reports) --help Show this help Examples: 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",
591
- "1_review_the_analysis_results": "1. Просмотрите результаты анализа в консоли или в отчёте.",
592
- "2_run_with_outputreport_for_de": "2. Запустите с --output-report для подробного отчёта.",
593
- "3_remove_unused_keys_or_add_mi": "3. Удалите неиспользуемые ключи или добавьте недостающие в код.",
594
- "4_rerun_analysis_to_verify_imp": "4. Повторно запустите анализ для проверки изменений.",
595
- "noSourceFilesFound": "Нет файлов для анализа.",
596
- "i18nDirectoryNotFound": "Директория I18n не найдена: {i18nDir}",
597
- "noTranslationLanguagesFound": "Целевые языки не найдены.",
583
+ "n_recommendations": "💡РЕКОМЕНДАЦИИ:",
584
+ "consider_removing_unused_trans": "🗑️ Рассмотрите возможность удаления неиспользуемых переводов, чтобы уменьшить размер пакета.",
585
+ "add_missing_translation_keys_t": "➕ Добавьте недостающие ключи перевода для обеспечения единообразия.",
586
+ "review_dynamic_keys_manually_t": "🔍 Проверьте динамические ключи вручную (они могут быть действительными)",
587
+ "all_translation_keys_are_prope": "✅ Все ключи перевода используются правильно!",
588
+ "n_next_steps": "🎯 СЛЕДУЮЩИЕ ШАГИ:",
589
+ "2_check_the_detailed_report_fo": "2. Проверьте подробный отчет на наличие конкретных проблем.",
590
+ "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",
591
+ "1_review_the_analysis_results": "1. Просмотрите результаты анализа в консоли или созданном отчете.",
592
+ "2_run_with_outputreport_for_de": "2. Запустите --output-report для получения подробного отчета.",
593
+ "3_remove_unused_keys_or_add_mi": "3. Удалите неиспользуемые ключи или добавьте недостающие ключи в исходный код.",
594
+ "4_rerun_analysis_to_verify_imp": "4. Повторно проведите анализ для проверки улучшений.",
595
+ "noSourceFilesFound": "Исходные файлы для анализа не найдены.",
596
+ "i18nDirectoryNotFound": "Каталог I18n не найден: {i18nDir}",
597
+ "noTranslationLanguagesFound": "Языки перевода не найдены.",
598
598
  "failedToAnalyzeFile": "Не удалось проанализировать файл {filePath}: {error}",
599
599
  "failedToAnalyzeLanguage": "Не удалось проанализировать язык {language}: {error}",
600
- "translationCompletenessAnalysisFailed": "Анализ полноты перевода не удался: {error}",
601
- "n": "\\n"
600
+ "translationCompletenessAnalysisFailed": "Не удалось выполнить анализ полноты перевода: {error}",
601
+ "n": "\\п"
602
602
  },
603
603
  "complete": {
604
- "configLoadedSuccessfully": "⚙️ Конфигурация успешно загружена",
605
- "configLoadingFailed": "⚙️ Загрузка конфигурации не удалась",
606
- "title": "🌍 I18NTK ПОЛНОТА ПЕРЕВОДА",
607
- "separator": "============================================================",
604
+ "configLoadedSuccessfully": "Конфигурация успешно загружена",
605
+ "configLoadingFailed": "Загрузка конфигурации не удалась",
606
+ "title": "🌍 ЗАВЕРШЕНИЕ ПЕРЕВОДА I18NTK",
607
+ "separator": "=========================================================",
608
608
  "sourceDir": "📁 Исходный каталог: {sourceDir}",
609
609
  "sourceLanguage": "🌐 Исходный язык: {sourceLanguage}",
610
- "dryRunMode": "🧪 Режим тестового запуска - изменения не будут применены",
611
- "languages": "🌍 Доступные языки: {languages}",
612
- "addingMissingKeys": "➕ Добавление отсутствующих ключей в файлы перевода...",
613
- "processing": "🔄 Обработка {language}...",
614
- "addedKeys": "✅ Добавлено {count} отсутствующих ключей",
610
+ "dryRunMode": "🧪 Режим пробного запуска никаких изменений вноситься не будет.",
611
+ "languages": "🌍Доступные языки: {languages}",
612
+ "addingMissingKeys": "➕ Добавление недостающих ключей в файлы перевода...",
613
+ "processing": "🔄Обработка {language}...",
614
+ "addedKeys": "✅ Добавлено {count} недостающие ключи",
615
615
  "changeDetails": "📝 {file}: {key}",
616
- "andMore": "...и ещё {count}",
617
- "noChangesNeeded": "✅ Для {language} не требуется изменений",
618
- "summaryTitle": "📊 Сводка по завершению перевода",
616
+ "andMore": "...и {count} более",
617
+ "noChangesNeeded": "✅ Никаких изменений не требуется {language}",
618
+ "summaryTitle": "📊 РЕЗЮМЕ ЗАВЕРШЕНИЯ",
619
619
  "totalChanges": "📝 Всего изменений: {totalChanges}",
620
- "languagesProcessed": "🌍 Обработано языков: {languagesProcessed}",
621
- "missingKeysAdded": "➕ Добавлено отсутствующих ключей: {missingKeysAdded}",
620
+ "languagesProcessed": "🌍 Обработанные языки: {languagesProcessed}",
621
+ "missingKeysAdded": "➕ Добавлены недостающие клавиши: {missingKeysAdded}",
622
622
  "nextStepsTitle": "📋 ДАЛЬНЕЙШИЕ ШАГИ",
623
623
  "nextStep1": "1. Запустите анализ использования:",
624
- "nextStep2": "node i18ntk-usage.js --output-report",
625
- "nextStep3": "2. Проверьте переводы:",
626
- "nextStep4": "node i18ntk-validate.js",
627
- "nextStep5": "3. Проверьте шаблоны:",
628
- "nextStep6": "node i18ntk-analyze.js",
624
+ "nextStep2": "узел i18ntk-usage.js --output-report",
625
+ "nextStep3": "2. Проверка перевода:",
626
+ "nextStep4": "узел i18ntk-validate.js",
627
+ "nextStep5": "3. Анализируйте закономерности:",
628
+ "nextStep6": "узел i18ntk-analyze.js",
629
629
  "allKeysAvailable": "🎉 Все ключи перевода теперь доступны!",
630
- "runWithoutDryRun": "💡 Запустите без --dry-run, чтобы применить изменения",
631
- "deletingOldReport": "🗑️ Удаление старого отчёта...",
632
- "generatingFreshAnalysis": "📊 Генерация свежего анализа использования...",
633
- "couldNotGenerate": "❌ Не удалось сгенерировать анализ использования",
634
- "reportNotFound": "📋 Отчёт использования не найден. Используется общие ключи...",
635
- "foundMissingKeys": "📋 Найдено {count} отсутствующих ключей из анализа использования",
636
- "couldNotParse": "❌ Не удалось разобрать отчёт использования. Используется общие ключи..."
630
+ "runWithoutDryRun": "💡 Запустите без --dry-run, чтобы применить изменения.",
631
+ "deletingOldReport": "🗑️ Удаление старого отчета...",
632
+ "generatingFreshAnalysis": "📊 Создание свежего анализа использования...",
633
+ "couldNotGenerate": "❌ Не удалось создать анализ использования.",
634
+ "reportNotFound": "📋 Отчет об использовании не найден. Использование общих ключей...",
635
+ "foundMissingKeys": "📋 Найден {count} недостающие ключи из анализа использования",
636
+ "couldNotParse": "❌ Не удалось проанализировать отчет об использовании. Использование общих ключей..."
637
637
  },
638
- "noTranslationLanguagesFound": "🌍 Целевых языков не найдено",
639
- "failedToAnalyzeLanguage": "Не удалось проанализировать язык",
640
- "translationCompletenessAnalysisFailed": "Анализ полноты перевода не удался",
638
+ "noTranslationLanguagesFound": "Языки перевода не найдены",
639
+ "failedToAnalyzeLanguage": "Не удалось проанализировать язык",
640
+ "translationCompletenessAnalysisFailed": "Анализ полноты перевода не удался",
641
641
  "failedToProcessFile": "Не удалось обработать файл:",
642
- "failedToSaveReport": "Не удалось сохранить отчет об использовании: {error}.",
642
+ "failedToSaveReport": "Не удалось сохранить отчет об использовании: {error}",
643
643
  "i18nDirectoryDoesNotExist": "Каталог I18n не существует: {dir}",
644
- "reportSavedTo": "Отчет об использовании сохранен в: {reportPath}.",
644
+ "reportSavedTo": "Отчет об использовании сохранен в: {reportPath}",
645
645
  "sourceDirectoryDoesNotExist": "Исходный каталог не существует: {dir}"
646
646
  },
647
647
  "validate": {
648
- "help_message": "I18n Валидатор переводов Использование: node i18ntk-validate.js [опции] Опции: --source-dir <dir> Директория исходников для сканирования (по умолчанию: ./locales) --i18n-dir <dir> Директория I18n (по умолчанию: ./locales) --output-report Сгенерировать подробный отчёт --output-dir <dir> Директория для отчётов (по умолчанию: ./i18ntk-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",
649
- "title": "🔍 I18n Валидатор переводов",
650
- "message": "Запуск процесса валидации...",
651
- "sourceDirectory": "📁 Директория исходников: {dir}",
652
- "sourceLanguage": "🌍 Исходный язык: {sourceLanguage}",
653
- "strictMode": "⚙️ Режим строгой проверки: {mode}",
654
- "noTargetLanguages": "Целевые языки не настроены; пропуск проверки целевых языков. Добавьте языки через \"i18ntk init --languages=de,fr\".",
648
+ "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",
649
+ "title": "🔍 Валидатор перевода I18n",
650
+ "message": "Начинаем процесс проверки...",
651
+ "sourceDirectory": "📁 Исходный каталог: {dir}",
652
+ "sourceLanguage": "🌍Исходный язык: {sourceLanguage}",
653
+ "strictMode": "⚙️ Строгий режим: {mode}",
654
+ "noTargetLanguages": "Целевые языки не настроены; пропуск проверки цели. Добавьте языки через «i18ntk init --languages=de,fr».",
655
655
  "validatingLanguages": "🌍 Проверка языков: {langs}",
656
656
  "validatingLanguage": "🔍 Проверка языка: {lang}",
657
- "filesCount": "📄 Файлов: {count}",
658
- "keysCount": "🔑 Ключей: {count}",
659
- "missingFilesCount": "📁 Отсутствующих файлов: {count}",
660
- "syntaxErrorsCount": "❌ Синтаксических ошибок: {count}",
661
- "translationPercentage": "🎯 Перевод: {percentage}% ({translated}/{total} ключей)",
662
- "validationSummary": "📊 СВОДКА ВАЛИДАЦИИ",
663
- "validation_failed": "❌ Валидация не пройдена: {error}",
657
+ "filesCount": "📄 Файлы: {count}",
658
+ "keysCount": "🔑Ключи: {count}",
659
+ "missingFilesCount": "📁 Отсутствующие файлы: {count}",
660
+ "syntaxErrorsCount": "❌ Синтаксические ошибки: {count}",
661
+ "translationPercentage": "🎯 Перевод: {percentage}% ({translated}/{total} ключи)",
662
+ "validationSummary": "📊 РЕЗЮМЕ ПРОВЕРКИ",
663
+ "validation_failed": "❌ Проверка не удалась: {error}",
664
664
  "totalErrors": "❌ Всего ошибок: {count}",
665
- "totalWarnings": "⚠️ Всего предупреждений: {count}",
665
+ "totalWarnings": "⚠️ Всего предупреждений: {count}",
666
666
  "errorsSection": "❌ ОШИБКИ",
667
- "warningsSection": "⚠️ ПРЕДУПРЕЖДЕНИЯ",
667
+ "warningsSection": "⚠️ ПРЕДУПРЕЖДЕНИЯ",
668
668
  "recommendationsSection": "💡 РЕКОМЕНДАЦИИ",
669
669
  "fixErrorsFirst": "1. Сначала исправьте все ошибки",
670
- "resolveMissingFilesAndSyntaxErrors": "1. Устраните отсутствующие файлы и синтаксические ошибки",
670
+ "resolveMissingFilesAndSyntaxErrors": "1. Устраните отсутствующие файлы и синтаксические ошибки.",
671
671
  "fixStructuralInconsistencies": "2. Исправьте структурные несоответствия",
672
- "completeMissingTranslations": "3. Завершите недостающие переводы",
673
- "rerunValidation": "4. Повторно запустите валидацию для проверки исправлений",
674
- "addressWarnings": "Устраните предупреждения для повышения качества",
675
- "reviewWarnings": "Просмотрите предупреждения и исправьте по необходимости",
676
- "considerRunningWithStrict": "2. Рассмотрите запуск с флагом --strict для более строгой проверки",
677
- "allValidationsPassed": "🎉 Все проверки пройдены!",
678
- "considerRunningUsageAnalysis": "Рассмотрите запуск анализа использования: node i18ntk-usage.js",
679
- "deletedOldReport": "🗑️ Старый отчёт валидации удалён",
680
- "sourceDir": "📁 Директория исходников: {sourceDir}",
681
- "i18nDir": "🌐 Директория I18n: {i18nDir}",
672
+ "completeMissingTranslations": "3. Завершите недостающие переводы.",
673
+ "rerunValidation": "4. Повторно запустите проверку, чтобы проверить исправления.",
674
+ "addressWarnings": "Устраните предупреждения, чтобы улучшить качество",
675
+ "reviewWarnings": "Просмотрите предупреждения и исправьте их, если необходимо.",
676
+ "considerRunningWithStrict": "2. Рассмотрите возможность запуска с флагом --strict для более строгой проверки.",
677
+ "allValidationsPassed": "🎉Все проверки пройдены!",
678
+ "considerRunningUsageAnalysis": "Рассмотрите возможность проведения анализа использования: узел i18ntk-usage.js.",
679
+ "deletedOldReport": "🗑️ Удален старый отчет о проверке.",
680
+ "sourceDir": "📁 Исходный каталог: {sourceDir}",
681
+ "i18nDir": "🌐 Каталог I18n: {i18nDir}",
682
682
  "loadingTranslationFiles": "📋 Загрузка файлов перевода...",
683
- "foundTranslationFilesCount": "✅ Найдено файлов переводов: {count}",
684
- "analyzingTranslations": "🔍 Анализ переводов...",
683
+ "foundTranslationFilesCount": "✅ Найден {count} файлы перевода",
684
+ "analyzingTranslations": "🔍Анализ переводов...",
685
685
  "validationCompletedSuccessfully": "🎉 Валидация успешно завершена!",
686
- "validationErrorsFound": "⚠️ Найдено ошибок валидации: {count}",
687
- "validationWarningsFound": "⚠️ Найдено предупреждений валидации: {count}",
688
- "validationPassed": "✅ Валидация пройдена без ошибок",
689
- "validationFailed": "Валидация не пройдена: {error}",
690
- "startingValidationProcess": "🔍 Запуск процесса валидации...",
691
- "validationProcessCompletedSuccessfully": "✅ Процесс валидации успешно завершён",
686
+ "validationErrorsFound": "⚠️ Обнаружены ошибки валидации: {count}",
687
+ "validationWarningsFound": "⚠️ Обнаружены предупреждения валидации: {count}",
688
+ "validationPassed": "✅ Валидация прошла без ошибок",
689
+ "validationFailed": "Проверка не удалась: {error}",
690
+ "startingValidationProcess": "🔍Начинаем процесс проверки...",
691
+ "validationProcessCompletedSuccessfully": "✅ Процесс валидации успешно завершен",
692
692
  "stackTrace": "Трассировка стека: {stack}",
693
- "authenticationFailed": "❌ Аутентификация не удалась. Доступ запрещён.",
694
- "fatalValidationError": "❌ Фатальная ошибка валидации: {error}",
695
- "configAccess": "Доступ к конфигурации для валидации",
693
+ "authenticationFailed": "❌ Не удалось выполнить аутентификацию. Доступ запрещен.",
694
+ "fatalValidationError": "❌ Неустранимая ошибка проверки: {error}",
695
+ "configAccess": "Доступ к конфигурации для проверки",
696
696
  "configValidated": "Конфигурация успешно проверена",
697
697
  "configError": "Ошибка конфигурации: {error}",
698
698
  "validatorInit": "Инициализация валидатора I18n",
699
699
  "validatorInitialized": "Валидатор I18n успешно инициализирован",
700
700
  "validatorInitError": "Ошибка инициализации валидатора: {error}",
701
- "argsParsing": "Парсинг аргументов командной строки",
702
- "argsParsed": "Аргументы командной строки разобраны успешно",
703
- "argsParseError": "Ошибка разбора аргументов: {error}",
701
+ "argsParsing": "Анализ аргументов командной строки",
702
+ "argsParsed": "Аргументы командной строки успешно проанализированы",
703
+ "argsParseError": "Ошибка анализа аргумента: {error}",
704
704
  "languagesScan": "Сканирование доступных языков",
705
- "languagesFound": "Найдено языков: {count}",
706
- "languagesScanError": "Ошибка сканирования языков: {error}",
707
- "filesScan": "Найдено файлов в {language}: {count}",
708
- "filesScanError": "Ошибка сканирования файлов: {error}",
705
+ "languagesFound": "Найденный {count} языки",
706
+ "languagesScanError": "Ошибка сканирования языка: {error}",
707
+ "filesScan": "Найденный {count} файлы в {language}",
708
+ "filesScanError": "Ошибка сканирования файла: {error}",
709
709
  "jsonValidated": "Синтаксис JSON проверен: {filePath}",
710
- "jsonValidationError": "Ошибка валидации JSON: {error}",
710
+ "jsonValidationError": "Ошибка проверки JSON: {error}",
711
711
  "languageValidation": "Проверка языка: {language}",
712
712
  "languageValidationError": "Ошибка проверки языка: {error}",
713
- "fileDeleted": "Файл удалён",
714
- "runStarted": "Запуск валидации",
715
- "runCompleted": "Валидация успешно завершена",
716
- "runError": "Запуск валидации не удался: {error}",
713
+ "fileDeleted": "Файл удален",
714
+ "runStarted": "Запуск проверочного прогона",
715
+ "runCompleted": "Прогон проверки успешно завершен",
716
+ "runError": "Проверка не удалась: {error}",
717
717
  "scriptExecution": "Выполнение скрипта",
718
- "validationCompleted": "Валидация завершена",
719
- "validationError": "Ошибка валидации: {error}",
720
- "separator": "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━",
718
+ "validationCompleted": "Проверка завершена",
719
+ "validationError": "Ошибка проверки: {error}",
720
+ "separator": "━━━━━━━━━━━━━━━━━━━━ ━━━━━━━━━━━━━━━━━━━━ ━━━━━━━━━━━━━━━━━━━━ ━━━━━━━━━━━━━━━━━━━━",
721
721
  "languageHeader": "🌐 Язык: {language}",
722
- "validationResults": "📊 Результаты валидации",
723
- "noErrors": "✅ Ошибок не найдено",
722
+ "validationResults": "📊 Результаты проверки",
723
+ "noErrors": "✅ Ошибок не обнаружено",
724
724
  "noWarnings": "✅ Предупреждений не найдено",
725
- "summaryHeader": "📋 ОБЩАЯ СВОДКА",
726
- "progressIndicator": "⏳ В процессе...",
725
+ "summaryHeader": "📋 ОБЩЕЕ РЕЗЮМЕ",
726
+ "progressIndicator": "⏳ Обработка...",
727
727
  "completedIndicator": "✅ Завершено",
728
728
  "errorIndicator": "❌ Ошибка",
729
- "warningIndicator": "⚠️ Предупреждение",
730
- "infoIndicator": "ℹ️ Информация",
731
- "sourceDirNotConfigured": "Директория исходников не настроена",
729
+ "warningIndicator": "⚠️ Внимание",
730
+ "infoIndicator": "ℹ️ Информация",
731
+ "sourceDirNotConfigured": "Исходный каталог не настроен",
732
732
  "sourceLanguageNotConfigured": "Исходный язык не настроен",
733
- "translationFunctionNotInitialized": "Функция перевода не инициализирована",
734
- "sourceLanguageDirectoryNotFound": "Директория исходного языка не найдена",
733
+ "translationFunctionNotInitialized": "Функция перевода не инициализирована должным образом",
734
+ "sourceLanguageDirectoryNotFound": "Каталог исходного языка не найден",
735
735
  "specifiedLanguageNotFound": "Указанный язык не найден",
736
- "noJsonFilesFound": "JSON-файлы не найдены в директории исходников: {sourceDir}",
737
- "i18nDirectoryNotFound": "Директория I18n не найдена: {i18nDir}",
738
- "invalidDirectoryPaths": "Обнаружены недопустимые пути",
739
- "invalidSampleFilePath": "Недопустимый путь к примерному файлу",
740
- "failedToCreateSampleTranslationFile": "Не удалось создать примерный файл перевода",
741
- "invalidFilePathDetected": "Обнаружен недопустимый путь к файлу",
736
+ "noJsonFilesFound": "В исходном каталоге не найдены файлы JSON: {sourceDir}",
737
+ "i18nDirectoryNotFound": "Каталог I18n не найден: {i18nDir}",
738
+ "invalidDirectoryPaths": "Обнаружены неверные пути к каталогам",
739
+ "invalidSampleFilePath": "Неверный путь к файлу образца",
740
+ "failedToCreateSampleTranslationFile": "Не удалось создать образец файла перевода.",
741
+ "invalidFilePathDetected": "Обнаружен неверный путь к файлу",
742
742
  "failedToWriteFile": "Не удалось записать файл: {filePath}",
743
- "invalidSourceDirectory": "Неверный исходный каталог: {sourceDir}.",
744
- "invalidSourceLanguageDirectory": "Неверный каталог исходного языка: {sourceDir}."
743
+ "invalidSourceDirectory": "Неверный исходный каталог: {sourceDir}",
744
+ "invalidSourceLanguageDirectory": "Неверный каталог исходного языка: {sourceDir}"
745
745
  },
746
746
  "adminCli": {
747
- "setupPinProtectionTitle": "🔐 Настройка защиты админ-PIN",
748
- "setupPinProtectionDescription": "Это потребует 4–6-значный PIN для административных операций.",
749
- "enablePinProtectionPrompt": "Вы хотите включить защиту админ-PIN?",
750
- "setupCancelled": "Настройка защиты админ-PIN отменена.",
751
- "enterPinPrompt": "Введите 46-значный PIN:",
752
- "pinFormatError": " PIN должен состоять из 46 цифр. Пожалуйста, попробуйте снова.",
753
- "confirmPinPrompt": "Подтвердите PIN:",
754
- "pinMismatchError": "❌ PIN не совпадают. Пожалуйста, попробуйте снова.",
755
- "pinProtectionEnabledSuccess": "✅ Защита админ-PIN успешно включена!",
756
- "pinRecoveryWarning": "⚠️ Запомните ваш PINвосстановлению он не подлежит.",
757
- "setupPinProtectionFailed": "❌ Не удалось настроить защиту админ-PIN.",
758
- "errorSettingUpPin": "❌ Ошибка при настройке PIN: {message}",
759
- "authRequiredForOperation": "🔐 Требуется аутентификация админа для: {operation}",
760
- "invalidPinFormat": "❌ Неверный формат PIN. PIN должен содержать 4–6 цифр.",
747
+ "setupPinProtectionTitle": "🔐 Настройка защиты PIN-кодом администратора",
748
+ "setupPinProtectionDescription": "Для административных операций потребуется 4–6-значный PIN-код.",
749
+ "enablePinProtectionPrompt": "Хотите включить защиту PIN-кодом администратора?",
750
+ "setupCancelled": "Настройка защиты PIN-кодом администратора отменена.",
751
+ "enterPinPrompt": "Введите 4-6-значный PIN-код:",
752
+ "pinFormatError": "❌ПИН-код должен состоять из 4-6 цифр. Пожалуйста, попробуйте еще раз.",
753
+ "confirmPinPrompt": "Подтвердите PIN-код:",
754
+ "pinMismatchError": "❌ ПИН-коды не совпадают. Пожалуйста, попробуйте еще раз.",
755
+ "pinProtectionEnabledSuccess": "✅ Защита PIN-кодом администратора успешно включена!",
756
+ "pinRecoveryWarning": "⚠️ Запомните свой ПИН-кодв случае утери его невозможно восстановить.",
757
+ "setupPinProtectionFailed": "❌ Не удалось настроить защиту PIN-кодом администратора.",
758
+ "errorSettingUpPin": "❌ Ошибка при настройке PIN-кода администратора: {message}",
759
+ "authRequiredForOperation": "🔐 Аутентификация администратора необходима для: {operation}",
760
+ "invalidPinFormat": "❌ Неверный формат PIN-кода. PIN-код должен состоять из 4–6 цифр.",
761
761
  "authenticationSuccess": "✅ Аутентификация прошла успешно!",
762
- "invalidPinAttemptsRemaining": "❌ Неверный PIN. Осталось попыток: {remaining}.",
763
- "authenticationFailedAccessDenied": "❌ Аутентификация не удалась. Доступ запрещён.",
762
+ "invalidPinAttemptsRemaining": "❌ Неверный PIN-код. {remaining} попыток осталось.",
763
+ "authenticationFailedAccessDenied": "❌ Не удалось выполнить аутентификацию. Доступ запрещен.",
764
764
  "authenticationError": "❌ Ошибка аутентификации: {message}",
765
- "pinProtectionNotEnabled": "Защита админ-PIN в данный момент не включена.",
766
- "disablingPinProtectionTitle": "🔓 Отключение защиты админ-PIN",
767
- "confirmDisablePinProtection": "Вы уверены, что хотите отключить защиту админ-PIN?",
765
+ "pinProtectionNotEnabled": "Защита PIN-кодом администратора в настоящее время не включена.",
766
+ "disablingPinProtectionTitle": "🔓 Отключение защиты PIN-кодом администратора",
767
+ "confirmDisablePinProtection": "Вы уверены, что хотите отключить защиту PIN-кодом администратора?",
768
768
  "operationCancelled": "Операция отменена.",
769
- "pinProtectionDisabledSuccess": "✅ Защита админ-PIN отключена.",
770
- "disablePinProtectionFailed": "❌ Не удалось отключить защиту админ-PIN.",
771
- "errorDisablingPinProtection": "❌ Ошибка при отключении защиты: {message}",
772
- "adminProtectionStatusTitle": "🔐 Статус защиты админа",
769
+ "pinProtectionDisabledSuccess": "✅ Защита PIN-кодом администратора отключена.",
770
+ "disablePinProtectionFailed": "❌ Не удалось отключить защиту PIN-кодом администратора.",
771
+ "errorDisablingPinProtection": "❌ Ошибка отключения защиты администратора: {message}",
772
+ "adminProtectionStatusTitle": "🔐 Статус защиты администратора",
773
773
  "statusEnabled": "Статус: ✅ ВКЛЮЧЕНО",
774
- "protectionDetails": "Защита: для админ-операций требуется PIN (4–6 цифр)",
775
- "lockoutDetails": "Блокировка: 3 неудачные попытки = 15-минутная блокировка",
776
- "statusDisabled": "Статус: ❌ ОТКЛЮЧЕНО",
777
- "noAuthRequired": "Защита: аутентификация не требуется",
778
- "unprotectedRisk": "Риск: административные операции не защищены",
779
- "errorCheckingAdminStatus": "❌ Ошибка при проверке статуса админа: {message}",
780
- "authRequired": "🔐 Требуется аутентификация админа.",
781
- "invalidPin": "❌ Неверный PIN.",
774
+ "protectionDetails": "Защита: для операций администратора требуется 4–6-значный PIN-код.",
775
+ "lockoutDetails": "Блокировка: 3 неудачные попытки = блокировка на 15 минут.",
776
+ "statusDisabled": "Статус: ❌ ОТКЛЮЧЕН",
777
+ "noAuthRequired": "Защита: аутентификация не требуется.",
778
+ "unprotectedRisk": "Риск: административные операции незащищены.",
779
+ "errorCheckingAdminStatus": "❌ Ошибка проверки статуса администратора: {message}",
780
+ "authRequired": "🔐 Требуется аутентификация администратора.",
781
+ "invalidPin": "❌ Неверный PIN-код.",
782
782
  "authSuccess": "✅ Аутентификация прошла успешно!",
783
783
  "adminPinSetupCli": "admin_pin_setup_cli",
784
784
  "adminAuthFailedCli": "admin_auth_failed_cli",
785
785
  "adminAuthDisabledCli": "admin_auth_disabled_cli",
786
- "protectedAccess": "Доступ защищён: для чувствительных операций требуется аутентификация админа.",
787
- "enterPin": "Введите админ-PIN:",
788
- "accessGranted": "Доступ разрешён."
786
+ "protectedAccess": "Защищенный доступ: для конфиденциальных операций требуется проверка подлинности администратора.",
787
+ "enterPin": "Введите PIN-код администратора:",
788
+ "accessGranted": "Доступ предоставлен."
789
789
  },
790
790
  "adminPin": {
791
- "setup_title": "🔐 Настройка админ-PIN",
792
- "setup_separator": "============================================================",
793
- "setup_description": "Создайте 4–6-значный PIN для доступа к чувствительным настройкам.",
794
- "required_for_title": "Этот PIN будет требоваться для:",
795
- "required_for_1": "• Изменения настроек безопасности",
796
- "required_for_2": "• Изменения расширенных конфигураций",
797
- "required_for_3": "• Доступа к инструментам отладки",
798
- "required_for_4": "• Сброса настроек",
799
- "setup_note": "💡 При вводе будут показываться звездочки (*).",
800
- "setup_digits_only": "Допускаются только цифры 0–9.",
801
- "invalid_pin_length": "❌ Неверный PIN. Должен содержать 4–6 цифр.",
802
- "invalid_pin_example": "Пример: 1234 или 567890",
803
- "pins_do_not_match": "❌ PIN не совпадают.",
804
- "setup_success": "✅ Админ-PIN успешно установлен!",
805
- "setup_warning": "⚠️ Храните PIN в безопасности. Восстановлению он не подлежит.",
806
- "setup_error": "❌ Ошибка при настройке PIN:",
807
- "session_expired": "⏰ Сессия админа истекла из-за бездействия.",
808
- "no_pin_set_setting_up": "⚠️ PIN не установлен. Настройка PIN...",
809
- "no_pin_configured_access_denied": "⚠️ PIN не настроен. Доступ запрещён.",
810
- "use_admin_settings_to_set_pin": "💡 Настройте PIN в админ-настройках.",
811
- "locked_out": "🔒 Доступ заблокирован из-за слишком большого числа неудачных попыток.",
812
- "wait_before_retry": "Пожалуйста, подождите 5 минут перед повторной попыткой.",
813
- "access_granted": " Доступ к админ-настройкам разрешён.",
814
- "incorrect_pin": "❌ Неверный PIN. Осталось попыток: {attempts}.",
815
- "verify_pin_error": "❌ Ошибка при проверке PIN:",
816
- "already_configured": "✅ Админ-PIN уже настроен.",
817
- "optional_setup_title": "🔐 Настройка админ-PIN (опционально)",
818
- "optional_setup_description": "Защита админ-PIN обеспечивает безопасность для:",
819
- "setup_prompt": "Хотите настроить админ-PIN? (y/N):",
820
- "skipping_setup": "⏭️ Пропуск настройки PIN. Настроить можно позже.",
821
- "setup_prompt_error": "❌ Ошибка при запросе настройки PIN:",
822
- "protectedAccess": "Доступ защищён: для чувствительных операций требуется аутентификация.",
823
- "enterPin": "Введите админ-PIN:",
824
- "accessGranted": "Доступ разрешён.",
825
- "invalidPin": "❌ Неверный PIN. Пожалуйста, попробуйте снова.",
826
- "weak_pin_warning": "⚠️ ВНИМАНИЕ: PIN выглядит слишком простым.",
827
- "weak_pin_suggestion": "💡 Рекомендуется использовать более сложный PIN.",
828
- "use_anyway_prompt": "Введите «yes», чтобы использовать его, или нажмите Enter для выбора другого PIN:",
829
- "enter_new_pin": "Введите новый админ-PIN (4–6 цифр):",
830
- "confirm_pin": "Подтвердите админ-PIN:",
831
- "not_set": "Не задан",
791
+ "setup_title": "🔐 Настройка PIN-кода администратора",
792
+ "setup_separator": "=========================================================",
793
+ "setup_description": "Создайте 4–6-значный PIN-код для доступа администратора к конфиденциальным настройкам.",
794
+ "required_for_title": "Этот PIN-код потребуется для:",
795
+ "required_for_1": "• Изменение настроек безопасности.",
796
+ "required_for_2": "• Изменение расширенных конфигураций.",
797
+ "required_for_3": "• Доступ к инструментам отладки.",
798
+ "required_for_4": "• Сброс настроек",
799
+ "setup_note": "💡 Примечание. При вводе вы увидите звездочки (*) — это всего лишь маскирующие символы.",
800
+ "setup_digits_only": "В качестве PIN-кода принимаются только цифры 0–9.",
801
+ "invalid_pin_length": "❌ Неверный PIN-код. Должно состоять из 4–6 цифр (только цифры 0–9).",
802
+ "invalid_pin_example": "Пример: 1234 или 567890.",
803
+ "pins_do_not_match": "❌ ПИН-коды не совпадают.",
804
+ "setup_success": "✅ PIN-код администратора успешно установлен!",
805
+ "setup_warning": "⚠️ Храните этот PIN-код в безопасности. В случае утери его невозможно восстановить.",
806
+ "setup_error": "❌ Ошибка установки PIN-кода:",
807
+ "session_expired": "⏰ Сеанс администратора истек из-за неактивности.",
808
+ "no_pin_set_setting_up": "⚠️ PIN-код администратора не установлен. Настройка PIN-кода...",
809
+ "no_pin_configured_access_denied": "⚠️ PIN-код администратора не настроен. Доступ запрещен.",
810
+ "use_admin_settings_to_set_pin": "💡 Сначала используйте настройки администратора, чтобы настроить PIN-код.",
811
+ "locked_out": "🔒 Доступ администратора заблокирован из-за слишком большого количества неудачных попыток.",
812
+ "wait_before_retry": "Пожалуйста, подождите 5 минут, прежде чем повторить попытку.",
813
+ "access_granted": "✅Доступ администратора предоставлен.",
814
+ "incorrect_pin": "❌ Неправильный ПИН-код. {attempts} попыток осталось.",
815
+ "verify_pin_error": "❌ Ошибка проверки PIN-кода:",
816
+ "already_configured": "✅ PIN-код администратора уже настроен.",
817
+ "optional_setup_title": "🔐 Настройка PIN-кода администратора (необязательно)",
818
+ "optional_setup_description": "Защита PIN-кодом администратора повышает безопасность таких конфиденциальных операций, как:",
819
+ "setup_prompt": "Хотите установить PIN-код администратора? (да/нет):",
820
+ "skipping_setup": "⏭️ Пропуск установки PIN-кода администратора. Вы можете настроить это позже в настройках.",
821
+ "setup_prompt_error": "❌ Ошибка во время запроса на установку PIN-кода:",
822
+ "protectedAccess": "Защищенный доступ: для конфиденциальных операций требуется проверка подлинности администратора.",
823
+ "enterPin": "Введите PIN-код администратора:",
824
+ "accessGranted": "Доступ предоставлен.",
825
+ "invalidPin": "❌ Неверный PIN-код. Пожалуйста, попробуйте еще раз.",
826
+ "weak_pin_warning": "⚠️ ВНИМАНИЕ: этот PIN-код кажется слабым или распространенным.",
827
+ "weak_pin_suggestion": "💡 Рассмотрите возможность использования более надежного PIN-кода с разными цифрами.",
828
+ "use_anyway_prompt": "Введите «да», чтобы использовать его в любом случае, или нажмите Enter, чтобы выбрать другой PIN-код:",
829
+ "enter_new_pin": "Введите новый PIN-код администратора (4–6 цифр):",
830
+ "confirm_pin": "Подтвердите PIN-код администратора:",
831
+ "not_set": "Не установлено",
832
832
  "pin_display_mask": "####"
833
833
  },
834
834
  "debug": {
835
835
  "title": "🔧 Инструменты отладки",
836
- "separator": "============================================================",
837
- "mainDebuggerSystemDiagnostics": "1. Системная диагностика",
838
- "_consoleTranslationsCheck": "// 2. Проверка переводов в консоли",
836
+ "separator": "=========================================================",
837
+ "mainDebuggerSystemDiagnostics": "1. Диагностика системы",
838
+ "_consoleTranslationsCheck": "// 2. Проверка трансляции консоли",
839
839
  "_exportMissingKeys": "// 3. Экспорт отсутствующих ключей перевода",
840
- "_replaceHardcodedConsole": "// 4. Заменить жёстко прописанные строки в консоли",
840
+ "_replaceHardcodedConsole": "// 4. Замена жестко запрограммированных строк консоли",
841
841
  "_consoleKeyChecker": "// 5. Проверка ключей консоли",
842
- "debugLogs": "2. Логи отладки",
843
- "backToMainMenu": "0. Вернуться в главное меню",
842
+ "debugLogs": "2. Журналы отладки",
843
+ "backToMainMenu": "0. Вернуться в главное меню.",
844
844
  "selectOption": "Выберите инструмент отладки:",
845
- "runningDebugTool": "Запуск {displayName}...",
845
+ "runningDebugTool": "Бег {displayName}...",
846
846
  "debugToolNotFound": "❌ Инструмент отладки не найден: {toolName}",
847
- "errorRunningDebugTool": "Ошибка при запуске {displayName}: {error}",
848
- "recentDebugLogs": "📄 Последние логи отладки",
849
- "noDebugLogsFound": "❌ Логи отладки не найдены.",
850
- "debugLogsDirectoryNotFound": "❌ Директория с логами отладки не найдена.",
851
- "selectLogPrompt": "Выберите файл лога для просмотра (1-{count}):",
847
+ "errorRunningDebugTool": "Ошибка запуска инструмента отладки '{displayName}': {error}",
848
+ "recentDebugLogs": "📄 Последние журналы отладки",
849
+ "noDebugLogsFound": "❌ Журналы отладки не найдены.",
850
+ "debugLogsDirectoryNotFound": "❌ Каталог журналов отладки не найден.",
851
+ "selectLogPrompt": "Выберите файл журнала для просмотра (1-{count}):",
852
852
  "invalidChoiceSelectRange": "Неверный выбор. Пожалуйста, выберите из доступного диапазона.",
853
853
  "contentOf": "📄 Содержание {filename}:",
854
854
  "pressEnterToContinue": "Нажмите Enter, чтобы продолжить..."
855
855
  },
856
856
  "detect_language_mismatches": {
857
- "tool_title": "🔍 Инструмент обнаружения несовпадений языков",
858
- "separator": "=====================================",
859
- "analyzing_file": "📄 Анализ {language}.json...",
860
- "error_analyzing_file": "❌ Ошибка при анализе {filename}: {errorMessage}",
861
- "results_title": "📊 РЕЗУЛЬТАТЫ ОБНАРУЖЕНИЯ НЕСОВПАДЕНИЙ ЯЗЫКОВ",
862
- "results_separator": "========================================",
863
- "summary_title": "📋 ИТОГИ:",
864
- "total_files_analyzed": "Файлов проанализировано: {totalFiles}",
865
- "files_with_mismatches": "Файлов с несовпадениями: {filesWithMismatches}",
866
- "total_mismatches_found": "Всего найдено несовпадений: {totalMismatches}",
867
- "no_mismatches_found": "✅ Несовпадений не найдено! Все переводы соответствуют своим языкам.",
868
- "detailed_results_title": "🔍 ПОДРОБНЫЕ РЕЗУЛЬТАТЫ:",
857
+ "tool_title": "🔍 Инструмент обнаружения языковых несоответствий",
858
+ "separator": "====================================",
859
+ "analyzing_file": "📄 Анализируем {language}.json...",
860
+ "error_analyzing_file": "❌ Анализ ошибок {filename}: {errorMessage}",
861
+ "results_title": "📊 РЕЗУЛЬТАТЫ ОБНАРУЖЕНИЯ ЯЗЫКОВОГО НЕСООТВЕТСТВИЯ",
862
+ "results_separator": "======================================",
863
+ "summary_title": "📋 РЕЗЮМЕ:",
864
+ "total_files_analyzed": "Всего проанализировано файлов: {totalFiles}",
865
+ "files_with_mismatches": "Файлы с несоответствиями: {filesWithMismatches}",
866
+ "total_mismatches_found": "Всего найдено несоответствий: {totalMismatches}",
867
+ "no_mismatches_found": "✅ Языковых несоответствий не обнаружено! Все переводы сделаны на правильных языках.",
868
+ "detailed_results_title": "🔍ДЕТАЛЬНЫЕ РЕЗУЛЬТАТЫ:",
869
869
  "file_mismatch_header": "📄 {filename} ({language})",
870
- "mismatches_count": "Найдено несовпадений: {count}:",
870
+ "mismatches_count": "Найденный {count} несоответствие(я):",
871
871
  "mismatch_details": "{index}. Ключ: {key}",
872
- "mismatch_value": "Значение: \"{value}\"",
872
+ "mismatch_value": "Ценить: \"{value}\"",
873
873
  "mismatch_issue": "Проблема: {description}",
874
- "recommendations_title": "💡 РЕКОМЕНДАЦИИ:",
875
- "recommendation_1": "1. Проверьте и переведите все записи, отмеченные [TRANSLATE]",
876
- "recommendation_2": "2. Замените языковые префиксы (например, [DE], [FR]) на правильные переводы",
877
- "recommendation_3": "3. Переведите английский текст на соответствующий целевой язык",
878
- "recommendation_4": "4. Используйте эквиваленты на родном языке для всего текста, отображаемого пользователю",
879
- "recommendation_5": "5. Запустите этот инструмент снова после исправлений, чтобы проверить результаты",
880
- "detailed_report_saved": "📄 Подробный отчёт сохранён: {reportPath}",
881
- "error_saving_report": "❌ Ошибка при сохранении отчёта: {errorMessage}",
874
+ "recommendations_title": "💡РЕКОМЕНДАЦИИ:",
875
+ "recommendation_1": "1. Просмотрите и переведите все записи, отмеченные [ПЕРЕВЕСТИ].",
876
+ "recommendation_2": "2. Замените языковые префиксы (например, [DE], [FR]) правильными переводами.",
877
+ "recommendation_3": "3. Переведите английский текст на соответствующий целевой язык.",
878
+ "recommendation_4": "4. Используйте эквиваленты на родном языке для всего текста, обращенного к пользователю.",
879
+ "recommendation_5": "5. Запустите этот инструмент еще раз после внесения исправлений, чтобы проверить исправления.",
880
+ "detailed_report_saved": "📄 Подробный отчет сохранен в: {reportPath}",
881
+ "error_saving_report": "❌ Ошибка сохранения отчета: {errorMessage}",
882
882
  "auto_fix_mode": "🔧 Режим автоисправления {dryRun}",
883
- "auto_fix_separator": "=====================================",
884
- "fixed_file": "✅ Исправлен {filename}",
885
- "auto_fix_summary_title": "📊 Итоги автоисправления:",
886
- "total_fixes_applied": "Всего применено исправлений: {count}",
887
- "preview_fixes_title": "🔍 Предпросмотр исправлений:",
888
- "fix_details": "{file}: {key} Старое: \"{old}\" Новое: \"{new}\"",
889
- "more_fixes": "... и ещё {count} исправлений",
890
- "run_with_apply_fixes": "💡 Запустите с --apply для применения этих исправлений",
883
+ "auto_fix_separator": "====================================",
884
+ "fixed_file": "✅ Исправлено {filename}",
885
+ "auto_fix_summary_title": "📊 Краткое описание автоисправления:",
886
+ "total_fixes_applied": "Всего исправлений: {count}",
887
+ "preview_fixes_title": "🔍Предварительный просмотр исправлений:",
888
+ "fix_details": "{file}: {key} Старый: \"{old}\" Новый: \"{new}\"",
889
+ "more_fixes": "... и {count} больше исправлений",
890
+ "run_with_apply_fixes": "💡 Запустите --apply, чтобы применить эти исправления.",
891
891
  "error_general": "❌ Ошибка:",
892
- "mainDebuggerSystemDiagnostics": "Системная диагностика",
893
- "exportMissingKeys": "Экспорт отсутствующих ключей",
894
- "replaceHardcodedConsole": "Замена жёстко прописанных строк",
892
+ "mainDebuggerSystemDiagnostics": "Главный отладчик/диагностика системы",
893
+ "exportMissingKeys": "Экспортировать недостающие ключи",
894
+ "replaceHardcodedConsole": "Заменить жестко закодированную консоль",
895
895
  "consoleKeyChecker": "Проверка ключей консоли",
896
- "debugLogs": "Логи отладки",
896
+ "debugLogs": "Журналы отладки",
897
897
  "backToMainMenu": "Вернуться в главное меню",
898
- "invalidChoiceSelectRange": "❌ Неверный выбор. Пожалуйста, выберите номер из отображаемого диапазона.",
899
- "runningDebugTool": "Запуск инструмента: {displayName}",
900
- "debugToolNotFound": "Инструмент '{toolName}' не найден.",
901
- "recentDebugLogs": "Последние логи отладки",
902
- "noDebugLogsFound": "Логи отладки не найдены.",
903
- "logEntry": "Запись лога: {timestamp} {message}",
904
- "debugLogsDirectoryNotFound": "Директория логов отладки не найдена."
898
+ "invalidChoiceSelectRange": "❌ Неверный выбор. Пожалуйста, выберите номер в отображаемом диапазоне.",
899
+ "runningDebugTool": "Запуск инструмента отладки: {displayName}",
900
+ "debugToolNotFound": "Инструмент отладки '{toolName}' не найдено.",
901
+ "recentDebugLogs": "Последние журналы отладки",
902
+ "noDebugLogsFound": "Журналы отладки не найдены.",
903
+ "logEntry": "Запись в журнале: {timestamp} - {message}",
904
+ "debugLogsDirectoryNotFound": "Каталог журналов отладки не найден."
905
905
  },
906
906
  "help": {
907
- "title": "📊 СПРАВКА ПО УПРАВЛЕНИЮ I18NTK",
908
- "usage": "Использование: node i18ntk-manage.js [опции]",
909
- "interactiveMode": "💡 Используйте: node i18ntk-manage.js --command=<команда> для прямого выполнения",
910
- "showHelp": "📖 Используйте: node i18ntk-manage.js --help для просмотра доступных команд",
907
+ "title": "📊 ПОМОЩЬ В УПРАВЛЕНИИ I18NTK",
908
+ "usage": "Использование: узел main/manage/index.js [опции]",
909
+ "interactiveMode": "💡 Используйте: node main/manage/index.js --command=<command> для прямого исполнения",
910
+ "showHelp": "📖 Используйте: node main/manage/index.js --help для доступных команд.",
911
911
  "availableCommands": "📖 Доступные команды:",
912
912
  "initProject": "🚀 Инициализировать новые языки",
913
- "analyzeTranslations": "🔍 Анализ переводов",
914
- "validateTranslations": "✅ Валидация переводов",
915
- "checkUsage": "📊 Проверка использования ключей",
916
- "initCommand": "init - Инициализировать новые языки",
917
- "analyzeCommand": "analyze - Анализ переводов",
918
- "validateCommand": "validate - Валидация переводов",
919
- "usageCommand": "usage - Проверка использования ключей",
920
- "sizingCommand": "sizing - Анализ размеров",
921
- "completeCommand": "complete - Завершение переводов (100% покрытия)",
922
- "summaryCommand": "summary - Показать статус проекта",
923
- "debugCommand": "debug - Отладка проблем перевода",
924
- "scannerCommand": "scanner - 🔍 Сканирование проблем i18n",
913
+ "analyzeTranslations": "🔍 Анализировать переводы",
914
+ "validateTranslations": "✅ Проверка переводов",
915
+ "checkUsage": "📊 Проверьте использование ключа",
916
+ "initCommand": "init инициализировать новые языки",
917
+ "analyzeCommand": "анализировать - анализировать переводы",
918
+ "validateCommand": "validate - Проверить переводы",
919
+ "usageCommand": "использование проверка использования ключа.",
920
+ "sizingCommand": "калибровка - Анализ размеров",
921
+ "completeCommand": "Complete Полные переводы (100% покрытие)",
922
+ "summaryCommand": "резюме - Показать статус проекта",
923
+ "debugCommand": "debug - Отладка проблем с переводом",
924
+ "scannerCommand": "сканер - Сканировать ключи",
925
+ "translateCommand": "Translate — автоматически переводить файлы локали (бета-версия)",
925
926
  "menu": {
926
927
  "pressEnterToContinue": "Нажмите Enter, чтобы продолжить...",
927
928
  "title": "🌐 МЕНЮ УПРАВЛЕНИЯ I18NTK",
@@ -929,143 +930,142 @@
929
930
  "exit": "🚪 Выход"
930
931
  },
931
932
  "commands": {
932
- "init": "init - Инициализировать новые языки",
933
- "analyze": "analyze - Анализ переводов",
934
- "validate": "validate - Валидация переводов",
935
- "usage": "usage - Проверка использования ключей",
936
- "sizing": "sizing - Анализ размеров",
937
- "complete": "complete - Завершение переводов (100% покрытия)",
938
- "summary": "summary - Показать статус проекта",
939
- "debug": "debug - Отладка проблем перевода"
933
+ "init": "init инициализировать новые языки",
934
+ "analyze": "анализировать - анализировать переводы",
935
+ "validate": "validate - Проверить переводы",
936
+ "usage": "использование проверка использования ключа.",
937
+ "sizing": "калибровка - Анализ размеров",
938
+ "complete": "Complete Полные переводы (100% покрытие)",
939
+ "summary": "резюме - Показать статус проекта",
940
+ "debug": "debug - Отладка проблем с переводом"
940
941
  },
941
942
  "options": {
942
- "sourceDir": "--source-dir <dir> Директория исходников для анализа",
943
- "output": "--output <file> Файл для вывода отчёта",
944
- "verbose": "--verbose, -v Подробный вывод",
945
- "keepReports": "--keep-reports Сохранить существующие отчёты",
946
- "deleteReports": "--delete-reports Удалить существующие отчёты",
947
- "help": "--help, -h Показать справку"
943
+ "sourceDir": "--source-dir <dir> Исходный каталог для анализа",
944
+ "output": "--выход <file> Выходной файл отчета",
945
+ "verbose": "--verbose, -v Показать подробную информацию",
946
+ "keepReports": "--keep-reports Сохранить существующие отчеты",
947
+ "deleteReports": "--delete-reports Удалить существующие отчеты",
948
+ "help": "--help, -h Показать эту справку"
948
949
  },
949
950
  "examples": {
950
951
  "title": "Примеры:",
951
- "example1": "node i18ntk-manage.js",
952
- "example2": "node i18ntk-manage.js --source-dir ./locales",
953
- "example3": "node i18ntk-manage.js --output summary-report.txt",
954
- "example4": "node i18ntk-manage.js --verbose",
955
- "example5": "node i18ntk-manage.js --source-dir ./locales --output report.json"
952
+ "example1": "узел i18ntk-manage.js",
953
+ "example2": "узел i18ntk-manage.js --source-dir ./locales",
954
+ "example3": "узел i18ntk-manage.js --output summary-report.txt",
955
+ "example4": "узел i18ntk-manage.js --verbose",
956
+ "example5": "узел i18ntk-manage.js --source-dir ./locales --output report.json"
956
957
  },
957
958
  "features": {
958
959
  "initProject": "🚀 Инициализировать новые языки",
959
- "analyzeTranslations": "🔍 Анализ переводов",
960
- "validateTranslations": "✅ Валидация переводов",
961
- "checkUsage": "📊 Проверка использования ключей",
962
- "completeTranslations": "🎯 Завершение переводов (100% покрытия)",
960
+ "analyzeTranslations": "🔍 Анализировать переводы",
961
+ "validateTranslations": "✅ Проверка переводов",
962
+ "checkUsage": "📊 Проверьте использование ключа",
963
+ "completeTranslations": "🎯 Полные переводы (100% покрытие)",
963
964
  "showSizing": "📏 Анализ размеров",
964
- "runWorkflow": "🔄 Запуск полного процесса",
965
+ "runWorkflow": "🔄 Запуск полного рабочего процесса",
965
966
  "showStatus": "📋 Показать статус проекта",
966
- "deleteReports": "🗑️ Удалить все отчёты",
967
- "changeLanguage": "🌍 Сменить язык интерфейса",
968
- "settings": "⚙️ Настройки",
969
- "showHelp": "❓ Справка",
967
+ "deleteReports": "🗑️ Удалить все отчеты",
968
+ "changeLanguage": "🌍 Изменить язык пользовательского интерфейса",
969
+ "settings": "⚙️ Настройки",
970
+ "showHelp": "❓Помощь",
970
971
  "debugTools": "🔧 Инструменты отладки"
971
972
  },
972
973
  "messages": {
973
- "selectOption": "Выберите опцию:",
974
- "invalidOption": " Неверная опция. Пожалуйста, попробуйте снова.",
975
- "operationCompleted": " Операция успешно завершена!",
976
- "pressEnter": "Нажмите Enter для продолжения...",
977
- "goodbye": "👋 До свидания!",
978
- "unknownCommand": "Неизвестная команда: ${command}",
974
+ "selectOption": "Выберите вариант:",
975
+ "invalidOption": "Неверный вариант. Пожалуйста, попробуйте еще раз.",
976
+ "operationCompleted": "✅Операция завершена успешно!",
977
+ "pressEnter": "Нажмите Enter, чтобы продолжить...",
978
+ "goodbye": "👋До свидания!",
979
+ "unknownCommand": "Неизвестная команда: {command}",
979
980
  "nonInteractive": "⚠️ Обнаружен неинтерактивный режим. Меню отображается только для справки."
980
981
  },
981
982
  "i18n_helper": {
982
983
  "translation_file_not_found": "Файл перевода не найден: {translationFile}",
983
- "error_loading_translations": "Ошибка загрузки переводов: {errorMessage}",
984
- "translation_not_found": "Перевод для ключа не найден: {key}",
985
- "translation_key_not_string": "Значение ключа перевода не является строкой: {key}",
986
- "error_reading_locales_directory": "Ошибка чтения директории локалей: {errorMessage}"
987
- },
988
- "translateCommand": "translate - Автоперевод файлов локалей (Бета)"
984
+ "error_loading_translations": "Ошибка при загрузке переводов: {errorMessage}",
985
+ "translation_not_found": "Перевод не найден для ключа: {key}",
986
+ "translation_key_not_string": "Ключ перевода не преобразуется в строку: {key}",
987
+ "error_reading_locales_directory": "Ошибка чтения каталога локалей: {errorMessage}"
988
+ }
989
989
  },
990
990
  "init": {
991
- "initializationTitle": "🚀 Набор инструментов i18n — Инициализация проекта",
991
+ "initializationTitle": "🚀 Набор инструментов управления i18n — Инициализация проекта",
992
992
  "initializationCancelled": "🚫 Инициализация отменена пользователем.",
993
- "sourceDirectoryLabel": "📁 Директория исходников: {dir}",
993
+ "sourceDirectoryLabel": "📁 Каталог исходников: {dir}",
994
994
  "requiredTitle": "Требуется инициализация",
995
- "requiredBody": "Этот проект должен быть инициализирован перед запуском этой команды.",
996
- "promptRunNow": "Хотите выполнить инициализацию сейчас? (y/N):",
997
- "sourceLanguageLabel": "🌍 Исходный язык: {language}",
995
+ "requiredBody": "Этот проект необходимо инициализировать перед запуском этой команды.",
996
+ "promptRunNow": "Хотите запустить инициализацию сейчас? (да/нет):",
997
+ "sourceLanguageLabel": "🌍Исходный язык: {language}",
998
998
  "detectedI18nFrameworks": "🔍 Обнаружены фреймворки i18n: {frameworks}",
999
- "pinMustBe4Digits": "🔐 PIN должен содержать 4 цифры.",
1000
- "existingDirectoriesFound": "📁 Найдены существующие директории переводов:",
1001
- "useExistingDirectoryPrompt": "Вы хотите использовать существующую директорию? (y/n)",
1002
- "selectDirectoryPrompt": "Выберите директорию, введите номер (или выберите 'Создать новую директорию'):",
1003
- "enterNewDirectoryName": "Введите имя новой директории:",
1004
- "createdNewDirectory": "✅ Создана новая директория: {dir}",
1005
- "directoryAlreadyExists": "⚠️ Директория уже существует: {dir}",
1006
- "invalidDirectoryName": "❌ Неверное имя директории: {dir}",
1007
- "usingExistingDirectory": "Использует существующую директорию: {dir}",
1008
- "adminPinSetupOptional": "🔐 Настройка PIN администратора необязательна (рекомендуется для безопасности)",
999
+ "pinMustBe4Digits": "🔐ПИН-код должен состоять из 4 цифр.",
1000
+ "existingDirectoriesFound": "📁 Обнаружены существующие каталоги переводов:",
1001
+ "useExistingDirectoryPrompt": "Вы хотите использовать существующий каталог? (да/нет)",
1002
+ "selectDirectoryPrompt": "Выберите каталог, введя номер (или выберите «Создать новый каталог»).",
1003
+ "enterNewDirectoryName": "Введите имя для вашего нового каталога переводов",
1004
+ "createdNewDirectory": "✅ Создан новый каталог: {dir}",
1005
+ "directoryAlreadyExists": "⚠️ Каталог уже существует: {dir}",
1006
+ "invalidDirectoryName": "❌ Указано неверное имя каталога.",
1007
+ "usingExistingDirectory": "Использование существующего каталога: {dir}",
1008
+ "adminPinSetupOptional": "🔐 Установка PIN-кода администратора необязательна (рекомендуется в целях безопасности)",
1009
1009
  "adminPinSeparator": "------------------------------",
1010
- "adminPinDescription1": "PIN администратора: 4-значное число для безопасного доступа",
1011
- "adminPinDescription2": "Оставьте пустым, чтобы пропустить настройку PIN",
1012
- "adminPinDescription3": "PIN будет требоваться для всех последующих операций",
1013
- "adminPinDescription4": "Настройка PIN завершена",
1014
- "adminPinSetupPrompt": "Введите PIN администратора (4 цифры) или оставьте пустым, чтобы пропустить:",
1015
- "skippingAdminPinSetup": "Пропуск настройки PIN администратора...",
1016
- "settingUpAdminPin": "🔐 Настройка PIN администратора...",
1017
- "enterAdminPin": "Введите PIN администратора:",
1018
- "confirmAdminPin": "Подтвердите PIN администратора:",
1019
- "pinMismatch": "PINs не совпадают. Пожалуйста, попробуйте снова.",
1020
- "adminPinSetupSuccess": "🔐 Настройка PIN администратора завершена успешно!",
1021
- "adminPinSetupFailure": "🔐 Настройка PIN администратора завершена с ошибкой. Пожалуйста, попробуйте снова.",
1022
- "adminProtectionEnabled": "🔐 Защита администратора включена. Все операции требуют ввода PIN.",
1023
- "adminProtectionDisabled": "🔐 Защита администратора выключена. Все операции теперь доступны без PIN.",
1024
- "autoDetectedI18nDirectory": "📂 Автоопределённая директория i18n: {directory}",
1025
- "initializingProject": "⚙️ Инициализация конфигурации проекта...",
1026
- "createdSampleTranslationFile": "✅ Создан пример файла перевода: {file}",
1027
- "languageSelectionTitle": "🌐 Конфигурация языков",
1028
- "available": "Доступно",
1010
+ "adminPinDescription1": "PIN-код администратора: 4-значный номер для безопасного доступа.",
1011
+ "adminPinDescription2": "Оставьте поле пустым, чтобы пропустить настройку PIN-кода.",
1012
+ "adminPinDescription3": "Если вы установите PIN-код, он потребуется для всех будущих безопасных действий.",
1013
+ "adminPinDescription4": "Шифрование AES-256-GCM используется для безопасного хранения PIN-кода.",
1014
+ "adminPinSetupPrompt": "Введите PIN-код администратора (4 цифры) или оставьте поле пустым, чтобы пропустить:",
1015
+ "skippingAdminPinSetup": "Пропуск установки PIN-кода администратора...",
1016
+ "settingUpAdminPin": "🔐 Настройка PIN-кода администратора...",
1017
+ "enterAdminPin": "Введите PIN-код администратора:",
1018
+ "confirmAdminPin": "Подтвердите PIN-код администратора:",
1019
+ "pinMismatch": "PIN-коды не совпадают. Пожалуйста, попробуйте еще раз.",
1020
+ "adminPinSetupSuccess": "🔐 Установка PIN-кода администратора выполнена успешно!",
1021
+ "adminPinSetupFailure": "🔐 Не удалось настроить PIN-код администратора. Пожалуйста, попробуйте еще раз.",
1022
+ "adminProtectionEnabled": "🔐 Включена защита администратора. Все действия требуют аутентификации по PIN-коду.",
1023
+ "adminProtectionDisabled": "🔐 Защита администратора отключена. Все действия теперь доступны без ПИН-кода.",
1024
+ "autoDetectedI18nDirectory": "Автоматически обнаруженный каталог i18n: {directory}",
1025
+ "initializingProject": "⚙️ Инициализация конфигурации проекта...",
1026
+ "createdSampleTranslationFile": "✅ Создан образец файла перевода: {file}",
1027
+ "languageSelectionTitle": "🌐 Языковая конфигурация",
1028
+ "available": "Доступный",
1029
1029
  "defaultLanguages": "📝 Языки по умолчанию: {languages}",
1030
- "enterLanguageCodes": "🎯 Введите коды целевых языков (через запятую, например de, es, fr, ru):",
1030
+ "enterLanguageCodes": "🎯 Введите коды целевых языков (через запятую, например, de, es, fr, ru):",
1031
1031
  "targetLanguages": "🌍 Целевые языки",
1032
- "foundSourceFiles": "📄 Найдено исходных файлов для анализа: {count}",
1033
- "processingLanguage": "🔄 Обработка языка: {language}",
1034
- "fileProcessingResult": "✅ Обработан {file}: {translated}/{total} ключей ({percentage}%)",
1035
- "overallProgress": "📊 Общий прогресс: обработано {translated}/{total} ключей ({percentage}%)",
1036
- "initializationSummaryTitle": "📋 Итог инициализации",
1037
- "languageSummary": "{icon} {name} ({code}): {percentage}% готово",
1038
- "languageFiles": "📄 Файлов: {count}",
1039
- "languageKeys": "🔤 Ключей: {translated}/{total}",
1040
- "languageMissing": "⚠️ Отсутствуют: {count}",
1032
+ "foundSourceFiles": "📄 Найден {count} исходные файлы для анализа",
1033
+ "processingLanguage": "🔄 Язык обработки: {language}",
1034
+ "fileProcessingResult": "✅ Обработано {file}: {translated}/{total} ключи ({percentage}%)",
1035
+ "overallProgress": "📊 Общий прогресс: {translated}/{total} ключи обработаны({percentage}%)",
1036
+ "initializationSummaryTitle": "📋 Сводка инициализации",
1037
+ "languageSummary": "{icon} {name} ({code}): {percentage}% полный",
1038
+ "languageFiles": "📄 Файлы: {count}",
1039
+ "languageKeys": "🔤Ключи: {translated}/{total}",
1040
+ "languageMissing": "⚠️ Не хватает: {count}",
1041
1041
  "initializationCompletedSuccessfully": "🎉 Инициализация проекта успешно завершена!",
1042
1042
  "nextStepsTitle": "🚀 Следующие шаги",
1043
- "nextStep1": "1. Проверьте сгенерированные файлы переводов в директории locales/",
1044
- "nextStep2": "2. Добавьте переводы для каждого целевого языка",
1045
- "nextStep3": "3. Запустите «npm run i18ntk» снова для валидации переводов",
1046
- "detectedFrameworks": "✅ Обнаружены фреймворки i18n: {frameworks}",
1043
+ "nextStep1": "1. Просмотрите сгенерированные файлы перевода в каталоге locales/.",
1044
+ "nextStep2": "2. Добавьте переводы для каждого целевого языка.",
1045
+ "nextStep3": "3. Снова запустите npm run i18ntk, чтобы проверить переводы.",
1046
+ "detectedFrameworks": "✅ Обнаруженные фреймворки i18n: {frameworks}",
1047
1047
  "setup": {
1048
- "title": "Настройка",
1049
- "question": "Вопрос настройки",
1050
- "opt_single": "Одиночный файл",
1048
+ "title": "Настраивать",
1049
+ "question": "Вопрос по настройке",
1050
+ "opt_single": "Один файл",
1051
1051
  "opt_modular": "Модульный",
1052
1052
  "opt_existing": "Существующий",
1053
- "choice_prompt": "Выберите опцию:",
1054
- "opt_confirm": "Подтвердить",
1055
- "opt_cancel": "Отменить",
1056
- "apply_all_prompt": "Применить эту структуру ко всем языкам? (y/Н):",
1057
- "per_language_intro": "Вы выбрали настройку языков по отдельности. Доступные языки:",
1053
+ "choice_prompt": "Выберите вариант:",
1054
+ "opt_confirm": "Подтверждать",
1055
+ "opt_cancel": "Отмена",
1056
+ "apply_all_prompt": "Применить эту структуру ко всем языкам? (да/нет):",
1057
+ "per_language_intro": "Вы выбрали настройку языков по отдельности. Вот доступные языки:",
1058
1058
  "available_languages": "Доступные языки: {languages}",
1059
- "include_prompt": "Введите коды языков через запятую (например, 'de,fr,es'):"
1059
+ "include_prompt": "Введите через запятую коды языков, которые необходимо включить (например, «de,fr,es»):"
1060
1060
  },
1061
1061
  "warnings": {
1062
- "noPackageJson": "Не найден package.json. Невозможно определить фреймворк автоматически."
1062
+ "noPackageJson": "Пакет package.json не найден. Невозможно автоматически обнаружить платформу i18n."
1063
1063
  },
1064
1064
  "errorsPackageJsonRead": "Ошибка чтения package.json: {error}",
1065
- "errorsNoFramework": "Фреймворк i18n не обнаружен. Пожалуйста, установите его или укажите вручную.",
1065
+ "errorsNoFramework": "Платформа i18n не обнаружена. Пожалуйста, установите его или укажите вручную.",
1066
1066
  "suggestions": {
1067
- "noFramework": "Фреймворк i18n не обнаружен. Рассмотрите использование одного из следующих:",
1068
- "installFramework": "Для установки фреймворка выполните: npm install <имя-пакета>"
1067
+ "noFramework": "Платформа i18n не обнаружена. Рассмотрите возможность использования одного из следующих вариантов:",
1068
+ "installFramework": "Чтобы установить фреймворк, запустите: npm install <имя-пакета>"
1069
1069
  },
1070
1070
  "frameworks": {
1071
1071
  "react": "- Реагировать i18next (реагировать-i18next)",
@@ -1074,108 +1074,108 @@
1074
1074
  "nuxt": "- Нукст i18n (@nuxtjs/i18n)",
1075
1075
  "svelte": "- Стройный i18n (стройный-i18n)"
1076
1076
  },
1077
- "continueWithoutI18nPrompt": "Фреймворк i18n не обнаружен. Продолжить без него? (y/N):",
1078
- "detectedI18nFramework": "Обнаружен фреймворк i18n: {frameworks}",
1077
+ "continueWithoutI18nPrompt": "Платформа i18n не обнаружена. Хотите продолжить без него? (да/нет):",
1078
+ "detectedI18nFramework": "Обнаруженная платформа i18n: {frameworks}",
1079
1079
  "existingDirectoryItem": "{index}. {location}",
1080
- "usingExistingStructure": "Используется существующая структура: {dir}",
1081
- "creatingSourceDirectory": "Создание директории исходников: {dir}",
1082
- "creatingSourceLanguageDirectory": "Создание директории исходного языка: {dir}",
1080
+ "usingExistingStructure": "Используя существующую структуру: {dir}",
1081
+ "creatingSourceDirectory": "Создание исходного каталога: {dir}",
1082
+ "creatingSourceLanguageDirectory": "Создание каталога исходного языка: {dir}",
1083
1083
  "errors": {
1084
- "errorExecutingCommand": "Ошибка при выполнении команды: {error}",
1085
- "sourceDirectoryNotFound": "Директория исходников не найдена: {dir}",
1086
- "sourceLanguageDirectoryNotFound": "Директория исходного языка не найдена: {dir}",
1087
- "noJsonFilesInSourceDirectory": "В директории исходников не найдено JSON-файлов: {dir}",
1088
- "invalidFilePathDetected": "Обнаружен недопустимый путь к файлу",
1084
+ "errorExecutingCommand": "Ошибка выполнения команды: {error}",
1085
+ "sourceDirectoryNotFound": "Исходный каталог не найден: {dir}",
1086
+ "sourceLanguageDirectoryNotFound": "Каталог исходного языка не найден: {dir}",
1087
+ "noJsonFilesInSourceDirectory": "В исходном каталоге не найдены файлы JSON: {dir}",
1088
+ "invalidFilePathDetected": "Обнаружен неверный путь к файлу",
1089
1089
  "initializationFailed": "Инициализация не удалась: {error}",
1090
1090
  "noFramework": "Платформа i18n не обнаружена. Продолжайте использовать общий режим.",
1091
1091
  "packageJsonRead": "Ошибка чтения package.json."
1092
1092
  },
1093
- "processingFile": "Обработка {file} для языка {language}...",
1094
- "fileAlreadyExistsMerging": "Файл {file} уже существует. Объединяются новые ключи.",
1095
- "createdNewFile": "Создан новый файл: {file}",
1096
- "updatedFile": "Обновлён файл: {file}",
1097
- "skippingExcludedFile": "Пропуск {file} для языка {language} файл исключён.",
1093
+ "processingFile": "Обработка {file} для {language}...",
1094
+ "fileAlreadyExistsMerging": "Файл {file} уже существует. Объединение новых ключей.",
1095
+ "createdNewFile": "Создал новый файл: {file}",
1096
+ "updatedFile": "Обновленный файл: {file}",
1097
+ "skippingExcludedFile": "Пропуск {file} для {language} как то это исключено.",
1098
1098
  "continuingWithoutAdminPin": "Продолжение без настройки PIN-кода администратора.",
1099
- "createdSourceLanguageDirectory": " Создано директория исходников: {dir}",
1100
- "errorSettingUpAdminPin": "Ошибка при настройке PIN-кода администратора: {error}.",
1099
+ "createdSourceLanguageDirectory": "Создан каталог исходного языка: {dir}",
1100
+ "errorSettingUpAdminPin": "Ошибка при настройке PIN-кода администратора: {error}",
1101
1101
  "noTargetLanguagesSpecified": "Целевые языки не указаны.",
1102
1102
  "translationFilesCreatedWarning": "Файлы перевода были созданы с заполнителями; проверка перед использованием в производстве.",
1103
- "warningCannotReadSourceDir": "Внимание: невозможно прочитать исходный каталог {dir}: {error}.",
1103
+ "warningCannotReadSourceDir": "Предупреждение: невозможно прочитать исходный каталог {dir}: {error}",
1104
1104
  "warningInvalidLanguageCodes": "Внимание: неверные коды языков игнорируются: {languages}",
1105
1105
  "warningProceedingWithoutFramework": "Продолжаем без обнаружения платформы i18n."
1106
1106
  },
1107
1107
  "language": {
1108
- "title": "🌍 Сменить язык",
1109
- "separator": "============================================================",
1108
+ "title": "🌍 Изменить язык",
1109
+ "separator": "=========================================================",
1110
1110
  "current": "Текущий язык: {language}",
1111
1111
  "available": "Доступные языки:",
1112
1112
  "languageOption": "{index}. {displayName}{current}",
1113
1113
  "backToMainMenu": "Вернуться в главное меню",
1114
1114
  "prompt": "Выберите язык (0-8):",
1115
- "cancelled": "Смена языка отменена.",
1116
- "invalid": "Неверный выбор. Пожалуйста, попробуйте снова.",
1117
- "changed": "Язык изменён на: {language}",
1118
- "changeFailed": "Не удалось сменить язык: {error}",
1119
- "pressEnterToContinue": "Нажмите Enter для продолжения..."
1115
+ "cancelled": "Изменение языка отменено.",
1116
+ "invalid": "Неверный выбор. Пожалуйста, попробуйте еще раз.",
1117
+ "changed": "Язык изменен на: {language}",
1118
+ "changeFailed": "Не удалось изменить язык: {error}",
1119
+ "pressEnterToContinue": "Нажмите Enter, чтобы продолжить..."
1120
1120
  },
1121
1121
  "maintainLanguagePurity": {
1122
- "workflow_title": "🚀 Рабочий процесс поддержания чистоты языков",
1123
- "step1_title": "📊 ШАГ 1: Первичная оценка чистоты языков",
1124
- "step2_title": "🔧 ШАГ 2: Обнаружение и автоисправление языковых несовпадений",
1125
- "step3_title": "🌐 ШАГ 3: Применение автоматических переводов",
1126
- "step4_title": "✅ ШАГ 4: Финальная оценка чистоты языков",
1122
+ "workflow_title": "🚀 Рабочий процесс поддержания чистоты языка",
1123
+ "step1_title": "📊 ШАГ 1: Первоначальная оценка чистоты языка",
1124
+ "step2_title": "🔧 ШАГ 2. Обнаружение и автоматическое исправление языковых несоответствий",
1125
+ "step3_title": "🌐 ШАГ 3. Примените автоматический перевод",
1126
+ "step4_title": "✅ ШАГ 4: Окончательная оценка чистоты языка",
1127
1127
  "workflow_error": "❌ Ошибка рабочего процесса: {errorMessage}",
1128
- "running_initial_validation": "Выполняется первичная проверка чистоты языков...",
1129
- "initial_assessment_complete": "✅ Первичная оценка завершена: найдено {count} нарушений",
1130
- "initial_assessment_warnings": "⚠️ Первая оценка завершена с предупреждениями",
1131
- "detecting_fixing_mismatches": "Обнаружение и исправление языковых несовпадений...",
1132
- "detection_complete_applying_fixes": "Обнаружение завершено. Применяются исправления...",
1133
- "mismatch_fixes_complete": "✅ Исправления языковых несовпадений завершены: применено {count} исправлений",
1134
- "mismatch_fixes_warnings": "⚠️ Исправления языковых несовпадений завершены с предупреждениями",
1135
- "applying_automatic_translations": "Применение автоматических переводов...",
1136
- "translation_preview_complete": "Предпросмотр переводов завершён. Применение переводов..."
1128
+ "running_initial_validation": "Выполнение начальной проверки чистоты языка...",
1129
+ "initial_assessment_complete": "✅ Первоначальная оценка завершена: {count} обнаружены нарушения",
1130
+ "initial_assessment_warnings": "⚠️ Первоначальная оценка завершена с предупреждениями.",
1131
+ "detecting_fixing_mismatches": "Обнаружение и исправление языковых несоответствий...",
1132
+ "detection_complete_applying_fixes": "Обнаружение завершено. Применение автоисправлений...",
1133
+ "mismatch_fixes_complete": "✅ Исправлены языковые несоответствия: {count} исправления применены",
1134
+ "mismatch_fixes_warnings": "⚠️ Исправлены несоответствия языков, дополнены предупреждениями.",
1135
+ "applying_automatic_translations": "Применение автоматического перевода...",
1136
+ "translation_preview_complete": "Предварительный просмотр перевода завершен. Применение переводов..."
1137
1137
  },
1138
1138
  "menu": {
1139
1139
  "title": "🌐 МЕНЮ УПРАВЛЕНИЯ I18NTK",
1140
- "separator": "============================================================",
1140
+ "separator": "=========================================================",
1141
1141
  "options": {
1142
1142
  "init": "🚀 Инициализировать новые языки",
1143
- "analyze": "🔍 Анализ переводов",
1144
- "validate": "✅ Проверить переводы",
1145
- "usage": "📊 Проверить использование ключей",
1146
- "complete": "🎯 Завершить переводы (100% покрытия)",
1143
+ "analyze": "🔍 Анализировать переводы",
1144
+ "validate": "✅ Проверка переводов",
1145
+ "usage": "📊 Проверьте использование ключа",
1146
+ "complete": "🎯 Полные переводы (100% покрытие)",
1147
1147
  "sizing": "📏 Анализ размеров",
1148
- "fix": "🛠️ Исправить переводы-заглушки",
1149
- "scanner": "🔍 Сканировать проблемы i18n",
1150
- "translate": "🌐 Автоперевод (Бета)",
1151
- "workflow": "🔄 Запустить полный рабочий процесс",
1148
+ "fix": "🛠️ Исправьте переводы заполнителей.",
1149
+ "scanner": "🔍 Сканирование на наличие проблем с i18n",
1150
+ "translate": "🌐 Автоматический перевод (бета-версия)",
1151
+ "workflow": "🔄 Запуск полного рабочего процесса",
1152
1152
  "status": "📋 Показать статус проекта",
1153
- "delete": "🗑️ Удалить все отчёты",
1154
- "language": "🌍 Сменить язык интерфейса",
1153
+ "delete": "🗑️ Удалить все отчеты",
1154
+ "language": "🌍 Изменить язык пользовательского интерфейса",
1155
1155
  "settings": "⚙️ Настройки",
1156
- "help": "❓ Справка",
1156
+ "help": "❓Помощь",
1157
1157
  "debug": "🔧 Инструменты отладки",
1158
1158
  "exit": "🚪 Выход"
1159
1159
  },
1160
- "update": "📦 Обновить пакет",
1161
- "goodbye": "👋 До свидания!",
1162
- "invalidChoice": "Неверный выбор. Пожалуйста выберите 0-15.",
1163
- "returning": "🔄 Возвращаюсь в главное меню...",
1164
- "invalidOption": " Недопустимая опция. Попробуйте ещё раз.",
1165
- "nonInteractiveModeWarning": "⚠️ Обнаружен неинтерактивный режим. Меню показано только для справки.",
1166
- "useDirectExecution": "💡 Используйте: node main/i18ntk-manage.js --command=<command> для прямого выполнения.",
1167
- "useHelpForCommands": "📖 Используйте: node main/i18ntk-manage.js --help для просмотра доступных команд.",
1160
+ "update": "📦 Пакет обновлений",
1161
+ "goodbye": "👋До свидания!",
1162
+ "invalidChoice": "Неверный выбор. Пожалуйста, выберите 015.",
1163
+ "returning": "Возврат в главное меню...",
1164
+ "invalidOption": "Неверный вариант. Пожалуйста, попробуйте еще раз.",
1165
+ "nonInteractiveModeWarning": "Обнаружен неинтерактивный режим. Меню отображается только для справки.",
1166
+ "useDirectExecution": "Используйте: node main/manage/index.js --command=<command> для непосредственного исполнения.",
1167
+ "useHelpForCommands": "Используйте: node main/manage/index.js --help для доступных команд.",
1168
1168
  "returnToMainMenu": "Нажмите Enter, чтобы вернуться в главное меню.",
1169
1169
  "pressEnterToContinue": "Нажмите Enter, чтобы продолжить...",
1170
- "selectOptionPrompt": "Выберите опцию:",
1170
+ "selectOptionPrompt": "Выберите вариант:",
1171
1171
  "selectDebugToolPrompt": "Выберите инструмент отладки:",
1172
- "selectLogPrompt": "Выберите файл лога (1-{count}):",
1173
- "autoDetectedI18nDirectory": "📂 Автоопределённая директория i18n: {directory}",
1174
- "executingCommand": "Выполняется команда: {command}",
1172
+ "selectLogPrompt": "Выберите файл журнала (1-{count}):",
1173
+ "autoDetectedI18nDirectory": "Автоматически обнаруженный каталог i18n: {directory}",
1174
+ "executingCommand": "Выполнение команды: {command}",
1175
1175
  "unknownCommand": "Неизвестная команда: {command}",
1176
1176
  "languageOption": "{index}. {displayName}{current}",
1177
1177
  "debugTools": {
1178
- "1": "Анализ файлов логов",
1178
+ "1": "Анализ файла журнала",
1179
1179
  "2": "Анализ использования ключей перевода",
1180
1180
  "3": "Анализ полноты перевода",
1181
1181
  "4": "Анализ формата перевода",
@@ -1184,107 +1184,107 @@
1184
1184
  },
1185
1185
  "native_translations": {
1186
1186
  "exact_translation_found": "✅ {keyPath}: {value}",
1187
- "no_exact_translation": "⚠️ Точный перевод для '{keyPath}' не найден, найдены похожие ключи:",
1188
- "similar_key": "- {key} (совпадение {similarity}%)",
1189
- "processing_language_files": "🔄 Обработка {count} файлов языка...",
1187
+ "no_exact_translation": "⚠️ Нет точного перевода слова '{keyPath}', найдены похожие ключи:",
1188
+ "similar_key": "- {key} ({similarity}% соответствовать)",
1189
+ "processing_language_files": "🔄Обработка {count} языковые файлы...",
1190
1190
  "file_not_found": "⚠️ Файл не найден: {file}",
1191
- "processing_translations": "🌍 Обработка переводов {code}...",
1192
- "backup_created": "📋 Создана резервная копия: {filename}",
1193
- "error_parsing_json": "❌ Ошибка при разборе {code}.json: {errorMessage}",
1194
- "existing_keys_found": "📊 {code}: Найдено существующих ключей: {count}",
1195
- "error_writing_json": "❌ Ошибка при записи {code}.json: {errorMessage}",
1196
- "translations_replaced": "📊 {code}: Заменено переводов: {count}",
1197
- "translation_replacement_complete": "✅ Замена переводов завершена!",
1191
+ "processing_translations": "🌍Обработка {code} переводы...",
1192
+ "backup_created": "📋 Резервная копия создана: {filename}",
1193
+ "error_parsing_json": "❌ Разбор ошибок {code}.json: {errorMessage}",
1194
+ "existing_keys_found": "📊 {code}: Найденный {count} существующие ключи",
1195
+ "error_writing_json": "❌ Ошибка написания {code}.json: {errorMessage}",
1196
+ "translations_replaced": "📊 {code}: {count} переводы заменены",
1197
+ "translation_replacement_complete": "✅ Замена перевода завершена!",
1198
1198
  "total_replacements": "📊 Всего замен: {count}",
1199
- "dry_run_mode": "⚠️ РЕЖИМ ПРОГОНА БЕЗ ИЗМЕНЕНИЙ — файлы не будут модифицированы",
1200
- "tool_title": "🌍 Переключатель родных переводов v1.10.1",
1201
- "tool_separator": "======================================",
1202
- "dry_run_warning": "⚠️ Запуск в режиме DRY RUN файлы не будут изменены",
1203
- "error_during_replacement": "❌ Ошибка во время замены переводов:"
1199
+ "dry_run_mode": "⚠️ РЕЖИМ «СУХОЙ ЗАПУСК» — файлы не были изменены.",
1200
+ "tool_title": "🌍 Собственный заменитель перевода v1.9.1",
1201
+ "tool_separator": "=====================================",
1202
+ "dry_run_warning": "⚠️ Запуск в режиме DRY RUN никакие файлы не будут изменены.",
1203
+ "error_during_replacement": "❌ Ошибка при замене перевода:"
1204
1204
  }
1205
1205
  },
1206
1206
  "config": {
1207
- "dirFallbackWarning": "⚠️ Каталог {dir} не найден. Используется {fallback}.",
1208
- "dirInvalidError": "❌ Недействительный каталог: {dir}"
1207
+ "dirFallbackWarning": "⚠️ Каталог {dir} не найдено. С использованием {fallback}.",
1208
+ "dirInvalidError": "❌ Неверный каталог: {dir}"
1209
1209
  },
1210
1210
  "operations": {
1211
- "completed": " Операция успешно завершена!",
1212
- "deleteReportsTitle": "🗑️ Удалить отчёты и логи",
1213
- "scanningForFiles": "🔍 Поиск файлов для удаления...",
1214
- "noFilesFoundToDelete": "✅ Файлы для удаления не найдены.",
1215
- "availableDirectories": "📁 Доступные директории:",
1216
- "allDirectories": "Все директории",
1217
- "andMore": "и ещё {count} директорий",
1211
+ "completed": "✅Операция завершена успешно!",
1212
+ "deleteReportsTitle": "🗑️ Удаление отчетов и журналов",
1213
+ "scanningForFiles": "🔍 Сканирование файлов для удаления...",
1214
+ "noFilesFoundToDelete": "✅ Не найдено файлов для удаления.",
1215
+ "availableDirectories": "📁 Доступные каталоги:",
1216
+ "allDirectories": "Все каталоги",
1217
+ "andMore": "и многое другое...",
1218
1218
  "cancelOption": "Отмена",
1219
- "cancelReportOption": "Отмена / Вернуться в меню",
1219
+ "cancelReportOption": "Отмена/возврат в меню",
1220
1220
  "invalidSelection": "❌ Неверный выбор.",
1221
- "foundFilesInSelectedDirectories": "📊 Найдено {count} файлов в выбранных директориях:",
1222
- "deletionOptions": "🗑️ Параметры удаления:",
1221
+ "foundFilesInSelectedDirectories": "📊 Найден {count} файлы в выбранных каталогах:",
1222
+ "deletionOptions": "🗑️ Варианты удаления:",
1223
1223
  "deleteAllFiles": "Удалить все файлы",
1224
- "keepLast3Files": "Сохранить последние 3 файла (по дате)",
1225
- "keepLast5Files": "Сохранить последние 5 файлов (по дате)",
1224
+ "keepLast3Files": "Сохранять последние 3 файла (по дате)",
1225
+ "keepLast5Files": "Сохранять последние 5 файлов (по дате)",
1226
1226
  "noFilesToDelete": "✅ Нет файлов для удаления.",
1227
- "filesToDeleteCount": "📋 Файлов на удаление: {count}",
1228
- "filesToKeepCount": "📋 Файлов на сохранение: {count}",
1229
- "confirmDeletion": "⚠️ Вы уверены, что хотите удалить эти файлы? (y/N):",
1230
- "deletedFile": "✅ Удалён: {filename}",
1227
+ "filesToDeleteCount": "📋 Файлы для удаления: {count}",
1228
+ "filesToKeepCount": "📋 Файлы, которые нужно сохранить: {count}",
1229
+ "confirmDeletion": "⚠️ Вы уверены, что хотите удалить эти файлы? (да/нет):",
1230
+ "deletedFile": "✅ Удалено: {filename}",
1231
1231
  "failedToDeleteFile": "❌ Не удалось удалить {filename}: {error}",
1232
- "cancelled": " Операция отменена.",
1232
+ "cancelled": "❌Операция отменена.",
1233
1233
  "init": {
1234
- "title": "🚀 Инициализация Нового Языка"
1234
+ "title": "🚀 Инициализировать новый язык"
1235
1235
  },
1236
1236
  "usage": {
1237
- "title": "📊 Проверка Использования Ключей Перевода",
1238
- "noUsedKeysHint": "🔍 Найдено переводы, но они не используются в исходном коде. Проверьте --source-dir и translationPatterns."
1237
+ "title": "📊 Проверьте использование ключа",
1238
+ "noUsedKeysHint": "Нашел переводы, но не использовал в исходном коде. Проверьте --source-dir и TranslationPatterns."
1239
1239
  },
1240
1240
  "analyze": {
1241
- "title": "🔍 Анализ Переводов"
1241
+ "title": "🔍 Анализировать переводы"
1242
1242
  },
1243
1243
  "validate": {
1244
- "title": "✅ Проверка Переводов"
1244
+ "title": "✅ Проверка переводов"
1245
1245
  },
1246
1246
  "settings": {
1247
- "title": "⚙️ Настройка Менеджера Переводов",
1248
- "separator": "============================================================"
1247
+ "title": "⚙️ Управление настройками",
1248
+ "separator": "========================================================="
1249
1249
  },
1250
1250
  "complete": {
1251
- "deletingOldReport": "🗑️ Удаление старого отчёта использования для свежего анализа",
1252
- "generatingFreshAnalysis": "🔄 Генерация нового анализа использования...",
1253
- "couldNotGenerate": "⚠️ Не удалось сгенерировать анализ использования. Используются общие отсутствующие ключи.",
1254
- "reportNotFound": "⚠️ Отчёт об использовании не найден. Генерируется новый анализ...",
1255
- "foundMissingKeys": "🔍 Найдено {count} отсутствующих ключей по анализу использования",
1256
- "couldNotParse": "⚠️ Не удалось разобрать отчёт об использовании. Используются общие отсутствующие ключи.",
1257
- "title": "🎯 ЗАВЕРШЕНИЕ ПЕРЕВОДОВ",
1258
- "separator": "============================================================",
1259
- "sourceDir": "📁 Директория исходников: {sourceDir}",
1251
+ "deletingOldReport": "🗑️ Удаление старого отчета об использовании для нового анализа.",
1252
+ "generatingFreshAnalysis": "🔄 Проведение свежего анализа использования...",
1253
+ "couldNotGenerate": "⚠️ Не удалось создать анализ использования. Использование часто отсутствующих ключей.",
1254
+ "reportNotFound": "⚠️ Отчет об использовании не найден. Создание свежего анализа...",
1255
+ "foundMissingKeys": "🔍 Найден {count} недостающие ключи из анализа использования",
1256
+ "couldNotParse": "⚠️ Не удалось проанализировать отчет об использовании. Использование часто отсутствующих ключей.",
1257
+ "title": "🎯 ВЫПОЛНЕНИЕ ПЕРЕВОДОВ",
1258
+ "separator": "=========================================================",
1259
+ "sourceDir": "📁 Исходный каталог: {sourceDir}",
1260
1260
  "sourceLanguage": "🔤 Исходный язык: {sourceLanguage}",
1261
- "dryRunMode": "🧪 РЕЖИМ ПРОГОНА БЕЗ ИЗМЕНЕНИЙ — файлы не будут изменены",
1261
+ "dryRunMode": "🧪 РЕЖИМ «СУХОЙ ЗАПУСК» — файлы не будут изменены.",
1262
1262
  "languages": "🎯 Целевые языки: {languages}",
1263
- "addingMissingKeys": "➕ Добавление отсутствующих ключей в файлы перевода...",
1264
- "processing": "🔄 Обработка {language}...",
1265
- "addedKeys": "✅ Добавлено {count} ключей",
1263
+ "addingMissingKeys": "➕ Добавление недостающих ключей в файлы перевода...",
1264
+ "processing": "🔄Обработка {language}...",
1265
+ "addedKeys": "✅ Добавлено {count} ключи",
1266
1266
  "changeDetails": "📝 {file}: {key}",
1267
- "noChangesNeeded": "✅ Для {language} изменений не требуется",
1268
- "summaryTitle": "📊 ИТОГИ ЗАВЕРШЕНИЯ",
1267
+ "noChangesNeeded": "✅ Никаких изменений не требуется {language}",
1268
+ "summaryTitle": "📊 РЕЗЮМЕ ЗАВЕРШЕНИЯ",
1269
1269
  "totalChanges": "📝 Всего изменений: {totalChanges}",
1270
- "languagesProcessed": "🌐 Обработано языков: {languagesProcessed}",
1271
- "missingKeysAdded": "➕ Добавлено отсутствующих ключей: {missingKeysAdded}",
1270
+ "languagesProcessed": "🌐 Обработанные языки: {languagesProcessed}",
1271
+ "missingKeysAdded": "➕ Добавлены недостающие клавиши: {missingKeysAdded}",
1272
1272
  "nextStepsTitle": "📋 ДАЛЬНЕЙШИЕ ШАГИ",
1273
1273
  "nextStep1": "1. Запустите анализ использования:",
1274
- "nextStep2": "2. Проверьте переводы:",
1274
+ "nextStep2": "2. Проверка перевода:",
1275
1275
  "nextStep3": "3. Проанализируйте полноту:",
1276
1276
  "allKeysAvailable": "🎉 Все ключи перевода теперь доступны!",
1277
- "runWithoutDryRun": "💡 Запустите без --dry-run для применения изменений",
1278
- "pressEnterToContinue": "Нажмите Enter для продолжения..."
1277
+ "runWithoutDryRun": "💡 Запустите без --dry-run, чтобы применить изменения.",
1278
+ "pressEnterToContinue": "Нажмите Enter, чтобы продолжить..."
1279
1279
  },
1280
1280
  "updatePackage": {
1281
- "title": "📦 Обновить пакет i18n-toolkit",
1282
- "description": "Это обновит пакет i18n-toolkit до последней версии из npm.",
1283
- "command": "Команда для выполнения",
1284
- "confirm": "Вы уверены, что хотите продолжить обновление? (y/N):",
1285
- "updating": "Обновление пакета... Это может занять несколько минут.",
1286
- "success": "✅ i18n-toolkit успешно обновлён!",
1287
- "error": "❌ Не удалось обновить i18n-toolkit",
1281
+ "title": "📦 Обновление пакета i18n-toolkit",
1282
+ "description": "Это обновит пакет i18n-toolkit до последней версии, доступной на npm.",
1283
+ "command": "Команда для запуска",
1284
+ "confirm": "Вы уверены, что хотите продолжить обновление? (да/нет):",
1285
+ "updating": "Обновление пакета... Это может занять некоторое время.",
1286
+ "success": "✅ i18n-toolkit успешно обновлен!",
1287
+ "error": "❌ Не удалось обновить i18n-toolkit.",
1288
1288
  "cancelled": "❌ Обновление отменено."
1289
1289
  }
1290
1290
  },
@@ -1292,227 +1292,227 @@
1292
1292
  "pathValidationFailed": "path_validation_failed",
1293
1293
  "invalidInputType": "инвалид_вход_тип",
1294
1294
  "pathTraversalAttempt": "path_traversal_attempt",
1295
- "pathValidated": "✅ Путь успешно проверен",
1296
- "pathValidationError": "путь_проверка_ошибка",
1297
- "fileTooLarge": "🔒 Безопасность: Файл слишком большой: {filePath}",
1298
- "fileReadError": "🔒 Безопасность: Ошибка чтения файла: {errorMessage}",
1295
+ "pathValidated": "✅ Путь успешно подтвержден",
1296
+ "pathValidationError": "path_validation_error",
1297
+ "fileTooLarge": "Безопасность: Файл слишком большой: {filePath}",
1298
+ "fileReadError": "Безопасность: Ошибка чтения файла: {errorMessage}",
1299
1299
  "contentTooLargeForFile": "Безопасность: Содержимое слишком велико для файла: {filePath}",
1300
1300
  "fileWriteError": "Безопасность: Ошибка записи файла: {errorMessage}",
1301
- "jsonStringTooLarge": "Безопасность: JSON-строка слишком длинная",
1302
- "jsonParseError": "Безопасность: Ошибка разбора JSON: {errorMessage}",
1303
- "inputContainsDisallowedCharacters": "Безопасность: Ввод содержит недопустимые символы",
1301
+ "jsonStringTooLarge": "Безопасность: строка JSON слишком велика.",
1302
+ "jsonParseError": "Безопасность: ошибка анализа JSON: {errorMessage}",
1303
+ "inputContainsDisallowedCharacters": "Безопасность: ввод содержит запрещенные символы.",
1304
1304
  "unknownCommandArgument": "Безопасность: Неизвестный аргумент команды: {key}",
1305
1305
  "unknown_command_argument": "Безопасность: Неизвестный аргумент команды: {key}",
1306
1306
  "unknownConfigKey": "Безопасность: Неизвестный ключ конфигурации: {key}",
1307
1307
  "unknown_config_key": "Безопасность: Неизвестный ключ конфигурации: {key}",
1308
- "securityAlert": "[ALERT БЕЗОПАСНОСТИ] {timestamp}: {event}",
1308
+ "securityAlert": "[ПРЕДУПРЕЖДЕНИЕ О БЕЗОПАСНОСТИ] {timestamp}: {event}",
1309
1309
  "contentTooLarge": "Безопасность: Содержимое слишком велико для файла: {validatedPath}",
1310
- "inputDisallowedCharacters": "Безопасность: Ввод содержит недопустимые символы",
1310
+ "inputDisallowedCharacters": "Безопасность: ввод содержит запрещенные символы.",
1311
1311
  "unknownCommandArg": "Неизвестный аргумент команды",
1312
1312
  "logMessage": "[БЕЗОПАСНОСТЬ {level}] {timestamp}: {event}",
1313
- "alertMessage": "[ALERT БЕЗОПАСНОСТИ] {timestamp}: {event}",
1313
+ "alertMessage": "[ПРЕДУПРЕЖДЕНИЕ О БЕЗОПАСНОСТИ] {timestamp}: {event}",
1314
1314
  "securityWarning": "[ПРЕДУПРЕЖДЕНИЕ БЕЗОПАСНОСТИ] {timestamp}: {event}",
1315
- "json_parse_error": "Безопасность: Ошибка разбора JSON: {errorMessage}",
1316
- "file_too_large": "Безопасность: Файл слишком большой",
1317
- "file_read_error": "Безопасность: Ошибка чтения файла",
1318
- "content_too_large_for_file": "Безопасность: Содержимое слишком велико для файла",
1319
- "file_write_error": "Безопасность: Ошибка записи файла",
1320
- "json_string_too_large": "Безопасность: JSON-строка слишком длинная",
1321
- "recursion_detected": "Безопасность: Обнаружена рекурсия в {operation}",
1322
- "operation_timeout": "Безопасность: Тайм-аут операции: {operation}",
1323
- "operation_error": "Безопасность: Ошибка операции {operation}: {error}",
1324
- "directory_read_error": "Безопасность: Ошибка чтения каталога: {errorMessage}",
1325
- "security_alert": "Безопасность: Уведомление"
1315
+ "json_parse_error": "Безопасность: ошибка анализа JSON: {errorMessage}",
1316
+ "file_too_large": "Файл слишком большой",
1317
+ "file_read_error": "Ошибка чтения файла",
1318
+ "content_too_large_for_file": "Содержимое слишком велико для файла",
1319
+ "file_write_error": "Ошибка записи файла",
1320
+ "json_string_too_large": "Строка Json слишком велика",
1321
+ "recursion_detected": "Рекурсия обнаружена в {operation}",
1322
+ "operation_timeout": "Тайм-аут операции: {operation}",
1323
+ "operation_error": "Ошибка операции в {operation}: {error}",
1324
+ "directory_read_error": "Ошибка чтения каталога: {errorMessage}",
1325
+ "security_alert": "Оповещение безопасности"
1326
1326
  },
1327
1327
  "settings-cli": {
1328
1328
  "settings": {
1329
1329
  "mainMenu": {
1330
1330
  "title": "Главное меню:",
1331
- "uiSettings": "Настройки интерфейса",
1332
- "uiSettingsDesc": "Язык, тема и параметры интерфейса",
1333
- "directorySettings": "Параметры директорий",
1334
- "directorySettingsDesc": "Пути к исходным и выходным директориям",
1335
- "scriptDirectorySettings": "Параметры директорий скриптов",
1336
- "scriptDirectorySettingsDesc": "Пути директорий для отдельных операций скриптов",
1337
- "processingSettings": "Параметры обработки",
1338
- "processingSettingsDesc": "Размер пакета, конкуренция и производительность",
1331
+ "uiSettings": "Настройки пользовательского интерфейса",
1332
+ "uiSettingsDesc": "Параметры языка, темы и интерфейса",
1333
+ "directorySettings": "Настройки каталога",
1334
+ "directorySettingsDesc": "Пути к исходному и выходному каталогу",
1335
+ "scriptDirectorySettings": "Настройки каталога скриптов",
1336
+ "scriptDirectorySettingsDesc": "Пути к каталогам для отдельных операций скрипта",
1337
+ "processingSettings": "Настройки обработки",
1338
+ "processingSettingsDesc": "Размер пакета, параллелизм и производительность",
1339
1339
  "advancedSettings": "Расширенные настройки",
1340
- "advancedSettingsDesc": "Валидация, логирование и экспертные опции",
1341
- "viewAllSettings": "Показать все настройки",
1340
+ "advancedSettingsDesc": "Проверка, регистрация и экспертные параметры",
1341
+ "viewAllSettings": "Просмотреть все настройки",
1342
1342
  "viewAllSettingsDesc": "Отобразить текущую конфигурацию",
1343
1343
  "importExport": "Импорт/Экспорт",
1344
1344
  "importExportDesc": "Резервное копирование и восстановление настроек",
1345
- "resetToDefaults": "Сбросить до значений по умолчанию",
1345
+ "resetToDefaults": "Сброс к настройкам по умолчанию",
1346
1346
  "resetToDefaultsDesc": "Восстановить заводские настройки",
1347
1347
  "reportBug": "Сообщить об ошибке",
1348
- "reportBugDesc": "Создать issue на GitHub",
1348
+ "reportBugDesc": "Отправьте отчет о проблеме на GitHub",
1349
1349
  "saveChanges": "Сохранить изменения",
1350
1350
  "saveChangesDesc": "Сохранить текущие настройки в файл",
1351
1351
  "updatePackage": "Обновить пакет",
1352
- "updatePackageDesc": "Обновить пакет i18n-toolkit через npm",
1353
- "help": "Справка",
1354
- "helpDesc": "Показать подробную справку",
1355
- "quit": "Выход",
1356
- "quitDesc": "Выйти из настроек (с запросом сохранения при необходимости)",
1357
- "unsavedChangesWarning": "⚠️ У вас есть несохранённые изменения",
1358
- "saveChangesBeforeQuit": "Сохранить изменения перед выходом? (y/N):",
1359
- "selectOption": "Выберите опцию:",
1352
+ "updatePackageDesc": "Обновите пакет i18n-toolkit через npm.",
1353
+ "help": "Помощь",
1354
+ "helpDesc": "Показать подробную справочную информацию",
1355
+ "quit": "Покидать",
1356
+ "quitDesc": "Выйти из настроек (с приглашением сохранить, если необходимо)",
1357
+ "unsavedChangesWarning": "⚠️ У вас есть несохраненные изменения.",
1358
+ "saveChangesBeforeQuit": "Хотите сохранить изменения перед выходом? (да/нет):",
1359
+ "selectOption": "Выберите вариант:",
1360
1360
  "goodbyeMessage": "Спасибо за использование менеджера настроек i18n!"
1361
1361
  },
1362
1362
  "goodbyeMessage": "Спасибо за использование менеджера настроек i18n!",
1363
- "relativePathHint": "Используйте относительные пути от этого каталога (например, ./src/i18n/locales)",
1364
- "currentDirectory": "Текущий проектный каталог"
1363
+ "relativePathHint": "Используйте относительные пути из этого каталога (например, ./src/i18n/locales).",
1364
+ "currentDirectory": "Текущий каталог проекта"
1365
1365
  },
1366
1366
  "settings_manager": {
1367
- "error_loading_settings": "❌ Ошибка при загрузке настроек:",
1368
- "error_saving_settings": "❌ Ошибка при сохранении настроек:",
1369
- "error_setting_value": "❌ Ошибка при установке значения:",
1370
- "missing_required_setting": "❌ Отсутствует обязательная настройка: {prop}",
1371
- "invalid_language": "❌ Неверный язык: {language}",
1367
+ "error_loading_settings": "❌ Ошибка загрузки настроек:",
1368
+ "error_saving_settings": "❌ Ошибка сохранения настроек:",
1369
+ "error_setting_value": "❌ Ошибка настройки значения:",
1370
+ "missing_required_setting": "❌ Отсутствуют необходимые настройки: {prop}",
1371
+ "invalid_language": "❌ Недопустимый язык: {language}",
1372
1372
  "invalid_source_language": "❌ Неверный исходный язык: {sourceLanguage}",
1373
- "default_languages_must_be_array": "❌ defaultLanguages должен быть массивом",
1373
+ "default_languages_must_be_array": "❌ defaultLanguages ​​должен быть массивом",
1374
1374
  "invalid_date_format": "❌ Неверный формат даты: {dateFormat}. Допустимые форматы: {validFormats}",
1375
1375
  "invalid_time_format": "❌ Неверный формат времени: {timeFormat}. Допустимые форматы: {validFormats}",
1376
- "notifications_types_must_be_object": "❌ notifications.types должен быть объектом",
1377
- "exclude_files_must_be_array": "❌ excludeFiles должен быть массивом",
1378
- "exclude_dirs_must_be_array": "❌ excludeDirs должен быть массивом",
1376
+ "notifications_types_must_be_object": "❌ Notifications.types должен быть объектом",
1377
+ "exclude_files_must_be_array": "❌ ExcludeFiles должен быть массивом",
1378
+ "exclude_dirs_must_be_array": "❌ ExcludeDirs должен быть массивом",
1379
1379
  "include_extensions_must_be_array": "❌ includeExtensions должен быть массивом",
1380
- "invalid_batch_size": "❌ Неверный размер пакета. Должно быть положительным числом",
1381
- "invalid_max_concurrent_files": "❌ Неверное максимальное количество одновременных файлов. Должно быть положительным числом",
1382
- "invalid_sizing_threshold": "❌ Неверный порог измерения размеров. Должно быть положительным числом",
1383
- "invalid_timeout": "❌ Неверный таймаут. Должно быть не менее 1000 мс",
1384
- "invalid_sizing_format": "❌ Неверный формат измерения размеров: {sizingFormat}. Допустимые форматы: {validFormats}",
1380
+ "invalid_batch_size": "❌ Неверный размер партии. Должно быть положительное число",
1381
+ "invalid_max_concurrent_files": "❌ Недопустимое максимальное количество одновременных файлов. Должно быть положительное число",
1382
+ "invalid_sizing_threshold": "❌ Неверный порог размера. Должно быть положительное число",
1383
+ "invalid_timeout": "❌ Неверный тайм-аут. Должно быть не менее 1000 мс.",
1384
+ "invalid_sizing_format": "❌ Неверный формат размера: {sizingFormat}. Допустимые форматы: {validFormats}",
1385
1385
  "error_validating_settings": "❌ Ошибка проверки настроек:",
1386
- "backup_created": "📋 Создана резервная копия: {backupPath}",
1387
- "error_creating_backup": "❌ Ошибка при создании резервной копии:",
1388
- "language_not_supported": "Язык '{language}' не поддерживается. Доступные: {availableLanguages}",
1389
- "ui_language_set": "🌍 Язык интерфейса установлен: {language}"
1386
+ "backup_created": "📋 Резервная копия создана: {backupPath}",
1387
+ "error_creating_backup": "❌ Ошибка создания резервной копии:",
1388
+ "language_not_supported": "Язык '{language}' не поддерживается. Доступный: {availableLanguages}",
1389
+ "ui_language_set": "🌍 Язык пользовательского интерфейса установлен на: {language}"
1390
1390
  }
1391
1391
  },
1392
1392
  "settings": {
1393
1393
  "title": "⚙️ Управление настройками",
1394
- "separator": "============================================================",
1394
+ "separator": "=========================================================",
1395
1395
  "goodbyeMessage": "Спасибо за использование менеджера настроек i18ntk!",
1396
- "relativePathHint": "Используйте относительные пути от этой директории (например, ./src/i18n/locales)",
1397
- "currentDirectory": "Текущая директория проекта",
1396
+ "relativePathHint": "Используйте относительные пути из этого каталога (например, ./src/i18n/locales).",
1397
+ "currentDirectory": "Текущий каталог проекта",
1398
1398
  "startingSettings": "Начальные настройки:",
1399
1399
  "pin": "ПРИКОЛОТЬ:",
1400
1400
  "reportBug": {
1401
1401
  "title": "Сообщить об ошибке",
1402
- "description": "Сообщите о любых проблемах или ошибках, которые вы обнаружили",
1403
- "guidance": "Чтобы сообщить об ошибке, выполните следующие шаги:",
1404
- "checkLogs": "1. Проверьте последние журналы отладки на наличие ошибок",
1405
- "documentIssue": "2. Задокументируйте проблему с шагами воспроизведения",
1406
- "contactSupport": "3. Свяжитесь со службой поддержки или используйте соответствующий канал отчетности",
1407
- "completed": " Процесс отчета об ошибке завершен",
1408
- "instructions": "Следуйте инструкциям выше, чтобы сообщить об ошибке."
1402
+ "description": "Сообщайте о любых проблемах или ошибках, с которыми вы столкнулись",
1403
+ "guidance": "Чтобы эффективно сообщать о проблемах:",
1404
+ "checkLogs": "1. Проверьте журналы отладки в каталоге вашего проекта.",
1405
+ "documentIssue": "2. Задокументируйте проблему, указав шаги по ее воспроизведению.",
1406
+ "contactSupport": "3. Обратитесь к своему системному администратору или в службу поддержки.",
1407
+ "completed": "Отображается руководство по отчетам об ошибках",
1408
+ "instructions": "Следуйте приведенным выше инструкциям, чтобы сообщить об ошибке."
1409
1409
  },
1410
1410
  "mainMenu": {
1411
1411
  "title": "Главное меню:",
1412
- "uiSettings": "Настройки интерфейса",
1413
- "uiSettingsDesc": "Язык, тема и параметры интерфейса",
1414
- "directorySettings": "Настройки директорий",
1415
- "directorySettingsDesc": "Пути к исходным и выходным директориям",
1412
+ "uiSettings": "Настройки пользовательского интерфейса",
1413
+ "uiSettingsDesc": "Параметры языка, темы и интерфейса",
1414
+ "directorySettings": "Настройки каталога",
1415
+ "directorySettingsDesc": "Пути к исходному и выходному каталогу",
1416
1416
  "processingSettings": "Настройки обработки",
1417
1417
  "processingSettingsDesc": "Размер пакета, параллелизм и производительность",
1418
1418
  "advancedSettings": "Расширенные настройки",
1419
- "advancedSettingsDesc": "Валидация, логирование и экспертные опции",
1419
+ "advancedSettingsDesc": "Проверка, регистрация и экспертные параметры",
1420
1420
  "viewAllSettings": "Просмотреть все настройки",
1421
1421
  "viewAllSettingsDesc": "Отобразить текущую конфигурацию",
1422
1422
  "importExport": "Импорт/Экспорт",
1423
1423
  "updatePackage": "Обновить пакет",
1424
- "updatePackageDesc": "Обновить пакет i18n-toolkit через npm",
1424
+ "updatePackageDesc": "Обновите пакет i18n-toolkit через npm.",
1425
1425
  "importExportDesc": "Резервное копирование и восстановление настроек",
1426
- "resetToDefaults": "Сбросить настройки",
1426
+ "resetToDefaults": "Сброс к настройкам по умолчанию",
1427
1427
  "resetToDefaultsDesc": "Восстановить заводские настройки",
1428
1428
  "reportBug": "Сообщить об ошибке",
1429
- "reportBugDesc": "Создать issue на GitHub",
1429
+ "reportBugDesc": "Отправьте отчет о проблеме на GitHub",
1430
1430
  "saveChanges": "Сохранить изменения",
1431
1431
  "saveChangesDesc": "Сохранить текущие настройки в файл",
1432
- "help": "Справка",
1433
- "helpDesc": "Показать подробную справку",
1434
- "quit": "Выйти",
1435
- "quitDesc": "Выйти из настроек (с запросом на сохранение изменений)",
1436
- "unsavedChangesWarning": "⚠️ У вас есть несохранённые изменения",
1437
- "saveChangesBeforeQuit": "Сохранить изменения перед выходом? (y/N):",
1438
- "selectOption": "Выберите опцию:",
1439
- "goodbyeMessage": "Спасибо за использование менеджера настроек i18ntk!",
1440
- "selectSettingPrompt": "Выберите настройку для редактирования (или 'b' для возврата):",
1432
+ "help": "Помощь",
1433
+ "helpDesc": "Показать подробную справочную информацию",
1434
+ "quit": "Покидать",
1435
+ "quitDesc": "Выйти из настроек (с приглашением сохранить, если необходимо)",
1436
+ "unsavedChangesWarning": "⚠️ У вас есть несохраненные изменения.",
1437
+ "saveChangesBeforeQuit": "Хотите сохранить изменения перед выходом? (да/нет):",
1438
+ "selectOption": "Выберите вариант:",
1439
+ "goodbyeMessage": "Спасибо за использование менеджера настроек i18n!",
1440
+ "selectSettingPrompt": "Выберите настройку для редактирования (или «b», чтобы вернуться):",
1441
1441
  "enterNewValue": "Введите новое значение:",
1442
- "updatedSuccessfully": "{setting} успешно обновлено!",
1443
- "scriptDirectorySettings": "Настройки директорий скриптов",
1444
- "scriptDirectoryDesc": "Укажите индивидуальные директории для каждого скрипта",
1445
- "scriptDirectorySettingsDesc": "Можно указать отдельные директории для каждого скрипта. Если не указано, будут использованы глобальные настройки.",
1446
- "currentDirectory": "Текущая директория",
1442
+ "updatedSuccessfully": "{setting} обновлено успешно!",
1443
+ "scriptDirectorySettings": "Настройки каталога скриптов",
1444
+ "scriptDirectoryDesc": "Укажите собственные каталоги для каждого скрипта",
1445
+ "scriptDirectorySettingsDesc": "Вы можете установить собственные каталоги для каждого сценария. Если не установлено, будут использоваться глобальные настройки.",
1446
+ "currentDirectory": "Текущий каталог проекта",
1447
1447
  "securitySettings": "Настройки безопасности",
1448
- "securitySettingsDesc": "Admin PIN и другие параметры безопасности",
1448
+ "securitySettingsDesc": "PIN-код администратора и другие параметры безопасности",
1449
1449
  "backupSettings": "Настройки резервного копирования",
1450
- "backupSettingsDesc": "Резервное копирование и восстановление конфигурации"
1450
+ "backupSettingsDesc": "Резервное копирование и восстановление настроек конфигурации"
1451
1451
  },
1452
1452
  "updatePackage": {
1453
1453
  "title": "Обновить пакет",
1454
- "description": "Обновить пакет i18n-toolkit через npm",
1455
- "command": "npm update i18ntk -g",
1456
- "success": "Обновление успешно завершено.",
1454
+ "description": "Обновите пакет i18n-toolkit через npm.",
1455
+ "command": "обновление npm i18ntk -g",
1456
+ "success": "Обновление завершено успешно.",
1457
1457
  "failed": "Обновление не удалось.",
1458
- "prompt": "Хотите обновить пакет сейчас? (y/N):",
1459
- "promptDesc": "Это обновит пакет i18ntk до последней версии.",
1458
+ "prompt": "Хотите обновить пакет сейчас? (да/нет):",
1459
+ "promptDesc": "Примечание. Это обновит пакет i18ntk до последней версии.",
1460
1460
  "confirm": "й",
1461
1461
  "cancelled": "Обновление отменено.",
1462
1462
  "error": "Не удалось обновить пакет",
1463
1463
  "updating": "Обновление пакета..."
1464
1464
  },
1465
1465
  "admin": {
1466
- "selectOption": "Выберите опцию:",
1467
- "updateSuccess": "Admin PIN успешно обновлён!",
1468
- "updateFailed": "Не удалось обновить Admin PIN.",
1469
- "protectionRemoved": "Защита Admin PIN отключена.",
1470
- "configSuccess": "Admin PIN настроен успешно!",
1471
- "configFailed": "Не удалось настроить Admin PIN.",
1472
- "setupPinPrompt": "Хотите настроить Admin PIN? (y/N):",
1473
- "pinUpdatedSuccess": "Admin PIN успешно изменён!",
1474
- "pinUpdatedFailed": "Не удалось изменить Admin PIN.",
1475
- "pinRemoved": "Защита Admin PIN отключена.",
1476
- "pinConfiguredSuccess": "Admin PIN настроен успешно!",
1477
- "pinConfiguredFailed": "Не удалось настроить Admin PIN.",
1478
- "accessDenied": "❌ Доступ запрещён. Возврат в меню.",
1479
- "setupPin": "🔐 Настройка Admin PIN...",
1480
- "setupFailed": "❌ Не удалось настроить Admin PIN. Настройка не изменена.",
1481
- "pinConfigured": "📌 Admin PIN настроен.",
1482
- "options": "Опции:",
1483
- "changePin": "1) Изменить существующий PIN",
1484
- "removePin": "2) Отключить защиту PIN",
1466
+ "selectOption": "Выберите вариант:",
1467
+ "updateSuccess": "PIN-код администратора успешно обновлен!",
1468
+ "updateFailed": "Не удалось обновить PIN-код администратора.",
1469
+ "protectionRemoved": "Защита PIN-кодом администратора удалена.",
1470
+ "configSuccess": "PIN-код администратора успешно настроен!",
1471
+ "configFailed": "Не удалось настроить PIN-код администратора.",
1472
+ "setupPinPrompt": "Хотите установить PIN-код администратора? (да/нет):",
1473
+ "pinUpdatedSuccess": "PIN-код администратора успешно обновлен!",
1474
+ "pinUpdatedFailed": "Не удалось обновить PIN-код администратора.",
1475
+ "pinRemoved": "Защита PIN-кодом администратора удалена.",
1476
+ "pinConfiguredSuccess": "PIN-код администратора успешно настроен!",
1477
+ "pinConfiguredFailed": "Не удалось настроить PIN-код администратора.",
1478
+ "accessDenied": "❌ Доступ запрещен. Возврат в меню.",
1479
+ "setupPin": "🔐 Настройка PIN-кода администратора...",
1480
+ "setupFailed": "❌ Не удалось настроить PIN-код администратора. Настройка не изменена.",
1481
+ "pinConfigured": "📌 PIN-код администратора в настоящее время настроен.",
1482
+ "options": "Параметры:",
1483
+ "changePin": "1) Изменить существующий PIN-код",
1484
+ "removePin": "2) Снимите защиту PIN-кодом.",
1485
1485
  "cancel": "3) Отмена",
1486
- "verifyCurrentPin": "🔐 Сначала подтвердите текущий PIN:",
1487
- "settingNewPin": "🔄 Настройка нового PIN...",
1488
- "verifyToRemove": "🔐 Подтвердите текущий PIN для отключения:",
1489
- "noPinConfigured": "🔓 Admin PIN не настроен.",
1490
- "pinBenefits": "Настройка Admin PIN обеспечит безопасность для:",
1491
- "benefitSecurity": "• Изменения настроек безопасности",
1492
- "benefitAdvanced": "• Изменения расширенных конфигураций",
1493
- "benefitDebug": "• Доступа к инструментам отладки",
1494
- "benefitReset": "• Сброса настроек",
1495
- "setupCancelled": "⏭️ Настройка Admin PIN отменена.",
1496
- "operationCancelled": " Операция отменена.",
1497
- "startingSettings": "🎛️ Запуск CLI настроек...",
1498
- "authRequired": "🔒 Требуется аутентификация Admin для: {label}",
1499
- "pinSetupTitle": "Настройка Admin PIN",
1486
+ "verifyCurrentPin": "🔐 Сначала проверьте текущий PIN-код:",
1487
+ "settingNewPin": "🔄 Установка нового PIN-кода...",
1488
+ "verifyToRemove": "🔐 Подтвердите текущий PIN-код, чтобы снять защиту:",
1489
+ "noPinConfigured": "🔓 В настоящее время PIN-код администратора не настроен.",
1490
+ "pinBenefits": "Установка PIN-кода администратора повысит безопасность для:",
1491
+ "benefitSecurity": "• Изменение настроек безопасности.",
1492
+ "benefitAdvanced": "• Изменение расширенных конфигураций.",
1493
+ "benefitDebug": "• Доступ к инструментам отладки.",
1494
+ "benefitReset": "• Сброс настроек",
1495
+ "setupCancelled": "⏭️ Установка PIN-кода администратора отменена.",
1496
+ "operationCancelled": "❌Операция отменена.",
1497
+ "startingSettings": "🎛️ Запуск командной строки настроек...",
1498
+ "authRequired": "🔒 Аутентификация администратора необходима для: {label}",
1499
+ "pinSetupTitle": "Настройка PIN-кода администратора",
1500
1500
  "browserOpenFailed": "Не удалось автоматически открыть браузер.",
1501
- "manualVisit": "Пожалуйста, вручную перейдите по адресу: {url}",
1502
- "browserOpened": "✅ Браузер успешно открыт!"
1501
+ "manualVisit": "Пожалуйста, посетите вручную: {url}",
1502
+ "browserOpened": "✅ Браузер успешно открылся!"
1503
1503
  },
1504
1504
  "importExport": {
1505
- "title": "Импорт/Экспорт",
1506
- "export": "Экспорт",
1507
- "import": "Импорт",
1508
- "backup": "Резервное копирование",
1509
- "enterFilename": "Введите имя файла (или нажмите Enter для значения по умолчанию):",
1505
+ "title": "Настройки импорта/экспорта",
1506
+ "export": "Экспорт настроек",
1507
+ "import": "Импортировать настройки",
1508
+ "backup": "Создать резервную копию",
1509
+ "enterFilename": "Введите имя файла (или нажмите Enter по умолчанию):",
1510
1510
  "exportSuccess": "Настройки экспортированы в {file}",
1511
1511
  "exportFailed": "Не удалось экспортировать настройки: {error}",
1512
1512
  "importFilename": "Введите имя файла для импорта:",
1513
1513
  "fileNotFound": "Файл не найден.",
1514
1514
  "invalidFormat": "Неверный формат файла настроек.",
1515
- "confirmImport": "Это заменит все текущие настройки. Продолжить? (y/N):",
1515
+ "confirmImport": "Это заменит все текущие настройки. Продолжать? (да/нет):",
1516
1516
  "importSuccess": "Настройки успешно импортированы.",
1517
1517
  "importFailed": "Не удалось импортировать настройки: {error}",
1518
1518
  "backupSuccess": "Резервная копия создана: {file}",
@@ -1523,728 +1523,758 @@
1523
1523
  "manageBackups": "Управление резервными копиями",
1524
1524
  "restore": "Восстановить настройки"
1525
1525
  },
1526
- "selectOption": "Выберите опцию:",
1526
+ "selectOption": "Выберите вариант:",
1527
1527
  "resetToDefaultsTitle": "Сброс настроек к значениям по умолчанию",
1528
- "resetWarning1": "Это сбросит все настройки к их значениям по умолчанию.",
1529
- "resetWarning2": "Все изменения будут потеряны. Продолжить? (y/N):",
1530
- "resetConfirm": "Вы уверены, что хотите продолжить? (y/N):",
1528
+ "resetWarning1": "⚠️ Это сбросит ВСЕ настройки на значения по умолчанию.",
1529
+ "resetWarning2": "Это действие невозможно отменить.",
1530
+ "resetConfirm": "Вы уверены, что хотите продолжить? (да/нет):",
1531
1531
  "resetSuccess": "Настройки успешно сброшены до значений по умолчанию.",
1532
1532
  "resetFailed": "Не удалось сбросить настройки: {error}",
1533
1533
  "resetDone": "Настройки успешно сброшены до значений по умолчанию.",
1534
- "resetScriptDirsDone": "Каталоги скриптов успешно сброшены до системных значений по умолчанию.",
1534
+ "resetScriptDirsDone": "Каталоги сценариев успешно сброшены до системных значений по умолчанию.",
1535
1535
  "saveSuccess": "Настройки успешно сохранены.",
1536
1536
  "saveFailed": "Не удалось сохранить настройки.",
1537
- "saveError": "Ошибка сохранения настроек: {error}",
1538
- "pressEnter": "Нажмите Enter для продолжения...",
1537
+ "saveError": "Указаны неверные настройки",
1538
+ "pressEnter": "Нажмите Enter, чтобы продолжить...",
1539
1539
  "initFailed": "Не удалось инициализировать настройки: {error}",
1540
1540
  "invalidValueFormat": "Неверный формат значения.",
1541
1541
  "help": {
1542
1542
  "title": "Справка по настройкам",
1543
1543
  "navigationTitle": "Навигация",
1544
- "navigation1": "1. Общие настройки — язык интерфейса, тема и базовые предпочтения",
1545
- "navigation2": "2. Настройки директорий пути к исходным и отчётным директориям",
1546
- "navigation3": "3. Настройки обработки размер пакета, параллелизм и производительность",
1547
- "navigation4": "4. Расширенные настройки — режим отладки, аудит и безопасность",
1544
+ "navigation1": "1. Общие настройки — настройка языка пользовательского интерфейса, темы и основных настроек.",
1545
+ "navigation2": "2. Настройки каталога. Установите исходный и выходной каталоги для файлов перевода.",
1546
+ "navigation3": "3. Настройки обработки. Настройка размера пакета, параллельного выполнения и параметров производительности.",
1547
+ "navigation4": "4. Расширенные настройки — доступ к параметрам проверки, ведения журнала и экспертной конфигурации.",
1548
1548
  "categoriesTitle": "Категории настроек",
1549
- "categoryUI": "• Настройки интерфейса: язык, цветовая тема и параметры отображения",
1550
- "categoryDirectory": "• Настройки директорий: директории исходников и отчётов",
1551
- "categoryProcessing": "• Настройки обработки: пакетная обработка и лимиты файлов",
1552
- "categoryAdvanced": "• Расширенные настройки: режим отладки и логирование",
1553
- "envVarsTitle": "Переменные окружения",
1554
- "envVar1": "• I18N_SOURCE_DIR: Переопределить директорию исходников",
1555
- "envVar2": "• I18N_OUTPUT_DIR: Переопределить директорию отчётов",
1556
- "envVar3": "• I18N_DEBUG: Включить режим отладки (true/false)",
1549
+ "categoryUI": "• Настройки пользовательского интерфейса: язык интерфейса, цветовая тема и настройки отображения.",
1550
+ "categoryDirectory": "• Настройки каталога: расположение исходных файлов и каталоги выходных отчетов.",
1551
+ "categoryProcessing": "• Настройки обработки: пакетная обработка, ограничения файлов и настройка производительности.",
1552
+ "categoryAdvanced": "• Расширенные настройки: режим отладки, ведение журнала аудита и параметры безопасности.",
1553
+ "envVarsTitle": "Переменные среды",
1554
+ "envVar1": "• I18N_SOURCE_DIR: переопределить путь к исходному каталогу по умолчанию.",
1555
+ "envVar2": "• I18N_OUTPUT_DIR: переопределить путь к выходному каталогу по умолчанию.",
1556
+ "envVar3": "• I18N_DEBUG: включить режим отладки (истина/ложь).",
1557
1557
  "cliUsageTitle": "Примеры использования CLI",
1558
- "cliUsage1": "• npx i18ntk --settings Открыть интерактивное меню настроек",
1559
- "cliUsage2": "• npx i18ntk --settings --lang de Открыть настройки на немецком",
1560
- "cliUsage3": "• npx i18ntk --reset-settings Сбросить все настройки до значений по умолчанию",
1561
- "navigation": "Используйте цифры для выбора, 'b' для возврата",
1562
- "editing": "Введите новое значение или нажмите Enter для сохранения текущего",
1563
- "saving": "Нажмите 's' для сохранения перед выходом",
1564
- "reset": "Используйте опцию 7 для сброса всех настроек"
1558
+ "cliUsage1": "• npx i18ntk --settings: открыть интерактивное меню настроек.",
1559
+ "cliUsage2": "• npx i18ntk --settings --lang de: открыть настройки на немецком языке.",
1560
+ "cliUsage3": "• npx i18ntk --reset-settings: сброс всех настроек до значений по умолчанию.",
1561
+ "navigation": "Используйте цифровые клавиши для выбора параметров, «b» для возврата назад.",
1562
+ "editing": "Введите новые значения при появлении запроса или нажмите Enter, чтобы сохранить текущие значения.",
1563
+ "saving": "Используйте 's', чтобы сохранить изменения перед выходом.",
1564
+ "reset": "Используйте опцию 7, чтобы сбросить все настройки к значениям по умолчанию."
1565
1565
  },
1566
1566
  "categories": {
1567
- "uiSettings": "Настройки UI",
1568
- "directorySettings": "Настройки директорий",
1567
+ "uiSettings": "Настройки пользовательского интерфейса",
1568
+ "directorySettings": "Настройки каталога",
1569
1569
  "processingSettings": "Настройки обработки",
1570
1570
  "advancedSettings": "Расширенные настройки",
1571
- "scriptDirectorySettings": "Настройки директорий скриптов",
1571
+ "scriptDirectorySettings": "Настройки каталога скриптов",
1572
1572
  "securitySettings": "Настройки безопасности"
1573
1573
  },
1574
1574
  "security": {
1575
1575
  "title": "🔐 Настройки безопасности",
1576
- "description": "Настройте защиту Admin PIN и параметры безопасности",
1577
- "currentPin": "Текущий PIN:",
1578
- "pinConfigured": "✅ Настроено",
1576
+ "description": "Настройка защиты PIN-кодом администратора и параметров безопасности",
1577
+ "currentPin": "Текущий PIN-код:",
1578
+ "pinConfigured": "✅ Настроен",
1579
1579
  "pinNotConfigured": "❌ Не настроено",
1580
- "pinDisplay": "Отображение PIN:",
1580
+ "pinDisplay": "PIN-отображение:",
1581
1581
  "menu": {
1582
- "enableDisable": "1) Включить/Отключить защиту PIN",
1583
- "setupChange": "2) Настроить/Изменить PIN",
1584
- "sessionTimeout": "3) Таймаут сессии",
1585
- "maxAttempts": "4) Макс. попыток",
1586
- "lockoutDuration": "5) Длительность блокировки",
1587
- "back": "b) Назад в главное меню"
1582
+ "enableDisable": "1) Включить/отключить PIN-код администратора",
1583
+ "setupChange": "2) Настройка/изменение PIN-кода администратора",
1584
+ "sessionTimeout": "3) Тайм-аут сеанса",
1585
+ "maxAttempts": "4) Максимальное количество неудачных попыток",
1586
+ "lockoutDuration": "5) Продолжительность блокировки",
1587
+ "back": "б) Вернуться в главное меню"
1588
1588
  },
1589
1589
  "prompts": {
1590
- "enablePin": "Включить защиту Admin PIN? (y/N):",
1591
- "disablePin": "Отключить защиту Admin PIN? (y/N):",
1592
- "enterTimeout": "Введите таймаут сессии (минуты):",
1593
- "enterMaxAttempts": "Введите макс. число неудачных попыток:",
1594
- "enterLockoutDuration": "Введите длительность блокировки (минуты):"
1590
+ "enablePin": "Включить защиту PIN-кодом администратора? (да/нет):",
1591
+ "disablePin": "Отключить защиту PIN-кодом администратора? (да/нет):",
1592
+ "enterTimeout": "Введите тайм-аут сеанса (минуты):",
1593
+ "enterMaxAttempts": "Введите максимальное количество неудачных попыток:",
1594
+ "enterLockoutDuration": "Введите продолжительность блокировки (минуты):"
1595
1595
  },
1596
1596
  "messages": {
1597
- "pinEnabled": "Защита Admin PIN включена",
1598
- "pinDisabled": "Защита Admin PIN отключена",
1599
- "timeoutUpdated": "Таймаут сессии обновлён до {minutes} минут",
1600
- "maxAttemptsUpdated": "Макс. число попыток обновлено до {attempts}",
1601
- "lockoutDurationUpdated": "Длительность блокировки обновлена до {minutes} минут"
1597
+ "pinEnabled": "Защита PIN-кодом администратора включена",
1598
+ "pinDisabled": "Защита PIN-кодом администратора отключена",
1599
+ "timeoutUpdated": "Тайм-аут сеанса обновлен до {minutes} минуты",
1600
+ "maxAttemptsUpdated": "Максимальное количество неудачных попыток обновлено до {attempts}",
1601
+ "lockoutDurationUpdated": "Продолжительность блокировки обновлена ​​до {minutes} минуты"
1602
1602
  }
1603
1603
  },
1604
1604
  "fields": {
1605
- "backup": {
1606
- "enabled": {
1607
- "label": "Включить резервное копирование",
1608
- "description": "Включить автоматическое резервное копирование настроек",
1609
- "help": "Включить/отключить функцию резервного копирования"
1610
- },
1611
- "singleFileMode": {
1612
- "label": "Режим единственного файла",
1613
- "description": "Использовать единый файл для резервных копий",
1614
- "help": "Режим резервного копирования в единый файл"
1615
- },
1616
- "singleBackupFile": {
1617
- "label": "Путь к файлу резервной копии",
1618
- "description": "Путь к файлу резервной копии",
1619
- "help": "Путь к файлу резервной копии"
1620
- },
1621
- "retentionDays": {
1622
- "label": "Срок хранения резервных копий",
1623
- "description": "Число дней, за которое нужно хранить резервные копии",
1624
- "help": "Число дней, за которое нужно хранить резервные копии"
1625
- },
1626
- "maxBackups": {
1627
- "label": "Максимальное число резервных копий",
1628
- "description": "Максимальное число резервных копий",
1629
- "help": "Максимальное число резервных копий"
1630
- },
1631
- "confirm": {
1632
- "label": "Подтверждение резервного копирования",
1633
- "description": "Требуется подтверждение для операций резервного копирования",
1634
- "help": "Подтвердите операцию резервного копирования"
1635
- }
1605
+ "backup.enabled": {
1606
+ "label": "Enable Backup",
1607
+ "description": "Enable automatic backup of settings",
1608
+ "help": "Enable/disable backup feature"
1609
+ },
1610
+ "backup.singleFileMode": {
1611
+ "label": "Single File Mode",
1612
+ "description": "Use single file for backups",
1613
+ "help": "Backup settings in a single file"
1614
+ },
1615
+ "backup.singleBackupFile": {
1616
+ "label": "Backup File Path",
1617
+ "description": "Path to the backup file",
1618
+ "help": "Path to the single backup file"
1619
+ },
1620
+ "backup.retentionDays": {
1621
+ "label": "Retention Period",
1622
+ "description": "Days to keep backup files",
1623
+ "help": "Number of days to retain old backup files"
1624
+ },
1625
+ "backup.maxBackups": {
1626
+ "label": "Maximum Backups",
1627
+ "description": "Maximum backup files to keep",
1628
+ "help": "Maximum number of backup files to keep"
1629
+ },
1630
+ "backup.confirm": {
1631
+ "label": "Confirm Backup",
1632
+ "description": "Require confirmation for backup operations",
1633
+ "help": "Confirm backup operation"
1636
1634
  },
1637
1635
  "i18nDir": {
1638
- "label": "Директория переводов",
1639
- "description": "Директория, содержащая файлы переводов",
1640
- "current": "Текущая: {value}",
1641
- "help": "Путь к директории с файлами переводов"
1636
+ "label": "Каталог I18n",
1637
+ "description": "Каталог, содержащий файлы перевода",
1638
+ "current": "Текущий: {value}",
1639
+ "help": "Путь к папке с файлами перевода"
1642
1640
  },
1643
1641
  "projectRoot": {
1644
- "label": "Корневая директория проекта",
1645
- "description": "Корневая директория проекта",
1646
- "current": "Текущая: {value}",
1647
- "help": "Путь к корневой директории проекта"
1642
+ "label": "Корень проекта",
1643
+ "description": "Корневой каталог проекта",
1644
+ "current": "Текущий: {value}",
1645
+ "help": "Путь к корневому каталогу проекта"
1648
1646
  },
1649
1647
  "checkUsage": {
1650
- "usage_analysis_failed": "Анализ использования завершился с ошибкой",
1651
- "usage_analysis_success": "Анализ использования был успешным",
1648
+ "usage_analysis_failed": "Анализ использования не удался",
1649
+ "usage_analysis_success": "Анализ использования успешен",
1652
1650
  "usage_analysis_complete": "Анализ использования завершен",
1653
- "usage_analysis_in_progress": "Анализ использования в процессе",
1651
+ "usage_analysis_in_progress": "Выполняется анализ использования",
1654
1652
  "usage_analysis_started": "Анализ использования начат",
1655
1653
  "usage_analysis_skipped": "Анализ использования пропущен"
1656
1654
  },
1657
1655
  "language": {
1658
1656
  "label": "Язык интерфейса",
1659
- "description": "Язык интерфейса",
1660
- "current": "Текущее: {value}",
1657
+ "description": "Язык пользовательского интерфейса",
1658
+ "current": "Текущий: {value}",
1661
1659
  "help": "Выберите предпочитаемый язык интерфейса"
1662
1660
  },
1663
1661
  "scriptDirectories": {
1664
- "analyzeLabel": "Анализ скриптов",
1665
- "analyzeHelp": "Анализ скриптов",
1666
- "completeLabel": "Завершить настройку скриптов",
1667
- "initLabel": "Инициализация скриптов",
1668
- "manageLabel": "Управление скриптами",
1669
- "sizingLabel": "Оценка скриптов",
1670
- "summaryLabel": "Сводка скриптов",
1671
- "usageLabel": "Использование скриптов",
1672
- "validateLabel": "Валидация скриптов"
1662
+ "analyzeLabel": "Анализ каталогов сценариев",
1663
+ "analyzeHelp": "Анализ каталогов сценариев на наличие проблем",
1664
+ "completeLabel": "Полные каталоги установки",
1665
+ "initLabel": "Инициализируйте каталоги сценариев",
1666
+ "manageLabel": "Управление каталогами сценариев",
1667
+ "sizingLabel": "Изменение размера каталогов сценариев",
1668
+ "summaryLabel": "Каталоги сводных отчетов",
1669
+ "usageLabel": "Каталоги отчетов об использовании",
1670
+ "validateLabel": "Проверка каталогов сценариев"
1673
1671
  },
1674
1672
  "theme": {
1675
- "label": "Тема интерфейса",
1676
- "description": "Тема интерфейса",
1677
- "current": "Текущее: {value}",
1678
- "help": "Выберите предпочитаемую тему интерфейса"
1673
+ "label": "Цветовая тема",
1674
+ "description": "Предпочтение темы пользовательского интерфейса",
1675
+ "current": "Текущий: {value}",
1676
+ "help": "Выбирайте между светлыми и темными темами"
1679
1677
  },
1680
1678
  "dateFormat": {
1681
1679
  "label": "Формат даты",
1682
- "description": "Формат даты",
1683
- "current": "Текущее: {value}",
1684
- "help": "Выберите формат отображения дат в отчетах"
1680
+ "description": "Формат отображения дат",
1681
+ "current": "Текущий: {value}",
1682
+ "help": "Выберите способ отображения дат в отчетах"
1685
1683
  },
1686
1684
  "notifications": {
1687
1685
  "enabled": {
1688
1686
  "label": "Включить уведомления",
1689
- "description": "Показывать уведомления на рабочем столе",
1690
- "current": "Текущее: {value}",
1691
- "help": "Включить/отключить показ уведомлений на рабочем столе"
1687
+ "description": "Показать уведомления на рабочем столе",
1688
+ "current": "Текущий: {value}",
1689
+ "help": "Включить уведомления на рабочем столе о завершенных операциях"
1692
1690
  }
1693
1691
  },
1694
1692
  "sourceDir": {
1695
- "label": "Директория источника",
1696
- "description": "Директория, содержащая файлы переводов",
1697
- "current": "Текущая: {value}",
1698
- "help": "Путь к директории с исходными файлами переводов"
1693
+ "label": "Исходный каталог",
1694
+ "description": "Каталог, содержащий файлы перевода",
1695
+ "current": "Текущий: {value}",
1696
+ "help": "Путь к каталогу с исходными файлами перевода"
1699
1697
  },
1700
1698
  "sourceLanguage": {
1701
- "label": "Язык источника",
1702
- "description": "Язык источника",
1703
- "current": "Текущее: {value}",
1704
- "help": "Язык, используемый как источник для переводов"
1699
+ "label": "Исходный язык",
1700
+ "description": "Основной язык для переводов",
1701
+ "current": "Текущий: {value}",
1702
+ "help": "Основной язык, используемый в качестве источника для переводов"
1705
1703
  },
1706
1704
  "outputDir": {
1707
- "label": "Директория вывода",
1708
- "description": "Директория, содержащая файлы переводов",
1709
- "current": "Текущая: {value}",
1710
- "help": "Путь к директории с исходными файлами переводов"
1705
+ "label": "Выходной каталог",
1706
+ "description": "Каталог для сформированных отчетов",
1707
+ "current": "Текущий: {value}",
1708
+ "help": "Куда будут сохраняться отчеты и обработанные файлы"
1711
1709
  },
1712
1710
  "batchSize": {
1713
- "label": "Размер пакета",
1714
- "description": "Число элементов, обработанных за пакет",
1715
- "current": "Текущее: {value}",
1716
- "help": "Число элементов, обработанных за пакет"
1711
+ "label": "Размер партии",
1712
+ "description": "Количество обработанных изделий в партии",
1713
+ "current": "Текущий: {value}",
1714
+ "help": "Сколько файлов обрабатывать в каждом пакете"
1717
1715
  },
1718
1716
  "maxConcurrentFiles": {
1719
- "label": "Максимальное число файлов",
1720
- "description": "Максимальное число файлов",
1721
- "current": "Текущее: {value}",
1722
- "help": "Максимальное число файлов, обработанных одновременно"
1717
+ "label": "Максимальное количество одновременных файлов",
1718
+ "description": "Максимальное количество файлов, обрабатываемых одновременно",
1719
+ "current": "Текущий: {value}",
1720
+ "help": "Максимальное количество файлов для одновременной обработки"
1723
1721
  },
1724
1722
  "sizingThreshold": {
1725
- "label": "Порог оценки размера",
1726
- "description": "Порог оценки размера",
1727
- "current": "Текущее: {value}%",
1728
- "help": "Порог оценки размера"
1723
+ "label": "Порог определения размера (%)",
1724
+ "description": "Порог для предупреждений об изменении размера",
1725
+ "current": "Текущий: {value}%",
1726
+ "help": "Процентный порог для обнаружения несоответствия размеров"
1729
1727
  },
1730
1728
  "strictMode": {
1731
- "label": "Строгий режим валидации",
1732
- "description": "Включить строгий режим валидации",
1733
- "current": "Текущее: {value}",
1734
- "help": "Включить строгий режим валидации для файлов переводов"
1729
+ "label": "Режим строгой проверки",
1730
+ "description": "Включить строгий режим проверки",
1731
+ "current": "Текущий: {value}",
1732
+ "help": "Включить строгую проверку файлов перевода"
1735
1733
  },
1736
1734
  "enableAuditLog": {
1737
- "label": "Включить аудит-лог",
1738
- "description": "Включить аудит-лог",
1739
- "current": "Текущее: {value}",
1740
- "help": "Включить аудит-лог для отслеживания всех изменений переводов"
1735
+ "label": "Включить журнал аудита",
1736
+ "description": "Отслеживайте все изменения перевода",
1737
+ "current": "Текущий: {value}",
1738
+ "help": "Регистрируйте все изменения, внесенные в файлы перевода."
1741
1739
  },
1742
1740
  "backupBeforeChanges": {
1743
1741
  "label": "Автоматическое резервное копирование",
1744
- "description": "Автоматическое резервное копирование",
1745
- "current": "Текущее: {value}",
1746
- "help": "Автоматическое резервное копирование перед внесением изменений"
1742
+ "description": "Создавайте резервные копии перед изменениями",
1743
+ "current": "Текущий: {value}",
1744
+ "help": "Автоматически создавать резервные копии перед внесением изменений."
1747
1745
  },
1748
1746
  "advanced_maxConcurrentFiles": {
1749
- "label": "Максимальное число файлов",
1750
- "description": "Максимальное число файлов",
1751
- "current": "Текущее: {value}",
1752
- "help": "Максимальное число файлов, обработанных одновременно"
1747
+ "label": "Максимальное количество одновременных файлов",
1748
+ "description": "Максимальное количество файлов, обрабатываемых одновременно",
1749
+ "current": "Текущий: {value}",
1750
+ "help": "Максимальное количество файлов для одновременной обработки"
1753
1751
  },
1754
1752
  "advanced_strictMode": {
1755
- "label": "Строгий режим валидации",
1756
- "description": "Включить строгий режим валидации",
1757
- "current": "Текущее: {value}",
1758
- "help": "Включить строгий режим валидации для файлов переводов"
1753
+ "label": "Режим строгой проверки",
1754
+ "description": "Включить строгий режим проверки",
1755
+ "current": "Текущий: {value}",
1756
+ "help": "Включить строгую проверку файлов перевода"
1759
1757
  },
1760
1758
  "adminPinEnabled": {
1761
- "label": "Включить защиту PIN",
1762
- "description": "Включить защиту PIN",
1763
- "current": "Текущее: {value}",
1764
- "help": "Включить защиту PIN для изменения настроек безопасности и продвинутых функций"
1759
+ "label": "Защита PIN-кодом администратора",
1760
+ "description": "Включить аутентификацию по PIN-коду администратора для конфиденциальных настроек",
1761
+ "current": "Текущий: {value}",
1762
+ "help": "Требовать PIN-код администратора для изменения безопасности и дополнительных настроек"
1765
1763
  },
1766
1764
  "sessionTimeout": {
1767
- "label": "Время сессии",
1768
- "description": "Время сессии",
1769
- "current": "Текущее: {value} минут",
1770
- "help": "Время, в течение которого сессия администратора остается активной, прежде чем требуется повторная аутентификация"
1765
+ "label": "Тайм-аут сеанса",
1766
+ "description": "Тайм-аут сеанса администратора в минутах",
1767
+ "current": "Текущий: {value} минуты",
1768
+ "help": "Как долго сеансы администрирования остаются активными, прежде чем потребуется повторная аутентификация"
1771
1769
  },
1772
1770
  "maxFailedAttempts": {
1773
- "label": "Максимальное число попыток",
1774
- "description": "Максимальное число попыток",
1775
- "current": "Текущее: {value} попыток",
1776
- "help": "Число попыток, допустимое до временной блокировки"
1771
+ "label": "Макс. неудачных попыток",
1772
+ "description": "Максимальное количество неудачных попыток ввода PIN-кода до блокировки",
1773
+ "current": "Текущий: {value} попытки",
1774
+ "help": "Количество неудачных попыток ввода PIN-кода, разрешенных до временной блокировки"
1777
1775
  },
1778
1776
  "lockoutDuration": {
1779
- "label": "Время блокировки",
1780
- "description": "Время блокировки",
1781
- "current": "Текущее: {value} минут",
1782
- "help": "Время, в течение которого система остается заблокированной после достижения максимального числа попыток"
1777
+ "label": "Продолжительность блокировки",
1778
+ "description": "Продолжительность блокировки после неудачных попыток",
1779
+ "current": "Текущий: {value} минуты",
1780
+ "help": "Как долго система остается заблокированной после максимального количества неудачных попыток"
1783
1781
  },
1784
1782
  "scriptDirectories_analyze": {
1785
- "label": "Директория анализа",
1786
- "description": "Директория анализа",
1787
- "current": "Текущая: {value}",
1788
- "help": "Укажите пользовательскую исходную директорию для скрипта анализа. Оставьте пустым, чтобы использовать глобальную настройку."
1783
+ "label": "Анализ каталогов сценариев",
1784
+ "description": "Пользовательские каталоги для сценария анализа",
1785
+ "current": "Текущий: {value}",
1786
+ "help": "Укажите собственный исходный каталог для сценария анализа. Оставьте пустым, чтобы использовать глобальные настройки."
1789
1787
  },
1790
1788
  "scriptDirectories_complete": {
1791
- "label": "Директория завершения",
1792
- "description": "Директория завершения",
1793
- "current": "Текущая: {value}",
1794
- "help": "Укажите пользовательскую исходную директорию для скрипта завершения. Оставьте пустым, чтобы использовать глобальную настройку."
1789
+ "label": "Полные каталоги установки",
1790
+ "description": "Пользовательские каталоги для полного сценария установки",
1791
+ "current": "Текущий: {value}",
1792
+ "help": "Укажите собственный исходный каталог для полного сценария установки. Оставьте пустым, чтобы использовать глобальные настройки."
1795
1793
  },
1796
1794
  "scriptDirectories_init": {
1797
- "label": "Директория инициализации",
1798
- "description": "Директория инициализации",
1799
- "current": "Текущая: {value}",
1800
- "help": "Укажите пользовательскую исходную директорию для скрипта инициализации. Оставьте пустым, чтобы использовать глобальную настройку."
1795
+ "label": "Инициализируйте каталоги сценариев",
1796
+ "description": "Пользовательские каталоги для инициализации скрипта",
1797
+ "current": "Текущий: {value}",
1798
+ "help": "Укажите собственный исходный каталог для сценария инициализации. Оставьте пустым, чтобы использовать глобальные настройки."
1801
1799
  },
1802
1800
  "scriptDirectories_manage": {
1803
- "label": "Директория управления",
1804
- "description": "Директория управления",
1805
- "current": "Текущая: {value}",
1806
- "help": "Укажите пользовательскую исходную директорию для скрипта управления. Оставьте пустым, чтобы использовать глобальную настройку."
1801
+ "label": "Управление каталогами сценариев",
1802
+ "description": "Пользовательские каталоги для управления скриптом",
1803
+ "current": "Текущий: {value}",
1804
+ "help": "Укажите собственный исходный каталог для сценария управления. Оставьте пустым, чтобы использовать глобальные настройки."
1807
1805
  },
1808
1806
  "scriptDirectories_sizing": {
1809
- "label": "Директория оценки",
1810
- "description": "Директория оценки",
1811
- "current": "Текущая: {value}",
1812
- "help": "Укажите пользовательскую исходную директорию для скрипта оценки. Оставьте пустым, чтобы использовать глобальную настройку."
1807
+ "label": "Изменение размера каталогов сценариев",
1808
+ "description": "Пользовательские каталоги для изменения размера скрипта",
1809
+ "current": "Текущий: {value}",
1810
+ "help": "Укажите собственный исходный каталог для сценария изменения размера. Оставьте пустым, чтобы использовать глобальные настройки."
1813
1811
  },
1814
1812
  "scriptDirectories_summary": {
1815
- "label": "Директория сводки",
1816
- "description": "Директория сводки",
1817
- "current": "Текущая: {value}",
1818
- "help": "Укажите пользовательскую исходную директорию для скрипта сводки. Оставьте пустым, чтобы использовать глобальную настройку."
1813
+ "label": "Каталоги сводных отчетов",
1814
+ "description": "Пользовательские каталоги для скрипта сводного отчета",
1815
+ "current": "Текущий: {value}",
1816
+ "help": "Укажите собственный исходный каталог для сценария сводного отчета. Оставьте пустым, чтобы использовать глобальные настройки."
1819
1817
  },
1820
1818
  "scriptDirectories_usage": {
1821
- "label": "Директория использования",
1822
- "description": "Директория использования",
1823
- "current": "Текущая: {value}",
1824
- "help": "Укажите пользовательскую исходную директорию для скрипта использования. Оставьте пустым, чтобы использовать глобальную настройку."
1819
+ "label": "Каталоги отчетов об использовании",
1820
+ "description": "Пользовательские каталоги для сценария отчета об использовании",
1821
+ "current": "Текущий: {value}",
1822
+ "help": "Укажите собственный исходный каталог для сценария отчета об использовании. Оставьте пустым, чтобы использовать глобальные настройки."
1825
1823
  },
1826
1824
  "scriptDirectories_validate": {
1827
- "label": "Директория валидации",
1828
- "description": "Директория валидации",
1829
- "current": "Текущая: {value}",
1830
- "help": "Укажите пользовательскую исходную директорию для скрипта валидации. Оставьте пустым, чтобы использовать глобальную настройку."
1825
+ "label": "Проверка каталогов сценариев",
1826
+ "description": "Пользовательские каталоги для проверки скрипта",
1827
+ "current": "Текущий: {value}",
1828
+ "help": "Укажите собственный исходный каталог для сценария проверки. Оставьте пустым, чтобы использовать глобальные настройки."
1831
1829
  },
1832
1830
  "security_adminPinEnabled": {
1833
- "label": "Включить защиту PIN",
1834
- "description": "Включить защиту PIN",
1835
- "current": "Текущее: {value}",
1836
- "help": "Включить защиту PIN для изменения настроек безопасности и продвинутых функций"
1831
+ "label": "Защита PIN-кодом администратора",
1832
+ "description": "Включить аутентификацию по PIN-коду администратора для конфиденциальных настроек",
1833
+ "current": "Текущий: {value}",
1834
+ "help": "Требовать PIN-код администратора для изменения безопасности и дополнительных настроек"
1837
1835
  },
1838
1836
  "fields": {
1839
1837
  "adminPinEnabled": {
1840
- "label": "Включить защиту PIN",
1841
- "description": "Включить защиту PIN",
1842
- "help": "Включить защиту PIN для изменения настроек безопасности и продвинутых функций"
1838
+ "label": "Защита PIN-кодом администратора",
1839
+ "description": "Включить аутентификацию по PIN-коду администратора для конфиденциальных настроек",
1840
+ "help": "Требовать PIN-код администратора для изменения безопасности и дополнительных настроек"
1843
1841
  }
1844
1842
  },
1845
1843
  "security_pinProtection_enabled": {
1846
- "label": "Включить защиту PIN",
1847
- "description": "Включить защиту PIN",
1848
- "current": "Текущее: {value}",
1849
- "help": "Включить защиту PIN для изменения настроек безопасности и продвинутых функций"
1844
+ "label": "Защита PIN-кодом",
1845
+ "description": "Включить защиту PIN-кодом для конфиденциальных настроек",
1846
+ "current": "Текущий: {value}",
1847
+ "help": "Требовать PIN-код для изменения безопасности и дополнительных настроек"
1850
1848
  },
1851
1849
  "pinProtection_configure": {
1852
- "label": "Настроить защищенные скрипты PIN",
1853
- "description": "Настроить защищенные скрипты PIN",
1854
- "help": "Выберите отдельные скрипты, требующие аутентификации PIN"
1850
+ "label": "Настройка сценариев, защищенных PIN-кодом",
1851
+ "description": "Настройте, какие сценарии требуют защиты PIN-кодом",
1852
+ "help": "Выберите отдельные сценарии, требующие аутентификации по PIN-коду."
1855
1853
  },
1856
1854
  "pinProtection_debugMenu": {
1857
- "label": "Отладка меню",
1858
- "description": "Отладка меню",
1859
- "current": "Текущее: {value}",
1860
- "help": "Включить защиту PIN для доступа к инструментам отладки"
1855
+ "label": "Меню инструментов отладки",
1856
+ "description": "Требовать PIN-код для меню инструментов отладки",
1857
+ "current": "Текущий: {value}",
1858
+ "help": "Включить защиту PIN-кодом для доступа к инструментам отладки"
1861
1859
  },
1862
1860
  "pinProtection_deleteReports": {
1863
1861
  "label": "Удалить отчеты",
1864
- "description": "Удалить отчеты",
1865
- "current": "Текущее: {value}",
1866
- "help": "Включить защиту PIN для удаления отчетов"
1862
+ "description": "Требовать PIN-код для удаления отчетов",
1863
+ "current": "Текущий: {value}",
1864
+ "help": "Включить защиту PIN-кодом для удаления отчетов"
1867
1865
  },
1868
1866
  "pinProtection_summaryReports": {
1869
- "label": "Сводка отчетов",
1870
- "description": "Сводка отчетов",
1871
- "current": "Текущее: {value}",
1872
- "help": "Включить защиту PIN для генерации сводки отчетов"
1867
+ "label": "Сводные отчеты",
1868
+ "description": "Требовать PIN-код для сводных отчетов",
1869
+ "current": "Текущий: {value}",
1870
+ "help": "Включить защиту PIN-кодом для создания сводных отчетов"
1873
1871
  },
1874
1872
  "pinProtection_settingsMenu": {
1875
- "label": "Настройки меню",
1876
- "description": "Настройки меню",
1877
- "current": "Текущее: {value}",
1878
- "help": "Включить защиту PIN для доступа к настройкам"
1873
+ "label": "Меню настроек",
1874
+ "description": "Требовать PIN-код для меню настроек",
1875
+ "current": "Текущий: {value}",
1876
+ "help": "Включить защиту PIN-кодом для доступа к настройкам"
1879
1877
  },
1880
1878
  "pinProtection_initScript": {
1881
- "label": "Инициализация скрипта",
1882
- "description": "Инициализация скрипта",
1883
- "current": "Текущее: {value}",
1884
- "help": "Включить защиту PIN для запуска скрипта инициализации"
1879
+ "label": "Инициализировать скрипт",
1880
+ "description": "Требовать PIN-код для инициализации сценария",
1881
+ "current": "Текущий: {value}",
1882
+ "help": "Включите защиту PIN-кодом для запуска сценария инициализации."
1885
1883
  },
1886
1884
  "pinProtection_resetDefaults": {
1887
- "label": "Сбросить защиту PIN",
1888
- "description": "Сбросить защиту PIN",
1889
- "help": "Сбросить все настройки защиты PIN к их умолчанию"
1885
+ "label": "Сбросить защиту PIN-кода",
1886
+ "description": "Сбросьте все настройки защиты PIN-кодом до значений по умолчанию.",
1887
+ "help": "Сброс всех индивидуальных защитных PIN-кодов сценариев до значений по умолчанию."
1890
1888
  },
1891
1889
  "removeUiLanguages": {
1892
- "label": "Удалить языки интерфейса",
1893
- "description": "Удалить языки интерфейса",
1894
- "help": "Удалить языки интерфейса, которые не установлены"
1890
+ "label": "Удалить языки пользовательского интерфейса",
1891
+ "description": "Удалите языки пользовательского интерфейса, которые не установлены.",
1892
+ "help": "Удалите языки пользовательского интерфейса, которые не установлены в системе."
1895
1893
  },
1896
1894
  "${helperKey}": {
1897
1895
  "help": "Помощь"
1896
+ },
1897
+ "backup": {
1898
+ "enabled": {
1899
+ "label": "Включить резервное копирование",
1900
+ "description": "Включить автоматическое резервное копирование настроек",
1901
+ "help": "Включить/отключить функцию резервного копирования"
1902
+ },
1903
+ "singleFileMode": {
1904
+ "label": "Режим одного файла",
1905
+ "description": "Используйте один файл для резервного копирования",
1906
+ "help": "Резервное копирование настроек в одном файле"
1907
+ },
1908
+ "singleBackupFile": {
1909
+ "label": "Путь к файлу резервной копии",
1910
+ "description": "Путь к файлу резервной копии",
1911
+ "help": "Путь к одному файлу резервной копии"
1912
+ },
1913
+ "retentionDays": {
1914
+ "label": "Срок хранения",
1915
+ "description": "Дни хранения файлов резервных копий",
1916
+ "help": "Количество дней для хранения старых файлов резервных копий"
1917
+ },
1918
+ "maxBackups": {
1919
+ "label": "Максимальное количество резервных копий",
1920
+ "description": "Максимальное количество файлов резервных копий, которые можно сохранить",
1921
+ "help": "Максимальное количество сохраняемых файлов резервных копий"
1922
+ },
1923
+ "confirm": {
1924
+ "label": "Подтвердить резервное копирование",
1925
+ "description": "Требовать подтверждения для операций резервного копирования",
1926
+ "help": "Подтвердите операцию резервного копирования"
1927
+ }
1898
1928
  }
1899
1929
  },
1900
1930
  "actions": {
1901
1931
  "editSetting": "Редактировать {setting}:",
1902
1932
  "settingUpdated": "✅ {setting} обновлено успешно!",
1903
- "invalidValue": "❌ Неверное значение. Пожалуйста, попробуйте снова.",
1933
+ "invalidValue": "❌ Недопустимое значение. Пожалуйста, попробуйте еще раз.",
1904
1934
  "pressEnter": "Нажмите Enter, чтобы продолжить...",
1905
1935
  "backToMenu": "Вернуться в главное меню",
1906
- "saveSuccess": "✅ Настройки сохранены успешно!",
1936
+ "saveSuccess": "✅ Настройки успешно сохранены!",
1907
1937
  "saveFailed": "❌ Не удалось сохранить настройки: {error}",
1908
- "resetConfirm": "Вы уверены, что хотите сбросить все настройки к их умолчанию? (y/N):",
1909
- "resetSuccess": "✅ Настройки сброшены к умолчанию успешно!",
1910
- "importSuccess": "✅ Настройки импортированы успешно!",
1911
- "exportSuccess": "✅ Настройки экспортированы успешно!",
1938
+ "resetConfirm": "Вы уверены, что хотите сбросить все настройки к значениям по умолчанию? (да/нет):",
1939
+ "resetSuccess": "✅ Настройки успешно сброшены до значений по умолчанию!",
1940
+ "importSuccess": "✅ Настройки успешно импортированы!",
1941
+ "exportSuccess": "✅ Настройки успешно экспортированы!",
1912
1942
  "fileNotFound": "❌ Файл не найден: {path}",
1913
- "invalidFormat": "❌ Неверный формат файла настроек",
1914
- "pinProtectionUpdated": "✅ Защита PIN для {script} обновлена успешно!",
1915
- "pinProtectionReset": "✅ Все настройки защиты PIN сброшены к умолчанию!",
1916
- "pinProtectionConfigure": "Настроить защищенные скрипты PIN",
1917
- "pinProtectionSelectScript": "Выберите скрипт для переключения защиты PIN:",
1943
+ "invalidFormat": "❌ Неверный формат файла настроек.",
1944
+ "pinProtectionUpdated": "✅ Защита PIN-кодом для {script} обновлено успешно!",
1945
+ "pinProtectionReset": "✅ Все настройки защиты PIN-кодом сброшены до значений по умолчанию!",
1946
+ "pinProtectionConfigure": "Настройка защиты PIN-кодом для отдельных сценариев",
1947
+ "pinProtectionSelectScript": "Выберите скрипт для включения защиты PIN-кодом:",
1918
1948
  "pinProtectionCurrentStatus": "Текущий статус: {status}",
1919
1949
  "pinProtectionEnabled": "Включено",
1920
- "pinProtectionDisabled": "Отключено",
1921
- "pinProtectionToggle": "Переключить защиту PIN",
1922
- "pinProtectionResetAll": "Сбросить все к умолчанию",
1923
- "pinProtectionBack": "Вернуться в настройки безопасности"
1950
+ "pinProtectionDisabled": "Неполноценный",
1951
+ "pinProtectionToggle": "Переключить защиту PIN-кодом",
1952
+ "pinProtectionResetAll": "Сбросить все к настройкам по умолчанию",
1953
+ "pinProtectionBack": "Вернуться к настройкам безопасности"
1924
1954
  },
1925
1955
  "themes": {
1926
- "light": "Светлая",
1927
- "dark": "Темная",
1928
- "system": "Системная"
1956
+ "light": "Свет",
1957
+ "dark": "Темный",
1958
+ "system": "Система"
1929
1959
  },
1930
1960
  "languages": {
1931
1961
  "en": "Английский",
1932
- "de": "Немецкий",
1933
- "es": "Испанский",
1962
+ "de": "немецкий",
1963
+ "es": "испанский",
1934
1964
  "fr": "Французский",
1935
1965
  "ru": "Русский",
1936
- "ja": "Японский",
1937
- "zh": "Китайский"
1966
+ "ja": "японский",
1967
+ "zh": "китайский"
1938
1968
  },
1939
1969
  "viewAll": {
1940
1970
  "title": "Просмотреть все настройки"
1941
1971
  },
1942
1972
  "current": "Текущий",
1943
1973
  "back": "Вернуться в главное меню",
1944
- "selectSettingPrompt": "Выберите настройку для редактирования (или b для возврата в главное меню, r для сброса):",
1945
- "invalidOption": " Неверная опция.",
1974
+ "selectSettingPrompt": "Выберите настройку для редактирования (или b для возврата, r для сброса):",
1975
+ "invalidOption": "Неверный вариант.",
1946
1976
  "editing": "Редактирование",
1947
- "enterNewValue": "Введите новое значение (или нажмите Enter, чтобы оставить текущее, введите 'default' для использования системного значения):",
1948
- "validOptions": "Валидные опции",
1949
- "updatedSuccessfully": "обновлено успешно!",
1950
- "noHelp": " Нет помощи для этой настройки",
1951
- "resetScriptDirectories": "Сбросить к умолчанию",
1952
- "resetScriptDirectoriesTitle": "Сбросить скрипты к умолчанию",
1953
- "resetScriptDirectoriesWarning1": "⚠️ Это сбросит все конфигурации директорий скриптов к их системным умолчаниям.",
1954
- "resetScriptDirectoriesWarning2": "⚠️ Все пользовательские пути к директориям будут удалены. Это действие невозможно отменить.",
1955
- "resetScriptDirectoriesConfirm": "⚠️ Вы уверены, что хотите сбросить все директории скриптов к умолчанию? (y/N):",
1977
+ "enterNewValue": "Введите новое значение (или нажмите Enter, чтобы сохранить текущее значение, введите «по умолчанию», чтобы использовать системное значение по умолчанию):",
1978
+ "validOptions": "Допустимые варианты",
1979
+ "updatedSuccessfully": "обновлено успешно!",
1980
+ "noHelp": "Для этого параметра нет помощи.",
1981
+ "resetScriptDirectories": "Сброс к значениям по умолчанию",
1982
+ "resetScriptDirectoriesTitle": "Сбросить каталоги сценариев к значениям по умолчанию",
1983
+ "resetScriptDirectoriesWarning1": "Это приведет к сбросу всех конфигураций каталогов сценариев к системным значениям по умолчанию.",
1984
+ "resetScriptDirectoriesWarning2": "Все пользовательские пути к каталогам будут очищены. Это действие невозможно отменить.",
1985
+ "resetScriptDirectoriesConfirm": "Вы уверены, что хотите сбросить все каталоги сценариев до значений по умолчанию? (да/нет):",
1956
1986
  "backup": {
1957
1987
  "title": "Настройки резервного копирования",
1958
- "description": "Сохранить текущие настройки в файл",
1959
- "confirm": "Вы уверены, что хотите создать резервную копию текущих настроек? (д/Н):",
1988
+ "description": "Резервное копирование текущих настроек в файл",
1989
+ "confirm": "Вы уверены, что хотите сделать резервную копию текущих настроек? (да/нет):",
1960
1990
  "success": "✅ Настройки успешно сохранены в {backupFile}",
1961
- "failed": "❌ Не удалось создать резервную копию настроек: {error}",
1991
+ "failed": "❌ Не удалось выполнить резервное копирование настроек: {error}",
1962
1992
  "enabled": "Включить резервное копирование",
1963
1993
  "enabledHelp": "Включить/отключить функцию резервного копирования",
1964
1994
  "singleFileMode": "Режим одного файла",
1965
- "singleFileModeHelp": "Сохранять настройки в один файл",
1966
- "singleBackupFile": "Единый файл резервной копии",
1967
- "singleBackupFileHelp": "Путь к единому файлу резервной копии",
1968
- "retentionDays": "Срок хранения",
1969
- "retentionDaysHelp": "Количество дней, за которое нужно хранить старые файлы резервной копии",
1995
+ "singleFileModeHelp": "Резервное копирование настроек в одном файле",
1996
+ "singleBackupFile": "Один файл резервной копии",
1997
+ "singleBackupFileHelp": "Путь к одному файлу резервной копии",
1998
+ "retentionDays": "Дни хранения",
1999
+ "retentionDaysHelp": "Количество дней для хранения старых файлов резервных копий",
1970
2000
  "maxBackups": "Максимальное количество резервных копий",
1971
- "maxBackupsHelp": "Максимальное количество файлов резервной копии, которые нужно сохранить",
1972
- "confirmHelp": "Подтвердить операцию резервного копирования",
2001
+ "maxBackupsHelp": "Максимальное количество сохраняемых файлов резервных копий",
2002
+ "confirmHelp": "Подтвердите операцию резервного копирования",
1973
2003
  "confirmYes": "Да",
1974
2004
  "confirmNo": "Нет"
1975
2005
  },
1976
2006
  "validation": {
1977
2007
  "valid": "Действительный",
1978
2008
  "validatingPaths": "Проверка настроенных путей...",
1979
- "validationComplete": "Проверка пути завершена: {valid}/{total} действителен."
2009
+ "validationComplete": "Проверка пути завершена: {valid}/{total} действительный."
1980
2010
  }
1981
2011
  },
1982
2012
  "summary": {
1983
- "separator": "============================================================",
2013
+ "separator": "=========================================================",
1984
2014
  "configurationTitle": "🔧 Конфигурация:",
1985
2015
  "sourceLanguage": "Исходный язык: {sourceLanguage}",
1986
2016
  "supportedExtensions": "Поддерживаемые расширения: {extensions}",
1987
- "excludedFiles": "Исключённые файлы: {files}",
2017
+ "excludedFiles": "Исключенные файлы: {files}",
1988
2018
  "reportContent": "{report}",
1989
- "fatalError": "❌ Фатальная ошибка: {error}",
1990
- "helpTitle": "📊 ГЕНЕРАТОР ОТЧЁТА I18NTK SUMMARY",
1991
- "helpDescription": "Анализирует структуру папок i18n и генерирует сводный отчёт с основными статистиками, анализом структуры файлов и проверками.",
1992
- "helpUsage": "Использование: node i18ntk-summary.js [options]",
1993
- "helpOptions": "--source-dir <dir> Директория для анализа",
1994
- "helpSourceDir": "--source-dir <dir> Директория для анализа",
1995
- "helpOutput": "--output <file> Файл для вывода отчёта",
1996
- "helpVerbose": "--verbose, -v Подробный вывод",
1997
- "helpKeepReports": "--keep-reports Сохранить существующие отчёты",
1998
- "helpDeleteReports": "--delete-reports Удалить существующие отчёты",
1999
- "helpHelp": "--help, -h Показать справку",
2019
+ "fatalError": "❌ Неустранимая ошибка: {error}",
2020
+ "helpTitle": "📊 ГЕНЕРАТОР СВОДНЫХ ОТЧЕТОВ I18NTK",
2021
+ "helpDescription": "Анализирует структуру папок i18n и создает подробный сводный отчет, включающий ключевую статистику, анализ структуры файлов и проверки.",
2022
+ "helpUsage": "Использование: узел i18ntk-summary.js [варианты]",
2023
+ "helpOptions": "--source-dir <dir> Исходный каталог для анализа",
2024
+ "helpSourceDir": "--source-dir <dir> Исходный каталог для анализа",
2025
+ "helpOutput": "--выход <file> Выходной файл отчета",
2026
+ "helpVerbose": "--verbose, -v Показать подробную информацию",
2027
+ "helpKeepReports": "--keep-reports Сохранить существующие отчеты",
2028
+ "helpDeleteReports": "--delete-reports Удалить существующие отчеты",
2029
+ "helpHelp": "--help, -h Показать эту справку",
2000
2030
  "helpExamples": "Примеры:",
2001
- "helpExample1": "node i18ntk-summary.js",
2002
- "helpExample2": "node i18ntk-summary.js --source-dir ./locales",
2003
- "helpExample3": "node i18ntk-summary.js --output summary-report.txt",
2004
- "helpExample4": "node i18ntk-summary.js --verbose",
2005
- "helpExample5": "node i18ntk-summary.js --source-dir ./locales --output report.json",
2006
- "couldNotReadFile": "⚠️ Не удалось прочитать файл: {filePath}",
2007
- "couldNotParseJSFile": "⚠️ Не удалось разобрать JS/TS файл: {filePath}",
2008
- "errorReadingFile": "⚠️ Ошибка при чтении файла {filePath}: {error}",
2031
+ "helpExample1": "узел i18ntk-summary.js",
2032
+ "helpExample2": "узел i18ntk-summary.js --source-dir ./locales",
2033
+ "helpExample3": "узел i18ntk-summary.js --output summary-report.txt",
2034
+ "helpExample4": "узел i18ntk-summary.js --verbose",
2035
+ "helpExample5": "узел i18ntk-summary.js --source-dir ./locales --output report.json",
2036
+ "couldNotReadFile": "⚠️ Не удалось прочитать файл: {filePath}",
2037
+ "couldNotParseJSFile": "⚠️ Не удалось разобрать файл JS/TS: {filePath}",
2038
+ "errorReadingFile": "⚠️ Ошибка чтения файла. {filePath}: {error}",
2009
2039
  "analyzingFolder": "🔍 Анализ структуры папок...",
2010
- "noLanguageDirectoriesFound": "❌ В указанной директории не найдены папки языков.",
2011
- "foundLanguages": "✅ Найдено языков: {count}: {languages}",
2012
- "referenceLanguageFiles": "📁 В эталонном языке '{language}' файлов: {count}",
2040
+ "noLanguageDirectoriesFound": "❌ В указанном исходном каталоге не найдены языковые каталоги.",
2041
+ "foundLanguages": "✅ Найден {count} языки: {languages}",
2042
+ "referenceLanguageFiles": "📁 Язык ссылки'{language}' имеет {count} файлы",
2013
2043
  "analyzingLanguage": "🌍 Анализ языка: {language}",
2014
- "keysInFiles": "📊 Найдено ключей: {keys} в {files} файлах",
2015
- "checkingInconsistentKeys": "🔍 Проверка несовпадений ключей между языками...",
2016
- "generatingSummaryReport": "📝 Генерация сводного отчёта...",
2017
- "reportTitle": "📊 ОТЧЁТ I18NTK SUMMARY",
2044
+ "keysInFiles": "📊 Найден {keys} ключи через {files} файлы",
2045
+ "checkingInconsistentKeys": "🔍 Проверка несовместимости ключей на разных языках...",
2046
+ "generatingSummaryReport": "📝 Создание сводного отчета...",
2047
+ "reportTitle": "📊 ОБЩИЙ ОТЧЕТ I18NTK",
2018
2048
  "generated": "Сгенерировано: {timestamp}",
2019
- "sourceDirectory": "Директория исходников: {dir}",
2049
+ "sourceDirectory": "Исходный каталог: {dir}",
2020
2050
  "overview": "📈 ОБЗОР",
2021
- "languagesCount": "Языков: {count}",
2051
+ "languagesCount": "Языки: {count}",
2022
2052
  "totalFiles": "Всего файлов: {count}",
2023
2053
  "totalKeys": "Всего ключей: {count}",
2024
- "avgKeysPerLanguage": "Среднее число ключей на язык: {count}",
2025
- "languagesBreakdown": "🌍 РАЗБИВКА ПО ЯЗЫКАМ",
2026
- "languageBreakdown": "{language}: {files} файлов, {keys} ключей",
2027
- "fileStructure": "📁 СТРУКТУРА ФАЙЛОВ",
2028
- "fileKeys": "{file}: {keys} ключей",
2029
- "missingInLanguages": "⚠️ Отсутствует в: {languages}",
2054
+ "avgKeysPerLanguage": "Среднее количество ключей на язык: {count}",
2055
+ "languagesBreakdown": "🌍 РАЗБИВКА ЯЗЫКОВ",
2056
+ "languageBreakdown": "{language}: {files} файлы, {keys} ключи",
2057
+ "fileStructure": "📁 СТРУКТУРА ФАЙЛА",
2058
+ "fileKeys": "{file}: {keys} ключи",
2059
+ "missingInLanguages": "⚠️ Не хватает: {languages}",
2030
2060
  "issuesFound": "❌ НАЙДЕНЫ ПРОБЛЕМЫ",
2031
2061
  "missingFiles": "📁 Отсутствующие файлы:",
2032
2062
  "emptyFiles": "📄 Пустые файлы:",
2033
- "malformedFiles": "⚠️ Некорректные файлы:",
2034
- "duplicateKeys": "🔑 Дублирующиеся ключи:",
2035
- "inconsistentKeys": "🔍 Несовпадающие ключи:",
2036
- "missingKeys": "Отсутствуют: {keys}{more}",
2037
- "extraKeys": "Лишние: {keys}{more}",
2063
+ "malformedFiles": "⚠️ Неверные файлы:",
2064
+ "duplicateKeys": "🔑Дубликаты ключей:",
2065
+ "inconsistentKeys": "🔍 Несовместимые ключи:",
2066
+ "missingKeys": "Отсутствующий: {keys}{more}",
2067
+ "extraKeys": "Дополнительный: {keys}{more}",
2038
2068
  "noIssuesFound": "✅ ПРОБЛЕМ НЕ НАЙДЕНО",
2039
- "allFilesConsistent": "Все файлы переводов согласованы между языками.",
2069
+ "allFilesConsistent": "Все файлы перевода одинаковы для разных языков.",
2040
2070
  "recommendations": "💡 РЕКОМЕНДАЦИИ",
2041
- "createMissingFiles": "• Создайте отсутствующие файлы перевода",
2042
- "addContentToEmptyFiles": "• Добавьте содержимое в пустые файлы перевода",
2043
- "fixMalformedFiles": "• Исправьте некорректные JSON/JS файлы",
2044
- "removeDuplicateKeys": "• Удалите дублирующиеся ключи из файлов",
2045
- "synchronizeKeys": "• Синхронизируйте ключи во всех языках",
2046
- "splitLargeFiles": "• Разбейте большие файлы на более мелкие пространства имён",
2047
- "addMoreLanguages": "• Рассмотрите добавление дополнительных языков",
2048
- "nextSteps": "🎯 ДАЛЬНЕЙШИЕ ШАГИ",
2049
- "nextStep1": "1. Исправьте выявленные проблемы",
2050
- "nextStep2": "2. Запустите валидацию для проверки согласованности",
2051
- "nextStep3": "3. Используйте i18ntk-validate для подробной проверки",
2052
- "nextStep4": "4. Регулярный мониторинг рекомендуется",
2053
- "couldNotFindI18nDirectory": "❌ Не найдена директория i18n. Укажите --source-dir.",
2054
- "sourceDirectoryDoesNotExist": "❌ Директория исходников не существует: {dir}",
2055
- "i18nSummaryReportGenerator": "Генератор сводного отчёта I18NTK",
2056
- "analysisComplete": "Анализ завершен",
2057
- "analyzedLanguages": "Анализировано языков: {count}",
2058
- "processedFiles": "Обработано файлов: {count}",
2059
- "foundTranslationKeys": "Найдено ключей перевода: {count}",
2060
- "foundIssues": "Найдено проблем: {count}",
2061
- "noIssuesConsole": "Нет проблем в консоли",
2062
- "errorDuringAnalysis": "Ошибка при анализе: {error}",
2063
- "usageReportTitle": "Отчёт использования переводов",
2064
- "usageReportGenerated": "Отчёт сгенерирован: {timestamp}",
2065
- "usageReportSourceDir": "Исходная директория: {dir}",
2066
- "usageReportI18nDir": "Директория переводов: {dir}",
2067
- "usageReportSummary": "Сводка",
2068
- "usageReportSourceFilesScanned": "Сканировано исходных файлов: {count}",
2069
- "usageReportTranslationFilesFound": "Найдено файлов перевода: {count}",
2070
- "usageReportAvailableKeys": "Доступных ключей: {count}",
2071
- "usageReportUsedKeys": "Использованных ключей: {count}",
2072
- "usageReportDynamicKeys": "Динамических ключей: {count}",
2073
- "usageReportUnusedKeys": "Неиспользованных ключей: {count}",
2074
- "usageReportMissingKeys": "Отсутствующих ключей: {count}",
2075
- "usageReportNotTranslatedKeys": "Непереведенных ключей: {count}",
2076
- "usageReportTranslationCompleteness": "Степень перевода: {completeness}%",
2077
- "usageReportLanguageCompleteness": "Степень перевода языка: {completeness}%",
2078
- "usageReportNotTranslatedInLanguage": "Непереведенных ключей в языке: {count}",
2079
- "usageReportTranslationFilesDiscovered": "Найдено файлов перевода: {count}",
2080
- "usageReportFileInfo": "Информация о файле: {file}",
2081
- "usageReportUnusedTranslationKeys": "Неиспользованных ключей перевода: {count}",
2082
- "usageReportUnusedKeysDescription": "Ключи, которые не используются в коде, но есть в переводе.",
2083
- "usageReportUnusedKey": "Неиспользованный ключ: {key}",
2084
- "usageReportMoreUnusedKeys": "Еще {count} неиспользованных ключей",
2085
- "usageReportMissingTranslationKeys": "Отсутствующих ключей перевода: {count}",
2086
- "usageReportMissingKeysDescription": "Ключи, которые есть в переводе, но не используются в коде.",
2087
- "usageReportMissingKey": "Отсутствующий ключ: {key}",
2088
- "usageReportUsedIn": "Используется в: {file}",
2089
- "usageReportMoreFiles": "Еще {count} файлов",
2090
- "usageReportDynamicTranslationKeys": "Динамических ключей перевода: {count}",
2091
- "usageReportDynamicKeysDescription": "Ключи, которые могут быть переведены динамически.",
2092
- "usageReportDynamicKey": "Динамический ключ: {key}",
2093
- "usageReportFileUsageBreakdown": "Разбивка использования по файлам",
2094
- "usageReportFileUsage": "Использование в файле: {file}",
2071
+ "createMissingFiles": "• Создать недостающие файлы перевода.",
2072
+ "addContentToEmptyFiles": "• Добавляйте контент в пустые файлы перевода.",
2073
+ "fixMalformedFiles": "• Исправление неправильных файлов JSON/JS.",
2074
+ "removeDuplicateKeys": "• Удаление дубликатов ключей из файлов.",
2075
+ "synchronizeKeys": "• Синхронизировать ключи на всех языках.",
2076
+ "splitLargeFiles": "• Рассмотрите возможность разделения больших файлов на более мелкие пространства имен.",
2077
+ "addMoreLanguages": "• Рассмотрите возможность добавления дополнительных языков.",
2078
+ "nextSteps": "🎯 СЛЕДУЮЩИЕ ШАГИ",
2079
+ "nextStep1": "1. Устраните все проблемы, указанные выше.",
2080
+ "nextStep2": "2. Запустите проверку, чтобы обеспечить согласованность",
2081
+ "nextStep3": "3. Рассмотрите возможность использования i18ntk-validate для детальной проверки.",
2082
+ "nextStep4": "4. Рекомендуется регулярный мониторинг.",
2083
+ "couldNotFindI18nDirectory": "❌ Не удалось найти каталог i18n. Пожалуйста, укажите --source-dir.",
2084
+ "sourceDirectoryDoesNotExist": "❌ Исходный каталог не существует: {dir}",
2085
+ "i18nSummaryReportGenerator": "📊 Генератор сводных отчетов I18N",
2086
+ "analysisComplete": "Анализ завершен",
2087
+ "analyzedLanguages": "📊 Анализируемые языки: {count}",
2088
+ "processedFiles": "📁 Обработанные файлы: {count}",
2089
+ "foundTranslationKeys": "🔑 Найдены ключи перевода: {count}",
2090
+ "foundIssues": " Найден {count} проблемы",
2091
+ "noIssuesConsole": " Проблем не обнаружено - все файлы соответствуют друг другу!",
2092
+ "errorDuringAnalysis": "Ошибка при анализе: {error}",
2093
+ "usageReportTitle": "📊 ОТЧЕТ ОБ ИСПОЛЬЗОВАНИИ I18NTK",
2094
+ "usageReportGenerated": "Сгенерировано: {timestamp}",
2095
+ "usageReportSourceDir": "Исходный каталог: {sourceDir}",
2096
+ "usageReportI18nDir": "Каталог I18n: {i18nDir}",
2097
+ "usageReportSummary": "📈 РЕЗЮМЕ",
2098
+ "usageReportSourceFilesScanned": "Исходные файлы отсканированы: {count}",
2099
+ "usageReportTranslationFilesFound": "Найдены файлы перевода: {count}",
2100
+ "usageReportAvailableKeys": "Доступные ключи перевода: {count}",
2101
+ "usageReportUsedKeys": "Используемые ключи перевода: {count}",
2102
+ "usageReportDynamicKeys": "Ключи динамического перевода: {count}",
2103
+ "usageReportUnusedKeys": "Неиспользуемые ключи перевода: {count}",
2104
+ "usageReportMissingKeys": "Отсутствуют ключи перевода: {count}",
2105
+ "usageReportNotTranslatedKeys": "Не переведенные ключи: {count}",
2106
+ "usageReportTranslationCompleteness": "🌍 ПОЛНОТА ПЕРЕВОДА",
2107
+ "usageReportLanguageCompleteness": "{language}: {completeness}% ({translated}/{total})",
2108
+ "usageReportNotTranslatedInLanguage": "Не переведено: {count} ключи",
2109
+ "usageReportTranslationFilesDiscovered": "📁 ФАЙЛЫ ПЕРЕВОДА",
2110
+ "usageReportFileInfo": "{relativePath} (пространство имен: {namespace}, тип: {type})",
2111
+ "usageReportUnusedTranslationKeys": "🗑️ НЕИСПОЛЬЗУЕМЫЕ КЛЮЧИ ПЕРЕВОДА",
2112
+ "usageReportUnusedKeysDescription": "Эти ключи существуют в файлах перевода, но не используются в исходном коде:",
2113
+ "usageReportUnusedKey": " {key}",
2114
+ "usageReportMoreUnusedKeys": "... и {count} больше неиспользуемых ключей",
2115
+ "usageReportMissingTranslationKeys": " ОТСУТСТВУЮТ КЛЮЧИ ПЕРЕВОДА",
2116
+ "usageReportMissingKeysDescription": "Эти ключи используются в исходном коде, но отсутствуют в файлах перевода:",
2117
+ "usageReportMissingKey": " {key}",
2118
+ "usageReportUsedIn": "Используется в: {filePath}",
2119
+ "usageReportMoreFiles": "... и {count} больше файлов",
2120
+ "usageReportDynamicTranslationKeys": " КЛЮЧИ ДИНАМИЧЕСКОГО ПЕРЕВОДА",
2121
+ "usageReportDynamicKeysDescription": "Эти ключи используются динамически (создаются во время выполнения):",
2122
+ "usageReportDynamicKey": " {key}",
2123
+ "usageReportFileUsageBreakdown": "📊 РАЗБИВКА ИСПОЛЬЗОВАНИЯ ФАЙЛОВ",
2124
+ "usageReportFileUsage": "{filePath}: {count} ключи",
2095
2125
  "status": {
2096
- "generating": "Генерация отчёта",
2097
- "completed": "Отчёт сгенерирован"
2126
+ "generating": " Генерация...",
2127
+ "completed": " Завершено"
2098
2128
  },
2099
2129
  "help": {
2100
- "usage": "Использование: i18ntk-usage [опции]",
2101
- "interactiveMode": "Взаимодействие с пользователем",
2102
- "initProject": "Инициализация проекта",
2103
- "analyzeTranslations": "Анализ переводов",
2104
- "validateTranslations": "Валидация переводов",
2105
- "checkUsage": "Проверка использования",
2106
- "showHelp": "Показать помощь",
2107
- "availableCommands": "Доступные команды",
2108
- "initCommand": "Инициализация команды",
2109
- "analyzeCommand": "Анализ команды",
2110
- "validateCommand": "Валидация команды",
2111
- "usageCommand": "Использование команды",
2112
- "sizingCommand": "Оценка команды",
2113
- "completeCommand": "Завершение команды",
2114
- "summaryCommand": "Сводка команды",
2115
- "scannerCommand": "scanner - 🔍 Сканирование проблем i18n",
2116
- "translateCommand": "translate - Автоперевод (Бета)",
2117
- "debugCommand": "Отладка команды"
2130
+ "usage": "Использование: узел main/manage/index.js [опции]",
2131
+ "interactiveMode": "💡 Используйте: node main/manage/index.js --command=<command> для прямого исполнения",
2132
+ "initProject": "🚀 Инициализировать новые языки",
2133
+ "analyzeTranslations": "🔍 Анализировать переводы",
2134
+ "validateTranslations": " Проверка переводов",
2135
+ "checkUsage": "📊 Проверьте использование ключа",
2136
+ "showHelp": "📖 Используйте: node main/manage/index.js --help для доступных команд.",
2137
+ "availableCommands": "📖 Доступные команды:",
2138
+ "initCommand": "init — инициализировать новые языки",
2139
+ "analyzeCommand": "анализировать - анализировать переводы",
2140
+ "validateCommand": "validate - Проверить переводы",
2141
+ "usageCommand": "использование — проверка использования ключа.",
2142
+ "sizingCommand": "калибровка - Анализ размеров",
2143
+ "completeCommand": "Complete – Полные переводы (100% покрытие)",
2144
+ "summaryCommand": "резюме - Показать статус проекта",
2145
+ "scannerCommand": "сканер сканирование на наличие проблем с i18n",
2146
+ "translateCommand": "Translate автоматически переводить файлы локали (бета-версия)",
2147
+ "debugCommand": "debug - Отладка проблем с переводом"
2118
2148
  },
2119
2149
  "test_complete_system": {
2120
- "starting_test": "Начало теста",
2121
- "separator": "------------------------------",
2122
- "testing_ui_translations": "Тестирование переводов интерфейса",
2123
- "testing_settings_manager": "Тестирование менеджера настроек",
2124
- "testing_main_scripts": "Тестирование основных скриптов",
2125
- "checking_translation_consistency": "Проверка согласованности переводов",
2126
- "non_critical_missing_keys": "Ненавязчивые отсутствующие ключи",
2127
- "extra_keys": "Дополнительные ключи",
2128
- "generating_report": "Генерация отчёта",
2129
- "final_test_report_title": "Итоговый отчёт теста",
2130
- "passed": "Успешно",
2131
- "failed": "Неудачно",
2132
- "warnings": "Предупреждения",
2133
- "missing_translations_title": "Отсутствующие переводы",
2134
- "missing_translation_key": "Отсутствующий ключ перевода: {key}",
2135
- "missing_translations_more": "Еще {count} отсутствующих ключей",
2136
- "errors_title": "Ошибки",
2137
- "error_message": "Ошибка: {message}",
2138
- "overall_status": "Общий статус",
2139
- "success_message": "Тест пройден",
2140
- "failure_message": "Тест не пройден",
2141
- "failure_error_message": "Тест не пройден: {message}",
2142
- "warning_message": "Предупреждение: {message}",
2143
- "test_runner_failed": "Тестовый раннер завершился с ошибкой",
2150
+ "starting_test": "🧪 Начинаем полную проверку системы",
2151
+ "separator": "=",
2152
+ "testing_ui_translations": "📝 Тестирование переводов пользовательского интерфейса...",
2153
+ "testing_settings_manager": "⚙️ Менеджер настроек тестирования...",
2154
+ "testing_main_scripts": "🔧 Тестирование основных скриптов...",
2155
+ "checking_translation_consistency": "🌐 Проверка согласованности перевода...",
2156
+ "non_critical_missing_keys": "ℹ️ {file}: {count} некритическое отсутствие ключей",
2157
+ "extra_keys": "ℹ️ {file}: {count} дополнительные ключи",
2158
+ "generating_report": "📊 Создание отчета...",
2159
+ "final_test_report_title": "📋 ОКОНЧАТЕЛЬНЫЙ ОТЧЕТ ИСПЫТАНИЙ",
2160
+ "passed": "✅ Пройдено: {passed}",
2161
+ "failed": "❌ Не удалось: {failed}",
2162
+ "warnings": "⚠️ Предупреждения: {warnings}",
2163
+ "missing_translations_title": "🔍 Отсутствующие переводы ({count}):",
2164
+ "missing_translation_key": "- {key}",
2165
+ "missing_translations_more": "... и {count} более",
2166
+ "errors_title": "❌ Ошибки:",
2167
+ "error_message": "- {error}",
2168
+ "overall_status": "📊 Общий статус: {status}",
2169
+ "success_message": " {message}",
2170
+ "failure_message": " {message}",
2171
+ "failure_error_message": "{errorMessage}",
2172
+ "warning_message": "⚠️ {message}",
2173
+ "test_runner_failed": "Тестовый запуск не пройден:",
2144
2174
  "recommendations": {
2145
- "add_missing_translation_keys": "Добавьте отсутствующие ключи перевода",
2146
- "fix_failing_scripts": "Исправьте скрипты, которые завершились с ошибкой",
2147
- "review_warning_messages": "Проверьте предупреждения",
2175
+ "add_missing_translation_keys": "Добавьте недостающие ключи перевода для обеспечения единообразия.",
2176
+ "fix_failing_scripts": "Исправьте ошибочные сценарии перед развертыванием",
2177
+ "review_warning_messages": "Просмотрите и устраните предупреждающие сообщения",
2148
2178
  "system_ready_for_deployment": "Система готова к развертыванию"
2149
2179
  },
2150
2180
  "hardcodedTexts": {
2151
- "addMissingTranslationKeys": "Добавьте отсутствующие ключи перевода",
2152
- "fixFailingScripts": "Исправьте скрипты, которые завершились с ошибкой",
2153
- "reviewWarningMessages": "Проверьте предупреждения",
2181
+ "addMissingTranslationKeys": "Добавьте недостающие ключи перевода для обеспечения единообразия.",
2182
+ "fixFailingScripts": "Исправьте ошибочные сценарии перед развертыванием",
2183
+ "reviewWarningMessages": "Просмотрите и устраните предупреждающие сообщения",
2154
2184
  "systemReadyForDeployment": "Система готова к развертыванию"
2155
2185
  }
2156
2186
  },
2157
2187
  "testConsoleI18n": {
2158
- "found_target_file": "Найдено целевого файла",
2159
- "scanning_files_for_console_statements": "Сканирование файлов для поиска консольных вызовов",
2160
- "found_javascript_files": "Найдено JavaScript файлов",
2161
- "console_i18n_analysis_results": "Результаты анализа консольных вызовов",
2162
- "total_console_statements": "Общее количество консольных вызовов",
2163
- "translated_statements": "Переведенных вызовов",
2164
- "hardcoded_statements": "Непереведенных вызовов",
2165
- "translation_coverage": "Коэффициент перевода",
2166
- "coverage_by_file": "Коэффициент перевода по файлу",
2167
- "file_coverage_stats": "Статистика перевода по файлу",
2168
- "hardcoded_console_statements": "Непереведенных вызовов в файле",
2169
- "file_header": "Файл",
2170
- "line_statement": "Строка",
2171
- "suggested_key": "Предложенный ключ",
2172
- "suggested_replacement": "Предложенный замена",
2173
- "recommendations": "Рекомендации",
2174
- "recommendation_1": "Добавьте отсутствующие ключи перевода",
2175
- "recommendation_2": "Исправьте скрипты, которые завершились с ошибкой",
2176
- "recommendation_3": "Проверьте предупреждения",
2177
- "recommendation_4": "Система готова к развертыванию",
2178
- "translation_keys_to_add": "Ключи перевода, которые необходимо добавить",
2179
- "add_keys_instruction": "Добавьте отсутствующие ключи перевода",
2180
- "perfect_translation_coverage": "Иdealный коэффициент перевода",
2181
- "all_statements_using_translation": "Все вызовы используют перевод",
2182
- "i18n_console_translation_checker": "Проверка перевода консольных вызовов",
2183
- "script_description_line1": "Этот скрипт проверяет переводы консольных вызовов в вашем проекте.",
2184
- "script_description_line2": "Он выявляет непереведенные вызовы и предлагает рекомендации по их исправлению.",
2185
- "analysis_completed_in_duration": "Анализ завершен за {duration}",
2186
- "report_saved_to_path": "Отчёт сохранён в {path}",
2187
- "found_hardcoded_messages": "Найдено непереведенных сообщений",
2188
- "all_console_messages_use_translation": "Все консольные сообщения используют перевод",
2189
- "consoleTranslationsCheck": "Проверка перевода консольных вызовов"
2188
+ "found_target_file": "Найден целевой файл: {fileName}",
2189
+ "scanning_files_for_console_statements": "Сканирование файлов на предмет консольных операторов...",
2190
+ "found_javascript_files": "Найденный {count} Файлы JavaScript.",
2191
+ "console_i18n_analysis_results": "Результаты консольного анализа I18n",
2192
+ "total_console_statements": "Всего консольных операторов: {count}",
2193
+ "translated_statements": "Переведенные утверждения: {count}",
2194
+ "hardcoded_statements": "Жестко закодированные утверждения: {count}",
2195
+ "translation_coverage": "Охват перевода: {percentage}%",
2196
+ "coverage_by_file": "Покрытие по файлам:",
2197
+ "file_coverage_stats": "{emoji} {fileName}: {coverage}% ({translated}/{total})",
2198
+ "hardcoded_console_statements": "Жестко запрограммированные операторы консоли:",
2199
+ "file_header": "Файл: {file}",
2200
+ "line_statement": "Линия {line}: {statement}",
2201
+ "suggested_key": "Предлагаемый ключ: {key}",
2202
+ "suggested_replacement": "Предлагаемая замена: {replacement}",
2203
+ "recommendations": "Рекомендации:",
2204
+ "recommendation_1": "1. Замените жестко запрограммированные строки вызовами i18n.t().",
2205
+ "recommendation_2": "2. Добавьте новые ключи в соответствующие файлы JSON перевода.",
2206
+ "recommendation_3": "3. Убедитесь, что все сообщения консоли ориентированы на пользователя и требуют перевода.",
2207
+ "recommendation_4": "4. Используйте литералы шаблона или конкатенацию строк для динамических сообщений, передавая переменные в i18n.t().",
2208
+ "translation_keys_to_add": "Предлагаемые ключи перевода для добавления:",
2209
+ "add_keys_instruction": "Скопируйте следующую структуру JSON в файлы перевода:",
2210
+ "perfect_translation_coverage": "Идеальное покрытие перевода!",
2211
+ "all_statements_using_translation": "Все операторы консоли используют систему перевода.",
2212
+ "i18n_console_translation_checker": "Средство проверки перевода консоли I18n",
2213
+ "script_description_line1": "Этот скрипт сканирует все файлы JavaScript на наличие операторов консоли.",
2214
+ "script_description_line2": "и проверяет, используют ли они систему перевода.",
2215
+ "analysis_completed_in_duration": "Анализ завершен в {duration} секунды.",
2216
+ "report_saved_to_path": "Отчет сохранен в: {path}",
2217
+ "found_hardcoded_messages": "Найденный {count} жестко запрограммированные сообщения. Выход с кодом ошибки 1.",
2218
+ "all_console_messages_use_translation": "Все сообщения консоли используют перевод. Выход с кодом 0.",
2219
+ "consoleTranslationsCheck": "Проверка переводов консоли"
2190
2220
  },
2191
2221
  "translate_mismatches": {
2192
- "title": "Несоответствия переводов",
2193
- "separator": "------------------------------",
2194
- "processing_file": "Обработка файла",
2195
- "translation_summary_title": "Сводка перевода",
2196
- "total_translations_applied": "Общее количество применённых переводов",
2197
- "run_with_apply_instruction": "Запустите скрипт с опцией --apply, чтобы применить переводы",
2198
- "no_translation_mappings": "Нет сопоставлений перевода",
2199
- "translation_applied": "Применён перевод",
2200
- "saved_translations": "Сохранённые переводы",
2201
- "found_translatable_items": "Найдено переведуемых элементов",
2202
- "no_automatic_translations": "Нет автоматических переводов",
2203
- "error_processing_file": "Ошибка при обработке файла",
2204
- "coverage_report_title": "Отчёт покрытия перевода",
2205
- "coverage_report_separator": "------------------------------",
2206
- "file_header": "Файл",
2207
- "total_keys": "Общее количество ключей",
2208
- "translated_keys": "Переведённых ключей",
2209
- "untranslated_markers": "Непереведённых маркеров: {untranslated}",
2210
- "contains_english": "Содержит английский",
2211
- "coverage_percentage": "Коэффициент перевода",
2212
- "error_general": "Общая ошибка",
2213
- "use_help": "Используйте --help, чтобы получить справку"
2222
+ "title": "🌐 Помощник по переводу {dryRun}",
2223
+ "separator": "====================================",
2224
+ "processing_file": "📄 Обработка {language}.json...",
2225
+ "translation_summary_title": "📊 Краткое описание перевода:",
2226
+ "total_translations_applied": "Всего примененных переводов: {totalTranslations}",
2227
+ "run_with_apply_instruction": "💡 Чтобы применить эти переводы, запустите --apply.",
2228
+ "no_translation_mappings": "⚠️ Сопоставления переводов недоступны для {language}",
2229
+ "translation_applied": " {key}: \"{oldValue}\" → \"{newValue}\"",
2230
+ "saved_translations": "💾 Сохранено {count} переводы на {filename}",
2231
+ "found_translatable_items": "🔍 Найден {count} переводимые предметы",
2232
+ "no_automatic_translations": " Автоматические переводы недоступны.",
2233
+ "error_processing_file": " Обработка ошибок {filename}: {errorMessage}",
2234
+ "coverage_report_title": "📊 Отчет об охвате переводов",
2235
+ "coverage_report_separator": "==============================",
2236
+ "file_header": "📄 {filename}:",
2237
+ "total_keys": "Всего ключей: {total}",
2238
+ "translated_keys": "Переведено: {translated}",
2239
+ "untranslated_markers": "Непереведенные маркеры: {untranslated}",
2240
+ "contains_english": "Содержит английский: {hasEnglish}",
2241
+ "coverage_percentage": "Охват: {coverage}%",
2242
+ "error_general": " Ошибка:",
2243
+ "use_help": "Используйте --help для получения информации об использовании."
2214
2244
  },
2215
2245
  "cleaningUpReportFiles": "Очистка старых файлов отчетов...",
2216
- "couldNotDelete": "Не удалось удалить {file}: {error}.",
2217
- "deletedOldReportFiles": "Удалены {count} старых файлов отчета.",
2218
- "errorCleaningUpReports": "Ошибка очистки отчетов: {error}.",
2246
+ "couldNotDelete": "Не удалось удалить {file}: {error}",
2247
+ "deletedOldReportFiles": "Удалено {count} старые файлы отчета.",
2248
+ "errorCleaningUpReports": "Ошибка очистки отчетов: {error}",
2219
2249
  "noOldReportFilesToDelete": "Нет старых файлов отчетов для удаления.",
2220
2250
  "reportFilesPreserved": "Файлы отчетов сохранены.",
2221
- "reportSaveFailed": "Не удалось сохранить отчет в: {reportPath}.",
2222
- "reportSaved": "Отчет сохранен в: {reportPath}."
2251
+ "reportSaveFailed": "Не удалось сохранить отчет в: {reportPath}",
2252
+ "reportSaved": "Отчет сохранен в: {reportPath}"
2223
2253
  },
2224
2254
  "ui": {
2225
- "autoDetectedI18nDirectory": "Автоопределённая директория i18n: {path}",
2226
- "executingCommand": "🔄 Выполнение команды: {command}",
2227
- "unknownCommand": "Неизвестная команда: {command}",
2228
- "errorExecutingCommand": "Ошибка при выполнении команды: {error}",
2229
- "errorLoadingTranslationFile": "Ошибка при загрузке файла перевода для «{language}»: {error}",
2230
- "errorSavingLanguagePreference": "Ошибка при сохранении предпочтения языка: {error}",
2231
- "noActiveReadlineInterface": "Нет активного интерфейса readline",
2232
- "uiLanguageUpdated": "🌍 Язык интерфейса обновлён на: {language}",
2233
- "selectOptionPrompt": "Выберите опцию:",
2234
- "pressEnterToReturn": "Нажмите Enter, чтобы вернуться в главное меню…",
2235
- "detectedSourceDirectory": "Обнаружена директория исходников: {sourceDir}",
2236
- "detectedI18nDirectory": "Обнаружена директория i18n: {directory}",
2237
- "toolkitTitle": "🌍 i18ntk — Корпоративный инструмент управления i18n",
2238
- "versionInfo": "📦 Версия: {version}",
2239
- "releaseDate": "📅 Дата выпуска: {date}",
2240
- "maintainer": "👤 Поддерживает: {maintainer}",
2241
- "nodeVersion": "🔧 Node.js: {version}",
2242
- "license": "📄 Лицензия: {license}",
2243
- "whatsNew": "✨ Что нового в версии {version}:",
2255
+ "autoDetectedI18nDirectory": "Автоматически обнаруженный каталог i18n: {path}",
2256
+ "executingCommand": "Выполнение команды: {command}",
2257
+ "unknownCommand": "Неизвестная команда: {command}",
2258
+ "errorExecutingCommand": "Ошибка выполнения команды: {error}",
2259
+ "errorLoadingTranslationFile": "Ошибка загрузки файла перевода для '{language}': {error}",
2260
+ "errorSavingLanguagePreference": "Ошибка сохранения языковых настроек: {error}",
2261
+ "noActiveReadlineInterface": "Нет активного интерфейса Readline",
2262
+ "uiLanguageUpdated": "Язык пользовательского интерфейса обновлен до: {language}",
2263
+ "selectOptionPrompt": "Выберите вариант:",
2264
+ "pressEnterToReturn": "Нажмите Enter, чтобы вернуться в главное меню...",
2265
+ "detectedSourceDirectory": "Обнаружен исходный каталог: {sourceDir}",
2266
+ "detectedI18nDirectory": "Обнаружен каталог i18n: {directory}",
2267
+ "toolkitTitle": "i18ntk — набор инструментов управления корпоративным i18n",
2268
+ "versionInfo": "Версия: {version}",
2269
+ "releaseDate": "Дата выпуска: {date}",
2270
+ "maintainer": "Сопровождающий: {maintainer}",
2271
+ "nodeVersion": "Node.js: {version}",
2272
+ "license": "Лицензия: {license}",
2273
+ "whatsNew": "✨ Что нового в версии v{version}:",
2244
2274
  "changeItem": "{change}",
2245
2275
  "documentation": "📚 Документация: {url}",
2246
- "issues": "🐛 Задачи: {url}",
2247
- "versionInfoUnavailable": "Информация о версии i18ntk недоступна",
2276
+ "issues": "🐛 Проблемы: {url}",
2277
+ "versionInfoUnavailable": "информация о версии i18ntk недоступна",
2248
2278
  "versionInfoError": "Ошибка: {error}"
2249
2279
  },
2250
2280
  "validateLanguagePurity": {
@@ -2256,104 +2286,104 @@
2256
2286
  "phrase_back_to_main_menu": "вернуться в главное меню",
2257
2287
  "phrase_error": "ошибка",
2258
2288
  "phrase_warning": "предупреждение",
2259
- "phrase_success": "успешно",
2260
- "phrase_failed": "не удалось",
2289
+ "phrase_success": "успех",
2290
+ "phrase_failed": "неуспешный",
2261
2291
  "phrase_loading": "загрузка",
2262
- "phrase_saving": "сохранение",
2292
+ "phrase_saving": "экономия",
2263
2293
  "phrase_full_system_debug": "полная отладка системы",
2264
2294
  "phrase_configuration_debug": "отладка конфигурации",
2265
2295
  "phrase_translation_debug": "отладка перевода",
2266
2296
  "phrase_performance_debug": "отладка производительности",
2267
- "phrase_admin_pin_setup": "настройка Admin PIN",
2268
- "phrase_enter_admin_pin": "введите Admin PIN",
2269
- "phrase_confirm_admin_pin": "подтвердите Admin PIN",
2297
+ "phrase_admin_pin_setup": "настройка PIN-кода администратора",
2298
+ "phrase_enter_admin_pin": "введите пин-код администратора",
2299
+ "phrase_confirm_admin_pin": "подтвердить PIN-код администратора",
2270
2300
  "phrase_authentication_failed": "аутентификация не удалась",
2271
- "phrase_access_denied": "доступ запрещён",
2301
+ "phrase_access_denied": "доступ запрещен",
2272
2302
  "phrase_security_log": "журнал безопасности",
2273
- "language_german": "Немецкий",
2303
+ "language_german": "немецкий",
2274
2304
  "language_french": "Французский",
2275
- "language_spanish": "Испанский",
2305
+ "language_spanish": "испанский",
2276
2306
  "language_russian": "Русский",
2277
- "language_japanese": "Японский",
2278
- "language_chinese": "Китайский",
2307
+ "language_japanese": "японский",
2308
+ "language_chinese": "китайский",
2279
2309
  "validator_title": "🔍 Валидатор чистоты языка",
2280
- "validating_file": "📄 Проверка {language}.json ({name})",
2281
- "valid_file_message": "✅ Валиден нарушений чистоты языка не обнаружено",
2282
- "invalid_file_message": "❌ Не прошёл проверку — найдено {count} нарушений",
2283
- "no_validation_rules": "Для языка «{language}» нет определённых правил проверки",
2310
+ "validating_file": "📄 Проверка {language}.json({name})...",
2311
+ "valid_file_message": "✅ Действителен нарушений чистоты языка нет.",
2312
+ "invalid_file_message": "❌ Недействительно {count} обнаружены нарушения",
2313
+ "no_validation_rules": "Для языка не определены правила проверки: {language}",
2284
2314
  "error_reading_file": "Ошибка чтения файла: {errorMessage}",
2285
- "issue_forbidden_marker": "Содержит запрещённый маркер: {marker}",
2286
- "issue_english_phrase": "Содержит английскую фразу: «{phrase}»",
2315
+ "issue_forbidden_marker": "Содержит запрещенный маркер: {marker}",
2316
+ "issue_english_phrase": "Содержит английскую фразу: \"{phrase}\"",
2287
2317
  "issue_english_words": "Содержит английские слова: {words}",
2288
- "issue_missing_cyrillic": "Длинный текст должен содержать кириллические символы для русского",
2289
- "issue_missing_japanese": "Длинный текст должен содержать японские иероглифы",
2290
- "issue_missing_chinese": "Длинный текст должен содержать китайские символы",
2291
- "summary_title": "📊 СВОДКА ВАЛИДАЦИИ",
2318
+ "issue_missing_cyrillic": "Длинный текст должен содержать символы кириллицы для русского языка.",
2319
+ "issue_missing_japanese": "Длинный текст должен содержать японские символы.",
2320
+ "issue_missing_chinese": "Длинный текст должен содержать китайские иероглифы.",
2321
+ "summary_title": "📊 РЕЗЮМЕ ПРОВЕРКИ",
2292
2322
  "overall_results_header": "📋 Общие результаты:",
2293
- "total_files_validated": "Всего файлов проверено: {count}",
2294
- "valid_files": "Валидных файлов: {count}",
2295
- "invalid_files": "Невалидных файлов: {count}",
2323
+ "total_files_validated": "Всего проверенных файлов: {count}",
2324
+ "valid_files": "Действительные файлы: {count}",
2325
+ "invalid_files": "Неверные файлы: {count}",
2296
2326
  "total_violations": "Всего нарушений: {count}",
2297
- "violations_by_file_header": "❌ НАРУШЕНИЯ ПО ФАЙЛАМ:"
2327
+ "violations_by_file_header": "❌ НАРУШЕНИЯ ПО ФАЙЛУ:"
2298
2328
  },
2299
2329
  "workflow": {
2300
- "title": "Управление рабочими процессами",
2301
- "description": "Управление рабочими процессами i18n.",
2330
+ "title": "Управление рабочим процессом",
2331
+ "description": "Управляйте рабочими процессами i18n.",
2302
2332
  "select_workflow_file": "Выберите файл рабочего процесса для запуска:",
2303
- "no_workflow_files": "В директории workflows не найдено файлов рабочих процессов.",
2304
- "invalid_selection": "Неверный выбор. Пожалуйста, введите номер файла рабочего процесса.",
2333
+ "no_workflow_files": "В каталоге рабочих процессов не найдены файлы рабочих процессов.",
2334
+ "invalid_selection": "Неверный выбор. Введите номер, соответствующий файлу рабочего процесса.",
2305
2335
  "workflow_execution_started": "Запуск рабочего процесса: {workflowName}",
2306
- "workflow_execution_completed": "Рабочий процесс завершён: {workflowName}",
2307
- "workflow_execution_failed": "Рабочий процесс не выполнен: {workflowName} {error}",
2336
+ "workflow_execution_completed": "Рабочий процесс завершен: {workflowName}",
2337
+ "workflow_execution_failed": "Рабочий процесс не выполнен: {workflowName} - {error}",
2308
2338
  "workflow_cancelled": "Выполнение рабочего процесса отменено.",
2309
2339
  "press_enter_to_continue": "Нажмите Enter, чтобы продолжить!",
2310
- "starting": "🚀 Запуск рабочего процесса…",
2311
- "completed": " Рабочий процесс успешно завершён!",
2312
- "checkReports": "📄 Проверьте отчёты для подробностей.",
2313
- "exitingCompleted": "📝 Рабочий процесс завершён. Выход…",
2340
+ "starting": "🚀Начинаем рабочий процесс...",
2341
+ "completed": "✅Рабочий процесс успешно завершен!",
2342
+ "checkReports": "📄 Подробности смотрите в отчетах.",
2343
+ "exitingCompleted": "📝Рабочий процесс завершен. Выход...",
2314
2344
  "summary": {
2315
- "title": "📋 ИТОГИ РАБОЧЕГО ПРОЦЕССА",
2345
+ "title": "📋 ОБЗОР РАБОЧЕГО ПРОЦЕССА",
2316
2346
  "separator": "===================",
2317
- "completedAt": "🕐 Завершено: {timestamp}",
2318
- "initialViolations": "📊 Первоначальные нарушения: {count}",
2347
+ "completedAt": "🕐 Рабочий процесс завершен по адресу: {timestamp}",
2348
+ "initialViolations": "📊Первоначальные нарушения: {count}",
2319
2349
  "finalViolations": "📉 Итоговые нарушения: {count}",
2320
- "totalFixes": "🔧 Всего исправлений: {count}",
2350
+ "totalFixes": "🔧 Всего внесено исправлений: {count}",
2321
2351
  "improvement": "📈 Улучшение: {percentage}%",
2322
- "stepResults": "📝 РЕЗУЛЬТАТЫ ШАГОВ:",
2352
+ "stepResults": "📝 РЕЗУЛЬТАТЫ ШАГА:",
2323
2353
  "stepDetail": "{number}. {status} {stepName}",
2324
- "violations": "Нарушений: {count}",
2325
- "fixesApplied": "Исправлений: {count}",
2326
- "nextSteps": "💡 ДАЛЬНЕЙШИЕ ШАГИ:",
2327
- "congratulations": "🎉 Поздравляем! Все файлы локалей теперь безупречны!",
2328
- "cicdIntegration": "✅ Рассмотрите интеграцию валидатора в ваш CI/CD",
2354
+ "violations": "Нарушения: {count}",
2355
+ "fixesApplied": "Исправления: {count}",
2356
+ "nextSteps": "💡СЛЕДУЮЩИЕ ШАГИ:",
2357
+ "congratulations": "🎉Поздравляем! Все файлы локали теперь имеют идеальную языковую чистоту!",
2358
+ "cicdIntegration": "✅ Рассмотрите возможность интеграции валидатора в ваш конвейер CI/CD.",
2329
2359
  "automatedChecks": "✅ Настройте автоматические проверки новых переводов",
2330
- "greatProgress": "🎯 Большая часть проблем решена.",
2331
- "manualReview": "🔍 Проведите ручной обзор оставшихся нарушений",
2332
- "addMappings": "🌐 Рассмотрите добавление перевода для редких случаев",
2333
- "goodProgress": "📈 Хороший прогресс, но есть что доработать.",
2334
- "expandMappings": "🔧 Расширьте автоматические правила перевода",
2335
- "professionalReview": "👥 Рассмотрите профессиональный перевод для сложных случаев",
2336
- "runAgain": "🔄 Запустите процесс снова после добавления новых правил",
2337
- "limitedProgress": "⚠️ Прогресс ограничен. Требуется вмешательство.",
2338
- "reviewMappings": "🔍 Проверьте и дополните правила перевода",
2339
- "professionalServices": "👥 Обратитесь к профессиональным переводчикам",
2340
- "checkIssues": "🔧 Проверьте системные проблемы в файлах локалей",
2360
+ "greatProgress": "🎯 Отличный прогресс! Большинство проблем решено.",
2361
+ "manualReview": "🔍 Просмотрите оставшиеся нарушения вручную",
2362
+ "addMappings": "🌐 Рассмотрите возможность добавления дополнительных сопоставлений перевода для крайних случаев.",
2363
+ "goodProgress": "📈 Достигнут хороший прогресс, но нужно еще поработать.",
2364
+ "expandMappings": "🔧 Расширьте сопоставления автоматического перевода.",
2365
+ "professionalReview": "👥 Рассмотрите возможность ручной проверки сложных переводов.",
2366
+ "runAgain": "🔄 Запустите рабочий процесс снова после добавления дополнительных сопоставлений.",
2367
+ "limitedProgress": "⚠️ Ограниченный прогресс. Может потребоваться ручное вмешательство.",
2368
+ "reviewMappings": "🔍 Просмотрите сопоставления переводов и добавьте недостающие.",
2369
+ "professionalServices": "👥 Рассмотрите услуги профессионального перевода",
2370
+ "checkIssues": "🔧 Проверьте наличие систематических проблем в файлах локали.",
2341
2371
  "success": "✅",
2342
2372
  "warning": "⚠️"
2343
2373
  }
2344
2374
  },
2345
2375
  "consoleI18nTester": {
2346
2376
  "found_target_file": "Найден целевой файл",
2347
- "scanning_files_for_console_statements": "Сканирование файлов на наличие операторов console",
2348
- "found_javascript_files": "Найдены JavaScript файлы",
2349
- "console_i18n_analysis_results": "Результаты анализа i18n консоли",
2350
- "total_console_statements": "Всего операторов console",
2351
- "translated_statements": "Переведенные операторы",
2352
- "hardcoded_statements": "Жестко закодированные операторы",
2353
- "translation_coverage": "Покрытие переводом",
2377
+ "scanning_files_for_console_statements": "Сканирование файлов на предмет консольных операторов",
2378
+ "found_javascript_files": "Найдены файлы JavaScript",
2379
+ "console_i18n_analysis_results": "Результаты консольного анализа i18n",
2380
+ "total_console_statements": "Всего консольных операторов",
2381
+ "translated_statements": "Переведенные заявления",
2382
+ "hardcoded_statements": "Жестко закодированные утверждения",
2383
+ "translation_coverage": "Охват перевода",
2354
2384
  "coverage_by_file": "Покрытие по файлам",
2355
2385
  "file_coverage_stats": "Статистика покрытия файлов",
2356
- "hardcoded_console_statements": "Жестко закодированные операторы console",
2386
+ "hardcoded_console_statements": "Жестко запрограммированные консольные операторы",
2357
2387
  "file_header": "Заголовок файла",
2358
2388
  "line_statement": "Оператор строки",
2359
2389
  "suggested_key": "Предлагаемый ключ",
@@ -2365,28 +2395,28 @@
2365
2395
  "recommendation_4": "Рекомендация 4",
2366
2396
  "translation_keys_to_add": "Ключи перевода для добавления",
2367
2397
  "add_keys_instruction": "Инструкция по добавлению ключей",
2368
- "perfect_translation_coverage": "Идеальное покрытие переводом",
2369
- "all_statements_using_translation": "Все операторы используют перевод",
2370
- "i18n_console_translation_checker": "Проверка переводов консоли i18n",
2371
- "script_description_line1": "Описание скрипта строка 1",
2372
- "script_description_line2": "Описание скрипта строка 2",
2373
- "analysis_completed_in_duration": "Анализ завершен за время",
2374
- "report_saved_to_path": "Отчет сохранен по пути",
2398
+ "perfect_translation_coverage": "Идеальное покрытие перевода",
2399
+ "all_statements_using_translation": "Все утверждения с использованием перевода",
2400
+ "i18n_console_translation_checker": "Проверка перевода консоли I18n",
2401
+ "script_description_line1": "Строка описания скрипта1",
2402
+ "script_description_line2": "Строка описания скрипта 2",
2403
+ "analysis_completed_in_duration": "Анализ завершен в срок",
2404
+ "report_saved_to_path": "Отчет сохранен в папке",
2375
2405
  "found_hardcoded_messages": "Найдены жестко закодированные сообщения",
2376
2406
  "all_console_messages_use_translation": "Все сообщения консоли используют перевод"
2377
2407
  },
2378
2408
  "exportTranslations": {
2379
- "createdDirectory": "Создана директория",
2380
- "foundFiles": "Найдены файлы",
2381
- "createdTemplate": "Создан шаблон",
2382
- "skippedExisting": "Пропущены существующие",
2409
+ "createdDirectory": "Созданный каталог",
2410
+ "foundFiles": "Найденные файлы",
2411
+ "createdTemplate": "Созданный шаблон",
2412
+ "skippedExisting": "Пропущено существующее",
2383
2413
  "title": "Заголовок",
2384
2414
  "creatingTemplates": "Создание шаблонов",
2385
- "summary": "Сводка",
2386
- "summaryLanguages": "Сводка по языкам",
2387
- "summaryFilesPerLanguage": "Файлов на язык",
2388
- "summaryTotalFiles": "Всего файлов",
2389
- "success": "Успешно",
2415
+ "summary": "Краткое содержание",
2416
+ "summaryLanguages": "Языки сводки",
2417
+ "summaryFilesPerLanguage": "Сводные файлы по языкам",
2418
+ "summaryTotalFiles": "Сводное общее количество файлов",
2419
+ "success": "Успех",
2390
2420
  "location": "Расположение",
2391
2421
  "nextSteps": "Следующие шаги"
2392
2422
  },
@@ -2406,7 +2436,7 @@
2406
2436
  "usage_analysis_failed": "Анализ использования не удался."
2407
2437
  },
2408
2438
  "completeTranslations": {
2409
- "warning_could_not_parse_filepa": "Внимание: не удалось проанализировать путь к файлу: {filePath}."
2439
+ "warning_could_not_parse_filepa": "Внимание: не удалось проанализировать путь к файлу: {filePath}"
2410
2440
  },
2411
2441
  "pressEnterToContinue": "Нажмите Enter, чтобы продолжить...",
2412
2442
  "status": {