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.
- package/CHANGELOG.md +34 -1
- package/README.md +28 -15
- package/SECURITY.md +19 -5
- package/main/i18ntk-complete.js +120 -49
- package/main/i18ntk-translate.js +25 -1
- package/package.json +3 -3
- package/ui-locales/de.json +1389 -1359
- package/ui-locales/es.json +1503 -1473
- package/ui-locales/fr.json +1626 -1596
- package/ui-locales/ja.json +1595 -1565
- package/ui-locales/ru.json +1638 -1608
- package/ui-locales/zh.json +1613 -1583
- package/utils/translate/api.js +164 -41
- package/utils/translate/safe-network.js +280 -0
package/ui-locales/ru.json
CHANGED
|
@@ -1,145 +1,145 @@
|
|
|
1
1
|
{
|
|
2
2
|
"meta": {
|
|
3
3
|
"version": "3.1.2",
|
|
4
|
-
"updated": "2026
|
|
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": "
|
|
18
|
-
"offlineMessage": "
|
|
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": "
|
|
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": "❌
|
|
56
|
+
"initializationFailed": "❌ Ошибка инициализации: {error}",
|
|
57
57
|
"initializationCancelled": "❌ Инициализация отменена пользователем.",
|
|
58
|
-
"translationKeyNotFound": "
|
|
59
|
-
"sourceDirectoryNotFound": "
|
|
60
|
-
"configLoadingFailed": "
|
|
61
|
-
"invalidSourceDirectory": "
|
|
62
|
-
"securityViolation": "
|
|
63
|
-
"authenticationFailed": "
|
|
64
|
-
"sourceEqualsI18nWarn": "⚠️ sourceDir равен i18nDir ({sourceDir}).
|
|
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": "Ошибка
|
|
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": "⚠️
|
|
74
|
-
"translationCompletenessAnalysisFailed": "⚠️
|
|
75
|
-
"failedToAnalyzeLanguage": "❌
|
|
76
|
-
"errorReadingI18nDirectory": "❌
|
|
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": "Ошибка анализа
|
|
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": "🎛️
|
|
103
|
-
"confirm": "
|
|
102
|
+
"startingSettings": "🎛️ Запуск командной строки настроек...",
|
|
103
|
+
"confirm": "Подтверждать",
|
|
104
104
|
"errorExiting": "Ошибка при выходе."
|
|
105
105
|
},
|
|
106
106
|
"errors": {
|
|
107
|
-
"invalidOption": "❌ Неверный
|
|
108
|
-
"readlineClosed": "
|
|
109
|
-
"noPackageJson": "
|
|
110
|
-
"noI18nDir": "
|
|
111
|
-
"noI18nConfig": "
|
|
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:
|
|
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": "
|
|
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": "🎯
|
|
130
|
-
"scanningFiles": "📊 Сканирование {fileCount}
|
|
131
|
-
"foundTexts": "📝
|
|
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}:
|
|
138
|
-
"textLocation": "📍
|
|
139
|
-
"foundText": "
|
|
137
|
+
"fileSummary": "📄 {file}: {count} найдены тексты",
|
|
138
|
+
"textLocation": "📍 Линия {line}: {text}",
|
|
139
|
+
"foundText": "Найденный {count} потенциальные экземпляры жестко запрограммированного текста",
|
|
140
140
|
"context": "📝 Контекст: {context}",
|
|
141
|
-
"severity": "⚠️
|
|
142
|
-
"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
|
|
168
|
-
"starting": "🚀
|
|
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": "🏷️
|
|
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": "
|
|
185
|
-
"placeholderTranslations": "Переводы
|
|
186
|
-
"noIssues": "
|
|
187
|
-
"detailedIssues": "📋 ПОДРОБНЫЕ
|
|
184
|
+
"missingTranslations": "Недостающие переводы: {missing}",
|
|
185
|
+
"placeholderTranslations": "Переводы заполнителей: {placeholder}",
|
|
186
|
+
"noIssues": "✅Проблем не обнаружено. Все переводы завершены.",
|
|
187
|
+
"detailedIssues": "📋 ПОДРОБНЫЕ ВОПРОСЫ:",
|
|
188
188
|
"detailedSeparator": "--------------------------------------------------",
|
|
189
189
|
"filePath": "📄 {file} → {path}",
|
|
190
|
-
"missingKey": "
|
|
191
|
-
"placeholderKey": "⚠️
|
|
192
|
-
"moreIssues": "... и
|
|
193
|
-
"confirmationTitle": "🤔
|
|
194
|
-
"confirmationOptions": "
|
|
195
|
-
"optionYes": "
|
|
196
|
-
"optionNo": "
|
|
197
|
-
"optionShow": "
|
|
198
|
-
"choicePrompt": "Ваш выбор (
|
|
199
|
-
"nonInteractiveMode": "⚡ Обнаружен неинтерактивный режим
|
|
200
|
-
"reportGenerated": "📊
|
|
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": "Введите
|
|
215
|
+
"description": "Введите языки, которые нужно исправить (через запятую) или нажмите Enter для всех:",
|
|
216
216
|
"input": "Языки:",
|
|
217
|
-
"noLanguages": "
|
|
217
|
+
"noLanguages": "Языки, которые можно исправить, не найдены."
|
|
218
218
|
},
|
|
219
219
|
"directoryPrompt": {
|
|
220
|
-
"title": "📁
|
|
221
|
-
"current": "
|
|
222
|
-
"description": "Введите
|
|
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": "Режим
|
|
228
|
+
"dryRunMode": "Режим сухого хода: {mode}",
|
|
229
229
|
"error": "Исправление не удалось: {error}",
|
|
230
230
|
"fixing": "Исправление {language}...",
|
|
231
|
-
"foundLanguages": "
|
|
232
|
-
"languageFixed": "{language}:
|
|
231
|
+
"foundLanguages": "Найденный {count} языки: {languages}",
|
|
232
|
+
"languageFixed": "{language}: зафиксированный {fixed} ключ(и), пропущен {skipped}.",
|
|
233
233
|
"running": "Запуск средства исправления перевода...",
|
|
234
|
-
"totalFixed": "Всего
|
|
234
|
+
"totalFixed": "Всего фиксировано: {count}"
|
|
235
235
|
},
|
|
236
236
|
"autorun": {
|
|
237
237
|
"stepAnalyzeTranslations": "Анализ переводов",
|
|
238
|
-
"stepCompletedWithIcon": "✅
|
|
239
|
-
"stepValidateTranslations": "
|
|
240
|
-
"stepRunning": "Шаг
|
|
241
|
-
"separator": "
|
|
242
|
-
"stepFailed": "
|
|
243
|
-
"errorLabel": "
|
|
244
|
-
"autoRunScriptTitle": "
|
|
245
|
-
"usageTitle": "
|
|
246
|
-
"runAllSteps": "
|
|
247
|
-
"configureSettingsFirst": "
|
|
248
|
-
"runSpecificSteps": "
|
|
249
|
-
"showHelp": "
|
|
250
|
-
"examplesTitle": "
|
|
251
|
-
"configExample": "
|
|
252
|
-
"stepsExample1": "
|
|
253
|
-
"stepsExample2": "
|
|
254
|
-
"customSettingsConfiguration": "
|
|
255
|
-
"availableSteps": "Доступные
|
|
256
|
-
"startingAutoRunWorkflow": "Запуск автоматического
|
|
257
|
-
"workflowIncludesSteps": "Рабочий процесс включает {count}
|
|
258
|
-
"missingRequiredFile": "Отсутствует
|
|
259
|
-
"workflowStopped": "Рабочий процесс
|
|
260
|
-
"workflowCompleted": "
|
|
261
|
-
"successfulSteps": "
|
|
262
|
-
"failedSteps": "
|
|
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": "
|
|
268
|
+
"runningStep": "Шаг бега: {stepName}",
|
|
269
269
|
"commandLabel": "Команда: {command}",
|
|
270
|
-
"stepCompletedWithTime": "Шаг
|
|
271
|
-
"stepCompleted": "Шаг
|
|
272
|
-
"stepFailedWithError": "Шаг
|
|
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": "
|
|
281
|
-
"executionReport": "
|
|
282
|
-
"requiredFailedSteps": "
|
|
280
|
+
"invalidStepNumber": "Неверный номер шага: {stepNum}",
|
|
281
|
+
"executionReport": "Отчет о выполнении:",
|
|
282
|
+
"requiredFailedSteps": "Не удалось выполнить необходимые шаги: {count}",
|
|
283
283
|
"stepDetails": "Детали шага:",
|
|
284
|
-
"reportSavedTo": "
|
|
285
|
-
"overallStatusSuccess": "
|
|
286
|
-
"overallStatusFailed": "
|
|
284
|
+
"reportSavedTo": "Отчет сохранен в: {path}",
|
|
285
|
+
"overallStatusSuccess": "УСПЕХ",
|
|
286
|
+
"overallStatusFailed": "НЕУСПЕШНЫЙ",
|
|
287
287
|
"overallStatus": "Общий статус: {status}",
|
|
288
|
-
"pressEnterForDefaults": "Нажмите Enter
|
|
289
|
-
"sourceDirPrompt": "
|
|
290
|
-
"sourceLangPrompt": "
|
|
291
|
-
"targetLangsPrompt": "
|
|
292
|
-
"translationMarkerPrompt": "
|
|
293
|
-
"outputDirPrompt": "
|
|
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": "Теперь вы можете запустить команду
|
|
298
|
-
"configurationFailed": "
|
|
299
|
-
"noValidStepNumbers": "Не
|
|
300
|
-
"autoRunFailed": "
|
|
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}]
|
|
304
|
+
"stepRunningWithNumber": "[{stepNumber}/{totalSteps}] Шаг '{stepName}' бег...",
|
|
305
305
|
"stepFailedIcon": "❌",
|
|
306
|
-
"translationLoadWarning": "Предупреждение: не удалось загрузить
|
|
306
|
+
"translationLoadWarning": "Предупреждение: не удалось загрузить {lang} переводы",
|
|
307
307
|
"configReadError": "Ошибка чтения {file}"
|
|
308
308
|
},
|
|
309
309
|
"analyze": {
|
|
310
|
-
"help_message": "
|
|
311
|
-
"source_directory": "📁
|
|
312
|
-
"i18n_directory": "🌐
|
|
313
|
-
"loading_translation_files": "📋 Загрузка файлов
|
|
314
|
-
"sourceDirectoryLabel": "📁
|
|
315
|
-
"sourceLanguageLabel": "
|
|
316
|
-
"strictModeLabel": "⚙️
|
|
317
|
-
"found_translation_files_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": "...и
|
|
324
|
+
"and_more_missing": "...и {count} более.",
|
|
325
325
|
"sample_unused_keys": "Пример неиспользуемых ключей:",
|
|
326
326
|
"unused_key": "- {key}",
|
|
327
|
-
"and_more_unused": "...и
|
|
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. Запустите
|
|
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": "
|
|
338
|
-
"translation_files_checked": "
|
|
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": "
|
|
341
|
-
"missing_keys": "
|
|
342
|
-
"unused_keys": "
|
|
343
|
-
"translation_coverage": "
|
|
344
|
-
"analysis_passed_for_language": "✅ Анализ
|
|
345
|
-
"analysis_failed_for_language": "❌ Анализ не
|
|
346
|
-
"starting": "🔍
|
|
347
|
-
"foundLanguages": "📋
|
|
348
|
-
"analyzing": "
|
|
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}
|
|
352
|
-
"filesAnalyzed": "
|
|
353
|
-
"keysNeedingTranslation": "
|
|
354
|
-
"fileBreakdown": "📋 РАЗБИВКА
|
|
351
|
+
"status": "Статус: {translated}/{total} ключи ({percentage}% переведено)",
|
|
352
|
+
"filesAnalyzed": "Проанализированные файлы: {analyzed}/{total}",
|
|
353
|
+
"keysNeedingTranslation": "Ключи, требующие перевода: {count}",
|
|
354
|
+
"fileBreakdown": "📋 РАЗБИВКА ФАЙЛОВ",
|
|
355
355
|
"error": "Ошибка",
|
|
356
|
-
"completed": "✅ Анализ
|
|
357
|
-
"progress": "📊 Общий прогресс:
|
|
358
|
-
"reportSaved": "
|
|
359
|
-
"summary": "📊
|
|
360
|
-
"finished": "✅ Анализ
|
|
361
|
-
"statusFileMissing": "❌
|
|
362
|
-
"sourceKeys": "📊
|
|
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": "
|
|
365
|
-
"consistent": "
|
|
366
|
-
"inconsistent": "
|
|
367
|
-
"missingKeys": "
|
|
368
|
-
"extraKeys": "
|
|
369
|
-
"issues": "⚠️
|
|
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": "
|
|
375
|
-
"type_mismatch": "
|
|
376
|
-
"structure_mismatch": "
|
|
377
|
-
"same_as_source": "
|
|
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": "...и
|
|
384
|
-
"noLanguages": "⚠️
|
|
385
|
-
"languageStats": "{language}: {percentage}%
|
|
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": "📁
|
|
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": "
|
|
403
|
-
"addingMissingKeys": "➕ Добавление
|
|
404
|
-
"processing": "
|
|
405
|
-
"addedKeys": "✅ Добавлено {count}
|
|
406
|
-
"noChangesNeeded": "✅
|
|
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": "🌍
|
|
410
|
-
"missingKeysAdded": "➕
|
|
409
|
+
"languagesProcessed": "🌍 Обработанные языки: {languagesProcessed}",
|
|
410
|
+
"missingKeysAdded": "➕ Добавлены недостающие клавиши: {missingKeysAdded}",
|
|
411
411
|
"nextStepsTitle": "📋 ДАЛЬНЕЙШИЕ ШАГИ",
|
|
412
412
|
"nextStep1": "1. Запустите анализ использования:",
|
|
413
|
-
"nextStep2": "
|
|
414
|
-
"nextStep3": "2.
|
|
415
|
-
"nextStep4": "
|
|
416
|
-
"nextStep5": "3.
|
|
417
|
-
"nextStep6": "
|
|
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": "📋
|
|
425
|
-
"couldNotParse": "❌ Не удалось
|
|
426
|
-
"errorDuringCompletion": "❌ Ошибка
|
|
427
|
-
"fatalError": "❌
|
|
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": "📁
|
|
435
|
-
"sourceLanguageLabel": "
|
|
436
|
-
"strictModeLabel": "⚙️
|
|
437
|
-
"invalidSourceDirectoryError": "
|
|
438
|
-
"sourceDirectoryNotFoundError": "
|
|
439
|
-
"invalidOutputDirectoryError": "
|
|
440
|
-
"invalidReportFileError": "
|
|
441
|
-
"problematic_keys": "Проблемные
|
|
442
|
-
"problematicKeysLabel": "Проблемные
|
|
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": "
|
|
446
|
-
"failedToSaveCsvError": "Не удалось безопасно сохранить CSV
|
|
444
|
+
"failedToSaveReportError": "Не удалось безопасно сохранить отчет.",
|
|
445
|
+
"invalidCsvFileError": "Неверный путь к файлу CSV.",
|
|
446
|
+
"failedToSaveCsvError": "Не удалось безопасно сохранить отчет CSV.",
|
|
447
447
|
"fatalError": "❌ Анализ размеров не удался: {error}",
|
|
448
|
-
"starting_i18n_sizing_analysis": "
|
|
449
|
-
"source_directory": "
|
|
450
|
-
"found_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": "Результаты анализа размеров
|
|
455
|
+
"sizing_analysis_results": "Результаты анализа размеров I18n",
|
|
456
456
|
"file_sizes_title": "Размеры файлов",
|
|
457
|
-
"file_sizes_header": "Язык
|
|
458
|
-
"file_size_row": "{lang}
|
|
459
|
-
"language_statistics_title": "
|
|
460
|
-
"language_stats_header": "
|
|
461
|
-
"language_stats_row": "{lang}
|
|
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}
|
|
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}'
|
|
470
|
-
"generating_detailed_report": "
|
|
471
|
-
"keysHaveSignificantSizeVariations": "ключи имеют значительные
|
|
472
|
-
"longTranslationsDetected": "{lang}
|
|
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": "Рассмотрите возможность
|
|
476
|
-
"report_saved_to": "
|
|
477
|
-
"considerReviewingTranslations": "Рассмотрите возможность
|
|
478
|
-
"csv_report_saved_to": "CSV
|
|
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": "Язык
|
|
482
|
-
"folder_summary_row": "{lang}
|
|
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}
|
|
485
|
-
"summary_stats": "
|
|
486
|
-
"detailedKeysDescription": "Показать
|
|
487
|
-
"too_many_keys_warning": "⚠️ Слишком много ключей для отображения в консоли
|
|
488
|
-
"no_translation_files_found": "Файлы
|
|
489
|
-
"analysis_completed": "Анализ завершен
|
|
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": "
|
|
493
|
-
"failed_to_parse_language_error": "Не удалось
|
|
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": "Рассмотрите возможность
|
|
497
|
-
"long_translations_detected": "{lang}
|
|
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}
|
|
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": "
|
|
508
|
-
"source_directory_thissourcedir": "📁
|
|
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": "🌐
|
|
511
|
-
"failed_to_parse_filename_error": "⚠️
|
|
510
|
+
"i18n_directory_thisi18ndir": "🌐 Каталог I18n: {i18nDir}",
|
|
511
|
+
"failed_to_parse_filename_error": "⚠️ Не удалось разобрать {fileName}: {errorMessage}",
|
|
512
512
|
"analyzing_source_files": "🔍 Анализ исходных файлов...",
|
|
513
|
-
"found_files_in_source": "📂
|
|
514
|
-
"found_thisusedkeyssize_unique_": "🎯
|
|
515
|
-
"total_key_usages_totalkeysfoun": "📊
|
|
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": "✅
|
|
518
|
-
"foundTranslationFiles": "✅
|
|
519
|
-
"errorReadingI18nDirectory": "⚠️
|
|
517
|
+
"found_thisavailablekeyssize_av": "✅ Найден {availableKeysSize} доступные ключи",
|
|
518
|
+
"foundTranslationFiles": "✅ Найден {count} файлы перевода",
|
|
519
|
+
"errorReadingI18nDirectory": "⚠️ Ошибка чтения каталога i18n: {error}",
|
|
520
520
|
"pressEnterToReturnToMenu": "📝 Нажмите Enter, чтобы вернуться в главное меню...",
|
|
521
|
-
"notTranslatedKeysTotal": "⚠️
|
|
522
|
-
"noSourceFilesFound": "⚠️
|
|
523
|
-
"reviewNotTranslatedKeys": "💡
|
|
524
|
-
"analysisCompletedSuccessfully": "
|
|
525
|
-
"detectedSourceDirectory": "
|
|
526
|
-
"detectedI18nDirectory": "
|
|
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": "❌
|
|
530
|
+
"failedToExtractKeys": "❌ Не удалось извлечь ключи из {filePath}: {error}",
|
|
531
|
+
"analysisFailedError": "❌ Анализ не удался: {error}",
|
|
532
532
|
"analyzerInitialized": "Анализатор инициализирован",
|
|
533
|
-
"analyzerInitFailed": "
|
|
534
|
-
"argsParsed": "Аргументы
|
|
535
|
-
"processedFiles": "Обработано {processedFiles} из {totalFiles}
|
|
536
|
-
"argsParseFailed": "
|
|
537
|
-
"translationDiscoveryError": "Ошибка обнаружения
|
|
538
|
-
"fileTraversalError": "
|
|
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": "⚠️
|
|
542
|
-
"translationFileParseError": "⚠️
|
|
543
|
-
"translationKeysLoadError": "⚠️
|
|
544
|
-
"languageCompletenessStats": "
|
|
545
|
-
"missingKeysCount": "⚠️
|
|
546
|
-
"analyzingTranslationCompleteness": "
|
|
547
|
-
"unusedKeysCount": "
|
|
548
|
-
"usedKeysCount": "
|
|
549
|
-
"availableKeysCount": "
|
|
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": "⚠️
|
|
552
|
-
"sourceDirectoryNotFound": "⚠️
|
|
551
|
+
"i18nDirectoryNotFound": "⚠️ Каталог I18n не найден. Пожалуйста, проверьте путь.",
|
|
552
|
+
"sourceDirectoryNotFound": "⚠️ Исходный каталог не найден: {dir}",
|
|
553
553
|
"checkUsage": {
|
|
554
554
|
"title": "🔍 АНАЛИЗ ИСПОЛЬЗОВАНИЯ I18NTK",
|
|
555
555
|
"analyzing_source_files": "🔍 Анализ исходных файлов...",
|
|
556
|
-
"source_directory_thissourcedir": "📁
|
|
557
|
-
"i18n_directory_thisi18ndir": "
|
|
558
|
-
"found_files_in_source": "
|
|
559
|
-
"no_source_files_found": "⚠️
|
|
560
|
-
"processedFiles": "Обработано {processedFiles} из {totalFiles}
|
|
561
|
-
"failedToProcessFile": "❌
|
|
562
|
-
"found_thisusedkeyssize_unique_": "
|
|
563
|
-
"total_key_usages_totalkeysfoun": "📊
|
|
564
|
-
"loading_available_translation_": "
|
|
565
|
-
"found_thisavailablekeyssize_av": "✅
|
|
566
|
-
"message": "Анализ использования
|
|
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": "
|
|
569
|
-
"available_translation_keys_thi": "
|
|
570
|
-
"used_translation_keys_thisused": "
|
|
571
|
-
"dynamic_keys_detected_dynamick": "
|
|
572
|
-
"unused_keys_unusedkeyslength": "
|
|
573
|
-
"missing_keys_missingkeyslength": "
|
|
574
|
-
"translation_completeness_title": "
|
|
575
|
-
"language_completeness_stats": "{language}: {translated}/{total} ({
|
|
576
|
-
"n_sample_unused_keys": "
|
|
577
|
-
"key": "
|
|
578
|
-
"and_unusedkeyslength_5_more": "
|
|
579
|
-
"n_sample_missing_keys": "❌
|
|
580
|
-
"and_missingkeyslength_5_more": "... и
|
|
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:
|
|
591
|
-
"1_review_the_analysis_results": "1. Просмотрите результаты анализа в консоли или
|
|
592
|
-
"2_run_with_outputreport_for_de": "2. Запустите
|
|
593
|
-
"3_remove_unused_keys_or_add_mi": "3. Удалите неиспользуемые ключи или добавьте недостающие в код.",
|
|
594
|
-
"4_rerun_analysis_to_verify_imp": "4. Повторно
|
|
595
|
-
"noSourceFilesFound": "
|
|
596
|
-
"i18nDirectoryNotFound": "
|
|
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": "
|
|
601
|
-
"n": "
|
|
600
|
+
"translationCompletenessAnalysisFailed": "Не удалось выполнить анализ полноты перевода: {error}",
|
|
601
|
+
"n": "\\п"
|
|
602
602
|
},
|
|
603
603
|
"complete": {
|
|
604
|
-
"configLoadedSuccessfully": "
|
|
605
|
-
"configLoadingFailed": "
|
|
606
|
-
"title": "🌍
|
|
607
|
-
"separator": "
|
|
604
|
+
"configLoadedSuccessfully": "Конфигурация успешно загружена",
|
|
605
|
+
"configLoadingFailed": "Загрузка конфигурации не удалась",
|
|
606
|
+
"title": "🌍 ЗАВЕРШЕНИЕ ПЕРЕВОДА I18NTK",
|
|
607
|
+
"separator": "=========================================================",
|
|
608
608
|
"sourceDir": "📁 Исходный каталог: {sourceDir}",
|
|
609
609
|
"sourceLanguage": "🌐 Исходный язык: {sourceLanguage}",
|
|
610
|
-
"dryRunMode": "🧪 Режим
|
|
611
|
-
"languages": "
|
|
612
|
-
"addingMissingKeys": "➕ Добавление
|
|
613
|
-
"processing": "
|
|
614
|
-
"addedKeys": "✅ Добавлено {count}
|
|
610
|
+
"dryRunMode": "🧪 Режим пробного запуска — никаких изменений вноситься не будет.",
|
|
611
|
+
"languages": "🌍Доступные языки: {languages}",
|
|
612
|
+
"addingMissingKeys": "➕ Добавление недостающих ключей в файлы перевода...",
|
|
613
|
+
"processing": "🔄Обработка {language}...",
|
|
614
|
+
"addedKeys": "✅ Добавлено {count} недостающие ключи",
|
|
615
615
|
"changeDetails": "📝 {file}: {key}",
|
|
616
|
-
"andMore": "...и
|
|
617
|
-
"noChangesNeeded": "✅
|
|
618
|
-
"summaryTitle": "📊
|
|
616
|
+
"andMore": "...и {count} более",
|
|
617
|
+
"noChangesNeeded": "✅ Никаких изменений не требуется {language}",
|
|
618
|
+
"summaryTitle": "📊 РЕЗЮМЕ ЗАВЕРШЕНИЯ",
|
|
619
619
|
"totalChanges": "📝 Всего изменений: {totalChanges}",
|
|
620
|
-
"languagesProcessed": "🌍
|
|
621
|
-
"missingKeysAdded": "➕
|
|
620
|
+
"languagesProcessed": "🌍 Обработанные языки: {languagesProcessed}",
|
|
621
|
+
"missingKeysAdded": "➕ Добавлены недостающие клавиши: {missingKeysAdded}",
|
|
622
622
|
"nextStepsTitle": "📋 ДАЛЬНЕЙШИЕ ШАГИ",
|
|
623
623
|
"nextStep1": "1. Запустите анализ использования:",
|
|
624
|
-
"nextStep2": "
|
|
625
|
-
"nextStep3": "2.
|
|
626
|
-
"nextStep4": "
|
|
627
|
-
"nextStep5": "3.
|
|
628
|
-
"nextStep6": "
|
|
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": "📋
|
|
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": "
|
|
649
|
-
"title": "🔍
|
|
650
|
-
"message": "
|
|
651
|
-
"sourceDirectory": "📁
|
|
652
|
-
"sourceLanguage": "
|
|
653
|
-
"strictMode": "⚙️
|
|
654
|
-
"noTargetLanguages": "Целевые языки не настроены; пропуск проверки
|
|
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": "📄
|
|
658
|
-
"keysCount": "
|
|
659
|
-
"missingFilesCount": "📁
|
|
660
|
-
"syntaxErrorsCount": "❌
|
|
661
|
-
"translationPercentage": "🎯 Перевод: {percentage}% ({translated}/{total}
|
|
662
|
-
"validationSummary": "📊
|
|
663
|
-
"validation_failed": "❌
|
|
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": "⚠️
|
|
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. Рассмотрите
|
|
677
|
-
"allValidationsPassed": "
|
|
678
|
-
"considerRunningUsageAnalysis": "Рассмотрите
|
|
679
|
-
"deletedOldReport": "🗑️
|
|
680
|
-
"sourceDir": "📁
|
|
681
|
-
"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": "✅
|
|
684
|
-
"analyzingTranslations": "
|
|
683
|
+
"foundTranslationFilesCount": "✅ Найден {count} файлы перевода",
|
|
684
|
+
"analyzingTranslations": "🔍Анализ переводов...",
|
|
685
685
|
"validationCompletedSuccessfully": "🎉 Валидация успешно завершена!",
|
|
686
|
-
"validationErrorsFound": "⚠️
|
|
687
|
-
"validationWarningsFound": "⚠️
|
|
688
|
-
"validationPassed": "✅ Валидация
|
|
689
|
-
"validationFailed": "
|
|
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": "❌
|
|
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": "Ошибка
|
|
701
|
+
"argsParsing": "Анализ аргументов командной строки",
|
|
702
|
+
"argsParsed": "Аргументы командной строки успешно проанализированы",
|
|
703
|
+
"argsParseError": "Ошибка анализа аргумента: {error}",
|
|
704
704
|
"languagesScan": "Сканирование доступных языков",
|
|
705
|
-
"languagesFound": "
|
|
706
|
-
"languagesScanError": "Ошибка сканирования
|
|
707
|
-
"filesScan": "
|
|
708
|
-
"filesScanError": "Ошибка сканирования
|
|
705
|
+
"languagesFound": "Найденный {count} языки",
|
|
706
|
+
"languagesScanError": "Ошибка сканирования языка: {error}",
|
|
707
|
+
"filesScan": "Найденный {count} файлы в {language}",
|
|
708
|
+
"filesScanError": "Ошибка сканирования файла: {error}",
|
|
709
709
|
"jsonValidated": "Синтаксис JSON проверен: {filePath}",
|
|
710
|
-
"jsonValidationError": "Ошибка
|
|
710
|
+
"jsonValidationError": "Ошибка проверки JSON: {error}",
|
|
711
711
|
"languageValidation": "Проверка языка: {language}",
|
|
712
712
|
"languageValidationError": "Ошибка проверки языка: {error}",
|
|
713
|
-
"fileDeleted": "Файл
|
|
714
|
-
"runStarted": "Запуск
|
|
715
|
-
"runCompleted": "
|
|
716
|
-
"runError": "
|
|
713
|
+
"fileDeleted": "Файл удален",
|
|
714
|
+
"runStarted": "Запуск проверочного прогона",
|
|
715
|
+
"runCompleted": "Прогон проверки успешно завершен",
|
|
716
|
+
"runError": "Проверка не удалась: {error}",
|
|
717
717
|
"scriptExecution": "Выполнение скрипта",
|
|
718
|
-
"validationCompleted": "
|
|
719
|
-
"validationError": "Ошибка
|
|
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": "
|
|
737
|
-
"i18nDirectoryNotFound": "
|
|
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": "🔐 Настройка защиты
|
|
748
|
-
"setupPinProtectionDescription": "
|
|
749
|
-
"enablePinProtectionPrompt": "
|
|
750
|
-
"setupCancelled": "Настройка защиты
|
|
751
|
-
"enterPinPrompt": "Введите 4
|
|
752
|
-
"pinFormatError": "
|
|
753
|
-
"confirmPinPrompt": "Подтвердите PIN
|
|
754
|
-
"pinMismatchError": "❌
|
|
755
|
-
"pinProtectionEnabledSuccess": "✅ Защита
|
|
756
|
-
"pinRecoveryWarning": "⚠️
|
|
757
|
-
"setupPinProtectionFailed": "❌ Не удалось настроить защиту
|
|
758
|
-
"errorSettingUpPin": "❌ Ошибка при настройке PIN
|
|
759
|
-
"authRequiredForOperation": "🔐
|
|
760
|
-
"invalidPinFormat": "❌ Неверный формат PIN
|
|
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
|
|
763
|
-
"authenticationFailedAccessDenied": "❌
|
|
762
|
+
"invalidPinAttemptsRemaining": "❌ Неверный PIN-код. {remaining} попыток осталось.",
|
|
763
|
+
"authenticationFailedAccessDenied": "❌ Не удалось выполнить аутентификацию. Доступ запрещен.",
|
|
764
764
|
"authenticationError": "❌ Ошибка аутентификации: {message}",
|
|
765
|
-
"pinProtectionNotEnabled": "Защита
|
|
766
|
-
"disablingPinProtectionTitle": "🔓 Отключение защиты
|
|
767
|
-
"confirmDisablePinProtection": "Вы уверены, что хотите отключить защиту
|
|
765
|
+
"pinProtectionNotEnabled": "Защита PIN-кодом администратора в настоящее время не включена.",
|
|
766
|
+
"disablingPinProtectionTitle": "🔓 Отключение защиты PIN-кодом администратора",
|
|
767
|
+
"confirmDisablePinProtection": "Вы уверены, что хотите отключить защиту PIN-кодом администратора?",
|
|
768
768
|
"operationCancelled": "Операция отменена.",
|
|
769
|
-
"pinProtectionDisabledSuccess": "✅ Защита
|
|
770
|
-
"disablePinProtectionFailed": "❌ Не удалось отключить защиту
|
|
771
|
-
"errorDisablingPinProtection": "❌ Ошибка
|
|
772
|
-
"adminProtectionStatusTitle": "🔐 Статус защиты
|
|
769
|
+
"pinProtectionDisabledSuccess": "✅ Защита PIN-кодом администратора отключена.",
|
|
770
|
+
"disablePinProtectionFailed": "❌ Не удалось отключить защиту PIN-кодом администратора.",
|
|
771
|
+
"errorDisablingPinProtection": "❌ Ошибка отключения защиты администратора: {message}",
|
|
772
|
+
"adminProtectionStatusTitle": "🔐 Статус защиты администратора",
|
|
773
773
|
"statusEnabled": "Статус: ✅ ВКЛЮЧЕНО",
|
|
774
|
-
"protectionDetails": "Защита: для
|
|
775
|
-
"lockoutDetails": "Блокировка: 3 неудачные попытки = 15
|
|
776
|
-
"statusDisabled": "Статус: ❌
|
|
777
|
-
"noAuthRequired": "Защита: аутентификация не
|
|
778
|
-
"unprotectedRisk": "Риск: административные операции
|
|
779
|
-
"errorCheckingAdminStatus": "❌ Ошибка
|
|
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": "Введите
|
|
788
|
-
"accessGranted": "Доступ
|
|
786
|
+
"protectedAccess": "Защищенный доступ: для конфиденциальных операций требуется проверка подлинности администратора.",
|
|
787
|
+
"enterPin": "Введите PIN-код администратора:",
|
|
788
|
+
"accessGranted": "Доступ предоставлен."
|
|
789
789
|
},
|
|
790
790
|
"adminPin": {
|
|
791
|
-
"setup_title": "🔐 Настройка
|
|
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": "
|
|
801
|
-
"invalid_pin_length": "❌ Неверный PIN
|
|
802
|
-
"invalid_pin_example": "Пример: 1234 или 567890",
|
|
803
|
-
"pins_do_not_match": "❌
|
|
804
|
-
"setup_success": "✅
|
|
805
|
-
"setup_warning": "⚠️
|
|
806
|
-
"setup_error": "❌ Ошибка
|
|
807
|
-
"session_expired": "⏰
|
|
808
|
-
"no_pin_set_setting_up": "⚠️
|
|
809
|
-
"no_pin_configured_access_denied": "⚠️
|
|
810
|
-
"use_admin_settings_to_set_pin": "💡
|
|
811
|
-
"locked_out": "🔒 Доступ заблокирован из-за слишком большого
|
|
812
|
-
"wait_before_retry": "Пожалуйста, подождите 5
|
|
813
|
-
"access_granted": "
|
|
814
|
-
"incorrect_pin": "❌
|
|
815
|
-
"verify_pin_error": "❌ Ошибка
|
|
816
|
-
"already_configured": "✅
|
|
817
|
-
"optional_setup_title": "🔐 Настройка
|
|
818
|
-
"optional_setup_description": "Защита
|
|
819
|
-
"setup_prompt": "Хотите
|
|
820
|
-
"skipping_setup": "⏭️
|
|
821
|
-
"setup_prompt_error": "❌ Ошибка
|
|
822
|
-
"protectedAccess": "
|
|
823
|
-
"enterPin": "Введите
|
|
824
|
-
"accessGranted": "Доступ
|
|
825
|
-
"invalidPin": "❌ Неверный PIN
|
|
826
|
-
"weak_pin_warning": "⚠️
|
|
827
|
-
"weak_pin_suggestion": "💡
|
|
828
|
-
"use_anyway_prompt": "Введите
|
|
829
|
-
"enter_new_pin": "Введите новый
|
|
830
|
-
"confirm_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": "
|
|
845
|
+
"runningDebugTool": "Бег {displayName}...",
|
|
846
846
|
"debugToolNotFound": "❌ Инструмент отладки не найден: {toolName}",
|
|
847
|
-
"errorRunningDebugTool": "
|
|
848
|
-
"recentDebugLogs": "📄 Последние
|
|
849
|
-
"noDebugLogsFound": "❌
|
|
850
|
-
"debugLogsDirectoryNotFound": "❌
|
|
851
|
-
"selectLogPrompt": "Выберите файл
|
|
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": "📄
|
|
860
|
-
"error_analyzing_file": "❌
|
|
861
|
-
"results_title": "📊 РЕЗУЛЬТАТЫ ОБНАРУЖЕНИЯ
|
|
862
|
-
"results_separator": "
|
|
863
|
-
"summary_title": "📋
|
|
864
|
-
"total_files_analyzed": "
|
|
865
|
-
"files_with_mismatches": "
|
|
866
|
-
"total_mismatches_found": "Всего найдено
|
|
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": "
|
|
870
|
+
"mismatches_count": "Найденный {count} несоответствие(я):",
|
|
871
871
|
"mismatch_details": "{index}. Ключ: {key}",
|
|
872
|
-
"mismatch_value": "
|
|
872
|
+
"mismatch_value": "Ценить: \"{value}\"",
|
|
873
873
|
"mismatch_issue": "Проблема: {description}",
|
|
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": "📄 Подробный
|
|
881
|
-
"error_saving_report": "❌ Ошибка
|
|
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": "✅
|
|
885
|
-
"auto_fix_summary_title": "📊
|
|
886
|
-
"total_fixes_applied": "Всего
|
|
887
|
-
"preview_fixes_title": "
|
|
888
|
-
"fix_details": "{file}: {key}
|
|
889
|
-
"more_fixes": "... и
|
|
890
|
-
"run_with_apply_fixes": "💡 Запустите
|
|
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": "Запуск
|
|
900
|
-
"debugToolNotFound": "Инструмент '{toolName}' не
|
|
901
|
-
"recentDebugLogs": "Последние
|
|
902
|
-
"noDebugLogsFound": "
|
|
903
|
-
"logEntry": "Запись
|
|
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": "📊
|
|
908
|
-
"usage": "Использование:
|
|
909
|
-
"interactiveMode": "💡 Используйте: node
|
|
910
|
-
"showHelp": "📖 Используйте: node
|
|
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": "
|
|
918
|
-
"validateCommand": "validate
|
|
919
|
-
"usageCommand": "
|
|
920
|
-
"sizingCommand": "
|
|
921
|
-
"completeCommand": "
|
|
922
|
-
"summaryCommand": "
|
|
923
|
-
"debugCommand": "debug
|
|
924
|
-
"scannerCommand": "
|
|
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": "
|
|
934
|
-
"validate": "validate
|
|
935
|
-
"usage": "
|
|
936
|
-
"sizing": "
|
|
937
|
-
"complete": "
|
|
938
|
-
"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": "
|
|
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": "
|
|
952
|
-
"example2": "
|
|
953
|
-
"example3": "
|
|
954
|
-
"example4": "
|
|
955
|
-
"example5": "
|
|
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": "🎯
|
|
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": "Неизвестная команда:
|
|
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": "Ошибка
|
|
984
|
-
"translation_not_found": "Перевод
|
|
985
|
-
"translation_key_not_string": "
|
|
986
|
-
"error_reading_locales_directory": "Ошибка чтения
|
|
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": "📁
|
|
993
|
+
"sourceDirectoryLabel": "📁 Каталог исходников: {dir}",
|
|
994
994
|
"requiredTitle": "Требуется инициализация",
|
|
995
|
-
"requiredBody": "Этот проект
|
|
996
|
-
"promptRunNow": "Хотите
|
|
997
|
-
"sourceLanguageLabel": "
|
|
995
|
+
"requiredBody": "Этот проект необходимо инициализировать перед запуском этой команды.",
|
|
996
|
+
"promptRunNow": "Хотите запустить инициализацию сейчас? (да/нет):",
|
|
997
|
+
"sourceLanguageLabel": "🌍Исходный язык: {language}",
|
|
998
998
|
"detectedI18nFrameworks": "🔍 Обнаружены фреймворки i18n: {frameworks}",
|
|
999
|
-
"pinMustBe4Digits": "
|
|
1000
|
-
"existingDirectoriesFound": "📁
|
|
1001
|
-
"useExistingDirectoryPrompt": "Вы хотите использовать
|
|
1002
|
-
"selectDirectoryPrompt": "Выберите
|
|
1003
|
-
"enterNewDirectoryName": "Введите имя
|
|
1004
|
-
"createdNewDirectory": "✅
|
|
1005
|
-
"directoryAlreadyExists": "⚠️
|
|
1006
|
-
"invalidDirectoryName": "❌
|
|
1007
|
-
"usingExistingDirectory": "
|
|
1008
|
-
"adminPinSetupOptional": "🔐
|
|
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": "
|
|
1014
|
-
"adminPinSetupPrompt": "Введите PIN администратора (4 цифры) или оставьте пустым, чтобы пропустить:",
|
|
1015
|
-
"skippingAdminPinSetup": "Пропуск
|
|
1016
|
-
"settingUpAdminPin": "🔐 Настройка PIN администратора...",
|
|
1017
|
-
"enterAdminPin": "Введите PIN администратора:",
|
|
1018
|
-
"confirmAdminPin": "Подтвердите PIN администратора:",
|
|
1019
|
-
"pinMismatch": "
|
|
1020
|
-
"adminPinSetupSuccess": "🔐
|
|
1021
|
-
"adminPinSetupFailure": "🔐
|
|
1022
|
-
"adminProtectionEnabled": "🔐
|
|
1023
|
-
"adminProtectionDisabled": "🔐 Защита администратора
|
|
1024
|
-
"autoDetectedI18nDirectory": "
|
|
1025
|
-
"initializingProject": "⚙️
|
|
1026
|
-
"createdSampleTranslationFile": "✅ Создан
|
|
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": "🎯 Введите коды целевых языков (через запятую,
|
|
1030
|
+
"enterLanguageCodes": "🎯 Введите коды целевых языков (через запятую, например, de, es, fr, ru):",
|
|
1031
1031
|
"targetLanguages": "🌍 Целевые языки",
|
|
1032
|
-
"foundSourceFiles": "📄
|
|
1033
|
-
"processingLanguage": "🔄
|
|
1034
|
-
"fileProcessingResult": "✅
|
|
1035
|
-
"overallProgress": "📊 Общий прогресс:
|
|
1036
|
-
"initializationSummaryTitle": "📋
|
|
1037
|
-
"languageSummary": "{icon} {name} ({code}): {percentage}%
|
|
1038
|
-
"languageFiles": "📄
|
|
1039
|
-
"languageKeys": "
|
|
1040
|
-
"languageMissing": "⚠️
|
|
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.
|
|
1044
|
-
"nextStep2": "2. Добавьте переводы для каждого целевого
|
|
1045
|
-
"nextStep3": "3.
|
|
1046
|
-
"detectedFrameworks": "✅
|
|
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": "Применить эту структуру ко всем языкам? (
|
|
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": "Введите коды
|
|
1059
|
+
"include_prompt": "Введите через запятую коды языков, которые необходимо включить (например, «de,fr,es»):"
|
|
1060
1060
|
},
|
|
1061
1061
|
"warnings": {
|
|
1062
|
-
"noPackageJson": "
|
|
1062
|
+
"noPackageJson": "Пакет package.json не найден. Невозможно автоматически обнаружить платформу i18n."
|
|
1063
1063
|
},
|
|
1064
1064
|
"errorsPackageJsonRead": "Ошибка чтения package.json: {error}",
|
|
1065
|
-
"errorsNoFramework": "
|
|
1065
|
+
"errorsNoFramework": "Платформа i18n не обнаружена. Пожалуйста, установите его или укажите вручную.",
|
|
1066
1066
|
"suggestions": {
|
|
1067
|
-
"noFramework": "
|
|
1068
|
-
"installFramework": "
|
|
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": "
|
|
1078
|
-
"detectedI18nFramework": "
|
|
1077
|
+
"continueWithoutI18nPrompt": "Платформа i18n не обнаружена. Хотите продолжить без него? (да/нет):",
|
|
1078
|
+
"detectedI18nFramework": "Обнаруженная платформа i18n: {frameworks}",
|
|
1079
1079
|
"existingDirectoryItem": "{index}. {location}",
|
|
1080
|
-
"usingExistingStructure": "
|
|
1081
|
-
"creatingSourceDirectory": "Создание
|
|
1082
|
-
"creatingSourceLanguageDirectory": "Создание
|
|
1080
|
+
"usingExistingStructure": "Используя существующую структуру: {dir}",
|
|
1081
|
+
"creatingSourceDirectory": "Создание исходного каталога: {dir}",
|
|
1082
|
+
"creatingSourceLanguageDirectory": "Создание каталога исходного языка: {dir}",
|
|
1083
1083
|
"errors": {
|
|
1084
|
-
"errorExecutingCommand": "Ошибка
|
|
1085
|
-
"sourceDirectoryNotFound": "
|
|
1086
|
-
"sourceLanguageDirectoryNotFound": "
|
|
1087
|
-
"noJsonFilesInSourceDirectory": "В
|
|
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} для
|
|
1094
|
-
"fileAlreadyExistsMerging": "Файл {file} уже существует.
|
|
1095
|
-
"createdNewFile": "
|
|
1096
|
-
"updatedFile": "
|
|
1097
|
-
"skippingExcludedFile": "Пропуск {file} для
|
|
1093
|
+
"processingFile": "Обработка {file} для {language}...",
|
|
1094
|
+
"fileAlreadyExistsMerging": "Файл {file} уже существует. Объединение новых ключей.",
|
|
1095
|
+
"createdNewFile": "Создал новый файл: {file}",
|
|
1096
|
+
"updatedFile": "Обновленный файл: {file}",
|
|
1097
|
+
"skippingExcludedFile": "Пропуск {file} для {language} как то это исключено.",
|
|
1098
1098
|
"continuingWithoutAdminPin": "Продолжение без настройки PIN-кода администратора.",
|
|
1099
|
-
"createdSourceLanguageDirectory": "
|
|
1100
|
-
"errorSettingUpAdminPin": "Ошибка при настройке PIN-кода администратора: {error}
|
|
1099
|
+
"createdSourceLanguageDirectory": "Создан каталог исходного языка: {dir}",
|
|
1100
|
+
"errorSettingUpAdminPin": "Ошибка при настройке PIN-кода администратора: {error}",
|
|
1101
1101
|
"noTargetLanguagesSpecified": "Целевые языки не указаны.",
|
|
1102
1102
|
"translationFilesCreatedWarning": "Файлы перевода были созданы с заполнителями; проверка перед использованием в производстве.",
|
|
1103
|
-
"warningCannotReadSourceDir": "
|
|
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": "Язык
|
|
1118
|
-
"changeFailed": "Не удалось
|
|
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": "✅
|
|
1130
|
-
"initial_assessment_warnings": "⚠️
|
|
1131
|
-
"detecting_fixing_mismatches": "Обнаружение и исправление языковых
|
|
1132
|
-
"detection_complete_applying_fixes": "Обнаружение завершено.
|
|
1133
|
-
"mismatch_fixes_complete": "✅
|
|
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": "🎯
|
|
1143
|
+
"analyze": "🔍 Анализировать переводы",
|
|
1144
|
+
"validate": "✅ Проверка переводов",
|
|
1145
|
+
"usage": "📊 Проверьте использование ключа",
|
|
1146
|
+
"complete": "🎯 Полные переводы (100% покрытие)",
|
|
1147
1147
|
"sizing": "📏 Анализ размеров",
|
|
1148
|
-
"fix": "🛠️
|
|
1149
|
-
"scanner": "🔍
|
|
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": "
|
|
1163
|
-
"returning": "
|
|
1164
|
-
"invalidOption": "
|
|
1165
|
-
"nonInteractiveModeWarning": "
|
|
1166
|
-
"useDirectExecution": "
|
|
1167
|
-
"useHelpForCommands": "
|
|
1160
|
+
"update": "📦 Пакет обновлений",
|
|
1161
|
+
"goodbye": "👋До свидания!",
|
|
1162
|
+
"invalidChoice": "Неверный выбор. Пожалуйста, выберите 0–15.",
|
|
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": "Выберите файл
|
|
1173
|
-
"autoDetectedI18nDirectory": "
|
|
1174
|
-
"executingCommand": "
|
|
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": "⚠️
|
|
1188
|
-
"similar_key": "- {key} (
|
|
1189
|
-
"processing_language_files": "
|
|
1187
|
+
"no_exact_translation": "⚠️ Нет точного перевода слова '{keyPath}', найдены похожие ключи:",
|
|
1188
|
+
"similar_key": "- {key} ({similarity}% соответствовать)",
|
|
1189
|
+
"processing_language_files": "🔄Обработка {count} языковые файлы...",
|
|
1190
1190
|
"file_not_found": "⚠️ Файл не найден: {file}",
|
|
1191
|
-
"processing_translations": "
|
|
1192
|
-
"backup_created": "📋
|
|
1193
|
-
"error_parsing_json": "❌
|
|
1194
|
-
"existing_keys_found": "📊 {code}:
|
|
1195
|
-
"error_writing_json": "❌ Ошибка
|
|
1196
|
-
"translations_replaced": "📊 {code}:
|
|
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": "🌍
|
|
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} не
|
|
1208
|
-
"dirInvalidError": "❌
|
|
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": "и
|
|
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": "📊
|
|
1222
|
-
"deletionOptions": "🗑️
|
|
1221
|
+
"foundFilesInSelectedDirectories": "📊 Найден {count} файлы в выбранных каталогах:",
|
|
1222
|
+
"deletionOptions": "🗑️ Варианты удаления:",
|
|
1223
1223
|
"deleteAllFiles": "Удалить все файлы",
|
|
1224
|
-
"keepLast3Files": "
|
|
1225
|
-
"keepLast5Files": "
|
|
1224
|
+
"keepLast3Files": "Сохранять последние 3 файла (по дате)",
|
|
1225
|
+
"keepLast5Files": "Сохранять последние 5 файлов (по дате)",
|
|
1226
1226
|
"noFilesToDelete": "✅ Нет файлов для удаления.",
|
|
1227
|
-
"filesToDeleteCount": "📋
|
|
1228
|
-
"filesToKeepCount": "📋
|
|
1229
|
-
"confirmDeletion": "⚠️ Вы уверены, что хотите удалить эти файлы? (
|
|
1230
|
-
"deletedFile": "✅
|
|
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": "
|
|
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": "🔍
|
|
1256
|
-
"couldNotParse": "⚠️ Не удалось
|
|
1257
|
-
"title": "🎯
|
|
1258
|
-
"separator": "
|
|
1259
|
-
"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": "
|
|
1265
|
-
"addedKeys": "✅ Добавлено {count}
|
|
1263
|
+
"addingMissingKeys": "➕ Добавление недостающих ключей в файлы перевода...",
|
|
1264
|
+
"processing": "🔄Обработка {language}...",
|
|
1265
|
+
"addedKeys": "✅ Добавлено {count} ключи",
|
|
1266
1266
|
"changeDetails": "📝 {file}: {key}",
|
|
1267
|
-
"noChangesNeeded": "✅
|
|
1268
|
-
"summaryTitle": "📊
|
|
1267
|
+
"noChangesNeeded": "✅ Никаких изменений не требуется {language}",
|
|
1268
|
+
"summaryTitle": "📊 РЕЗЮМЕ ЗАВЕРШЕНИЯ",
|
|
1269
1269
|
"totalChanges": "📝 Всего изменений: {totalChanges}",
|
|
1270
|
-
"languagesProcessed": "🌐
|
|
1271
|
-
"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": "📦
|
|
1282
|
-
"description": "Это обновит пакет i18n-toolkit до последней
|
|
1283
|
-
"command": "Команда для
|
|
1284
|
-
"confirm": "Вы уверены, что хотите продолжить обновление? (
|
|
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": "
|
|
1298
|
-
"fileReadError": "
|
|
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": "Безопасность:
|
|
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": "[
|
|
1308
|
+
"securityAlert": "[ПРЕДУПРЕЖДЕНИЕ О БЕЗОПАСНОСТИ] {timestamp}: {event}",
|
|
1309
1309
|
"contentTooLarge": "Безопасность: Содержимое слишком велико для файла: {validatedPath}",
|
|
1310
|
-
"inputDisallowedCharacters": "Безопасность:
|
|
1310
|
+
"inputDisallowedCharacters": "Безопасность: ввод содержит запрещенные символы.",
|
|
1311
1311
|
"unknownCommandArg": "Неизвестный аргумент команды",
|
|
1312
1312
|
"logMessage": "[БЕЗОПАСНОСТЬ {level}] {timestamp}: {event}",
|
|
1313
|
-
"alertMessage": "[
|
|
1313
|
+
"alertMessage": "[ПРЕДУПРЕЖДЕНИЕ О БЕЗОПАСНОСТИ] {timestamp}: {event}",
|
|
1314
1314
|
"securityWarning": "[ПРЕДУПРЕЖДЕНИЕ БЕЗОПАСНОСТИ] {timestamp}: {event}",
|
|
1315
|
-
"json_parse_error": "Безопасность:
|
|
1316
|
-
"file_too_large": "
|
|
1317
|
-
"file_read_error": "
|
|
1318
|
-
"content_too_large_for_file": "
|
|
1319
|
-
"file_write_error": "
|
|
1320
|
-
"json_string_too_large": "
|
|
1321
|
-
"recursion_detected": "
|
|
1322
|
-
"operation_timeout": "
|
|
1323
|
-
"operation_error": "
|
|
1324
|
-
"directory_read_error": "
|
|
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": "
|
|
1348
|
+
"reportBugDesc": "Отправьте отчет о проблеме на GitHub",
|
|
1349
1349
|
"saveChanges": "Сохранить изменения",
|
|
1350
1350
|
"saveChangesDesc": "Сохранить текущие настройки в файл",
|
|
1351
1351
|
"updatePackage": "Обновить пакет",
|
|
1352
|
-
"updatePackageDesc": "
|
|
1353
|
-
"help": "
|
|
1354
|
-
"helpDesc": "Показать подробную
|
|
1355
|
-
"quit": "
|
|
1356
|
-
"quitDesc": "Выйти из настроек (с
|
|
1357
|
-
"unsavedChangesWarning": "⚠️
|
|
1358
|
-
"saveChangesBeforeQuit": "
|
|
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": "Используйте относительные пути
|
|
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": "❌
|
|
1371
|
-
"invalid_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": "❌
|
|
1377
|
-
"exclude_files_must_be_array": "❌
|
|
1378
|
-
"exclude_dirs_must_be_array": "❌
|
|
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": "❌ Неверный
|
|
1384
|
-
"invalid_sizing_format": "❌ Неверный формат
|
|
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": "📋
|
|
1387
|
-
"error_creating_backup": "❌ Ошибка
|
|
1388
|
-
"language_not_supported": "Язык '{language}' не поддерживается.
|
|
1389
|
-
"ui_language_set": "🌍 Язык интерфейса
|
|
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": "Используйте относительные пути
|
|
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": "
|
|
1424
|
+
"updatePackageDesc": "Обновите пакет i18n-toolkit через npm.",
|
|
1425
1425
|
"importExportDesc": "Резервное копирование и восстановление настроек",
|
|
1426
|
-
"resetToDefaults": "
|
|
1426
|
+
"resetToDefaults": "Сброс к настройкам по умолчанию",
|
|
1427
1427
|
"resetToDefaultsDesc": "Восстановить заводские настройки",
|
|
1428
1428
|
"reportBug": "Сообщить об ошибке",
|
|
1429
|
-
"reportBugDesc": "
|
|
1429
|
+
"reportBugDesc": "Отправьте отчет о проблеме на GitHub",
|
|
1430
1430
|
"saveChanges": "Сохранить изменения",
|
|
1431
1431
|
"saveChangesDesc": "Сохранить текущие настройки в файл",
|
|
1432
|
-
"help": "
|
|
1433
|
-
"helpDesc": "Показать подробную
|
|
1434
|
-
"quit": "
|
|
1435
|
-
"quitDesc": "Выйти из настроек (с
|
|
1436
|
-
"unsavedChangesWarning": "⚠️
|
|
1437
|
-
"saveChangesBeforeQuit": "
|
|
1438
|
-
"selectOption": "Выберите
|
|
1439
|
-
"goodbyeMessage": "Спасибо за использование менеджера настроек
|
|
1440
|
-
"selectSettingPrompt": "Выберите настройку для редактирования (или
|
|
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": "
|
|
1448
|
+
"securitySettingsDesc": "PIN-код администратора и другие параметры безопасности",
|
|
1449
1449
|
"backupSettings": "Настройки резервного копирования",
|
|
1450
|
-
"backupSettingsDesc": "Резервное копирование и восстановление конфигурации"
|
|
1450
|
+
"backupSettingsDesc": "Резервное копирование и восстановление настроек конфигурации"
|
|
1451
1451
|
},
|
|
1452
1452
|
"updatePackage": {
|
|
1453
1453
|
"title": "Обновить пакет",
|
|
1454
|
-
"description": "
|
|
1455
|
-
"command": "npm
|
|
1456
|
-
"success": "Обновление
|
|
1454
|
+
"description": "Обновите пакет i18n-toolkit через npm.",
|
|
1455
|
+
"command": "обновление npm i18ntk -g",
|
|
1456
|
+
"success": "Обновление завершено успешно.",
|
|
1457
1457
|
"failed": "Обновление не удалось.",
|
|
1458
|
-
"prompt": "Хотите обновить пакет сейчас? (
|
|
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": "
|
|
1468
|
-
"updateFailed": "Не удалось обновить
|
|
1469
|
-
"protectionRemoved": "Защита
|
|
1470
|
-
"configSuccess": "
|
|
1471
|
-
"configFailed": "Не удалось настроить
|
|
1472
|
-
"setupPinPrompt": "Хотите
|
|
1473
|
-
"pinUpdatedSuccess": "
|
|
1474
|
-
"pinUpdatedFailed": "Не удалось
|
|
1475
|
-
"pinRemoved": "Защита
|
|
1476
|
-
"pinConfiguredSuccess": "
|
|
1477
|
-
"pinConfiguredFailed": "Не удалось настроить
|
|
1478
|
-
"accessDenied": "❌ Доступ
|
|
1479
|
-
"setupPin": "🔐 Настройка
|
|
1480
|
-
"setupFailed": "❌ Не удалось настроить
|
|
1481
|
-
"pinConfigured": "📌
|
|
1482
|
-
"options": "
|
|
1483
|
-
"changePin": "1) Изменить существующий PIN",
|
|
1484
|
-
"removePin": "2)
|
|
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": "🔐 Сначала
|
|
1487
|
-
"settingNewPin": "🔄
|
|
1488
|
-
"verifyToRemove": "🔐 Подтвердите текущий PIN
|
|
1489
|
-
"noPinConfigured": "🔓
|
|
1490
|
-
"pinBenefits": "
|
|
1491
|
-
"benefitSecurity": "•
|
|
1492
|
-
"benefitAdvanced": "•
|
|
1493
|
-
"benefitDebug": "•
|
|
1494
|
-
"benefitReset": "•
|
|
1495
|
-
"setupCancelled": "⏭️
|
|
1496
|
-
"operationCancelled": "
|
|
1497
|
-
"startingSettings": "🎛️
|
|
1498
|
-
"authRequired": "🔒
|
|
1499
|
-
"pinSetupTitle": "Настройка
|
|
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": "Пожалуйста,
|
|
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": "Это заменит все текущие настройки.
|
|
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": "
|
|
1530
|
-
"resetConfirm": "Вы уверены, что хотите продолжить? (
|
|
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": "
|
|
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:
|
|
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": "Используйте
|
|
1562
|
-
"editing": "Введите
|
|
1563
|
-
"saving": "
|
|
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": "Настройки
|
|
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": "
|
|
1577
|
-
"currentPin": "Текущий PIN
|
|
1578
|
-
"pinConfigured": "✅
|
|
1576
|
+
"description": "Настройка защиты PIN-кодом администратора и параметров безопасности",
|
|
1577
|
+
"currentPin": "Текущий PIN-код:",
|
|
1578
|
+
"pinConfigured": "✅ Настроен",
|
|
1579
1579
|
"pinNotConfigured": "❌ Не настроено",
|
|
1580
|
-
"pinDisplay": "
|
|
1580
|
+
"pinDisplay": "PIN-отображение:",
|
|
1581
1581
|
"menu": {
|
|
1582
|
-
"enableDisable": "1)
|
|
1583
|
-
"setupChange": "2)
|
|
1584
|
-
"sessionTimeout": "3)
|
|
1585
|
-
"maxAttempts": "4)
|
|
1586
|
-
"lockoutDuration": "5)
|
|
1587
|
-
"back": "
|
|
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": "Включить защиту
|
|
1591
|
-
"disablePin": "Отключить защиту
|
|
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": "Защита
|
|
1598
|
-
"pinDisabled": "Защита
|
|
1599
|
-
"timeoutUpdated": "
|
|
1600
|
-
"maxAttemptsUpdated": "
|
|
1601
|
-
"lockoutDurationUpdated": "
|
|
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
|
-
"
|
|
1607
|
-
|
|
1608
|
-
|
|
1609
|
-
|
|
1610
|
-
|
|
1611
|
-
"
|
|
1612
|
-
|
|
1613
|
-
|
|
1614
|
-
|
|
1615
|
-
|
|
1616
|
-
"
|
|
1617
|
-
|
|
1618
|
-
|
|
1619
|
-
|
|
1620
|
-
|
|
1621
|
-
"
|
|
1622
|
-
|
|
1623
|
-
|
|
1624
|
-
|
|
1625
|
-
|
|
1626
|
-
"
|
|
1627
|
-
|
|
1628
|
-
|
|
1629
|
-
|
|
1630
|
-
|
|
1631
|
-
"
|
|
1632
|
-
|
|
1633
|
-
|
|
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": "
|
|
1641
|
-
"help": "Путь к
|
|
1636
|
+
"label": "Каталог I18n",
|
|
1637
|
+
"description": "Каталог, содержащий файлы перевода",
|
|
1638
|
+
"current": "Текущий: {value}",
|
|
1639
|
+
"help": "Путь к папке с файлами перевода"
|
|
1642
1640
|
},
|
|
1643
1641
|
"projectRoot": {
|
|
1644
|
-
"label": "
|
|
1645
|
-
"description": "
|
|
1646
|
-
"current": "
|
|
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": "
|
|
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": "
|
|
1678
|
-
"help": "
|
|
1673
|
+
"label": "Цветовая тема",
|
|
1674
|
+
"description": "Предпочтение темы пользовательского интерфейса",
|
|
1675
|
+
"current": "Текущий: {value}",
|
|
1676
|
+
"help": "Выбирайте между светлыми и темными темами"
|
|
1679
1677
|
},
|
|
1680
1678
|
"dateFormat": {
|
|
1681
1679
|
"label": "Формат даты",
|
|
1682
|
-
"description": "Формат
|
|
1683
|
-
"current": "
|
|
1684
|
-
"help": "Выберите
|
|
1680
|
+
"description": "Формат отображения дат",
|
|
1681
|
+
"current": "Текущий: {value}",
|
|
1682
|
+
"help": "Выберите способ отображения дат в отчетах"
|
|
1685
1683
|
},
|
|
1686
1684
|
"notifications": {
|
|
1687
1685
|
"enabled": {
|
|
1688
1686
|
"label": "Включить уведомления",
|
|
1689
|
-
"description": "
|
|
1690
|
-
"current": "
|
|
1691
|
-
"help": "
|
|
1687
|
+
"description": "Показать уведомления на рабочем столе",
|
|
1688
|
+
"current": "Текущий: {value}",
|
|
1689
|
+
"help": "Включить уведомления на рабочем столе о завершенных операциях"
|
|
1692
1690
|
}
|
|
1693
1691
|
},
|
|
1694
1692
|
"sourceDir": {
|
|
1695
|
-
"label": "
|
|
1696
|
-
"description": "
|
|
1697
|
-
"current": "
|
|
1698
|
-
"help": "Путь к
|
|
1693
|
+
"label": "Исходный каталог",
|
|
1694
|
+
"description": "Каталог, содержащий файлы перевода",
|
|
1695
|
+
"current": "Текущий: {value}",
|
|
1696
|
+
"help": "Путь к каталогу с исходными файлами перевода"
|
|
1699
1697
|
},
|
|
1700
1698
|
"sourceLanguage": {
|
|
1701
|
-
"label": "
|
|
1702
|
-
"description": "
|
|
1703
|
-
"current": "
|
|
1704
|
-
"help": "
|
|
1699
|
+
"label": "Исходный язык",
|
|
1700
|
+
"description": "Основной язык для переводов",
|
|
1701
|
+
"current": "Текущий: {value}",
|
|
1702
|
+
"help": "Основной язык, используемый в качестве источника для переводов"
|
|
1705
1703
|
},
|
|
1706
1704
|
"outputDir": {
|
|
1707
|
-
"label": "
|
|
1708
|
-
"description": "
|
|
1709
|
-
"current": "
|
|
1710
|
-
"help": "
|
|
1705
|
+
"label": "Выходной каталог",
|
|
1706
|
+
"description": "Каталог для сформированных отчетов",
|
|
1707
|
+
"current": "Текущий: {value}",
|
|
1708
|
+
"help": "Куда будут сохраняться отчеты и обработанные файлы"
|
|
1711
1709
|
},
|
|
1712
1710
|
"batchSize": {
|
|
1713
|
-
"label": "Размер
|
|
1714
|
-
"description": "
|
|
1715
|
-
"current": "
|
|
1716
|
-
"help": "
|
|
1711
|
+
"label": "Размер партии",
|
|
1712
|
+
"description": "Количество обработанных изделий в партии",
|
|
1713
|
+
"current": "Текущий: {value}",
|
|
1714
|
+
"help": "Сколько файлов обрабатывать в каждом пакете"
|
|
1717
1715
|
},
|
|
1718
1716
|
"maxConcurrentFiles": {
|
|
1719
|
-
"label": "Максимальное
|
|
1720
|
-
"description": "Максимальное
|
|
1721
|
-
"current": "
|
|
1722
|
-
"help": "Максимальное
|
|
1717
|
+
"label": "Максимальное количество одновременных файлов",
|
|
1718
|
+
"description": "Максимальное количество файлов, обрабатываемых одновременно",
|
|
1719
|
+
"current": "Текущий: {value}",
|
|
1720
|
+
"help": "Максимальное количество файлов для одновременной обработки"
|
|
1723
1721
|
},
|
|
1724
1722
|
"sizingThreshold": {
|
|
1725
|
-
"label": "Порог
|
|
1726
|
-
"description": "Порог
|
|
1727
|
-
"current": "
|
|
1728
|
-
"help": "
|
|
1723
|
+
"label": "Порог определения размера (%)",
|
|
1724
|
+
"description": "Порог для предупреждений об изменении размера",
|
|
1725
|
+
"current": "Текущий: {value}%",
|
|
1726
|
+
"help": "Процентный порог для обнаружения несоответствия размеров"
|
|
1729
1727
|
},
|
|
1730
1728
|
"strictMode": {
|
|
1731
|
-
"label": "
|
|
1732
|
-
"description": "Включить строгий режим
|
|
1733
|
-
"current": "
|
|
1734
|
-
"help": "Включить
|
|
1729
|
+
"label": "Режим строгой проверки",
|
|
1730
|
+
"description": "Включить строгий режим проверки",
|
|
1731
|
+
"current": "Текущий: {value}",
|
|
1732
|
+
"help": "Включить строгую проверку файлов перевода"
|
|
1735
1733
|
},
|
|
1736
1734
|
"enableAuditLog": {
|
|
1737
|
-
"label": "Включить
|
|
1738
|
-
"description": "
|
|
1739
|
-
"current": "
|
|
1740
|
-
"help": "
|
|
1735
|
+
"label": "Включить журнал аудита",
|
|
1736
|
+
"description": "Отслеживайте все изменения перевода",
|
|
1737
|
+
"current": "Текущий: {value}",
|
|
1738
|
+
"help": "Регистрируйте все изменения, внесенные в файлы перевода."
|
|
1741
1739
|
},
|
|
1742
1740
|
"backupBeforeChanges": {
|
|
1743
1741
|
"label": "Автоматическое резервное копирование",
|
|
1744
|
-
"description": "
|
|
1745
|
-
"current": "
|
|
1746
|
-
"help": "
|
|
1742
|
+
"description": "Создавайте резервные копии перед изменениями",
|
|
1743
|
+
"current": "Текущий: {value}",
|
|
1744
|
+
"help": "Автоматически создавать резервные копии перед внесением изменений."
|
|
1747
1745
|
},
|
|
1748
1746
|
"advanced_maxConcurrentFiles": {
|
|
1749
|
-
"label": "Максимальное
|
|
1750
|
-
"description": "Максимальное
|
|
1751
|
-
"current": "
|
|
1752
|
-
"help": "Максимальное
|
|
1747
|
+
"label": "Максимальное количество одновременных файлов",
|
|
1748
|
+
"description": "Максимальное количество файлов, обрабатываемых одновременно",
|
|
1749
|
+
"current": "Текущий: {value}",
|
|
1750
|
+
"help": "Максимальное количество файлов для одновременной обработки"
|
|
1753
1751
|
},
|
|
1754
1752
|
"advanced_strictMode": {
|
|
1755
|
-
"label": "
|
|
1756
|
-
"description": "Включить строгий режим
|
|
1757
|
-
"current": "
|
|
1758
|
-
"help": "Включить
|
|
1753
|
+
"label": "Режим строгой проверки",
|
|
1754
|
+
"description": "Включить строгий режим проверки",
|
|
1755
|
+
"current": "Текущий: {value}",
|
|
1756
|
+
"help": "Включить строгую проверку файлов перевода"
|
|
1759
1757
|
},
|
|
1760
1758
|
"adminPinEnabled": {
|
|
1761
|
-
"label": "
|
|
1762
|
-
"description": "Включить
|
|
1763
|
-
"current": "
|
|
1764
|
-
"help": "
|
|
1759
|
+
"label": "Защита PIN-кодом администратора",
|
|
1760
|
+
"description": "Включить аутентификацию по PIN-коду администратора для конфиденциальных настроек",
|
|
1761
|
+
"current": "Текущий: {value}",
|
|
1762
|
+
"help": "Требовать PIN-код администратора для изменения безопасности и дополнительных настроек"
|
|
1765
1763
|
},
|
|
1766
1764
|
"sessionTimeout": {
|
|
1767
|
-
"label": "
|
|
1768
|
-
"description": "
|
|
1769
|
-
"current": "
|
|
1770
|
-
"help": "
|
|
1765
|
+
"label": "Тайм-аут сеанса",
|
|
1766
|
+
"description": "Тайм-аут сеанса администратора в минутах",
|
|
1767
|
+
"current": "Текущий: {value} минуты",
|
|
1768
|
+
"help": "Как долго сеансы администрирования остаются активными, прежде чем потребуется повторная аутентификация"
|
|
1771
1769
|
},
|
|
1772
1770
|
"maxFailedAttempts": {
|
|
1773
|
-
"label": "
|
|
1774
|
-
"description": "Максимальное
|
|
1775
|
-
"current": "
|
|
1776
|
-
"help": "
|
|
1771
|
+
"label": "Макс. неудачных попыток",
|
|
1772
|
+
"description": "Максимальное количество неудачных попыток ввода PIN-кода до блокировки",
|
|
1773
|
+
"current": "Текущий: {value} попытки",
|
|
1774
|
+
"help": "Количество неудачных попыток ввода PIN-кода, разрешенных до временной блокировки"
|
|
1777
1775
|
},
|
|
1778
1776
|
"lockoutDuration": {
|
|
1779
|
-
"label": "
|
|
1780
|
-
"description": "
|
|
1781
|
-
"current": "
|
|
1782
|
-
"help": "
|
|
1777
|
+
"label": "Продолжительность блокировки",
|
|
1778
|
+
"description": "Продолжительность блокировки после неудачных попыток",
|
|
1779
|
+
"current": "Текущий: {value} минуты",
|
|
1780
|
+
"help": "Как долго система остается заблокированной после максимального количества неудачных попыток"
|
|
1783
1781
|
},
|
|
1784
1782
|
"scriptDirectories_analyze": {
|
|
1785
|
-
"label": "
|
|
1786
|
-
"description": "
|
|
1787
|
-
"current": "
|
|
1788
|
-
"help": "Укажите
|
|
1783
|
+
"label": "Анализ каталогов сценариев",
|
|
1784
|
+
"description": "Пользовательские каталоги для сценария анализа",
|
|
1785
|
+
"current": "Текущий: {value}",
|
|
1786
|
+
"help": "Укажите собственный исходный каталог для сценария анализа. Оставьте пустым, чтобы использовать глобальные настройки."
|
|
1789
1787
|
},
|
|
1790
1788
|
"scriptDirectories_complete": {
|
|
1791
|
-
"label": "
|
|
1792
|
-
"description": "
|
|
1793
|
-
"current": "
|
|
1794
|
-
"help": "Укажите
|
|
1789
|
+
"label": "Полные каталоги установки",
|
|
1790
|
+
"description": "Пользовательские каталоги для полного сценария установки",
|
|
1791
|
+
"current": "Текущий: {value}",
|
|
1792
|
+
"help": "Укажите собственный исходный каталог для полного сценария установки. Оставьте пустым, чтобы использовать глобальные настройки."
|
|
1795
1793
|
},
|
|
1796
1794
|
"scriptDirectories_init": {
|
|
1797
|
-
"label": "
|
|
1798
|
-
"description": "
|
|
1799
|
-
"current": "
|
|
1800
|
-
"help": "Укажите
|
|
1795
|
+
"label": "Инициализируйте каталоги сценариев",
|
|
1796
|
+
"description": "Пользовательские каталоги для инициализации скрипта",
|
|
1797
|
+
"current": "Текущий: {value}",
|
|
1798
|
+
"help": "Укажите собственный исходный каталог для сценария инициализации. Оставьте пустым, чтобы использовать глобальные настройки."
|
|
1801
1799
|
},
|
|
1802
1800
|
"scriptDirectories_manage": {
|
|
1803
|
-
"label": "
|
|
1804
|
-
"description": "
|
|
1805
|
-
"current": "
|
|
1806
|
-
"help": "Укажите
|
|
1801
|
+
"label": "Управление каталогами сценариев",
|
|
1802
|
+
"description": "Пользовательские каталоги для управления скриптом",
|
|
1803
|
+
"current": "Текущий: {value}",
|
|
1804
|
+
"help": "Укажите собственный исходный каталог для сценария управления. Оставьте пустым, чтобы использовать глобальные настройки."
|
|
1807
1805
|
},
|
|
1808
1806
|
"scriptDirectories_sizing": {
|
|
1809
|
-
"label": "
|
|
1810
|
-
"description": "
|
|
1811
|
-
"current": "
|
|
1812
|
-
"help": "Укажите
|
|
1807
|
+
"label": "Изменение размера каталогов сценариев",
|
|
1808
|
+
"description": "Пользовательские каталоги для изменения размера скрипта",
|
|
1809
|
+
"current": "Текущий: {value}",
|
|
1810
|
+
"help": "Укажите собственный исходный каталог для сценария изменения размера. Оставьте пустым, чтобы использовать глобальные настройки."
|
|
1813
1811
|
},
|
|
1814
1812
|
"scriptDirectories_summary": {
|
|
1815
|
-
"label": "
|
|
1816
|
-
"description": "
|
|
1817
|
-
"current": "
|
|
1818
|
-
"help": "Укажите
|
|
1813
|
+
"label": "Каталоги сводных отчетов",
|
|
1814
|
+
"description": "Пользовательские каталоги для скрипта сводного отчета",
|
|
1815
|
+
"current": "Текущий: {value}",
|
|
1816
|
+
"help": "Укажите собственный исходный каталог для сценария сводного отчета. Оставьте пустым, чтобы использовать глобальные настройки."
|
|
1819
1817
|
},
|
|
1820
1818
|
"scriptDirectories_usage": {
|
|
1821
|
-
"label": "
|
|
1822
|
-
"description": "
|
|
1823
|
-
"current": "
|
|
1824
|
-
"help": "Укажите
|
|
1819
|
+
"label": "Каталоги отчетов об использовании",
|
|
1820
|
+
"description": "Пользовательские каталоги для сценария отчета об использовании",
|
|
1821
|
+
"current": "Текущий: {value}",
|
|
1822
|
+
"help": "Укажите собственный исходный каталог для сценария отчета об использовании. Оставьте пустым, чтобы использовать глобальные настройки."
|
|
1825
1823
|
},
|
|
1826
1824
|
"scriptDirectories_validate": {
|
|
1827
|
-
"label": "
|
|
1828
|
-
"description": "
|
|
1829
|
-
"current": "
|
|
1830
|
-
"help": "Укажите
|
|
1825
|
+
"label": "Проверка каталогов сценариев",
|
|
1826
|
+
"description": "Пользовательские каталоги для проверки скрипта",
|
|
1827
|
+
"current": "Текущий: {value}",
|
|
1828
|
+
"help": "Укажите собственный исходный каталог для сценария проверки. Оставьте пустым, чтобы использовать глобальные настройки."
|
|
1831
1829
|
},
|
|
1832
1830
|
"security_adminPinEnabled": {
|
|
1833
|
-
"label": "
|
|
1834
|
-
"description": "Включить
|
|
1835
|
-
"current": "
|
|
1836
|
-
"help": "
|
|
1831
|
+
"label": "Защита PIN-кодом администратора",
|
|
1832
|
+
"description": "Включить аутентификацию по PIN-коду администратора для конфиденциальных настроек",
|
|
1833
|
+
"current": "Текущий: {value}",
|
|
1834
|
+
"help": "Требовать PIN-код администратора для изменения безопасности и дополнительных настроек"
|
|
1837
1835
|
},
|
|
1838
1836
|
"fields": {
|
|
1839
1837
|
"adminPinEnabled": {
|
|
1840
|
-
"label": "
|
|
1841
|
-
"description": "Включить
|
|
1842
|
-
"help": "
|
|
1838
|
+
"label": "Защита PIN-кодом администратора",
|
|
1839
|
+
"description": "Включить аутентификацию по PIN-коду администратора для конфиденциальных настроек",
|
|
1840
|
+
"help": "Требовать PIN-код администратора для изменения безопасности и дополнительных настроек"
|
|
1843
1841
|
}
|
|
1844
1842
|
},
|
|
1845
1843
|
"security_pinProtection_enabled": {
|
|
1846
|
-
"label": "
|
|
1847
|
-
"description": "Включить защиту PIN",
|
|
1848
|
-
"current": "
|
|
1849
|
-
"help": "
|
|
1844
|
+
"label": "Защита PIN-кодом",
|
|
1845
|
+
"description": "Включить защиту PIN-кодом для конфиденциальных настроек",
|
|
1846
|
+
"current": "Текущий: {value}",
|
|
1847
|
+
"help": "Требовать PIN-код для изменения безопасности и дополнительных настроек"
|
|
1850
1848
|
},
|
|
1851
1849
|
"pinProtection_configure": {
|
|
1852
|
-
"label": "
|
|
1853
|
-
"description": "
|
|
1854
|
-
"help": "Выберите отдельные
|
|
1850
|
+
"label": "Настройка сценариев, защищенных PIN-кодом",
|
|
1851
|
+
"description": "Настройте, какие сценарии требуют защиты PIN-кодом",
|
|
1852
|
+
"help": "Выберите отдельные сценарии, требующие аутентификации по PIN-коду."
|
|
1855
1853
|
},
|
|
1856
1854
|
"pinProtection_debugMenu": {
|
|
1857
|
-
"label": "
|
|
1858
|
-
"description": "
|
|
1859
|
-
"current": "
|
|
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": "
|
|
1866
|
-
"help": "Включить защиту PIN для удаления отчетов"
|
|
1862
|
+
"description": "Требовать PIN-код для удаления отчетов",
|
|
1863
|
+
"current": "Текущий: {value}",
|
|
1864
|
+
"help": "Включить защиту PIN-кодом для удаления отчетов"
|
|
1867
1865
|
},
|
|
1868
1866
|
"pinProtection_summaryReports": {
|
|
1869
|
-
"label": "
|
|
1870
|
-
"description": "
|
|
1871
|
-
"current": "
|
|
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": "
|
|
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": "
|
|
1884
|
-
"help": "
|
|
1879
|
+
"label": "Инициализировать скрипт",
|
|
1880
|
+
"description": "Требовать PIN-код для инициализации сценария",
|
|
1881
|
+
"current": "Текущий: {value}",
|
|
1882
|
+
"help": "Включите защиту PIN-кодом для запуска сценария инициализации."
|
|
1885
1883
|
},
|
|
1886
1884
|
"pinProtection_resetDefaults": {
|
|
1887
|
-
"label": "Сбросить защиту PIN",
|
|
1888
|
-
"description": "
|
|
1889
|
-
"help": "
|
|
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": "Вы уверены, что хотите сбросить все настройки к
|
|
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": "
|
|
1917
|
-
"pinProtectionSelectScript": "Выберите скрипт для
|
|
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 для
|
|
1945
|
-
"invalidOption": "
|
|
1974
|
+
"selectSettingPrompt": "Выберите настройку для редактирования (или b для возврата, r для сброса):",
|
|
1975
|
+
"invalidOption": "Неверный вариант.",
|
|
1946
1976
|
"editing": "Редактирование",
|
|
1947
|
-
"enterNewValue": "Введите новое значение (или нажмите Enter, чтобы
|
|
1948
|
-
"validOptions": "
|
|
1949
|
-
"updatedSuccessfully": "
|
|
1950
|
-
"noHelp": "
|
|
1951
|
-
"resetScriptDirectories": "
|
|
1952
|
-
"resetScriptDirectoriesTitle": "Сбросить
|
|
1953
|
-
"resetScriptDirectoriesWarning1": "
|
|
1954
|
-
"resetScriptDirectoriesWarning2": "
|
|
1955
|
-
"resetScriptDirectoriesConfirm": "
|
|
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": "❌ Не удалось
|
|
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": "
|
|
2017
|
+
"excludedFiles": "Исключенные файлы: {files}",
|
|
1988
2018
|
"reportContent": "{report}",
|
|
1989
|
-
"fatalError": "❌
|
|
1990
|
-
"helpTitle": "📊 ГЕНЕРАТОР
|
|
1991
|
-
"helpDescription": "Анализирует структуру папок i18n и
|
|
1992
|
-
"helpUsage": "Использование:
|
|
1993
|
-
"helpOptions": "--source-dir <dir>
|
|
1994
|
-
"helpSourceDir": "--source-dir <dir>
|
|
1995
|
-
"helpOutput": "
|
|
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": "
|
|
2002
|
-
"helpExample2": "
|
|
2003
|
-
"helpExample3": "
|
|
2004
|
-
"helpExample4": "
|
|
2005
|
-
"helpExample5": "
|
|
2006
|
-
"couldNotReadFile": "⚠️
|
|
2007
|
-
"couldNotParseJSFile": "⚠️
|
|
2008
|
-
"errorReadingFile": "⚠️
|
|
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": "✅
|
|
2012
|
-
"referenceLanguageFiles": "📁
|
|
2040
|
+
"noLanguageDirectoriesFound": "❌ В указанном исходном каталоге не найдены языковые каталоги.",
|
|
2041
|
+
"foundLanguages": "✅ Найден {count} языки: {languages}",
|
|
2042
|
+
"referenceLanguageFiles": "📁 Язык ссылки'{language}' имеет {count} файлы",
|
|
2013
2043
|
"analyzingLanguage": "🌍 Анализ языка: {language}",
|
|
2014
|
-
"keysInFiles": "📊
|
|
2015
|
-
"checkingInconsistentKeys": "🔍 Проверка
|
|
2016
|
-
"generatingSummaryReport": "📝
|
|
2017
|
-
"reportTitle": "📊
|
|
2044
|
+
"keysInFiles": "📊 Найден {keys} ключи через {files} файлы",
|
|
2045
|
+
"checkingInconsistentKeys": "🔍 Проверка несовместимости ключей на разных языках...",
|
|
2046
|
+
"generatingSummaryReport": "📝 Создание сводного отчета...",
|
|
2047
|
+
"reportTitle": "📊 ОБЩИЙ ОТЧЕТ I18NTK",
|
|
2018
2048
|
"generated": "Сгенерировано: {timestamp}",
|
|
2019
|
-
"sourceDirectory": "
|
|
2049
|
+
"sourceDirectory": "Исходный каталог: {dir}",
|
|
2020
2050
|
"overview": "📈 ОБЗОР",
|
|
2021
|
-
"languagesCount": "
|
|
2051
|
+
"languagesCount": "Языки: {count}",
|
|
2022
2052
|
"totalFiles": "Всего файлов: {count}",
|
|
2023
2053
|
"totalKeys": "Всего ключей: {count}",
|
|
2024
|
-
"avgKeysPerLanguage": "Среднее
|
|
2025
|
-
"languagesBreakdown": "🌍 РАЗБИВКА
|
|
2026
|
-
"languageBreakdown": "{language}: {files}
|
|
2027
|
-
"fileStructure": "📁 СТРУКТУРА
|
|
2028
|
-
"fileKeys": "{file}: {keys}
|
|
2029
|
-
"missingInLanguages": "⚠️
|
|
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": "
|
|
2037
|
-
"extraKeys": "
|
|
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": "•
|
|
2044
|
-
"removeDuplicateKeys": "•
|
|
2045
|
-
"synchronizeKeys": "•
|
|
2046
|
-
"splitLargeFiles": "•
|
|
2047
|
-
"addMoreLanguages": "• Рассмотрите
|
|
2048
|
-
"nextSteps": "🎯
|
|
2049
|
-
"nextStep1": "1.
|
|
2050
|
-
"nextStep2": "2. Запустите
|
|
2051
|
-
"nextStep3": "3.
|
|
2052
|
-
"nextStep4": "4.
|
|
2053
|
-
"couldNotFindI18nDirectory": "❌ Не
|
|
2054
|
-
"sourceDirectoryDoesNotExist": "❌
|
|
2055
|
-
"i18nSummaryReportGenerator": "Генератор
|
|
2056
|
-
"analysisComplete": "Анализ завершен",
|
|
2057
|
-
"analyzedLanguages": "
|
|
2058
|
-
"processedFiles": "
|
|
2059
|
-
"foundTranslationKeys": "
|
|
2060
|
-
"foundIssues": "
|
|
2061
|
-
"noIssuesConsole": "
|
|
2062
|
-
"errorDuringAnalysis": "Ошибка при анализе: {error}",
|
|
2063
|
-
"usageReportTitle": "
|
|
2064
|
-
"usageReportGenerated": "
|
|
2065
|
-
"usageReportSourceDir": "
|
|
2066
|
-
"usageReportI18nDir": "
|
|
2067
|
-
"usageReportSummary": "
|
|
2068
|
-
"usageReportSourceFilesScanned": "
|
|
2069
|
-
"usageReportTranslationFilesFound": "
|
|
2070
|
-
"usageReportAvailableKeys": "
|
|
2071
|
-
"usageReportUsedKeys": "
|
|
2072
|
-
"usageReportDynamicKeys": "
|
|
2073
|
-
"usageReportUnusedKeys": "
|
|
2074
|
-
"usageReportMissingKeys": "
|
|
2075
|
-
"usageReportNotTranslatedKeys": "
|
|
2076
|
-
"usageReportTranslationCompleteness": "
|
|
2077
|
-
"usageReportLanguageCompleteness": "
|
|
2078
|
-
"usageReportNotTranslatedInLanguage": "
|
|
2079
|
-
"usageReportTranslationFilesDiscovered": "
|
|
2080
|
-
"usageReportFileInfo": "
|
|
2081
|
-
"usageReportUnusedTranslationKeys": "
|
|
2082
|
-
"usageReportUnusedKeysDescription": "
|
|
2083
|
-
"usageReportUnusedKey": "
|
|
2084
|
-
"usageReportMoreUnusedKeys": "
|
|
2085
|
-
"usageReportMissingTranslationKeys": "
|
|
2086
|
-
"usageReportMissingKeysDescription": "
|
|
2087
|
-
"usageReportMissingKey": "
|
|
2088
|
-
"usageReportUsedIn": "Используется в: {
|
|
2089
|
-
"usageReportMoreFiles": "
|
|
2090
|
-
"usageReportDynamicTranslationKeys": "
|
|
2091
|
-
"usageReportDynamicKeysDescription": "
|
|
2092
|
-
"usageReportDynamicKey": "
|
|
2093
|
-
"usageReportFileUsageBreakdown": "
|
|
2094
|
-
"usageReportFileUsage": "
|
|
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": "Использование:
|
|
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": "
|
|
2116
|
-
"translateCommand": "
|
|
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": "
|
|
2135
|
-
"missing_translations_more": "
|
|
2136
|
-
"errors_title": "
|
|
2137
|
-
"error_message": "
|
|
2138
|
-
"overall_status": "Общий
|
|
2139
|
-
"success_message": "
|
|
2140
|
-
"failure_message": "
|
|
2141
|
-
"failure_error_message": "
|
|
2142
|
-
"warning_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": "
|
|
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": "
|
|
2181
|
-
"all_statements_using_translation": "Все
|
|
2182
|
-
"i18n_console_translation_checker": "
|
|
2183
|
-
"script_description_line1": "Этот скрипт
|
|
2184
|
-
"script_description_line2": "
|
|
2185
|
-
"analysis_completed_in_duration": "Анализ завершен
|
|
2186
|
-
"report_saved_to_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": "
|
|
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": "
|
|
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": "
|
|
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": "
|
|
2226
|
-
"executingCommand": "
|
|
2227
|
-
"unknownCommand": "
|
|
2228
|
-
"errorExecutingCommand": "
|
|
2229
|
-
"errorLoadingTranslationFile": "
|
|
2230
|
-
"errorSavingLanguagePreference": "
|
|
2231
|
-
"noActiveReadlineInterface": "
|
|
2232
|
-
"uiLanguageUpdated": "
|
|
2233
|
-
"selectOptionPrompt": "Выберите
|
|
2234
|
-
"pressEnterToReturn": "Нажмите Enter, чтобы вернуться в главное
|
|
2235
|
-
"detectedSourceDirectory": "
|
|
2236
|
-
"detectedI18nDirectory": "
|
|
2237
|
-
"toolkitTitle": "
|
|
2238
|
-
"versionInfo": "
|
|
2239
|
-
"releaseDate": "
|
|
2240
|
-
"maintainer": "
|
|
2241
|
-
"nodeVersion": "
|
|
2242
|
-
"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": "🐛
|
|
2247
|
-
"versionInfoUnavailable": "
|
|
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": "настройка
|
|
2268
|
-
"phrase_enter_admin_pin": "введите
|
|
2269
|
-
"phrase_confirm_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
|
|
2281
|
-
"valid_file_message": "✅
|
|
2282
|
-
"invalid_file_message": "❌
|
|
2283
|
-
"no_validation_rules": "Для языка
|
|
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": "Содержит
|
|
2286
|
-
"issue_english_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": "Всего
|
|
2294
|
-
"valid_files": "
|
|
2295
|
-
"invalid_files": "
|
|
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": "
|
|
2330
|
+
"title": "Управление рабочим процессом",
|
|
2331
|
+
"description": "Управляйте рабочими процессами i18n.",
|
|
2302
2332
|
"select_workflow_file": "Выберите файл рабочего процесса для запуска:",
|
|
2303
|
-
"no_workflow_files": "В
|
|
2304
|
-
"invalid_selection": "Неверный выбор.
|
|
2333
|
+
"no_workflow_files": "В каталоге рабочих процессов не найдены файлы рабочих процессов.",
|
|
2334
|
+
"invalid_selection": "Неверный выбор. Введите номер, соответствующий файлу рабочего процесса.",
|
|
2305
2335
|
"workflow_execution_started": "Запуск рабочего процесса: {workflowName}",
|
|
2306
|
-
"workflow_execution_completed": "Рабочий процесс
|
|
2307
|
-
"workflow_execution_failed": "Рабочий процесс не выполнен: {workflowName}
|
|
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": "🕐
|
|
2318
|
-
"initialViolations": "
|
|
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": "
|
|
2325
|
-
"fixesApplied": "
|
|
2326
|
-
"nextSteps": "
|
|
2327
|
-
"congratulations": "
|
|
2328
|
-
"cicdIntegration": "✅ Рассмотрите
|
|
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": "Сканирование файлов на
|
|
2348
|
-
"found_javascript_files": "Найдены JavaScript
|
|
2349
|
-
"console_i18n_analysis_results": "Результаты анализа i18n
|
|
2350
|
-
"total_console_statements": "Всего операторов
|
|
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": "Жестко
|
|
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": "Проверка
|
|
2371
|
-
"script_description_line1": "
|
|
2372
|
-
"script_description_line2": "
|
|
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": {
|