@ragnoryok1/dsh-client-locale-ru 0.1.2 → 0.1.3

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/README.md CHANGED
@@ -39,11 +39,34 @@ npm pack # -> ragnoryok1-dsh-client-locale-ru-<version>.tgz
39
39
 
40
40
  ## Содержимое
41
41
 
42
- - `src/client/dicts.ts` — русские словари (~34 namespace, ~1200 строк). Это и есть основная ценность.
42
+ - `src/client/dicts.ts` — русские словари (45 namespace, ~1366 ключей, ~1464 строк). Это и есть основная ценность.
43
43
  - `src/client/index.ts` — точка входа клиентского плагина (регистрация `ru` + словарей).
44
44
  - `src/index.ts` — пустая host-половина (`apply()`).
45
45
  - `cordis.patch.yml` — профиль-патч (`- insert:` клиентской строки `locale-ru`).
46
46
 
47
+ ## Что переведено
48
+
49
+ Актуальный набор — по тегам харнеса: ключи сняты с профильного коммита, а добавленные
50
+ позже падают на `en` при поиске, поэтому пакет не ломает интерфейс на новых версиях.
51
+
52
+ В 0.1.2 добавлены разделы, которых не было в 0.1.1: `open-in-app` («Открыть в
53
+ приложении»), `sidebarFiles`, `sidebarRight` (правый сайдбар с файлами) и
54
+ `sidebarCodePreview` (предпросмотр кода). Также обновлены ключи, изменившиеся в
55
+ харнесе 0.1.5, и удалены 21 ключ, которых в нём больше нет.
56
+
57
+ В 0.1.3 пакет догнал харнес 0.1.6-alpha.1: добавлено 139 ключей и 7 новых
58
+ разделов — `sidebarTerminal` (терминал в правом сайдбаре), `settings.archivedSessions`
59
+ (архивные сессии) и семейство предпросмотра документов (`sidebarDocumentPreview`,
60
+ `documentHtml`, `sidebarImage`, `documentMarkdown`, `sidebarPdf`). Кроме этого
61
+ переведена экспериментальная «Автопроверка» (`permission.access`: `auto.*`),
62
+ подписи и токены палитры команд, поля эндпоинтов в настройках моделей и
63
+ изменения в `conversation`, `trajectory`, `chat`, `session-log-download`.
64
+ 28 ключей, исчезнувших из харнеса, удалены.
65
+
66
+ Проверка покрытия выполняется по исходникам харнеса: для каждого namespace
67
+ сравниваются множества ключей, поэтому следующий выпуск начинается с точного
68
+ списка «добавить / проверить / удалить».
69
+
47
70
  ## Лицензия
48
71
 
49
72
  MIT
package/lib/client.js CHANGED
@@ -45,8 +45,6 @@ window.__ModuleLoader__.load({
45
45
  "unknown": "Неизвестно",
46
46
  "none": "Нет",
47
47
  "truncated": "Обрезано",
48
- "json.collapseNode": "Свернуть узел JSON",
49
- "json.expandNode": "Развернуть узел JSON",
50
48
  "json.label": "JSON",
51
49
  "markdown.footnotes": "Сноски",
52
50
  "markdown.truncatedCharacters": "… обрезано на {total} символах",
@@ -78,7 +76,7 @@ window.__ModuleLoader__.load({
78
76
  "presetIdPlaceholder": "my-agent",
79
77
  "displayName": "Название",
80
78
  "displayNamePlaceholder": "Показывается в выборе; по умолчанию — идентификатор",
81
- "inUse": "Используется",
79
+ "inUse": "По умолчанию для новых задач",
82
80
  "builtInGroup": "Встроенные",
83
81
  "customGroup": "Свои",
84
82
  "noDescription": "Нет описания.",
@@ -105,7 +103,13 @@ window.__ModuleLoader__.load({
105
103
  "deleteConfirm": "Удалить",
106
104
  "deleting": "Удаление…",
107
105
  "presetPtcDescription": "Полноценный агент-программист без инструмента workflow; остальные инструменты доступны через SDK режима PTC, поэтому модель может объединять многошаговые операции в одну программу на TypeScript.",
108
- "switchRefused": "Не удалось переключить на «{name}»: {reason}"
106
+ "switchRefused": "Не удалось переключить на «{name}»: {reason}",
107
+ "selectionOffDefault": "По умолчанию",
108
+ "showPicker": "Разрешить переключение режимов агента",
109
+ "showPickerBeta": "Бета",
110
+ "showPickerDescription": "Если включено, новые задачи смогут выбирать режимы «Стандартный», PTC, «Создатель», «Минимальный» и свои. Если выключено, все новые задачи используют режим по умолчанию («Стандартный», если не настроено иное). Влияет только на новые задачи.",
111
+ "enablePickerToSetDefault": "Включите выбор режима агента, чтобы задать режим по умолчанию",
112
+ "enablePickerToCreate": "Включите выбор режима агента, чтобы запускать режим «Создатель»"
109
113
  },
110
114
  "approval": {
111
115
  "detail.aria": "Детали запроса",
@@ -125,10 +129,24 @@ window.__ModuleLoader__.load({
125
129
  "notice.attachmentsUnsupported": "/{command} не принимает вложения; сначала удалите их",
126
130
  "description.compact": "Сжать историю старых сообщений",
127
131
  "description.export": "Скачать журнал этой сессии как ZIP-архив",
128
- "description.feedback": "оставить отзыв об этой сессии",
129
- "description.goal": "задать или посмотреть цель долгой задачи",
132
+ "description.feedback": "Оставить отзыв об этой сессии",
133
+ "description.goal": "Задать или посмотреть цель долгой задачи",
130
134
  "description.permission": "Переключить пресет разрешений (режим песочницы + политика подтверждений)",
131
- "description.plan": "Войти в режим планирования или выйти из него"
135
+ "description.plan": "Войти в режим планирования или выйти из него",
136
+ "section.add": "Добавить",
137
+ "section.commands": "Команды",
138
+ "label.goal": "Цель",
139
+ "label.plan": "План",
140
+ "label.feedback": "Отзыв",
141
+ "label.compact": "Сжатие",
142
+ "label.permission": "Права",
143
+ "label.export": "Экспорт",
144
+ "token.goal": "цель",
145
+ "token.plan": "план",
146
+ "token.feedback": "отзыв",
147
+ "token.compact": "сжатие",
148
+ "token.permission": "права",
149
+ "token.export": "экспорт"
132
150
  },
133
151
  "conversation": {
134
152
  "hint.plan": "опишите вашу задачу, чтобы составить план",
@@ -141,10 +159,9 @@ window.__ModuleLoader__.load({
141
159
  "placeholder.hero": "Опишите, что нужно сделать; «/» — команды, «@» — файлы и сессии",
142
160
  "placeholder.workspace": "Выберите рабочее пространство, чтобы начать",
143
161
  "placeholder.steerQueue": "Cmd/Ctrl+Enter — отправить все сообщения из очереди",
144
- "input.commands": "Команды",
162
+ "input.commands": "Добавить файлы или выполнить команды",
145
163
  "input.stop": "Остановить генерацию",
146
164
  "input.send": "Отправить сообщение",
147
- "input.accessMode": "Режим доступа, текущий: {name}",
148
165
  "attachment.pending": "Вложения ожидают отправки",
149
166
  "attachment.scrollLeft": "Прокрутить вложения влево",
150
167
  "attachment.scrollRight": "Прокрутить вложения вправо",
@@ -169,7 +186,6 @@ window.__ModuleLoader__.load({
169
186
  "image.dimensionTooLarge": "Стороны изображения не должны превышать {size}px; уменьшите его и повторите",
170
187
  "image.modelUnsupported": "Текущая модель не поддерживает изображения; переключитесь на модель с их поддержкой",
171
188
  "image.sendFailed": "Не удалось отправить изображения ({reason}); добавьте их заново и повторите",
172
- "file.attach": "Добавить вложение",
173
189
  "file.pending": "Файлы ожидают отправки",
174
190
  "file.remove": "Удалить файл {name}",
175
191
  "file.uploading": "Загрузка…",
@@ -188,14 +204,6 @@ window.__ModuleLoader__.load({
188
204
  "settings.enter.description": "Что делают Enter и кнопка отправки, пока агент работает; Cmd/Ctrl+Enter использует другое поведение",
189
205
  "settings.enter.queue": "В очередь",
190
206
  "settings.enter.steer": "Отправить сразу",
191
- "access.preset.readOnly": "Только чтение",
192
- "access.preset.workspaceWrite": "Запись в рабочую папку",
193
- "access.preset.fullAccess": "Полный доступ",
194
- "access.confirm.title": "Включить «Полный доступ»?",
195
- "access.confirm.description": "«Полный доступ» уменьшает число этапов подтверждения и позволяет агенту напрямую выполнять больше действий, включая чувствительные операции, изменение файлов или внешние команды. Используйте его, только если доверяете текущей задаче.",
196
- "access.confirm.acknowledge": "Я понимаю риски и хочу продолжить",
197
- "access.confirm.cancel": "Отмена",
198
- "access.confirm.enable": "Включить «Полный доступ»",
199
207
  "hero.headline": "К неизведанному",
200
208
  "hero.preview": "Предпросмотр",
201
209
  "hero.chooseWorkspace": "Выбрать рабочее пространство",
@@ -289,7 +297,11 @@ window.__ModuleLoader__.load({
289
297
  "terminal.session": "Терминал {sessionId}",
290
298
  "input.send.queue": "Отправить в очередь",
291
299
  "input.send.steer": "Отправить сразу",
292
- "queue.sending": "Отправка…"
300
+ "queue.sending": "Отправка…",
301
+ "input.file": "Файл",
302
+ "tool.autoReviewRejected": "Отклонено автопроверкой",
303
+ "tool.autoReviewNotExecuted": "Инструмент не выполнен. Причина: {reason}",
304
+ "tool.autoReviewReasonFallback": "Автопроверка не разрешила это действие"
293
305
  },
294
306
  "deliverables": {
295
307
  "produced.label": "Изменённые файлы",
@@ -313,7 +325,6 @@ window.__ModuleLoader__.load({
313
325
  "presented.hostError": "Не удалось прочитать сведения о рабочем столе хоста",
314
326
  "presented.more": "Другие действия с файлом {name}",
315
327
  "presented.nativeUnavailable": "У этого файла нет доступного пути на хосте. Откройте его в боковой панели.",
316
- "presented.open": "Открыть {name} в приложении по умолчанию",
317
328
  "presented.opened": "Открыто в приложении по умолчанию",
318
329
  "presented.opening": "Открываем…",
319
330
  "presented.preview": "Просмотр в боковой панели",
@@ -415,7 +426,8 @@ window.__ModuleLoader__.load({
415
426
  "blocked.composer": "Эта модель недоступна — выберите другую, чтобы продолжить",
416
427
  "empty.efforts": "У этой модели нет уровней рассуждения.",
417
428
  "option.deepseekV4Flash.description": "Быстрая, эффективная и экономная; подходит для сосредоточенных, рутинных или параллельных задач.",
418
- "option.deepseekV4Pro.description": "Усиленное агентное программирование, знания и сложные рассуждения; для комплексных или критичных к качеству задач с большей стоимостью."
429
+ "option.deepseekV4Pro.description": "Усиленное агентное программирование, знания и сложные рассуждения; для комплексных или критичных к качеству задач с большей стоимостью.",
430
+ "command.label": "Модель"
419
431
  },
420
432
  "settings.permission": {
421
433
  "title": "Права доступа",
@@ -439,7 +451,16 @@ window.__ModuleLoader__.load({
439
451
  "confirm.description": "«Полный доступ» уменьшает число этапов подтверждения и позволяет агенту напрямую выполнять больше действий, включая чувствительные операции, изменение файлов или внешние команды. Используйте его, только если доверяете текущей задаче.",
440
452
  "confirm.acknowledge": "Я понимаю риски и хочу продолжить",
441
453
  "confirm.cancel": "Отмена",
442
- "confirm.enable": "Включить «Полный доступ»"
454
+ "confirm.enable": "Включить «Полный доступ»",
455
+ "mode": "Режим доступа, сейчас: {name}",
456
+ "close": "Закрыть",
457
+ "auto.label": "Автопроверка",
458
+ "auto.badge": "ЭКСП",
459
+ "auto.description": "Работа без песочницы после экспериментальной проверки той же моделью каждого вызова нативного инструмента и внутреннего вызова PTC.",
460
+ "auto.confirm.title": "Включить автопроверку (экспериментально)?",
461
+ "auto.confirm.description": "Автопроверка работает без песочницы. Перед каждым вызовом нативного инструмента и внутренним вызовом PTC та же модель, что и у текущего агента, решает, разрешить ли его. Возможность экспериментальная: она может ошибочно разрешить или запретить действие и расходует дополнительные токены.",
462
+ "auto.confirm.acknowledge": "Я понимаю эти риски и хочу продолжить",
463
+ "auto.confirm.enable": "Включить автопроверку"
443
464
  },
444
465
  "plan": {
445
466
  "chip.label": "План",
@@ -489,11 +510,10 @@ window.__ModuleLoader__.load({
489
510
  "openDocument.error": "Не удалось открыть файл конфигурации",
490
511
  "general.nav": "Основные",
491
512
  "connection.error": "Отключено",
492
- "connection.retry": "Подключиться сейчас",
493
513
  "connection.connecting": "Переподключение",
494
514
  "connection.connected": "Подключено",
495
515
  "connection.reconnect": "Отключено, подключиться сейчас",
496
- "connection.restart": "Переподключение выполняется автоматически, переподключиться сейчас"
516
+ "connection.restart": "Переподключение, подключиться сейчас"
497
517
  },
498
518
  "settings.models": {
499
519
  "nav": "Модели",
@@ -594,7 +614,11 @@ window.__ModuleLoader__.load({
594
614
  "fetchSearch": "Поиск моделей",
595
615
  "fetchNoMatches": "Нет подходящих моделей.",
596
616
  "customBaseUrlPlaceholder": "https://gateway.example/v1",
597
- "settingsPathUnresolvable": "не удалось разрешить путь настроек"
617
+ "settingsPathUnresolvable": "не удалось разрешить путь настроек",
618
+ "deepSeekChatBaseUrl": "https://api.deepseek.com",
619
+ "deepSeekMessagesBaseUrl": "https://api.deepseek.com/anthropic",
620
+ "deepSeekEndpointHint": "Используйте эндпоинт, совместимый с выбранным подключением.",
621
+ "customBaseUrlInvalid": "Введите корректный URL с HTTP или HTTPS."
598
622
  },
599
623
  "settings.pluginInventory": {
600
624
  "tab": "Список плагинов",
@@ -929,7 +953,14 @@ window.__ModuleLoader__.load({
929
953
  "layout.systemPromptUpdated": "Системный промпт обновлён",
930
954
  "layout.toolsUpdated": "Инструменты обновлены",
931
955
  "layout.systemPromptAndToolsUpdated": "Системный промпт и инструменты обновлены",
932
- "layout.compactionInterrupted": "Сжатие было прервано до завершения."
956
+ "layout.compactionInterrupted": "Сжатие было прервано до завершения.",
957
+ "record.wrapLines": "Перенос строк",
958
+ "code.source": "Код",
959
+ "code.output": "Результат",
960
+ "code.copySource": "Копировать код",
961
+ "code.copyOutput": "Копировать результат",
962
+ "code.originalJson": "Исходный JSON",
963
+ "code.running": "Выполняется…"
933
964
  },
934
965
  "question": {
935
966
  "error.incomplete": "Сначала завершите этот вопрос.",
@@ -941,7 +972,7 @@ window.__ModuleLoader__.load({
941
972
  "nav.cancel": "Отменить все вопросы",
942
973
  "option.recommended": "Рекомендуется",
943
974
  "custom.placeholder": "Введите ваш ответ",
944
- "action.skip": "Пропустить вопрос",
975
+ "action.skip": "Пропустить",
945
976
  "action.next": "Далее",
946
977
  "plan.header": "План на рассмотрении",
947
978
  "plan.approve": "Утвердить",
@@ -1123,14 +1154,15 @@ window.__ModuleLoader__.load({
1123
1154
  "body.copied": "Скопировано"
1124
1155
  },
1125
1156
  "session-log-download": {
1126
- "header.action": "Журнал сессии",
1127
1157
  "dialog.preparingTitle": "Экспорт сессии",
1128
1158
  "dialog.preparingDescription": "Готовится ZIP-архив с этой сессией, её подсессиями и вложениями.",
1129
1159
  "dialog.successTitle": "Загрузка сессии началась",
1130
1160
  "dialog.successDescription": "Браузер загружает ZIP-архив сессии.",
1131
1161
  "dialog.errorTitle": "Не удалось экспортировать сессию",
1132
1162
  "dialog.close": "Закрыть",
1133
- "dialog.commandFailed": "Не удалось запустить экспорт сессии."
1163
+ "dialog.commandFailed": "Не удалось запустить экспорт сессии.",
1164
+ "header.more": "Другие действия",
1165
+ "menu.download": "Скачать журнал сессии"
1134
1166
  },
1135
1167
  "chat": {
1136
1168
  "view.chat": "Чат",
@@ -1235,7 +1267,8 @@ window.__ModuleLoader__.load({
1235
1267
  "stats.dialog.llmTime": "Время модели",
1236
1268
  "stats.dialog.toolTime": "Время инструментов",
1237
1269
  "stats.dialog.ttft": "Среднее время до первого токена (TTFT)",
1238
- "stats.dialog.speed": "Скорость вывода (ток./с)"
1270
+ "stats.dialog.speed": "Скорость вывода (ток./с)",
1271
+ "duration.hours": "{hours} ч {minutes} мин {seconds} с"
1239
1272
  },
1240
1273
  "directory-browser": {
1241
1274
  "browser.title": "Выбор рабочего каталога",
@@ -1294,19 +1327,9 @@ window.__ModuleLoader__.load({
1294
1327
  "app.terminal": "Терминал"
1295
1328
  },
1296
1329
  "sidebarCodePreview": {
1297
- "code.copied": "Скопировано",
1298
- "code.copy": "Копировать",
1299
- "error.notFound": "Файл не найден. Возможно, он перемещён или удалён.",
1300
- "error.notRegularFile": "Это не обычный файл, показывать нечего.",
1301
- "error.notText": "Это не текстовый файл, предпросмотр пока недоступен.",
1302
- "error.tooLarge": "Страница превышает лимит {limit} и не может быть прочитана.",
1303
- "error.unavailable": "Не удалось прочитать: {message}",
1304
- "footnotes": "Сноски",
1305
- "viewer.label": "Markdown",
1306
- "viewer.text": "Обычный текст",
1307
- "wrap.aria": "Перенос строк",
1308
- "wrap.disable": "Отключить перенос строк",
1309
- "wrap.enable": "Включить перенос строк"
1330
+ "title": "Код",
1331
+ "copy": "Копировать",
1332
+ "copied": "Скопировано"
1310
1333
  },
1311
1334
  "sidebarFiles": {
1312
1335
  "entry.other": "Это не файл и не каталог, открыть нельзя.",
@@ -1316,7 +1339,12 @@ window.__ModuleLoader__.load({
1316
1339
  "error.unavailable": "Не удалось прочитать: {message}",
1317
1340
  "guide.description": "Просмотр файлов рабочей области этой сессии",
1318
1341
  "guide.title": "Файлы рабочей области",
1319
- "type.label": "Файлы"
1342
+ "type.label": "Файлы",
1343
+ "loading": "Чтение…",
1344
+ "empty": "Пустой каталог",
1345
+ "truncated": "Слишком много элементов, показана только часть.",
1346
+ "noWorkspace": "У этой сессии нет рабочего каталога.",
1347
+ "reload": "Перезагрузить"
1320
1348
  },
1321
1349
  "sidebarRight": {
1322
1350
  "chrome.collapse": "Свернуть боковую панель",
@@ -1340,6 +1368,103 @@ window.__ModuleLoader__.load({
1340
1368
  "dock.splitPaneNarrow": "Недостаточно ширины для разделения — расширьте боковую панель",
1341
1369
  "tab.guide.title": "Начало",
1342
1370
  "tab.unavailable": "Пока ничто здесь не умеет отображать такой контент."
1371
+ },
1372
+ "settings.archivedSessions": {
1373
+ "nav": "Архивные сессии",
1374
+ "search": "Поиск в архиве сессий",
1375
+ "loading": "Чтение сессий…",
1376
+ "empty": "Архивных сессий нет.",
1377
+ "unavailable": "Ни одну архивную сессию здесь нельзя восстановить.",
1378
+ "emptySearch": "Подходящих сессий нет.",
1379
+ "unarchive": "Вернуть из архива",
1380
+ "unarchiveNamed": "Вернуть из архива: {title}",
1381
+ "ungrouped": "Без группы",
1382
+ "time.now": "сейчас",
1383
+ "time.minutes": "{n} мин",
1384
+ "time.hours": "{n} ч",
1385
+ "time.days": "{n} д",
1386
+ "time.months": "{n} мес",
1387
+ "time.years": "{n} г"
1388
+ },
1389
+ "documentHtml": {
1390
+ "title": "HTML",
1391
+ "frame": "Предпросмотр HTML-документа",
1392
+ "loading": "Чтение…",
1393
+ "failed": "Не удалось показать этот HTML-документ."
1394
+ },
1395
+ "sidebarImage": {
1396
+ "title": "Изображение",
1397
+ "preview": "Предпросмотр изображения: {name}",
1398
+ "loading": "Чтение…",
1399
+ "failed": "Не удалось показать это изображение.",
1400
+ "unsupported": "Для предпросмотра изображения нужен полный файл."
1401
+ },
1402
+ "sidebarDocumentPreview": {
1403
+ "loading": "Чтение…",
1404
+ "loadMore": "Загрузить ещё",
1405
+ "changed": "Файл изменился, показано прежнее содержимое.",
1406
+ "reloadNow": "Перезагрузить",
1407
+ "reload": "Прочитать файл заново",
1408
+ "wrap.enable": "Включить перенос строк",
1409
+ "wrap.disable": "Отключить перенос строк",
1410
+ "wrap.aria": "Перенос строк",
1411
+ "openWith": "Открыть в",
1412
+ "viewer.text": "Обычный текст",
1413
+ "resourceUnavailable": "Служба файловых ресурсов недоступна.",
1414
+ "rendererUnavailable": "Предпросмотр «{name}» недоступен.",
1415
+ "unsupportedFile": "Для этого типа файлов предпросмотр пока недоступен.",
1416
+ "error.notFound": "Файл не найден. Возможно, он перемещён или удалён.",
1417
+ "error.tooLarge": "Страница превышает лимит {limit} и не может быть прочитана.",
1418
+ "error.notText": "Для этого типа файлов предпросмотр пока недоступен.",
1419
+ "error.notRegularFile": "Это не обычный файл, показывать нечего.",
1420
+ "error.unavailable": "Не удалось прочитать: {message}",
1421
+ "retry": "Повторить"
1422
+ },
1423
+ "documentMarkdown": {
1424
+ "viewer.label": "Markdown",
1425
+ "code.copy": "Копировать",
1426
+ "code.copied": "Скопировано",
1427
+ "footnotes": "Сноски"
1428
+ },
1429
+ "sidebarPdf": {
1430
+ "title": "PDF",
1431
+ "pageImage": "Страница PDF {page}",
1432
+ "loading": "Чтение…",
1433
+ "rendering": "Отрисовка страницы…",
1434
+ "failed": "Не удалось показать PDF: {message}",
1435
+ "password": "Этот PDF защищён паролем; предпросмотр файлов с паролем не поддерживается.",
1436
+ "workerFailed": "Процесс отрисовки PDF прервался. Повторите попытку.",
1437
+ "unsupported": "Для предпросмотра PDF нужен полный файл.",
1438
+ "retry": "Повторить"
1439
+ },
1440
+ "sidebarTerminal": {
1441
+ "recoveryFailed": "Не удалось восстановить терминал: {message}",
1442
+ "retryRecovery": "Повторить восстановление терминала",
1443
+ "shell": "Выбрать shell",
1444
+ "shellLoading": "Чтение списка shell…",
1445
+ "shellEmpty": "Нет доступных shell",
1446
+ "description": "Выполнять команды в рабочей папке сессии",
1447
+ "title": "Терминал",
1448
+ "new": "Новый терминал",
1449
+ "loading": "Чтение окружения терминала…",
1450
+ "creating": "Запуск…",
1451
+ "connecting": "Подключение…",
1452
+ "disconnected": "Соединение разорвано.",
1453
+ "reconnect": "Переподключиться",
1454
+ "readonly": "Эта страница сейчас только для чтения.",
1455
+ "control": "Взять управление",
1456
+ "closed": "Терминал закрыт.",
1457
+ "exited": "Процесс завершился ({code})",
1458
+ "failed": "Ошибка терминала: {message}",
1459
+ "rename": "Имя терминала",
1460
+ "unavailable": "Недоступно",
1461
+ "retry": "Повторить",
1462
+ "cleanupFailed": "Не удалось завершить терминал «{title}»: {message}",
1463
+ "missingTerminal": "Этот терминал больше не существует. Создайте новый.",
1464
+ "inputFull": "Буфер ввода заполнен. Переподключитесь и повторите.",
1465
+ "attachmentEnded": "Соединение с терминалом завершено. Переподключитесь, чтобы продолжить.",
1466
+ "invalidOutput": "Не удалось получить изображение терминала. Переподключитесь, чтобы восстановить его.",
1467
+ "terminalLimit": "Достигнут предел числа терминалов. Закройте ненужные и повторите. Завершённые терминалы тоже учитываются."
1343
1468
  }
1344
1469
  };
1345
1470
  //#endregion
package/lib/client.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","names":[],"sources":["../src/client/dicts.ts","../src/client/index.ts"],"sourcesContent":["/**\n * Russian (ru) dictionaries, one entry per locale namespace.\n * Key sets mirror each namespace's zh/en dictionaries at the profiled\n * base commit; any key added upstream later falls back to en at lookup.\n */\n\nexport const RU_LABEL = 'Русский'\n\nexport const RU_DICTS: Record<string, Record<string, string>> = {\n 'common': {\n 'ok': 'ОК',\n 'cancel': 'Отмена',\n 'close': 'Закрыть',\n 'copy': 'Копировать',\n 'copied': 'Скопировано',\n 'copy.failed': 'Не удалось скопировать',\n 'copy.value': 'Копировать значение',\n 'copy.json': 'Копировать JSON',\n 'copy.path': 'Копировать путь',\n 'copy.prettyJson': 'Копировать красивый JSON',\n 'copy.compactJson': 'Копировать компактный JSON',\n 'copy.optionsHint': '{action}; правый клик — варианты копирования',\n 'retry': 'Повторить',\n 'loading': 'Загрузка…',\n 'load.failed': 'Не удалось загрузить',\n 'submit': 'Отправить',\n 'submitting': 'Отправка…',\n 'next': 'Далее',\n 'previous': 'Предыдущий',\n 'skip': 'Пропустить',\n 'delete': 'Удалить',\n 'edit': 'Изменить',\n 'save': 'Сохранить',\n 'search': 'Поиск',\n 'more': 'Ещё',\n 'collapse': 'Свернуть',\n 'expand': 'Развернуть',\n 'back': 'Назад',\n 'brand.localBuild': 'Локальная сборка DSH',\n 'unknown': 'Неизвестно',\n 'none': 'Нет',\n 'truncated': 'Обрезано',\n 'json.collapseNode': 'Свернуть узел JSON',\n 'json.expandNode': 'Развернуть узел JSON',\n 'json.label': 'JSON',\n 'markdown.footnotes': 'Сноски',\n 'markdown.truncatedCharacters': '… обрезано на {total} символах',\n 'number.thousand': '{value} тыс.',\n 'number.million': '{value} млн',\n },\n 'settings.locale': {\n 'language.title': 'Язык',\n },\n 'settings.agentPreset': {\n 'error': 'Не удалось загрузить пресеты агента.',\n 'userTrust': 'Свой',\n 'seatHint': 'Пресет агента для сессии, которую вы собираетесь начать',\n 'headerHint': 'Пресет агента, с которым работает эта сессия; фиксируется при запуске',\n 'nav': 'Пресеты агента',\n 'sectionIntro': 'Пресет — это композиция плагинов, с которыми работает агент сессии: его инструменты, промпт и возможности. Скопируйте существующий пресет и настройте под себя или позвольте агенту составить его в режиме Creator.',\n 'builtIn': 'Встроенные',\n 'setDefault': 'Сделать пресетом по умолчанию',\n 'view': 'Просмотр',\n 'presetStandardName': 'Стандартный режим',\n 'presetStandardDescription': 'Полноценный агент-программист: редактирование файлов, shell, поиск по файлам и в вебе, навыки, планирование, цели, субагенты и воркфлоу.',\n 'presetPtcName': 'Режим кода',\n 'presetMinimalName': 'Минимальный режим',\n 'presetMinimalDescription': 'Агент-программист из двух инструментов: постоянный bash и str_replace_editor.',\n 'presetCordisName': 'Режим Creator',\n 'presetCordisDescription': 'Создан для разработки собственных пресетов: все возможности стандартного режима плюс инспекция на лету, эксперименты с плагинами и подсказки по созданию пресетов.',\n 'duplicate': 'Дублировать',\n 'duplicateUnavailable': 'В этой сборке нет каталога пресетов для записи',\n 'delete': 'Удалить',\n 'presetId': 'Идентификатор',\n 'presetIdPlaceholder': 'my-agent',\n 'displayName': 'Название',\n 'displayNamePlaceholder': 'Показывается в выборе; по умолчанию — идентификатор',\n 'inUse': 'Используется',\n 'builtInGroup': 'Встроенные',\n 'customGroup': 'Свои',\n 'noDescription': 'Нет описания.',\n 'brokenBadge': 'Не удалось загрузить',\n 'brokenNoCopy': 'Пресет, который не удалось загрузить, нельзя дублировать',\n 'copyOf': 'Копия из',\n 'composition': 'Композиция (agent.cordis.yml)',\n 'cancel': 'Отмена',\n 'close': 'Закрыть',\n 'retry': 'Повторить',\n 'copyTitle': 'Дублировать пресет',\n 'copyIntro': 'Пресет целиком копируется на этом компьютере. Идентификатор становится именем каталога и не меняется впоследствии; всё остальное редактируется в файлах самого пресета.',\n 'create': 'Создать',\n 'creating': 'Создание…',\n 'creatorDraft': 'Составить свой пресет в режиме Creator',\n 'openLocation': 'Открыть папку',\n 'showLocation': 'Показать путь',\n 'revealedPathLabel': 'Файлы пресета:',\n 'idRequired': 'Укажите идентификатор пресета.',\n 'idInvalid': 'Используйте строчные буквы, цифры и дефисы, начиная с буквы или цифры.',\n 'idTaken': 'Пресет с таким идентификатором уже существует.',\n 'deleteTitle': 'Удалить этот пресет?',\n 'deleteDescription': 'Каталог пресета будет удалён. Сессии, которые уже работают на нём, продолжат работу; новые сессии не смогут его выбрать.',\n 'deleteConfirm': 'Удалить',\n 'deleting': 'Удаление…',\n 'presetPtcDescription': 'Полноценный агент-программист без инструмента workflow; остальные инструменты доступны через SDK режима PTC, поэтому модель может объединять многошаговые операции в одну программу на TypeScript.',\n 'switchRefused': 'Не удалось переключить на «{name}»: {reason}',\n },\n 'approval': {\n 'detail.aria': 'Детали запроса',\n 'waiting': 'Ожидает одобрения',\n 'escalation': 'Инструмент {toolName} запрашивает привилегированное выполнение',\n 'reject': 'Отклонить',\n 'allowOnce': 'Разрешить один раз',\n },\n 'command': {\n 'search.placeholder': 'Поиск…',\n 'search.aria': 'Фильтр вариантов',\n 'status.loading': 'Загрузка вариантов…',\n 'status.applying': 'Применение…',\n 'status.empty': 'Нет вариантов',\n 'overlay.aria': 'Варианты /{command}',\n 'listbox.aria': 'Совпадения /{command}',\n 'notice.attachmentsUnsupported': '/{command} не принимает вложения; сначала удалите их',\n 'description.compact': 'Сжать историю старых сообщений',\n 'description.export': 'Скачать журнал этой сессии как ZIP-архив',\n 'description.feedback': 'оставить отзыв об этой сессии',\n 'description.goal': 'задать или посмотреть цель долгой задачи',\n 'description.permission': 'Переключить пресет разрешений (режим песочницы + политика подтверждений)',\n 'description.plan': 'Войти в режим планирования или выйти из него',\n },\n 'conversation': {\n 'hint.plan': 'опишите вашу задачу, чтобы составить план',\n 'hint.goal': 'опишите цель для длительной задачи',\n 'hint.goal.active': 'цель активна — edit / pause / resume / clear',\n 'placeholder.plan': 'опишите вашу задачу, чтобы составить план',\n 'placeholder.default': 'Сообщение или задача; «/» — команды, «@» — файлы и сессии',\n 'placeholder.unavailable': 'Сессия недоступна',\n 'placeholder.parentOffline': 'Родительская сессия офлайн: отправка недоступна, но вы можете остановить выполнение',\n 'placeholder.hero': 'Опишите, что нужно сделать; «/» — команды, «@» — файлы и сессии',\n 'placeholder.workspace': 'Выберите рабочее пространство, чтобы начать',\n 'placeholder.steerQueue': 'Cmd/Ctrl+Enter — отправить все сообщения из очереди',\n 'input.commands': 'Команды',\n 'input.stop': 'Остановить генерацию',\n 'input.send': 'Отправить сообщение',\n 'input.accessMode': 'Режим доступа, текущий: {name}',\n 'attachment.pending': 'Вложения ожидают отправки',\n 'attachment.scrollLeft': 'Прокрутить вложения влево',\n 'attachment.scrollRight': 'Прокрутить вложения вправо',\n 'attachment.dropTitle': 'Перетащите файлы или изображения сюда, чтобы добавить их',\n 'attachment.dropDesc': 'Изображения: до {count} шт., каждое до {size}',\n 'attachment.dropBlocked': 'Сейчас нельзя добавить файлы или изображения',\n 'image.pending': 'Изображения ожидают отправки',\n 'image.openOriginal': 'Открыть оригинал',\n 'image.openOriginalLabel': '{label}, нажмите, чтобы открыть оригинал',\n 'image.remove': 'Удалить изображение {name}',\n 'image.original': 'Оригинал',\n 'image.label': 'Изображение',\n 'image.loadFailed': 'Не удалось загрузить изображение; нажмите, чтобы повторить',\n 'image.loading': 'Загрузка изображения…',\n 'image.preview': 'Просмотр оригинала',\n 'image.closePreview': 'Закрыть просмотр оригинала',\n 'image.unsupportedType': 'Поддерживаются только изображения PNG, JPG, WebP и GIF',\n 'image.tooMany': 'Сообщение может содержать до {count} изображений',\n 'image.fileTooLarge': 'Каждое изображение должно быть меньше {size}',\n 'image.totalTooLarge': 'Суммарный размер изображений превышает {size}; удалите часть и повторите',\n 'image.tooManyPixels': 'Разрешение изображения слишком высокое; сожмите его и повторите',\n 'image.dimensionTooLarge': 'Стороны изображения не должны превышать {size}px; уменьшите его и повторите',\n 'image.modelUnsupported': 'Текущая модель не поддерживает изображения; переключитесь на модель с их поддержкой',\n 'image.sendFailed': 'Не удалось отправить изображения ({reason}); добавьте их заново и повторите',\n 'file.attach': 'Добавить вложение',\n 'file.pending': 'Файлы ожидают отправки',\n 'file.remove': 'Удалить файл {name}',\n 'file.uploading': 'Загрузка…',\n 'file.uploadFailed': 'Не удалось загрузить; нажмите, чтобы повторить',\n 'file.retry': 'Повторить загрузку {name}',\n 'file.stillUploading': 'Файлы ещё загружаются; дождитесь окончания загрузки',\n 'file.sessionUnavailable': 'Сессия недоступна: загрузка файлов невозможна',\n 'file.notStaged': 'Файл ещё не загружен полностью; добавьте его заново',\n 'file.label': 'Файл',\n 'context.aria': 'Использовано {percent} контекста',\n 'context.used': 'контекста использовано',\n 'context.system': 'Системный промпт',\n 'context.tools': 'Определения инструментов',\n 'context.messages': 'Сообщения',\n 'settings.enter.title': 'Поведение отправки во время работы агента',\n 'settings.enter.description': 'Что делают Enter и кнопка отправки, пока агент работает; Cmd/Ctrl+Enter использует другое поведение',\n 'settings.enter.queue': 'В очередь',\n 'settings.enter.steer': 'Отправить сразу',\n 'access.preset.readOnly': 'Только чтение',\n 'access.preset.workspaceWrite': 'Запись в рабочую папку',\n 'access.preset.fullAccess': 'Полный доступ',\n 'access.confirm.title': 'Включить «Полный доступ»?',\n 'access.confirm.description': '«Полный доступ» уменьшает число этапов подтверждения и позволяет агенту напрямую выполнять больше действий, включая чувствительные операции, изменение файлов или внешние команды. Используйте его, только если доверяете текущей задаче.',\n 'access.confirm.acknowledge': 'Я понимаю риски и хочу продолжить',\n 'access.confirm.cancel': 'Отмена',\n 'access.confirm.enable': 'Включить «Полный доступ»',\n 'hero.headline': 'К неизведанному',\n 'hero.preview': 'Предпросмотр',\n 'hero.chooseWorkspace': 'Выбрать рабочее пространство',\n 'session.hierarchy': 'Иерархия сессий',\n 'todo.title': 'Задачи',\n 'todo.progress.done': '{done} выполнено',\n 'todo.progress.active': '{active} в процессе',\n 'todo.progress.pending': '{pending} ожидает',\n 'todo.rowTitle': 'Обновить список задач',\n 'todo.completed': '{done}/{total} выполнено',\n 'command.attachmentsUnsupported': '/{command} не принимает вложения; сначала удалите их',\n 'ask.rowTitle': 'Задать вопрос',\n 'ask.waiting': 'ожидание',\n 'ask.cancelled': 'отменено',\n 'ask.cancelledDetail': 'Этот набор вопросов был отменён до отправки ответов.',\n 'ask.interrupted': 'прервано',\n 'ask.interruptedDetail': 'Этот набор вопросов был прерван до отправки ответов.',\n 'ask.answered': '{answered}/{total} отвечено',\n 'ask.skipped': 'Не отвечено',\n 'bash.running': 'Выполняется',\n 'bash.failed': 'Ошибка',\n 'bash.stopped': 'Остановлено',\n 'row.running': 'Выполняется',\n 'row.failed': 'Ошибка',\n 'row.stopped': 'Остановлено',\n 'row.input': 'ВВОД',\n 'row.output': 'ВЫВОД',\n 'row.inspect': 'Просмотр',\n 'tool.title.search': 'Поиск',\n 'tool.title.read': 'Чтение',\n 'tool.title.bash': 'Bash',\n 'tool.title.write': 'Запись',\n 'tool.title.edit': 'Правка',\n 'tool.title.code': 'Код',\n 'tool.title.generic': 'Вызов инструмента',\n 'tool.title.inspect': 'Просмотр',\n 'tool.title.runCordis': 'Запустить плагин Cordis',\n 'tool.title.stopCordis': 'Остановить плагин Cordis',\n 'tool.title.removeCordis': 'Удалить плагин Cordis',\n 'tool.title.pwsh': 'Pwsh',\n 'tool.title.readImage': 'Прочитать изображение',\n 'tool.title.grep': 'Grep',\n 'tool.title.glob': 'Glob',\n 'tool.title.webSearch': 'Поиск',\n 'tool.title.webFetch': 'Запрос',\n 'diff.files.one': '{count} файл',\n 'diff.files.other': '{count} файлов',\n 'diff.collapseAria': 'Свернуть изменения',\n 'diff.expandAria': 'Показать ещё {count} строк изменений',\n 'diff.expandRest': '… ещё {count} строк',\n 'read.window': 'Показано {shown} из {total} строк',\n 'read.collapseAria': 'Свернуть содержимое',\n 'read.expandAria': 'Показать ещё {count} строк',\n 'read.expandRest': '… ещё {count} строк',\n 'search.paths': '{shown} путей',\n 'search.paths.truncated': 'Показано {shown} из {total} путей',\n 'search.matches': '{shown} совпадений · {files} файлов',\n 'search.matches.truncated': 'Показано {shown} из {total} совпадений · {files} файлов',\n 'search.noResults': 'Ничего не найдено',\n 'search.collapseAria': 'Свернуть результаты',\n 'search.expandAria': 'Показать ещё {count} строк результатов',\n 'search.expandRest': '… ещё {count} строк',\n 'web.noResults': 'Ничего не найдено',\n 'web.sourcesTruncated': 'Список источников обрезан',\n 'web.http': 'HTTP',\n 'web.contentTruncated': 'Содержимое обрезано',\n 'details.running': 'Выполняется…',\n 'queue.count': 'В очереди: {n}',\n 'queue.image': 'Изображение в очереди сообщения',\n 'queue.file': 'Файл {name} в очереди',\n 'queue.edit': 'Изменить сообщение из очереди',\n 'queue.edit.unsupported': 'Содержит нетекстовый контент; редактирование пока не поддерживается',\n 'queue.save': 'Сохранить сообщение из очереди',\n 'queue.cancelEdit': 'Отменить редактирование',\n 'queue.remove': 'Удалить сообщение из очереди',\n 'queue.steer': 'Отправить сразу',\n 'queue.steer.unavailable': 'Отправка сразу доступна только пока агент работает',\n 'queue.editFailed': 'Не удалось изменить: сообщение могло уже начать отправляться.',\n 'queue.removeFailed': 'Не удалось удалить: сообщение могло уже начать отправляться.',\n 'queue.steerFailed': 'Не удалось отправить сразу. Повторите попытку.',\n 'terminal.signal': 'сигнал {signal}',\n 'terminal.exitCode': 'код выхода {code}',\n 'terminal.running': 'Выполняется',\n 'terminal.failed': 'Ошибка',\n 'terminal.done': 'Готово',\n 'terminal.noOutput': 'Нет вывода',\n 'terminal.collapseAria': 'Свернуть вывод',\n 'terminal.expandAria': 'Развернуть оставшиеся строки вывода ({n})',\n 'terminal.expandRest': '… ещё строк: {n}',\n 'terminal.sendInput': '(отправить ввод)',\n 'terminal.session': 'Терминал {sessionId}',\n 'input.send.queue': 'Отправить в очередь',\n 'input.send.steer': 'Отправить сразу',\n 'queue.sending': 'Отправка…',\n },\n 'deliverables': {\n 'produced.label': 'Изменённые файлы',\n 'produced.moreOne': '+ 1 файл',\n 'produced.more': '+ {count} файлов',\n 'produced.open': 'Открыть {name}',\n 'presented.action': 'Открыть',\n 'presented.all': 'Все файлы: {count}',\n 'presented.collapse': 'Свернуть',\n 'presented.collapseAria': 'Свернуть список созданных файлов',\n 'presented.defaultApp': 'Открыть в приложении по умолчанию',\n 'presented.directory': 'Открыть папку с файлом',\n 'presented.directoryError': 'Не удалось открыть папку с файлом. Повторите.',\n 'presented.directoryOpened': 'Запрошено открытие папки с файлом',\n 'presented.directoryOpening': 'Открываем папку с файлом…',\n 'presented.error': 'Не удалось открыть. Нажмите, чтобы повторить.',\n 'presented.expandAria': 'Показать все созданные файлы ({count})',\n 'presented.explorer': 'Показать в Проводнике',\n 'presented.file': 'Файл',\n 'presented.finder': 'Показать в Finder',\n 'presented.hostError': 'Не удалось прочитать сведения о рабочем столе хоста',\n 'presented.more': 'Другие действия с файлом {name}',\n 'presented.nativeUnavailable': 'У этого файла нет доступного пути на хосте. Откройте его в боковой панели.',\n 'presented.open': 'Открыть {name} в приложении по умолчанию',\n 'presented.opened': 'Открыто в приложении по умолчанию',\n 'presented.opening': 'Открываем…',\n 'presented.preview': 'Просмотр в боковой панели',\n 'presented.previewButton': 'Открыть {name} в боковой панели',\n 'presented.previewCard': 'Просмотреть {name} в боковой панели',\n 'presented.retry': 'Повторить',\n 'presented.revealed': 'Запрошен показ в файловом менеджере',\n 'presented.revealError': 'Не удалось показать в файловом менеджере. Повторите.',\n 'presented.revealing': 'Показываем в файловом менеджере…',\n 'presented.unavailable': 'На этом хосте нет рабочего стола, чтобы открывать файлы или папки',\n 'row.error': 'Доставка не удалась',\n 'row.inspect': 'Просмотреть вызов',\n 'row.ok': 'Доставлено',\n 'row.running': 'Доставляем',\n 'row.stopped': 'Прервано',\n 'row.title': 'Созданные файлы',\n },\n 'goal': {\n 'phase.active': 'Активная цель',\n 'phase.paused': 'Приостановленная цель',\n 'phase.blocked': 'Заблокированная цель',\n 'objective.aria': 'Содержимое цели',\n 'commandInput.aria': 'Ввод команды',\n 'action.save': 'Сохранить цель',\n 'action.cancel': 'Отменить правку',\n 'action.pause': 'Приостановить цель',\n 'action.resume': 'Возобновить цель',\n 'action.edit': 'Изменить цель',\n 'action.clear': 'Удалить цель',\n 'phase.active.disarmed': 'Цель неактивна',\n },\n 'slash.menu': {\n 'command': 'Команды',\n 'skill': 'Навыки',\n 'subagent': 'Субагенты',\n 'loading': 'Загрузка…',\n 'drill.aria': 'Обзор папки',\n 'drill.hint': 'Обзор папки',\n 'drill.key': 'Tab',\n 'crumbs.aria': 'Навигация по папкам',\n 'suggestions.aria': 'Возможные варианты по триггеру',\n },\n 'job': {\n 'count.live.one': '{count} фоновая задача выполняется',\n 'count.live.other': '{count} фоновых задач выполняется',\n 'count.idle.one': '{count} фоновая задача',\n 'count.idle.other': '{count} фоновых задач',\n 'list.aria': 'Фоновые задачи',\n 'status.running': 'выполняется',\n 'status.stopping': 'останавливается',\n 'status.completed': 'завершена',\n 'status.killed': 'отменена',\n 'status.failed': 'ошибка',\n 'duration.seconds': '{seconds} с',\n 'duration.minutes': '{minutes} мин {seconds} с',\n 'duration.hours': '{hours} ч {minutes} мин',\n 'duration.title.live': 'Выполняется {duration}',\n 'duration.title.done': 'Заняло {duration}',\n },\n 'feedback': {\n 'action.like': 'Хороший ответ',\n 'action.likeActive': 'Снять оценку',\n 'action.dislike': 'Плохой ответ',\n 'action.dislikeActive': 'Снять оценку',\n 'error.conflict': 'Этот отзыв изменён в другом месте; показано актуальное состояние',\n 'error.load': 'Не удалось загрузить отзыв',\n 'error.generic': 'Не удалось сохранить отзыв',\n 'category.instruction-following': 'Понимание и выполнение инструкций',\n 'category.other': 'Другое',\n 'category.product-interaction': 'Возможности продукта и взаимодействие',\n 'category.resource-cost': 'Расход ресурсов и стоимость',\n 'category.security-privacy-permission': 'Безопасность, приватность и разрешения',\n 'category.service-stability': 'Стабильность сервиса',\n 'category.task-result': 'Результат задачи',\n 'dialog.categories': 'Категория отзыва',\n 'dialog.detail': 'Подробности отзыва',\n 'dialog.hint': 'Добавьте подробности, чтобы помочь нам стать лучше. В отправку войдёт журнал текущего диалога.',\n 'dialog.title': 'Отправить отзыв',\n 'error.noteTooLarge': 'Описание слишком длинное; сократите его и отправьте снова',\n 'toast.recorded': 'Спасибо за отзыв',\n },\n 'model': {\n 'command.description': 'Выбор модели для этого диалога',\n 'option.loadError': 'Не удалось загрузить каталог: {message}',\n 'trigger.fallback': 'Выбрать модель',\n 'trigger.loading': 'Загрузка моделей…',\n 'trigger.selectAria': 'Выбрать модель',\n 'trigger.aria': 'Выбрать модель, сейчас {model}',\n 'trigger.ariaEffort': 'Выбрать модель, сейчас {model}, уровень рассуждения {effort}',\n 'menu.aria': 'Модель и уровень рассуждения',\n 'menu.model': 'Модель',\n 'menu.effort': 'Уровень рассуждения',\n 'effort.providerDefault': 'По умолчанию',\n 'status.loading': 'Обновление списка моделей…',\n 'error.action': 'Не удалось выполнить операцию с моделью: {message}',\n 'action.reload': 'Перезагрузить',\n 'warning.groupLoad': 'Не удалось загрузить {name}: {message}',\n 'empty.models': 'Нет доступных моделей.',\n 'blocked.composer': 'Эта модель недоступна — выберите другую, чтобы продолжить',\n 'empty.efforts': 'У этой модели нет уровней рассуждения.',\n 'option.deepseekV4Flash.description': 'Быстрая, эффективная и экономная; подходит для сосредоточенных, рутинных или параллельных задач.',\n 'option.deepseekV4Pro.description': 'Усиленное агентное программирование, знания и сложные рассуждения; для комплексных или критичных к качеству задач с большей стоимостью.',\n },\n 'settings.permission': {\n 'title': 'Права доступа',\n 'description': 'Выберите режим прав по умолчанию для новых сессий',\n 'loading': 'Загрузка',\n 'unavailable': 'Недоступно',\n 'preset.readOnly': 'Только чтение',\n 'preset.workspaceWrite': 'Запись в рабочую папку',\n 'preset.fullAccess': 'Полный доступ',\n 'confirm.title': 'Включить «Полный доступ»?',\n 'confirm.description': '«Полный доступ» позволяет новым сессиям пропускать шаги подтверждения и выполнять больше действий напрямую, включая чувствительные операции, изменение файлов или внешние команды. Используйте его, только если доверяете последующим задачам.',\n 'confirm.acknowledge': 'Я понимаю риски и хочу продолжить',\n 'confirm.cancel': 'Отмена',\n 'confirm.enable': 'Включить «Полный доступ»',\n },\n 'permission.access': {\n 'preset.readOnly': 'Только чтение',\n 'preset.workspaceWrite': 'Запись в рабочую папку',\n 'preset.fullAccess': 'Полный доступ',\n 'confirm.title': 'Включить «Полный доступ»?',\n 'confirm.description': '«Полный доступ» уменьшает число этапов подтверждения и позволяет агенту напрямую выполнять больше действий, включая чувствительные операции, изменение файлов или внешние команды. Используйте его, только если доверяете текущей задаче.',\n 'confirm.acknowledge': 'Я понимаю риски и хочу продолжить',\n 'confirm.cancel': 'Отмена',\n 'confirm.enable': 'Включить «Полный доступ»',\n },\n 'plan': {\n 'chip.label': 'План',\n 'chip.on.aria': 'Режим планирования включён, нажмите, чтобы выключить',\n 'chip.on.title': 'Режим планирования включён — нажмите, чтобы выключить (/plan off)',\n 'chip.off.aria': 'Режим планирования выключен, нажмите, чтобы включить',\n 'chip.off.title': 'Режим планирования выключен — нажмите, чтобы включить (/plan)',\n 'chip.exitFailed': 'Не удалось выйти из режима планирования',\n },\n 'reference': {\n 'section.files': 'Файлы и папки',\n 'section.sessions': 'Сессии',\n 'candidate.noCwd': '(нет рабочей папки)',\n 'crumb.root': 'Рабочая папка',\n 'time.now': 'сейчас',\n 'time.minutes': '{n} мин',\n 'time.hours': '{n} ч',\n 'time.days': '{n} д',\n 'time.months': '{n} мес',\n 'time.years': '{n} г',\n },\n 'schedule.catalog': {\n 'trigger.one': '{count} напоминание',\n 'trigger.other': '{count} напоминаний',\n 'list.aria': 'Активные напоминания',\n 'status.scheduled': 'Запланировано',\n 'status.overdue': 'Просрочено',\n 'frequency.once': 'Однократно',\n 'frequency.every': 'Каждые {value} {unit}',\n 'unit.day.one': 'день',\n 'unit.day.other': 'дней',\n 'unit.hour.one': 'час',\n 'unit.hour.other': 'часов',\n 'unit.minute.one': 'минута',\n 'unit.minute.other': 'минут',\n 'unit.second.one': 'секунда',\n 'unit.second.other': 'секунд',\n 'relative.now': 'Срок наступил',\n 'relative.future': 'через {value} {unit}',\n 'relative.overdue': 'Просрочено на {value} {unit}',\n },\n 'settings': {\n 'trigger': 'Настройки',\n 'title': 'Настройки',\n 'close': 'Закрыть',\n 'openDocument': 'Открыть файл конфигурации',\n 'openDocument.error': 'Не удалось открыть файл конфигурации',\n 'general.nav': 'Основные',\n 'connection.error': 'Отключено',\n 'connection.retry': 'Подключиться сейчас',\n 'connection.connecting': 'Переподключение',\n 'connection.connected': 'Подключено',\n 'connection.reconnect': 'Отключено, подключиться сейчас',\n 'connection.restart': 'Переподключение выполняется автоматически, переподключиться сейчас',\n },\n 'settings.models': {\n 'nav': 'Модели',\n 'title': 'Модели',\n 'intro': 'Введите API-ключи, чтобы использовать модели указанных провайдеров.',\n 'edit': 'Изменить',\n 'editProvider': 'Изменить {provider}',\n 'remove': 'Удалить',\n 'removeProvider': 'Удалить {provider}',\n 'deleteTitle': 'Удалить {provider}?',\n 'deleteDescription': 'Удаление {provider} уберёт его конфигурацию. Используемые им учётные данные управляются отдельно и будут сохранены.',\n 'deleteDescriptionWithCredential': 'Удаление {provider} уберёт его конфигурацию и сохранённый API-ключ.',\n 'deleteConfirm': 'Удалить {provider}',\n 'deleting': 'Удаление {provider}…',\n 'add': 'Добавить провайдера',\n 'provider': 'Провайдер',\n 'close': 'Закрыть',\n 'cancel': 'Отмена',\n 'apply': 'Применить',\n 'applying': 'Применение…',\n 'savedProvider': 'Сохранено: {provider}.',\n 'credentialConfigured': 'API-ключ настроен',\n 'credentialMissing': 'API-ключ отсутствует',\n 'readOnly': 'Документ настроек в этой сборке доступен только для чтения.',\n 'loadFailed': 'Не удалось загрузить каталог провайдеров',\n 'conflict': 'Пока эта карточка была открыта, настройки изменились в другом месте. Закройте её и откройте заново, чтобы редактировать актуальные значения.',\n 'retry': 'Повторить',\n 'keyInput': 'API-ключ',\n 'keyPlaceholder': 'Введите API-ключ',\n 'keyPlaceholderNative': 'Введите API-ключ или оставьте поле пустым, чтобы использовать аутентификацию из окружения',\n 'keyStored': 'Настроен — введите новое значение, чтобы заменить',\n 'keyEnvLocked': 'Предоставлен окружением запуска (только для чтения)',\n 'customized': 'Изменённые настройки',\n 'baseUrl': 'Базовый URL',\n 'baseUrlDefault': 'По умолчанию у провайдера',\n 'models': 'Модели',\n 'modelsInherited': 'Используются настройки адаптера по умолчанию',\n 'modelsCustomized': 'Изменённый каталог моделей',\n 'resetModels': 'Восстановить значения по умолчанию',\n 'model': 'Модель',\n 'modelId': 'ID модели',\n 'modelName': 'Отображаемое имя',\n 'modelNamePlaceholder': 'Если пусто — используется ID модели',\n 'contextWindow': 'Контекстное окно',\n 'contextWindowPlaceholder': 'Используется значение по умолчанию провайдера',\n 'maxTokens': 'Максимум выходных токенов',\n 'maxTokensPlaceholder': 'Используется значение по умолчанию провайдера',\n 'modelAdvanced': 'Возможности',\n 'addModel': 'Добавить модель',\n 'removeModel': 'Удалить модель',\n 'modelsEmpty': 'В селекторе не будет показано ни одной модели. ID вне списка можно отправлять напрямую.',\n 'keyBlank': 'Введите API-ключ или оставьте поле пустым, чтобы сохранить имеющийся.',\n 'keyBlankNew': 'Введите API-ключ или оставьте поле пустым, если провайдер использует другой способ аутентификации.',\n 'keyIllegalCharacters': 'Формат этого API-ключа недействителен. Проверьте его.',\n 'modelIdRequired': 'ID модели обязателен.',\n 'modelIdDuplicate': 'ID модели должен быть уникальным.',\n 'modelNameInvalid': 'Отображаемое имя не может быть пустым.',\n 'modelContextInvalid': 'Контекстное окно должно быть положительным числом, например 131072, 256K или 1M.',\n 'modelMaxTokensInvalid': 'Максимум выходных токенов должен быть положительным числом, например 8192, 64K или 1M.',\n 'advancedHint': 'Остальные поля находятся в settings.yaml; редактируйте соответствующий раздел напрямую.',\n 'modelCapacityInvalid': 'Возможность должна быть числом, при желании с суффиксом K или M.',\n 'modelDuplicate': 'Каждый ID модели может встречаться только один раз.',\n 'modelContextWindow': 'Контекстное окно',\n 'modelMaxTokens': 'Максимум выходных токенов',\n 'fetchModels': 'Получить доступные модели',\n 'fetching': 'Запрос к провайдеру…',\n 'fetchNeedsBaseUrl': 'Сначала введите базовый URL, затем получайте модели.',\n 'fetchEmpty': 'Провайдер не указал модели. Добавьте их вручную.',\n 'fetchTitle': 'Выберите модели для добавления',\n 'fetchDescription': 'Это модели, доступные у провайдера. Выберите те, что нужно добавить.',\n 'fetchSelectAll': 'Выбрать все',\n 'fetchDeselectAll': 'Снять выбор',\n 'fetchAdopt': 'Добавить выбранные',\n 'customAdd': 'Добавить своего провайдера',\n 'customTitle': 'Свой провайдер',\n 'customTag': 'Свой',\n 'customRoute': 'ID провайдера',\n 'customRouteHint': 'Идентификатор в нижнем регистре, начинающийся с буквы; уникально именует провайдера в запросах и как имя учётных данных.',\n 'customRouteInvalid': 'Начинайте с буквы в нижнем регистре; далее — буквы в нижнем регистре, цифры и дефисы.',\n 'customRouteTaken': 'Этот ID уже использует другой провайдер.',\n 'customDisplayName': 'Отображаемое имя',\n 'customApi': 'Протокол API',\n 'customApiUnset': 'Не выбран',\n 'customNeedsBaseUrl': 'Своему провайдеру нужен базовый URL.',\n 'customNeedsModels': 'Своему провайдеру нужна хотя бы одна модель.',\n 'create': 'Создать провайдера',\n 'creating': 'Создание…',\n 'welcomeTitle': 'Уведомление о внутреннем тестировании',\n 'welcomeBody': 'DeepSeek Harness 0.1 находится в стадии тестирования среди разработчиков Harness. Многие области ещё требуют доработки, и мы будем рады отзывам от сообщества разработчиков. Основные плагины и базовые API DeepSeek Harness будут активно развиваться в ближайшие месяцы.\\n\\nМы рассчитываем вместе с разработчиками по всему миру исследовать пределы возможностей интеллекта, опираясь на открытую, свободно используемую и компонуемую инфраструктуру. Приглашаем разработчиков Harness присоединиться к экосистеме плагинов DSH.',\n 'welcomeContinue': 'Продолжить',\n 'welcomeError': 'Не удалось сохранить подтверждение. Попробуйте ещё раз.',\n 'onboardingTitle': 'Добавьте API-ключ, чтобы начать',\n 'onboardingDescription': 'Настройте официального провайдера DeepSeek, чтобы начать работу.',\n 'onboardingLater': 'Настроить позже',\n 'onboardingSave': 'Сохранить и продолжить',\n 'onboardingSaving': 'Сохранение…',\n 'keyRequired': 'Введите API-ключ, чтобы продолжить.',\n 'fetchSearch': 'Поиск моделей',\n 'fetchNoMatches': 'Нет подходящих моделей.',\n 'customBaseUrlPlaceholder': 'https://gateway.example/v1',\n 'settingsPathUnresolvable': 'не удалось разрешить путь настроек',\n },\n 'settings.pluginInventory': {\n 'tab': 'Список плагинов',\n 'loading': 'Чтение плагинов…',\n 'error': 'Плагины временно недоступны.',\n 'retry': 'Повторить',\n 'search': 'Поиск плагинов',\n 'empty': 'Нет доступных плагинов.',\n 'emptySearch': 'Нет подходящих плагинов.',\n 'enabledTag': 'Включён',\n 'disabledTag': 'Отключён',\n 'configuration': 'Конфигурация',\n 'unobserved': 'Не подключён',\n 'pending': 'Ожидание зависимостей',\n 'loadingPhase': 'Загрузка',\n 'active': 'Подключён',\n 'failed': 'Ошибка подключения',\n 'unloading': 'Отключение',\n 'presetTitle': 'Плагины сессии',\n 'presetSubtitle': 'Собираются для каждой сессии пресетами агента',\n 'countUnit': 'плагины',\n 'switcherLabel': 'Выберите пресет агента для просмотра',\n 'presetOptionDefault': '{name} (по умолчанию)',\n 'presetOptionBroken': '{name} (не удалось загрузить)',\n 'globalTitle': 'Глобальные плагины',\n 'globalSubtitle': 'Общие для системы и всех сессий',\n 'presetProvidedDetail': 'Глобально отключён; пресеты агента включают его на уровне сессии',\n 'enabledIn': 'Включён в',\n 'viewInPreset': 'Открыть в группе пресета',\n 'matchesInOtherPresets': 'Ещё совпадений в других пресетах: {count} ',\n 'failedCountLabel': 'ошибок',\n 'conditionalTag': 'Условно',\n 'presetEnabledTag': 'Включён через пресеты',\n 'failedTag': 'Сбой',\n 'moduleLabel': 'Модуль',\n 'fromPreset': 'Из',\n 'condition': 'Отключается, когда',\n 'runtime': 'Состояние',\n },\n 'settings.plugins': {\n 'nav': 'Плагины',\n 'title': 'Плагины',\n 'intro': 'Настройка и просмотр плагинов, установленных в этой сборке.',\n 'tabs': 'Виды плагинов',\n 'configurableTab': 'Конфигурация плагинов',\n 'empty': 'Эта сборка не открывает настроек плагинов.',\n 'overridden': 'Переопределено',\n 'reset': 'Сбросить к значению по умолчанию',\n 'readOnly': 'В этой сборке настройки хранятся только для чтения.',\n 'expand': 'Показать настройки',\n 'collapse': 'Скрыть настройки',\n 'save': 'Сохранить',\n 'saving': 'Сохранение…',\n 'discard': 'Отменить изменения',\n 'unsaved': 'Не сохранено',\n 'saveFailed': 'Сборка не приняла эти значения; они оставлены для исправления.',\n 'invalidNumber': 'Введите число или оставьте поле пустым, чтобы использовать значение по умолчанию.',\n 'bashTitle': 'Терминал',\n 'bashDescription': 'Ограничения для каждой команды, которую выполняет агент.',\n 'bashTimeoutMs': 'Тайм-аут команды (мс)',\n 'bashTimeoutMsHint': 'Сколько может выполняться одна команда, прежде чем будет завершена.',\n 'bashMaxOutputBytes': 'Лимит вывода на поток (байт)',\n 'bashMaxOutputBytesHint': 'Вывод сверх лимита сохраняется во временный файл, а не теряется.',\n 'agentLoopTitle': 'Цикл агента',\n 'agentLoopDescription': 'Как агент распределяет вызовы инструментов.',\n 'agentLoopMaxParallel': 'Параллельные вызовы инструментов',\n 'agentLoopMaxParallelHint': 'Верхний предел параллельных вызовов в пределах одного шага.',\n 'webSearchTitle': 'Веб-поиск',\n 'webSearchDescription': 'Поисковый провайдер DeepSeek.',\n 'webSearchApiKey': 'API-ключ',\n 'webSearchApiKeyHint': 'Хранится вне файла настроек. Оставьте пустым, чтобы сохранить текущий ключ.',\n 'webSearchApiKeySet': 'Ключ настроен.',\n 'webSearchApiKeyUnset': 'Ключ не настроен; поиск недоступен, пока он не будет добавлен.',\n 'webSearchBaseUrl': 'Эндпоинт',\n 'webSearchBaseUrlHint': 'Оставьте пустым, чтобы использовать адрес провайдера по умолчанию.',\n 'webSearchMaxUses': 'Максимум поисков за запрос',\n 'webSearchMaxUsesHint': 'Сколько раз один запрос может искать, прежде чем должен дать ответ.',\n 'subagentModelSelectionTitle': 'Субагенты',\n 'subagentModelSelectionDescription': 'Укажите, какие модели агенты могут выбирать для субагентов.',\n 'subagentModelSelectionToggle': 'Разрешить агентам выбирать модели для субагентов',\n 'subagentModelSelectionChoose': 'При включении агенты могут выбирать провайдера, модель и уровень рассуждения для каждого субагента из авторизованных моделей ниже. Применяется только к новым сессиям.',\n 'subagentModelSelectionAllowed': 'Модели, доступные агентам для выбора',\n 'subagentModelSelectionLoading': 'Загрузка моделей…',\n 'subagentModelSelectionLoadFailed': 'Не удалось загрузить модели.',\n 'subagentModelSelectionRetry': 'Повторить',\n 'subagentModelSelectionPartial': 'Некоторые провайдеры моделей не загрузились; сохранённые выборки по-прежнему можно удалить.',\n 'subagentModelSelectionUnavailable': 'Сейчас недоступно',\n 'subagentModelSelectionUnavailableGroup': 'Сохранено, но сейчас недоступно',\n 'subagentModelSelectionEmpty': 'Ни один провайдер моделей сейчас не предлагает моделей.',\n 'subagentModelSelectionRequired': 'Перед сохранением выберите хотя бы одну модель.',\n 'subagentModelSelectionConflict': 'Настройки изменены в другом месте. Отмените черновик и повторите.',\n 'subagentModelSelectionOff': 'Субагенты используют настроенные значения по умолчанию или наследуют модель родительского агента. Сохранённые выборки моделей остаются.',\n },\n 'sidebar': {\n 'session.new': 'Новая сессия',\n 'session.new.label': 'Новая сессия',\n 'toggle.open': 'Открыть боковую панель',\n 'toggle.collapse': 'Свернуть боковую панель',\n 'panels.label': 'Глобальные панели',\n },\n 'skill': {\n 'row.title': 'Навык',\n 'row.running': 'Загрузка навыка',\n 'row.failed': 'Не удалось загрузить навык',\n 'row.stopped': 'Загрузка навыка прервана',\n 'row.instructions': 'Инструкции',\n 'row.inspect': 'Просмотр',\n 'menu.userOnly': 'только пользователь',\n },\n 'subagent': {\n 'diagnostic.corrupt': 'повреждённая запись сессии',\n 'diagnostic.unsupported': 'неподдерживаемая версия записи субагента',\n 'diagnostic.unavailable': 'запись сессии временно недоступна',\n 'duration.seconds': '{seconds} с',\n 'duration.minutes': '{minutes} мин {seconds} с',\n 'duration.hours': '{hours} ч {minutes} мин {seconds} с',\n 'duration.days': '{days} д',\n 'duration.daysHours': '{days} д {hours} ч',\n 'duration.months': '~{months} мес',\n 'duration.monthsDays': '~{months} мес {days} д',\n 'duration.years': '~{years} г',\n 'duration.yearsMonths': '~{years} г {months} мес',\n 'duration.exactDays': '{days} д {hours} ч {minutes} мин {seconds} с',\n 'duration.exactTitle': 'Общее время активности: {duration}',\n 'loading.label': 'Загрузка субагентов…',\n 'loading.aria': 'Загрузка субагентов',\n 'load.error': 'Не удалось загрузить субагентов',\n 'retry': 'Повторить',\n 'mode.oneShot': 'одноразовый',\n 'mode.continuable': 'можно продолжить',\n 'activity.running': 'выполняется',\n 'activity.inactive': 'не выполняется',\n 'branch.collapse': 'Свернуть потомков {label}',\n 'branch.expand': 'Развернуть потомков {label}',\n 'count.total.one': '{count} субагент',\n 'count.total.other': '{count} субагентов',\n 'count.running.one': '{count} субагент выполняется',\n 'count.running.other': '{count} субагентов выполняется',\n 'switcher.aria': 'Переключить субагента: {title}',\n 'tree.aria': 'Сессии субагентов',\n 'readonly.oneShot.title': 'Запись одноразового субагента',\n 'readonly.title': 'Этот субагент пока доступен только для чтения',\n 'readonly.oneShot.body': 'Одноразовые задачи не принимают продолжений; здесь можно посмотреть полную запись выполнения.',\n 'readonly.body': 'Родительская сессия сейчас не в сети; откройте её заново, чтобы продолжить отправку сообщений.',\n 'tokens.thousand': '{value} тыс.',\n 'tokens.million': '{value} млн',\n 'tokens.total': '{value} ток',\n },\n 'settings.theme': {\n 'appearance.title': 'Оформление',\n 'appearance.light': 'Светлая',\n 'appearance.dark': 'Тёмная',\n 'appearance.system': 'Как в системе',\n 'fontSize.title': 'Размер шрифта',\n 'fontSize.description': 'Влияет только на содержимое беседы',\n 'fontSize.unit': 'px',\n 'fontSize.increase': 'Увеличить размер шрифта',\n 'fontSize.decrease': 'Уменьшить размер шрифта',\n },\n 'trajectory': {\n 'view.trajectory': 'Траектория',\n 'toolbar.aria': 'Панель траектории',\n 'toolbar.duration': 'Длительность',\n 'toolbar.useActualDuration': 'Фактическая длительность',\n 'toolbar.useEqualWidth': 'Равная ширина операций',\n 'toolbar.actualTime': 'Фактическое время',\n 'toolbar.turns': 'Раунды',\n 'toolbar.expandTurns': 'Развернуть раунды',\n 'toolbar.collapseTurns': 'Свернуть раунды',\n 'toolbar.calls': 'Вызовы',\n 'toolbar.expandCalls': 'Развернуть вызовы',\n 'toolbar.collapseCalls': 'Свернуть вызовы',\n 'toolbar.search': 'Поиск по траектории',\n 'toolbar.searchPlaceholder': 'Поиск',\n 'column.input': 'Ввод',\n 'column.model': 'Модель',\n 'column.tools': 'Инструменты',\n 'status.pending': 'Ожидает',\n 'timing.notAvailable': 'Недоступно',\n 'timing.notRecorded': 'Не записано',\n 'timing.stepStartUnavailable': 'Недоступно время начала шага',\n 'timing.firstTokenUnavailable': 'Недоступно время первого токена',\n 'timing.usageUnavailable': 'Данные об использовании недоступны',\n 'timing.outputTokensUnavailable': 'Недоступно число выходных токенов',\n 'timing.durationTooShort': 'Длительность слишком мала',\n 'timing.started': 'Начало',\n 'timing.totalDuration': 'Общая длительность',\n 'timing.ttft': 'TTFT',\n 'timing.generation': 'Генерация',\n 'timing.throughput': 'Пропускная способность',\n 'timing.duration': 'Длительность',\n 'timing.source': 'Источник времени',\n 'timing.sessionTimestamps': 'Метки времени сессии',\n 'timing.sessionTimestampsRunning': 'Метки времени сессии (выполняется)',\n 'usage.input': 'Ввод',\n 'tab.tools': 'Инструменты',\n 'record.noContent': 'Нет содержимого',\n 'record.noPayload': 'Ввод не зафиксирован',\n 'record.noResult': 'Результат не зафиксирован',\n 'record.resultJson': 'Результат JSON',\n 'record.outputJson': 'Результат JSON',\n 'record.thinking': 'Рассуждение',\n 'record.tools': 'Инструменты',\n 'block.openSummaryTitle': 'Открыть сводку вызова',\n 'history.loadingEarlier': 'Загрузка более ранней истории…',\n 'history.loadingEarlierAria': 'Загрузка более ранней истории…',\n 'history.loadEarlier': 'Загрузить более раннюю историю',\n 'history.clickToLoadEarlier': 'Нажмите, чтобы загрузить более раннюю историю',\n 'details.event': 'Детали события',\n 'details.resize': 'Изменить размер панели деталей',\n 'details.resizeTitle': 'Перетащите, чтобы изменить размер. Двойной клик — сброс.',\n 'details.close': 'Закрыть детали',\n 'details.model': 'Модель',\n 'timeline.aria': 'Таймлайн траектории',\n 'timeline.overviewAria': 'Обзор таймлайна; перетаскивайте по горизонтали, чтобы фокусироваться на событиях',\n 'timeline.noTimingData': 'Нет данных о времени',\n 'timeline.total': 'Всего: {duration}',\n 'timeline.started': 'Начало: {time}',\n 'layout.toolCallOnly': 'Только вызов инструмента',\n 'kind.system': 'SYSTEM',\n 'kind.user': 'USER',\n 'kind.context': 'CONTEXT',\n 'kind.compacted': 'COMPACTED',\n 'kind.message': 'Сообщение',\n 'kind.assistant': 'ASSISTANT',\n 'kind.tool': 'TOOL',\n 'kind.subtool': 'SUBTOOL',\n 'kind.sub': 'Sub',\n 'column.output': 'Вывод',\n 'column.think': 'Размышление',\n 'column.time': 'Время',\n 'turn.label': 'Ход {turn}',\n 'section.betweenTurns': 'Между ходами',\n 'group.message': 'Сообщение',\n 'group.step': 'Шаг {step}',\n 'group.compaction': 'Сжатие {seq}',\n 'status.failed': 'Ошибка',\n 'status.completed': 'Завершено',\n 'timing.showLocalTime': 'Показать локальное время',\n 'timing.showUnixTimestamp': 'Показать Unix-метку времени',\n 'timing.request': 'Время запроса',\n 'unit.milliseconds': '{value} мс',\n 'unit.seconds': '{value} с',\n 'unit.tokens': '{value} ток',\n 'unit.tokensPerSecond': '{value} ток/с',\n 'usage.tokens': 'Токены',\n 'usage.reasoning': 'Размышление',\n 'usage.content': 'Содержимое',\n 'usage.notReported': 'Данные об использовании не сообщаются',\n 'usage.cached': 'Из кэша',\n 'usage.cacheCreated': 'Запись в кэш',\n 'usage.other': 'Прочее',\n 'usage.output': 'Выход',\n 'usage.thisRequest': 'Этот запрос',\n 'usage.sessionCumulative': 'Суммарно по сессии',\n 'options.notRecorded': 'Параметры не записаны',\n 'options.json': 'JSON параметров запроса',\n 'source.unknown': 'Неизвестно',\n 'source.user': 'Пользователь',\n 'source.plugin': 'Плагин',\n 'source.pluginNamed': 'Плагин · {plugin}',\n 'source.goal': 'Цель',\n 'source.goalRound': 'Цель · Раунд {round}',\n 'source.notRecorded': 'Источник не записан',\n 'source.messageJson': 'JSON источника сообщения',\n 'tab.summary': 'Сводка',\n 'tab.rawOutput': 'Исходный вывод',\n 'tab.preview': 'Предпросмотр',\n 'tab.raw': 'Исходный текст',\n 'tab.source': 'Источник',\n 'tab.payload': 'Запрос',\n 'tab.result': 'Результат',\n 'tab.schema': 'Схема',\n 'tab.timing': 'Время',\n 'tab.diff': 'Дифф',\n 'tab.systemPrompt': 'Системный промпт',\n 'tab.options': 'Параметры',\n 'tab.usage': 'Использование',\n 'record.toolCallOnly': '(только вызов инструмента)',\n 'record.noOutput': 'Нет вывода',\n 'record.schemaUnavailable': 'Схема недоступна',\n 'record.parameters': 'Параметры',\n 'record.json': 'JSON',\n 'record.parametersJson': 'JSON параметров',\n 'record.namedParametersJson': 'JSON параметров {name}',\n 'record.payloadJson': 'JSON запроса',\n 'record.systemPromptMissing': 'В этом запросе нет системного промпта',\n 'record.toolsMissing': 'В этом запросе нет инструментов',\n 'record.systemPrompt': 'Системный промпт',\n 'block.openSummary': 'Открыть сводку вызова инструментов для блока #{index}',\n 'block.label': 'Блок #{index} {type}',\n 'history.loadingTrajectory': 'Загрузка траектории…',\n 'request.label': 'Запрос #{request}',\n 'request.labelCompaction': 'Запрос #{request} · Сжатие',\n 'request.compaction': 'Сжатие · {section}',\n 'request.compactionPurpose': 'Сжатие',\n 'request.retryProgress': '{retry} из {maximum}',\n 'request.collapsedSummary': 'Свёрнутая сводка {kind}, {summary}',\n 'request.collapsedTurn': 'хода',\n 'request.collapsedAssistant': 'ассистента',\n 'request.rowAria': '{request}{kind}, {content}',\n 'request.rowPrefix': 'Запрос {request}, ',\n 'request.rowAriaCompaction': 'Запрос {request}, сжатие',\n 'request.noContent': 'нет содержимого',\n 'summary.toolCalls.one': '{count} вызов инструмента',\n 'summary.toolCalls.other': '{count} вызовов инструментов',\n 'summary.steps.one': '{count} шаг',\n 'summary.steps.other': '{count} шагов',\n 'details.status': 'Состояние',\n 'details.purpose': 'Назначение',\n 'details.provider': 'Провайдер',\n 'details.toolCalls': 'Вызовы инструментов',\n 'details.subtoolCalls': 'Вложенные вызовы',\n 'details.error': 'Ошибка',\n 'details.failure.auth': 'Недействительный API-ключ',\n 'details.retry': 'Повтор',\n 'details.scheduled': 'Запланирован',\n 'details.retryDelay': 'Задержка повтора',\n 'details.result': 'Результат',\n 'details.compacted': 'Сжато',\n 'details.assistantMessage': 'Сообщение ассистента',\n 'details.source': 'Источник',\n 'details.hierarchy': 'Иерархия',\n 'details.toolCall': 'Вызов инструмента',\n 'timeline.ttftDecoding': 'TTFT {ttft} · Декодирование {decoding}',\n 'layout.compacting': 'Сжатие контекста…',\n 'layout.compactionFailed': 'Сжатие не удалось',\n 'layout.compacted': 'Контекст сжат',\n 'layout.imageOnly': 'Изображения ×{count}',\n 'layout.fileAttachments': 'Файлы ×{count}',\n 'layout.initialSystemPrompt': 'Начальный системный промпт',\n 'layout.systemPromptUpdated': 'Системный промпт обновлён',\n 'layout.toolsUpdated': 'Инструменты обновлены',\n 'layout.systemPromptAndToolsUpdated': 'Системный промпт и инструменты обновлены',\n 'layout.compactionInterrupted': 'Сжатие было прервано до завершения.',\n },\n 'question': {\n 'error.incomplete': 'Сначала завершите этот вопрос.',\n 'error.unanswered': 'Выберите вариант или введите свой ответ.',\n 'nav.prev': 'Предыдущий вопрос',\n 'nav.next': 'Следующий вопрос',\n 'nav.minimize': 'Свернуть карточку вопроса',\n 'nav.maximize': 'Развернуть карточку вопроса',\n 'nav.cancel': 'Отменить все вопросы',\n 'option.recommended': 'Рекомендуется',\n 'custom.placeholder': 'Введите ваш ответ',\n 'action.skip': 'Пропустить вопрос',\n 'action.next': 'Далее',\n 'plan.header': 'План на рассмотрении',\n 'plan.approve': 'Утвердить',\n 'plan.decline': 'Отклонить',\n 'plan.discuss': 'Обсудить в чате',\n },\n 'workflowRun': {\n 'run.title': '{name}',\n 'run.members.one': '{count} участник',\n 'run.members.other': '{count} участников',\n 'run.empty': 'Участники не запущены',\n 'phase.unassigned': 'Без фазы',\n 'phase.empty': 'Пустое имя фазы',\n 'statusCount.running': 'Выполняется: {count}',\n 'statusCount.completed': 'Завершено: {count}',\n 'statusCount.failed': 'Ошибка: {count}',\n 'statusCount.cancelled': 'Отменено: {count}',\n 'statusCount.interrupted': 'Прервано: {count}',\n 'member.empty': 'Пустое имя участника',\n 'member.open': 'Открыть {name}',\n 'status.running': 'Выполняется',\n 'status.completed': 'Завершено',\n 'status.failed': 'Ошибка',\n 'status.cancelled': 'Отменено',\n 'status.interrupted': 'Прервано',\n },\n 'workspace': {\n 'group.ungrouped': 'Без группы',\n 'session.new': 'Новая сессия',\n 'section.workspaces': 'Рабочие пространства',\n 'section.sessions': 'Сессии',\n 'viewOptions.label': 'Параметры вида',\n 'groupBy.label': 'Группировка',\n 'groupBy.workspace': 'По рабочим пространствам',\n 'groupBy.flat': 'Единым списком',\n 'orderBy.label': 'Сортировка',\n 'orderBy.manual': 'Вручную',\n 'orderBy.updated': 'По обновлению',\n 'sessions.expand': 'Показать ещё {n}',\n 'sessions.collapse': 'Свернуть',\n 'empty.none': 'Пока нет сессий',\n 'empty.noMatches': 'Ничего не найдено',\n 'workspace.add': 'Добавить рабочее пространство',\n 'search.sessions.aria': 'Поиск сессий',\n 'search.placeholder': 'Поиск сессий…',\n 'search.clear': 'Очистить поиск',\n 'search.results.aria': 'Результаты поиска',\n 'search.pending': 'Поиск по истории сессий…',\n 'search.unavailable': 'Контентный поиск временно недоступен. Показываем совпадения по имени.',\n 'search.noMatches': 'Нет подходящих сессий',\n 'search.hasMore': 'Показаны первые {n}. Сузьте поиск.',\n 'menu.addWorkspace': 'Добавить рабочее пространство…',\n 'picker.loading': 'Загрузка рабочих пространств…',\n 'conflict.named': 'Рабочее пространство с именем «{name}» уже существует.',\n 'folderError.title': 'Не удалось открыть папку',\n 'folderError.retry': 'Выбрать снова',\n 'rename': 'Переименовать',\n 'rename.workspace.title': 'Переименовать рабочее пространство',\n 'rename.session.title': 'Переименовать сессию',\n 'field.workspaceName': 'Имя рабочего пространства',\n 'field.sessionName': 'Имя сессии',\n 'delete.workspace': 'Удалить рабочее пространство',\n 'delete.desc': 'Это удалит «{name}» из списка рабочих пространств. Папка и журналы сессий сохранятся; их сессии появятся в разделе «Без группы».',\n 'delete.pending': 'Удаление рабочего пространства…',\n 'menu.fork': 'Создать ответвление сессии',\n 'menu.archiveSession': 'Архивировать сессию',\n 'sessions.count.one': '{n} сессия',\n 'sessions.count.other': '{n} сессий',\n 'actions.workspace.aria': 'Действия рабочего пространства {name}',\n 'actions.session.aria': 'Действия сессии {name}',\n 'actions.newSession.aria': 'Новая сессия в {name}',\n 'status.running': 'Выполняется',\n 'status.subagentsRunning.one': '{n} субагент выполняется',\n 'status.subagentsRunning.other': '{n} субагентов выполняется',\n 'status.idle': 'Ожидает',\n 'status.waitingApproval': 'Ожидает одобрения',\n 'status.planReview': 'План на рассмотрении',\n 'status.waitingAnswer': 'Ожидает ответа',\n 'status.completed': 'Завершено',\n 'schedule.active': 'Есть активная запланированная задача',\n 'hover.created': 'Создано {time}',\n 'hover.copied': 'Скопировано',\n 'date.ymd': '{d}.{m}.{y}',\n 'time.now': 'только что',\n 'time.minutes': '{n} мин',\n 'time.hours': '{n} ч',\n 'time.days': '{n} д',\n 'time.months': '{n} мес',\n 'time.years': '{n} г',\n 'time.ago': '{t} назад',\n },\n 'agent-team': {\n 'memberStatus.running': 'Выполняется',\n 'memberStatus.idle': 'Простой',\n 'memberStatus.inactive': 'Неактивен',\n 'memberStatus.provisioning': 'Подготовка',\n 'memberStatus.failed': 'Ошибка',\n 'status.pending': 'Ожидание',\n 'status.in_progress': 'В процессе',\n 'status.completed': 'Завершено',\n 'trigger': 'Команда агентов',\n 'refresh': 'Обновить команду',\n 'close': 'Закрыть',\n 'loading': 'Загрузка команды…',\n 'empty': 'Общих задач пока нет',\n 'roster': 'Участники',\n 'tasks': 'Общие задачи',\n 'model': 'Модель',\n 'open': 'Открыть диалог с участником',\n 'create': 'Новая задача',\n 'subject': 'Тема задачи',\n 'description': 'Описание задачи',\n 'blockers': 'ID блокирующих задач (через запятую)',\n 'scopes': 'Области записи (через запятую)',\n 'save': 'Сохранить',\n 'cancel': 'Отмена',\n 'edit': 'Изменить',\n 'complete': 'Завершить',\n 'reopen': 'Открыть заново',\n 'delete': 'Удалить',\n 'owner': 'Исполнитель',\n 'unowned': 'Без исполнителя',\n 'blockedBy': 'Блокируется',\n 'writeScopes': 'Области записи',\n 'ready': 'Готово к работе',\n 'blocked': 'Заблокировано зависимостями',\n 'conflict': 'Состояние задачи изменилось, она перезагружена. Проверьте её перед повтором.',\n },\n 'cordis': {\n 'row.defineTitle': 'Зарегистрировать плагин Cordis',\n 'row.runTitle': 'Запустить плагин Cordis',\n 'row.updateTitle': 'Обновить плагин Cordis',\n 'row.stopTitle': 'Остановить плагин Cordis',\n 'row.removeTitle': 'Удалить плагин Cordis',\n 'purpose.missing': '(цель не указана)',\n 'status.idle': 'Готов',\n 'status.awaitingApproval': 'Ожидает одобрения',\n 'status.failed': 'Ошибка запуска',\n 'status.clientPending': 'Client готов к активации',\n 'status.running': 'Выполняется',\n 'status.removed': 'Удалён',\n 'status.superseded': 'Доступен более новый запуск',\n 'run.removed': 'Этого пакета больше не существует',\n 'run.superseded': 'Ниже доступна более новая карточка запуска',\n 'panel.hint': 'Управление запуском находится на панели Cordis над настройками',\n 'panel.plugins.aria': 'Плагины Cordis',\n 'panel.approvals.aria': 'Одобрения Cordis',\n 'panel.trigger': 'Плагин Cordis',\n 'panel.runningCount': '{count} в работе',\n 'panel.title': 'Плагины Cordis',\n 'panel.empty': 'Плагины ещё не определены',\n 'panel.loading': 'Чтение…',\n 'panel.readFailed': 'Не удалось прочитать список плагинов: {message}',\n 'panel.group.current': 'Эта сессия',\n 'panel.group.others': 'Другие сессии',\n 'panel.version': 'Версия',\n 'panel.current': 'Текущая: {packageId}',\n 'panel.next': 'Следующая: {packageId}',\n 'action.approve': 'Разрешить',\n 'action.approveOnce': 'Разрешить только эту версию',\n 'action.approvePlugin': 'Разрешить будущие версии этого плагина',\n 'action.decline': 'Отклонить',\n 'action.run': 'Запустить',\n 'action.stop': 'Остановить',\n 'action.remove': 'Удалить',\n 'action.retry': 'Повторить',\n 'action.rollback': 'Откатить',\n 'action.inspect': 'Просмотр',\n 'render.failedAbdicated': 'Сбой рендеринга в {slot}; восстановлен интерфейс по умолчанию:',\n 'render.failedHeld': 'Сбой рендеринга в {slot}:',\n 'a11y.defining': 'Идёт определение плагина',\n 'a11y.failed': 'Определение не удалось',\n 'a11y.stopped': 'Определение прервано',\n 'body.source': 'Исходный код плагина',\n 'body.hostCode': 'Хост',\n 'body.clientCode': 'Клиент',\n 'body.output': 'Результат',\n 'body.copy': 'Копировать',\n 'body.copied': 'Скопировано',\n },\n 'session-log-download': {\n 'header.action': 'Журнал сессии',\n 'dialog.preparingTitle': 'Экспорт сессии',\n 'dialog.preparingDescription': 'Готовится ZIP-архив с этой сессией, её подсессиями и вложениями.',\n 'dialog.successTitle': 'Загрузка сессии началась',\n 'dialog.successDescription': 'Браузер загружает ZIP-архив сессии.',\n 'dialog.errorTitle': 'Не удалось экспортировать сессию',\n 'dialog.close': 'Закрыть',\n 'dialog.commandFailed': 'Не удалось запустить экспорт сессии.',\n },\n 'chat': {\n 'view.chat': 'Чат',\n 'number.groupSeparator': ' ',\n 'duration.compactSeconds': '{seconds} с',\n 'duration.compactMinutes': '{minutes} мин {seconds} с',\n 'duration.milliseconds': '{milliseconds} мс',\n 'stats.counts': '{turns} ходов, {steps} шагов',\n 'stats.cacheHit': 'Попадание в кэш {percent}%',\n 'chat.loadingHistory': 'Загрузка истории…',\n 'chat.loadError': 'Не удалось загрузить историю: {message} ({code})',\n 'chat.loadOlder': 'Загрузить ранее',\n 'chat.toBottom': 'Вниз',\n 'chat.deepDiving': 'Глубокое исследование…',\n 'chat.turnNavigation.label': 'Навигация по ходам',\n 'chat.turnNavigation.jump': 'Перейти к ходу {turn}',\n 'chat.turnNavigation.jumpLoad': 'Загрузить и перейти к ходу {turn}',\n 'chat.turnNavigation.turn': 'Ход {turn}',\n 'settings.transcript.title': 'Отображение диалога',\n 'settings.transcript.description': 'Управляет содержимым процесса в завершённых ходах',\n 'settings.transcript.normal': 'Обычный',\n 'settings.transcript.compact': 'Компактный',\n 'fileOpen.title': 'Не удалось открыть файл',\n 'fileOpen.unknown': 'Не удалось открыть этот файл',\n 'message.extraBlock': 'Дополнительный блок содержимого',\n 'message.systemPrompt': 'Системный промпт',\n 'message.contextInjection': 'Инъекция контекста',\n 'message.contextRecall': 'Межсессонный поиск',\n 'message.referenceSummary': 'Ссылка на сессию · {labels}',\n 'message.referenceSeparator': ', ',\n 'message.context.instructions.loaded': 'загружено',\n 'message.context.instructions.added': 'добавлено',\n 'message.context.instructions.updated': 'обновлено',\n 'message.context.instructions.removed': 'удалено',\n 'message.context.catalog.replaced': 'Заменённый каталог',\n 'message.context.catalog.more': '… ещё {count}',\n 'message.context.snapshot.supersedes': 'Заменяет предыдущие снимки',\n 'message.context.relay.from': 'Из сессии {session}',\n 'message.context.recall.counts': 'Сохранено {retained} · Пропущено {omitted}',\n 'message.context.recall.truncated': 'обрезано',\n 'message.compaction': 'Контекст сжат',\n 'message.compaction.running': 'Сжатие контекста…',\n 'message.compaction.completed': 'Сжато {items} записей истории (~{tokens} токенов)',\n 'message.compaction.expand': 'Показать сводку сжатия',\n 'message.compaction.unavailable': 'Сводка сжатия недоступна',\n 'message.compaction.commandTitle': 'compact',\n 'message.think': 'Размышление',\n 'message.unknownSurface': 'Неизвестное surface-событие: {type}',\n 'message.unknownBlock': 'Неизвестный блок содержимого',\n 'message.turnProcess.toolCalls.one': '{count} вызов инструмента',\n 'message.turnProcess.toolCalls.other': '{count} вызовов инструментов',\n 'message.turnProcess.messages.one': '{count} сообщение',\n 'message.turnProcess.messages.other': '{count} сообщений',\n 'message.turnProcess.subagents.one': '{count} субагент',\n 'message.turnProcess.subagents.other': '{count} субагентов',\n 'message.turnProcess.thoughtForAWhile': 'Думал некоторое время',\n 'message.turnProcess.separator': ' · ',\n 'message.stopped': 'Остановлено',\n 'message.branch': 'Ответвить новый диалог',\n 'message.branchUnavailable': 'Доступно только на последнем сообщении завершённого хода',\n 'message.retry.active': 'Повтор запроса к модели',\n 'message.retry.cancelled': 'Повтор запроса к модели отменён',\n 'message.retry.started': 'Запрос к модели повторён',\n 'message.retry.scheduled': 'Ожидание повтора запроса к модели',\n 'message.retry.status': '{label} ({retry}/{maximum}) · {seconds} с',\n 'message.retry.delay': 'Задержка повтора: ',\n 'message.retry.failure': 'Причина сбоя: ',\n 'message.failure.auth': 'Недействительный API-ключ',\n 'message.turnError': 'Этот ход завершился с ошибкой',\n 'message.maxTokens': 'Достигнут лимит выходных токенов',\n 'message.maxTokens.hint': 'Ответ обрезан; уже выведенное сохранено в диалоге. Отправьте «продолжай», чтобы модель завершила ответ.',\n 'message.ranFor': 'Выполнялся {duration}',\n 'message.tokensPerSecond': '{tps} ток/с',\n 'message.turnUsage.title': 'Расход хода',\n 'message.turnUsage.consumed': 'Расход {total}',\n 'message.turnUsage.model': 'Провайдер / модель',\n 'message.turnUsage.cacheHit': 'Попадание в кэш',\n 'message.turnUsage.input': 'Вход без кэша',\n 'message.turnUsage.cacheRead': 'Чтение из кэша',\n 'message.turnUsage.cacheWrite': 'Запись в кэш',\n 'message.turnUsage.output': 'Выход',\n 'message.turnUsage.reasoning': ' (из них размышление {tokens})',\n 'message.turnUsage.count': '{count} ток',\n 'message.turnTime.title': 'Время и скорость хода',\n 'message.turnTime.duration': 'Общее время хода',\n 'message.turnTime.speed': 'Скорость вывода (TPS)',\n 'message.turnTime.ttft': 'Время до первого токена (TTFT)',\n 'duration.seconds': '{seconds} с',\n 'duration.minutes': '{minutes} мин {seconds} с',\n 'command.running': 'Выполняется…',\n 'command.failed': 'Команда завершилась с ошибкой',\n 'command.done': 'Завершено',\n 'command.title': 'Команда',\n 'row.running': 'Выполняется',\n 'row.failed': 'Ошибка',\n 'json.truncated': '… обрезано, всего {total} символов',\n 'clock.md': '{d}.{m}',\n 'clock.ymd': '{d}.{m}.{y}',\n 'message.systemPromptUpdate': 'Системный промпт обновлён',\n 'stats.dialog.title': 'Статистика сессии',\n 'stats.dialog.usageTitle': 'Использование токенов',\n 'stats.dialog.llmTime': 'Время модели',\n 'stats.dialog.toolTime': 'Время инструментов',\n 'stats.dialog.ttft': 'Среднее время до первого токена (TTFT)',\n 'stats.dialog.speed': 'Скорость вывода (ток./с)',\n },\n 'directory-browser': {\n 'browser.title': 'Выбор рабочего каталога',\n 'browser.home': 'Домой',\n 'browser.newFolder': 'Новая папка',\n 'browser.folderName': 'Имя папки',\n 'browser.createIn': 'Новая папка в \"{name}\"',\n 'browser.untitledFolder': 'Папка без имени',\n 'browser.create': 'Создать',\n 'browser.cancel': 'Отмена',\n 'browser.open': 'Открыть',\n 'browser.editPath': 'Изменить путь',\n 'browser.loading': 'Загрузка…',\n 'browser.truncated': 'Слишком много папок; показано только начало списка.',\n 'browser.showHidden': 'Показывать скрытые файлы',\n },\n 'open-in-app': {\n 'open.title': 'Открыть рабочую область в {app}',\n 'open.tooltip': 'Открыть локально',\n 'open.error': 'Не удалось открыть',\n 'menu.toggle': 'Выберите приложение для открытия',\n 'menu.aria': 'Открыть в',\n 'app.cursor': 'Cursor',\n 'app.vscode': 'VS Code',\n 'app.vscodeinsiders': 'VS Code Insiders',\n 'app.windsurf': 'Windsurf',\n 'app.zed': 'Zed',\n 'app.sublimetext': 'Sublime Text',\n 'app.xcode': 'Xcode',\n 'app.androidstudio': 'Android Studio',\n 'app.intellij': 'IntelliJ IDEA',\n 'app.pycharm': 'PyCharm',\n 'app.webstorm': 'WebStorm',\n 'app.phpstorm': 'PhpStorm',\n 'app.goland': 'GoLand',\n 'app.rider': 'Rider',\n 'app.rustrover': 'RustRover',\n 'app.fork': 'Fork',\n 'app.sourcetree': 'Sourcetree',\n 'app.github': 'GitHub Desktop',\n 'app.tower': 'Tower',\n 'app.gitkraken': 'GitKraken',\n 'app.smartgit': 'SmartGit',\n 'app.sublimemerge': 'Sublime Merge',\n 'app.ghostty': 'Ghostty',\n 'app.warp': 'Warp',\n 'app.iterm': 'iTerm2',\n 'app.kitty': 'kitty',\n 'app.windowsterminal': 'Windows Terminal',\n 'app.gitbash': 'Git Bash',\n 'app.gnometerminal': 'GNOME Terminal',\n 'app.konsole': 'Konsole',\n 'app.finder': 'Finder',\n 'app.explorer': 'Проводник',\n 'app.filemanager': 'Файлы',\n 'app.terminal': 'Терминал',\n },\n 'sidebarCodePreview': {\n 'code.copied': 'Скопировано',\n 'code.copy': 'Копировать',\n 'error.notFound': 'Файл не найден. Возможно, он перемещён или удалён.',\n 'error.notRegularFile': 'Это не обычный файл, показывать нечего.',\n 'error.notText': 'Это не текстовый файл, предпросмотр пока недоступен.',\n 'error.tooLarge': 'Страница превышает лимит {limit} и не может быть прочитана.',\n 'error.unavailable': 'Не удалось прочитать: {message}',\n 'footnotes': 'Сноски',\n 'viewer.label': 'Markdown',\n 'viewer.text': 'Обычный текст',\n 'wrap.aria': 'Перенос строк',\n 'wrap.disable': 'Отключить перенос строк',\n 'wrap.enable': 'Включить перенос строк',\n },\n 'sidebarFiles': {\n 'entry.other': 'Это не файл и не каталог, открыть нельзя.',\n 'error.notDirectory': 'Это не каталог.',\n 'error.notFound': 'Каталог исчез. Возможно, он перемещён или удалён.',\n 'error.outsideWorkspace': 'Каталог вне рабочей области, боковая панель его не читает.',\n 'error.unavailable': 'Не удалось прочитать: {message}',\n 'guide.description': 'Просмотр файлов рабочей области этой сессии',\n 'guide.title': 'Файлы рабочей области',\n 'type.label': 'Файлы',\n },\n 'sidebarRight': {\n 'chrome.collapse': 'Свернуть боковую панель',\n 'chrome.collapseAria': 'Свернуть правую боковую панель',\n 'chrome.exitFullscreen': 'Выйти из полноэкранного режима',\n 'chrome.expand': 'Открыть боковую панель',\n 'chrome.expandAria': 'Открыть правую боковую панель',\n 'chrome.toFullscreen': 'Во весь экран',\n 'dock.addTab': 'Новая вкладка',\n 'dock.closeFloat': 'Закрыть',\n 'dock.closeTab': 'Закрыть',\n 'dock.dockFloat': 'Вернуть в боковую панель',\n 'dock.drop.bottom': 'Добавить нижнюю область',\n 'dock.drop.center': 'Переместить сюда',\n 'dock.drop.left': 'Добавить область слева',\n 'dock.drop.right': 'Добавить область справа',\n 'dock.drop.top': 'Добавить верхнюю область',\n 'dock.emptyPane': 'Пустая область',\n 'dock.splitPane': 'Разделить',\n 'dock.splitPaneDisabled': 'Максимум две области',\n 'dock.splitPaneNarrow': 'Недостаточно ширины для разделения — расширьте боковую панель',\n 'tab.guide.title': 'Начало',\n 'tab.unavailable': 'Пока ничто здесь не умеет отображать такой контент.',\n },\n}\n","/**\n * Russian (ru) language pack, browser half. Registers `ru` as an external\n * selectable language and contributes a `ru` dictionary for every client\n * locale namespace, following the language-pack pattern from\n * `@deepseek-ai/dsh-client-locale` (addLanguage + per-locale register).\n */\nimport type { Context as ClientContext } from '@deepseek-ai/cordis'\nimport type {} from '@deepseek-ai/dsh-client-locale/client'\nimport { RU_DICTS, RU_LABEL } from './dicts.ts'\n\n/** Required service: the locale registry that owns languages and dictionaries. */\nexport const inject = ['locale']\n\n/**\n * Client plugin body: add `ru` to the selectable language catalog and register\n * a ru dictionary for every namespace this pack contributes. Registration is\n * an effect, so the contributed language and dictionaries are torn down with\n * this plugin's fiber.\n * @param ctx - client root context.\n */\nexport function apply(ctx: ClientContext): void {\n ctx.effect(\n () => ctx.locale.addLanguage({ id: 'ru', label: RU_LABEL, fallback: 'en' }),\n 'locale-ru: language',\n )\n for (const [ns, dict] of Object.entries(RU_DICTS)) {\n ctx.effect(() => ctx.locale.register(ns, 'ru', dict), `locale-ru: ${ns} dictionary`)\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"client.js","names":[],"sources":["../src/client/dicts.ts","../src/client/index.ts"],"sourcesContent":["/**\n * Russian (ru) dictionaries, one entry per locale namespace.\n * Key sets mirror each namespace's zh/en dictionaries at the profiled\n * base commit; any key added upstream later falls back to en at lookup.\n */\n\nexport const RU_LABEL = 'Русский'\n\nexport const RU_DICTS: Record<string, Record<string, string>> = {\n 'common': {\n 'ok': 'ОК',\n 'cancel': 'Отмена',\n 'close': 'Закрыть',\n 'copy': 'Копировать',\n 'copied': 'Скопировано',\n 'copy.failed': 'Не удалось скопировать',\n 'copy.value': 'Копировать значение',\n 'copy.json': 'Копировать JSON',\n 'copy.path': 'Копировать путь',\n 'copy.prettyJson': 'Копировать красивый JSON',\n 'copy.compactJson': 'Копировать компактный JSON',\n 'copy.optionsHint': '{action}; правый клик — варианты копирования',\n 'retry': 'Повторить',\n 'loading': 'Загрузка…',\n 'load.failed': 'Не удалось загрузить',\n 'submit': 'Отправить',\n 'submitting': 'Отправка…',\n 'next': 'Далее',\n 'previous': 'Предыдущий',\n 'skip': 'Пропустить',\n 'delete': 'Удалить',\n 'edit': 'Изменить',\n 'save': 'Сохранить',\n 'search': 'Поиск',\n 'more': 'Ещё',\n 'collapse': 'Свернуть',\n 'expand': 'Развернуть',\n 'back': 'Назад',\n 'brand.localBuild': 'Локальная сборка DSH',\n 'unknown': 'Неизвестно',\n 'none': 'Нет',\n 'truncated': 'Обрезано',\n 'json.label': 'JSON',\n 'markdown.footnotes': 'Сноски',\n 'markdown.truncatedCharacters': '… обрезано на {total} символах',\n 'number.thousand': '{value} тыс.',\n 'number.million': '{value} млн',\n },\n 'settings.locale': {\n 'language.title': 'Язык',\n },\n 'settings.agentPreset': {\n 'error': 'Не удалось загрузить пресеты агента.',\n 'userTrust': 'Свой',\n 'seatHint': 'Пресет агента для сессии, которую вы собираетесь начать',\n 'headerHint': 'Пресет агента, с которым работает эта сессия; фиксируется при запуске',\n 'nav': 'Пресеты агента',\n 'sectionIntro': 'Пресет — это композиция плагинов, с которыми работает агент сессии: его инструменты, промпт и возможности. Скопируйте существующий пресет и настройте под себя или позвольте агенту составить его в режиме Creator.',\n 'builtIn': 'Встроенные',\n 'setDefault': 'Сделать пресетом по умолчанию',\n 'view': 'Просмотр',\n 'presetStandardName': 'Стандартный режим',\n 'presetStandardDescription': 'Полноценный агент-программист: редактирование файлов, shell, поиск по файлам и в вебе, навыки, планирование, цели, субагенты и воркфлоу.',\n 'presetPtcName': 'Режим кода',\n 'presetMinimalName': 'Минимальный режим',\n 'presetMinimalDescription': 'Агент-программист из двух инструментов: постоянный bash и str_replace_editor.',\n 'presetCordisName': 'Режим Creator',\n 'presetCordisDescription': 'Создан для разработки собственных пресетов: все возможности стандартного режима плюс инспекция на лету, эксперименты с плагинами и подсказки по созданию пресетов.',\n 'duplicate': 'Дублировать',\n 'duplicateUnavailable': 'В этой сборке нет каталога пресетов для записи',\n 'delete': 'Удалить',\n 'presetId': 'Идентификатор',\n 'presetIdPlaceholder': 'my-agent',\n 'displayName': 'Название',\n 'displayNamePlaceholder': 'Показывается в выборе; по умолчанию — идентификатор',\n 'inUse': 'По умолчанию для новых задач',\n 'builtInGroup': 'Встроенные',\n 'customGroup': 'Свои',\n 'noDescription': 'Нет описания.',\n 'brokenBadge': 'Не удалось загрузить',\n 'brokenNoCopy': 'Пресет, который не удалось загрузить, нельзя дублировать',\n 'copyOf': 'Копия из',\n 'composition': 'Композиция (agent.cordis.yml)',\n 'cancel': 'Отмена',\n 'close': 'Закрыть',\n 'retry': 'Повторить',\n 'copyTitle': 'Дублировать пресет',\n 'copyIntro': 'Пресет целиком копируется на этом компьютере. Идентификатор становится именем каталога и не меняется впоследствии; всё остальное редактируется в файлах самого пресета.',\n 'create': 'Создать',\n 'creating': 'Создание…',\n 'creatorDraft': 'Составить свой пресет в режиме Creator',\n 'openLocation': 'Открыть папку',\n 'showLocation': 'Показать путь',\n 'revealedPathLabel': 'Файлы пресета:',\n 'idRequired': 'Укажите идентификатор пресета.',\n 'idInvalid': 'Используйте строчные буквы, цифры и дефисы, начиная с буквы или цифры.',\n 'idTaken': 'Пресет с таким идентификатором уже существует.',\n 'deleteTitle': 'Удалить этот пресет?',\n 'deleteDescription': 'Каталог пресета будет удалён. Сессии, которые уже работают на нём, продолжат работу; новые сессии не смогут его выбрать.',\n 'deleteConfirm': 'Удалить',\n 'deleting': 'Удаление…',\n 'presetPtcDescription': 'Полноценный агент-программист без инструмента workflow; остальные инструменты доступны через SDK режима PTC, поэтому модель может объединять многошаговые операции в одну программу на TypeScript.',\n 'switchRefused': 'Не удалось переключить на «{name}»: {reason}',\n 'selectionOffDefault': 'По умолчанию',\n 'showPicker': 'Разрешить переключение режимов агента',\n 'showPickerBeta': 'Бета',\n 'showPickerDescription': 'Если включено, новые задачи смогут выбирать режимы «Стандартный», PTC, «Создатель», «Минимальный» и свои. Если выключено, все новые задачи используют режим по умолчанию («Стандартный», если не настроено иное). Влияет только на новые задачи.',\n 'enablePickerToSetDefault': 'Включите выбор режима агента, чтобы задать режим по умолчанию',\n 'enablePickerToCreate': 'Включите выбор режима агента, чтобы запускать режим «Создатель»',\n },\n 'approval': {\n 'detail.aria': 'Детали запроса',\n 'waiting': 'Ожидает одобрения',\n 'escalation': 'Инструмент {toolName} запрашивает привилегированное выполнение',\n 'reject': 'Отклонить',\n 'allowOnce': 'Разрешить один раз',\n },\n 'command': {\n 'search.placeholder': 'Поиск…',\n 'search.aria': 'Фильтр вариантов',\n 'status.loading': 'Загрузка вариантов…',\n 'status.applying': 'Применение…',\n 'status.empty': 'Нет вариантов',\n 'overlay.aria': 'Варианты /{command}',\n 'listbox.aria': 'Совпадения /{command}',\n 'notice.attachmentsUnsupported': '/{command} не принимает вложения; сначала удалите их',\n 'description.compact': 'Сжать историю старых сообщений',\n 'description.export': 'Скачать журнал этой сессии как ZIP-архив',\n 'description.feedback': 'Оставить отзыв об этой сессии',\n 'description.goal': 'Задать или посмотреть цель долгой задачи',\n 'description.permission': 'Переключить пресет разрешений (режим песочницы + политика подтверждений)',\n 'description.plan': 'Войти в режим планирования или выйти из него',\n 'section.add': 'Добавить',\n 'section.commands': 'Команды',\n 'label.goal': 'Цель',\n 'label.plan': 'План',\n 'label.feedback': 'Отзыв',\n 'label.compact': 'Сжатие',\n 'label.permission': 'Права',\n 'label.export': 'Экспорт',\n 'token.goal': 'цель',\n 'token.plan': 'план',\n 'token.feedback': 'отзыв',\n 'token.compact': 'сжатие',\n 'token.permission': 'права',\n 'token.export': 'экспорт',\n },\n 'conversation': {\n 'hint.plan': 'опишите вашу задачу, чтобы составить план',\n 'hint.goal': 'опишите цель для длительной задачи',\n 'hint.goal.active': 'цель активна — edit / pause / resume / clear',\n 'placeholder.plan': 'опишите вашу задачу, чтобы составить план',\n 'placeholder.default': 'Сообщение или задача; «/» — команды, «@» — файлы и сессии',\n 'placeholder.unavailable': 'Сессия недоступна',\n 'placeholder.parentOffline': 'Родительская сессия офлайн: отправка недоступна, но вы можете остановить выполнение',\n 'placeholder.hero': 'Опишите, что нужно сделать; «/» — команды, «@» — файлы и сессии',\n 'placeholder.workspace': 'Выберите рабочее пространство, чтобы начать',\n 'placeholder.steerQueue': 'Cmd/Ctrl+Enter — отправить все сообщения из очереди',\n 'input.commands': 'Добавить файлы или выполнить команды',\n 'input.stop': 'Остановить генерацию',\n 'input.send': 'Отправить сообщение',\n 'attachment.pending': 'Вложения ожидают отправки',\n 'attachment.scrollLeft': 'Прокрутить вложения влево',\n 'attachment.scrollRight': 'Прокрутить вложения вправо',\n 'attachment.dropTitle': 'Перетащите файлы или изображения сюда, чтобы добавить их',\n 'attachment.dropDesc': 'Изображения: до {count} шт., каждое до {size}',\n 'attachment.dropBlocked': 'Сейчас нельзя добавить файлы или изображения',\n 'image.pending': 'Изображения ожидают отправки',\n 'image.openOriginal': 'Открыть оригинал',\n 'image.openOriginalLabel': '{label}, нажмите, чтобы открыть оригинал',\n 'image.remove': 'Удалить изображение {name}',\n 'image.original': 'Оригинал',\n 'image.label': 'Изображение',\n 'image.loadFailed': 'Не удалось загрузить изображение; нажмите, чтобы повторить',\n 'image.loading': 'Загрузка изображения…',\n 'image.preview': 'Просмотр оригинала',\n 'image.closePreview': 'Закрыть просмотр оригинала',\n 'image.unsupportedType': 'Поддерживаются только изображения PNG, JPG, WebP и GIF',\n 'image.tooMany': 'Сообщение может содержать до {count} изображений',\n 'image.fileTooLarge': 'Каждое изображение должно быть меньше {size}',\n 'image.totalTooLarge': 'Суммарный размер изображений превышает {size}; удалите часть и повторите',\n 'image.tooManyPixels': 'Разрешение изображения слишком высокое; сожмите его и повторите',\n 'image.dimensionTooLarge': 'Стороны изображения не должны превышать {size}px; уменьшите его и повторите',\n 'image.modelUnsupported': 'Текущая модель не поддерживает изображения; переключитесь на модель с их поддержкой',\n 'image.sendFailed': 'Не удалось отправить изображения ({reason}); добавьте их заново и повторите',\n 'file.pending': 'Файлы ожидают отправки',\n 'file.remove': 'Удалить файл {name}',\n 'file.uploading': 'Загрузка…',\n 'file.uploadFailed': 'Не удалось загрузить; нажмите, чтобы повторить',\n 'file.retry': 'Повторить загрузку {name}',\n 'file.stillUploading': 'Файлы ещё загружаются; дождитесь окончания загрузки',\n 'file.sessionUnavailable': 'Сессия недоступна: загрузка файлов невозможна',\n 'file.notStaged': 'Файл ещё не загружен полностью; добавьте его заново',\n 'file.label': 'Файл',\n 'context.aria': 'Использовано {percent} контекста',\n 'context.used': 'контекста использовано',\n 'context.system': 'Системный промпт',\n 'context.tools': 'Определения инструментов',\n 'context.messages': 'Сообщения',\n 'settings.enter.title': 'Поведение отправки во время работы агента',\n 'settings.enter.description': 'Что делают Enter и кнопка отправки, пока агент работает; Cmd/Ctrl+Enter использует другое поведение',\n 'settings.enter.queue': 'В очередь',\n 'settings.enter.steer': 'Отправить сразу',\n 'hero.headline': 'К неизведанному',\n 'hero.preview': 'Предпросмотр',\n 'hero.chooseWorkspace': 'Выбрать рабочее пространство',\n 'session.hierarchy': 'Иерархия сессий',\n 'todo.title': 'Задачи',\n 'todo.progress.done': '{done} выполнено',\n 'todo.progress.active': '{active} в процессе',\n 'todo.progress.pending': '{pending} ожидает',\n 'todo.rowTitle': 'Обновить список задач',\n 'todo.completed': '{done}/{total} выполнено',\n 'command.attachmentsUnsupported': '/{command} не принимает вложения; сначала удалите их',\n 'ask.rowTitle': 'Задать вопрос',\n 'ask.waiting': 'ожидание',\n 'ask.cancelled': 'отменено',\n 'ask.cancelledDetail': 'Этот набор вопросов был отменён до отправки ответов.',\n 'ask.interrupted': 'прервано',\n 'ask.interruptedDetail': 'Этот набор вопросов был прерван до отправки ответов.',\n 'ask.answered': '{answered}/{total} отвечено',\n 'ask.skipped': 'Не отвечено',\n 'bash.running': 'Выполняется',\n 'bash.failed': 'Ошибка',\n 'bash.stopped': 'Остановлено',\n 'row.running': 'Выполняется',\n 'row.failed': 'Ошибка',\n 'row.stopped': 'Остановлено',\n 'row.input': 'ВВОД',\n 'row.output': 'ВЫВОД',\n 'row.inspect': 'Просмотр',\n 'tool.title.search': 'Поиск',\n 'tool.title.read': 'Чтение',\n 'tool.title.bash': 'Bash',\n 'tool.title.write': 'Запись',\n 'tool.title.edit': 'Правка',\n 'tool.title.code': 'Код',\n 'tool.title.generic': 'Вызов инструмента',\n 'tool.title.inspect': 'Просмотр',\n 'tool.title.runCordis': 'Запустить плагин Cordis',\n 'tool.title.stopCordis': 'Остановить плагин Cordis',\n 'tool.title.removeCordis': 'Удалить плагин Cordis',\n 'tool.title.pwsh': 'Pwsh',\n 'tool.title.readImage': 'Прочитать изображение',\n 'tool.title.grep': 'Grep',\n 'tool.title.glob': 'Glob',\n 'tool.title.webSearch': 'Поиск',\n 'tool.title.webFetch': 'Запрос',\n 'diff.files.one': '{count} файл',\n 'diff.files.other': '{count} файлов',\n 'diff.collapseAria': 'Свернуть изменения',\n 'diff.expandAria': 'Показать ещё {count} строк изменений',\n 'diff.expandRest': '… ещё {count} строк',\n 'read.window': 'Показано {shown} из {total} строк',\n 'read.collapseAria': 'Свернуть содержимое',\n 'read.expandAria': 'Показать ещё {count} строк',\n 'read.expandRest': '… ещё {count} строк',\n 'search.paths': '{shown} путей',\n 'search.paths.truncated': 'Показано {shown} из {total} путей',\n 'search.matches': '{shown} совпадений · {files} файлов',\n 'search.matches.truncated': 'Показано {shown} из {total} совпадений · {files} файлов',\n 'search.noResults': 'Ничего не найдено',\n 'search.collapseAria': 'Свернуть результаты',\n 'search.expandAria': 'Показать ещё {count} строк результатов',\n 'search.expandRest': '… ещё {count} строк',\n 'web.noResults': 'Ничего не найдено',\n 'web.sourcesTruncated': 'Список источников обрезан',\n 'web.http': 'HTTP',\n 'web.contentTruncated': 'Содержимое обрезано',\n 'details.running': 'Выполняется…',\n 'queue.count': 'В очереди: {n}',\n 'queue.image': 'Изображение в очереди сообщения',\n 'queue.file': 'Файл {name} в очереди',\n 'queue.edit': 'Изменить сообщение из очереди',\n 'queue.edit.unsupported': 'Содержит нетекстовый контент; редактирование пока не поддерживается',\n 'queue.save': 'Сохранить сообщение из очереди',\n 'queue.cancelEdit': 'Отменить редактирование',\n 'queue.remove': 'Удалить сообщение из очереди',\n 'queue.steer': 'Отправить сразу',\n 'queue.steer.unavailable': 'Отправка сразу доступна только пока агент работает',\n 'queue.editFailed': 'Не удалось изменить: сообщение могло уже начать отправляться.',\n 'queue.removeFailed': 'Не удалось удалить: сообщение могло уже начать отправляться.',\n 'queue.steerFailed': 'Не удалось отправить сразу. Повторите попытку.',\n 'terminal.signal': 'сигнал {signal}',\n 'terminal.exitCode': 'код выхода {code}',\n 'terminal.running': 'Выполняется',\n 'terminal.failed': 'Ошибка',\n 'terminal.done': 'Готово',\n 'terminal.noOutput': 'Нет вывода',\n 'terminal.collapseAria': 'Свернуть вывод',\n 'terminal.expandAria': 'Развернуть оставшиеся строки вывода ({n})',\n 'terminal.expandRest': '… ещё строк: {n}',\n 'terminal.sendInput': '(отправить ввод)',\n 'terminal.session': 'Терминал {sessionId}',\n 'input.send.queue': 'Отправить в очередь',\n 'input.send.steer': 'Отправить сразу',\n 'queue.sending': 'Отправка…',\n 'input.file': 'Файл',\n 'tool.autoReviewRejected': 'Отклонено автопроверкой',\n 'tool.autoReviewNotExecuted': 'Инструмент не выполнен. Причина: {reason}',\n 'tool.autoReviewReasonFallback': 'Автопроверка не разрешила это действие',\n },\n 'deliverables': {\n 'produced.label': 'Изменённые файлы',\n 'produced.moreOne': '+ 1 файл',\n 'produced.more': '+ {count} файлов',\n 'produced.open': 'Открыть {name}',\n 'presented.action': 'Открыть',\n 'presented.all': 'Все файлы: {count}',\n 'presented.collapse': 'Свернуть',\n 'presented.collapseAria': 'Свернуть список созданных файлов',\n 'presented.defaultApp': 'Открыть в приложении по умолчанию',\n 'presented.directory': 'Открыть папку с файлом',\n 'presented.directoryError': 'Не удалось открыть папку с файлом. Повторите.',\n 'presented.directoryOpened': 'Запрошено открытие папки с файлом',\n 'presented.directoryOpening': 'Открываем папку с файлом…',\n 'presented.error': 'Не удалось открыть. Нажмите, чтобы повторить.',\n 'presented.expandAria': 'Показать все созданные файлы ({count})',\n 'presented.explorer': 'Показать в Проводнике',\n 'presented.file': 'Файл',\n 'presented.finder': 'Показать в Finder',\n 'presented.hostError': 'Не удалось прочитать сведения о рабочем столе хоста',\n 'presented.more': 'Другие действия с файлом {name}',\n 'presented.nativeUnavailable': 'У этого файла нет доступного пути на хосте. Откройте его в боковой панели.',\n 'presented.opened': 'Открыто в приложении по умолчанию',\n 'presented.opening': 'Открываем…',\n 'presented.preview': 'Просмотр в боковой панели',\n 'presented.previewButton': 'Открыть {name} в боковой панели',\n 'presented.previewCard': 'Просмотреть {name} в боковой панели',\n 'presented.retry': 'Повторить',\n 'presented.revealed': 'Запрошен показ в файловом менеджере',\n 'presented.revealError': 'Не удалось показать в файловом менеджере. Повторите.',\n 'presented.revealing': 'Показываем в файловом менеджере…',\n 'presented.unavailable': 'На этом хосте нет рабочего стола, чтобы открывать файлы или папки',\n 'row.error': 'Доставка не удалась',\n 'row.inspect': 'Просмотреть вызов',\n 'row.ok': 'Доставлено',\n 'row.running': 'Доставляем',\n 'row.stopped': 'Прервано',\n 'row.title': 'Созданные файлы',\n },\n 'goal': {\n 'phase.active': 'Активная цель',\n 'phase.paused': 'Приостановленная цель',\n 'phase.blocked': 'Заблокированная цель',\n 'objective.aria': 'Содержимое цели',\n 'commandInput.aria': 'Ввод команды',\n 'action.save': 'Сохранить цель',\n 'action.cancel': 'Отменить правку',\n 'action.pause': 'Приостановить цель',\n 'action.resume': 'Возобновить цель',\n 'action.edit': 'Изменить цель',\n 'action.clear': 'Удалить цель',\n 'phase.active.disarmed': 'Цель неактивна',\n },\n 'slash.menu': {\n 'command': 'Команды',\n 'skill': 'Навыки',\n 'subagent': 'Субагенты',\n 'loading': 'Загрузка…',\n 'drill.aria': 'Обзор папки',\n 'drill.hint': 'Обзор папки',\n 'drill.key': 'Tab',\n 'crumbs.aria': 'Навигация по папкам',\n 'suggestions.aria': 'Возможные варианты по триггеру',\n },\n 'job': {\n 'count.live.one': '{count} фоновая задача выполняется',\n 'count.live.other': '{count} фоновых задач выполняется',\n 'count.idle.one': '{count} фоновая задача',\n 'count.idle.other': '{count} фоновых задач',\n 'list.aria': 'Фоновые задачи',\n 'status.running': 'выполняется',\n 'status.stopping': 'останавливается',\n 'status.completed': 'завершена',\n 'status.killed': 'отменена',\n 'status.failed': 'ошибка',\n 'duration.seconds': '{seconds} с',\n 'duration.minutes': '{minutes} мин {seconds} с',\n 'duration.hours': '{hours} ч {minutes} мин',\n 'duration.title.live': 'Выполняется {duration}',\n 'duration.title.done': 'Заняло {duration}',\n },\n 'feedback': {\n 'action.like': 'Хороший ответ',\n 'action.likeActive': 'Снять оценку',\n 'action.dislike': 'Плохой ответ',\n 'action.dislikeActive': 'Снять оценку',\n 'error.conflict': 'Этот отзыв изменён в другом месте; показано актуальное состояние',\n 'error.load': 'Не удалось загрузить отзыв',\n 'error.generic': 'Не удалось сохранить отзыв',\n 'category.instruction-following': 'Понимание и выполнение инструкций',\n 'category.other': 'Другое',\n 'category.product-interaction': 'Возможности продукта и взаимодействие',\n 'category.resource-cost': 'Расход ресурсов и стоимость',\n 'category.security-privacy-permission': 'Безопасность, приватность и разрешения',\n 'category.service-stability': 'Стабильность сервиса',\n 'category.task-result': 'Результат задачи',\n 'dialog.categories': 'Категория отзыва',\n 'dialog.detail': 'Подробности отзыва',\n 'dialog.hint': 'Добавьте подробности, чтобы помочь нам стать лучше. В отправку войдёт журнал текущего диалога.',\n 'dialog.title': 'Отправить отзыв',\n 'error.noteTooLarge': 'Описание слишком длинное; сократите его и отправьте снова',\n 'toast.recorded': 'Спасибо за отзыв',\n },\n 'model': {\n 'command.description': 'Выбор модели для этого диалога',\n 'option.loadError': 'Не удалось загрузить каталог: {message}',\n 'trigger.fallback': 'Выбрать модель',\n 'trigger.loading': 'Загрузка моделей…',\n 'trigger.selectAria': 'Выбрать модель',\n 'trigger.aria': 'Выбрать модель, сейчас {model}',\n 'trigger.ariaEffort': 'Выбрать модель, сейчас {model}, уровень рассуждения {effort}',\n 'menu.aria': 'Модель и уровень рассуждения',\n 'menu.model': 'Модель',\n 'menu.effort': 'Уровень рассуждения',\n 'effort.providerDefault': 'По умолчанию',\n 'status.loading': 'Обновление списка моделей…',\n 'error.action': 'Не удалось выполнить операцию с моделью: {message}',\n 'action.reload': 'Перезагрузить',\n 'warning.groupLoad': 'Не удалось загрузить {name}: {message}',\n 'empty.models': 'Нет доступных моделей.',\n 'blocked.composer': 'Эта модель недоступна — выберите другую, чтобы продолжить',\n 'empty.efforts': 'У этой модели нет уровней рассуждения.',\n 'option.deepseekV4Flash.description': 'Быстрая, эффективная и экономная; подходит для сосредоточенных, рутинных или параллельных задач.',\n 'option.deepseekV4Pro.description': 'Усиленное агентное программирование, знания и сложные рассуждения; для комплексных или критичных к качеству задач с большей стоимостью.',\n 'command.label': 'Модель',\n },\n 'settings.permission': {\n 'title': 'Права доступа',\n 'description': 'Выберите режим прав по умолчанию для новых сессий',\n 'loading': 'Загрузка',\n 'unavailable': 'Недоступно',\n 'preset.readOnly': 'Только чтение',\n 'preset.workspaceWrite': 'Запись в рабочую папку',\n 'preset.fullAccess': 'Полный доступ',\n 'confirm.title': 'Включить «Полный доступ»?',\n 'confirm.description': '«Полный доступ» позволяет новым сессиям пропускать шаги подтверждения и выполнять больше действий напрямую, включая чувствительные операции, изменение файлов или внешние команды. Используйте его, только если доверяете последующим задачам.',\n 'confirm.acknowledge': 'Я понимаю риски и хочу продолжить',\n 'confirm.cancel': 'Отмена',\n 'confirm.enable': 'Включить «Полный доступ»',\n },\n 'permission.access': {\n 'preset.readOnly': 'Только чтение',\n 'preset.workspaceWrite': 'Запись в рабочую папку',\n 'preset.fullAccess': 'Полный доступ',\n 'confirm.title': 'Включить «Полный доступ»?',\n 'confirm.description': '«Полный доступ» уменьшает число этапов подтверждения и позволяет агенту напрямую выполнять больше действий, включая чувствительные операции, изменение файлов или внешние команды. Используйте его, только если доверяете текущей задаче.',\n 'confirm.acknowledge': 'Я понимаю риски и хочу продолжить',\n 'confirm.cancel': 'Отмена',\n 'confirm.enable': 'Включить «Полный доступ»',\n 'mode': 'Режим доступа, сейчас: {name}',\n 'close': 'Закрыть',\n 'auto.label': 'Автопроверка',\n 'auto.badge': 'ЭКСП',\n 'auto.description': 'Работа без песочницы после экспериментальной проверки той же моделью каждого вызова нативного инструмента и внутреннего вызова PTC.',\n 'auto.confirm.title': 'Включить автопроверку (экспериментально)?',\n 'auto.confirm.description': 'Автопроверка работает без песочницы. Перед каждым вызовом нативного инструмента и внутренним вызовом PTC та же модель, что и у текущего агента, решает, разрешить ли его. Возможность экспериментальная: она может ошибочно разрешить или запретить действие и расходует дополнительные токены.',\n 'auto.confirm.acknowledge': 'Я понимаю эти риски и хочу продолжить',\n 'auto.confirm.enable': 'Включить автопроверку',\n },\n 'plan': {\n 'chip.label': 'План',\n 'chip.on.aria': 'Режим планирования включён, нажмите, чтобы выключить',\n 'chip.on.title': 'Режим планирования включён — нажмите, чтобы выключить (/plan off)',\n 'chip.off.aria': 'Режим планирования выключен, нажмите, чтобы включить',\n 'chip.off.title': 'Режим планирования выключен — нажмите, чтобы включить (/plan)',\n 'chip.exitFailed': 'Не удалось выйти из режима планирования',\n },\n 'reference': {\n 'section.files': 'Файлы и папки',\n 'section.sessions': 'Сессии',\n 'candidate.noCwd': '(нет рабочей папки)',\n 'crumb.root': 'Рабочая папка',\n 'time.now': 'сейчас',\n 'time.minutes': '{n} мин',\n 'time.hours': '{n} ч',\n 'time.days': '{n} д',\n 'time.months': '{n} мес',\n 'time.years': '{n} г',\n },\n 'schedule.catalog': {\n 'trigger.one': '{count} напоминание',\n 'trigger.other': '{count} напоминаний',\n 'list.aria': 'Активные напоминания',\n 'status.scheduled': 'Запланировано',\n 'status.overdue': 'Просрочено',\n 'frequency.once': 'Однократно',\n 'frequency.every': 'Каждые {value} {unit}',\n 'unit.day.one': 'день',\n 'unit.day.other': 'дней',\n 'unit.hour.one': 'час',\n 'unit.hour.other': 'часов',\n 'unit.minute.one': 'минута',\n 'unit.minute.other': 'минут',\n 'unit.second.one': 'секунда',\n 'unit.second.other': 'секунд',\n 'relative.now': 'Срок наступил',\n 'relative.future': 'через {value} {unit}',\n 'relative.overdue': 'Просрочено на {value} {unit}',\n },\n 'settings': {\n 'trigger': 'Настройки',\n 'title': 'Настройки',\n 'close': 'Закрыть',\n 'openDocument': 'Открыть файл конфигурации',\n 'openDocument.error': 'Не удалось открыть файл конфигурации',\n 'general.nav': 'Основные',\n 'connection.error': 'Отключено',\n 'connection.connecting': 'Переподключение',\n 'connection.connected': 'Подключено',\n 'connection.reconnect': 'Отключено, подключиться сейчас',\n 'connection.restart': 'Переподключение, подключиться сейчас',\n },\n 'settings.models': {\n 'nav': 'Модели',\n 'title': 'Модели',\n 'intro': 'Введите API-ключи, чтобы использовать модели указанных провайдеров.',\n 'edit': 'Изменить',\n 'editProvider': 'Изменить {provider}',\n 'remove': 'Удалить',\n 'removeProvider': 'Удалить {provider}',\n 'deleteTitle': 'Удалить {provider}?',\n 'deleteDescription': 'Удаление {provider} уберёт его конфигурацию. Используемые им учётные данные управляются отдельно и будут сохранены.',\n 'deleteDescriptionWithCredential': 'Удаление {provider} уберёт его конфигурацию и сохранённый API-ключ.',\n 'deleteConfirm': 'Удалить {provider}',\n 'deleting': 'Удаление {provider}…',\n 'add': 'Добавить провайдера',\n 'provider': 'Провайдер',\n 'close': 'Закрыть',\n 'cancel': 'Отмена',\n 'apply': 'Применить',\n 'applying': 'Применение…',\n 'savedProvider': 'Сохранено: {provider}.',\n 'credentialConfigured': 'API-ключ настроен',\n 'credentialMissing': 'API-ключ отсутствует',\n 'readOnly': 'Документ настроек в этой сборке доступен только для чтения.',\n 'loadFailed': 'Не удалось загрузить каталог провайдеров',\n 'conflict': 'Пока эта карточка была открыта, настройки изменились в другом месте. Закройте её и откройте заново, чтобы редактировать актуальные значения.',\n 'retry': 'Повторить',\n 'keyInput': 'API-ключ',\n 'keyPlaceholder': 'Введите API-ключ',\n 'keyPlaceholderNative': 'Введите API-ключ или оставьте поле пустым, чтобы использовать аутентификацию из окружения',\n 'keyStored': 'Настроен — введите новое значение, чтобы заменить',\n 'keyEnvLocked': 'Предоставлен окружением запуска (только для чтения)',\n 'customized': 'Изменённые настройки',\n 'baseUrl': 'Базовый URL',\n 'baseUrlDefault': 'По умолчанию у провайдера',\n 'models': 'Модели',\n 'modelsInherited': 'Используются настройки адаптера по умолчанию',\n 'modelsCustomized': 'Изменённый каталог моделей',\n 'resetModels': 'Восстановить значения по умолчанию',\n 'model': 'Модель',\n 'modelId': 'ID модели',\n 'modelName': 'Отображаемое имя',\n 'modelNamePlaceholder': 'Если пусто — используется ID модели',\n 'contextWindow': 'Контекстное окно',\n 'contextWindowPlaceholder': 'Используется значение по умолчанию провайдера',\n 'maxTokens': 'Максимум выходных токенов',\n 'maxTokensPlaceholder': 'Используется значение по умолчанию провайдера',\n 'modelAdvanced': 'Возможности',\n 'addModel': 'Добавить модель',\n 'removeModel': 'Удалить модель',\n 'modelsEmpty': 'В селекторе не будет показано ни одной модели. ID вне списка можно отправлять напрямую.',\n 'keyBlank': 'Введите API-ключ или оставьте поле пустым, чтобы сохранить имеющийся.',\n 'keyBlankNew': 'Введите API-ключ или оставьте поле пустым, если провайдер использует другой способ аутентификации.',\n 'keyIllegalCharacters': 'Формат этого API-ключа недействителен. Проверьте его.',\n 'modelIdRequired': 'ID модели обязателен.',\n 'modelIdDuplicate': 'ID модели должен быть уникальным.',\n 'modelNameInvalid': 'Отображаемое имя не может быть пустым.',\n 'modelContextInvalid': 'Контекстное окно должно быть положительным числом, например 131072, 256K или 1M.',\n 'modelMaxTokensInvalid': 'Максимум выходных токенов должен быть положительным числом, например 8192, 64K или 1M.',\n 'advancedHint': 'Остальные поля находятся в settings.yaml; редактируйте соответствующий раздел напрямую.',\n 'modelCapacityInvalid': 'Возможность должна быть числом, при желании с суффиксом K или M.',\n 'modelDuplicate': 'Каждый ID модели может встречаться только один раз.',\n 'modelContextWindow': 'Контекстное окно',\n 'modelMaxTokens': 'Максимум выходных токенов',\n 'fetchModels': 'Получить доступные модели',\n 'fetching': 'Запрос к провайдеру…',\n 'fetchNeedsBaseUrl': 'Сначала введите базовый URL, затем получайте модели.',\n 'fetchEmpty': 'Провайдер не указал модели. Добавьте их вручную.',\n 'fetchTitle': 'Выберите модели для добавления',\n 'fetchDescription': 'Это модели, доступные у провайдера. Выберите те, что нужно добавить.',\n 'fetchSelectAll': 'Выбрать все',\n 'fetchDeselectAll': 'Снять выбор',\n 'fetchAdopt': 'Добавить выбранные',\n 'customAdd': 'Добавить своего провайдера',\n 'customTitle': 'Свой провайдер',\n 'customTag': 'Свой',\n 'customRoute': 'ID провайдера',\n 'customRouteHint': 'Идентификатор в нижнем регистре, начинающийся с буквы; уникально именует провайдера в запросах и как имя учётных данных.',\n 'customRouteInvalid': 'Начинайте с буквы в нижнем регистре; далее — буквы в нижнем регистре, цифры и дефисы.',\n 'customRouteTaken': 'Этот ID уже использует другой провайдер.',\n 'customDisplayName': 'Отображаемое имя',\n 'customApi': 'Протокол API',\n 'customApiUnset': 'Не выбран',\n 'customNeedsBaseUrl': 'Своему провайдеру нужен базовый URL.',\n 'customNeedsModels': 'Своему провайдеру нужна хотя бы одна модель.',\n 'create': 'Создать провайдера',\n 'creating': 'Создание…',\n 'welcomeTitle': 'Уведомление о внутреннем тестировании',\n 'welcomeBody': 'DeepSeek Harness 0.1 находится в стадии тестирования среди разработчиков Harness. Многие области ещё требуют доработки, и мы будем рады отзывам от сообщества разработчиков. Основные плагины и базовые API DeepSeek Harness будут активно развиваться в ближайшие месяцы.\\n\\nМы рассчитываем вместе с разработчиками по всему миру исследовать пределы возможностей интеллекта, опираясь на открытую, свободно используемую и компонуемую инфраструктуру. Приглашаем разработчиков Harness присоединиться к экосистеме плагинов DSH.',\n 'welcomeContinue': 'Продолжить',\n 'welcomeError': 'Не удалось сохранить подтверждение. Попробуйте ещё раз.',\n 'onboardingTitle': 'Добавьте API-ключ, чтобы начать',\n 'onboardingDescription': 'Настройте официального провайдера DeepSeek, чтобы начать работу.',\n 'onboardingLater': 'Настроить позже',\n 'onboardingSave': 'Сохранить и продолжить',\n 'onboardingSaving': 'Сохранение…',\n 'keyRequired': 'Введите API-ключ, чтобы продолжить.',\n 'fetchSearch': 'Поиск моделей',\n 'fetchNoMatches': 'Нет подходящих моделей.',\n 'customBaseUrlPlaceholder': 'https://gateway.example/v1',\n 'settingsPathUnresolvable': 'не удалось разрешить путь настроек',\n 'deepSeekChatBaseUrl': 'https://api.deepseek.com',\n 'deepSeekMessagesBaseUrl': 'https://api.deepseek.com/anthropic',\n 'deepSeekEndpointHint': 'Используйте эндпоинт, совместимый с выбранным подключением.',\n 'customBaseUrlInvalid': 'Введите корректный URL с HTTP или HTTPS.',\n },\n 'settings.pluginInventory': {\n 'tab': 'Список плагинов',\n 'loading': 'Чтение плагинов…',\n 'error': 'Плагины временно недоступны.',\n 'retry': 'Повторить',\n 'search': 'Поиск плагинов',\n 'empty': 'Нет доступных плагинов.',\n 'emptySearch': 'Нет подходящих плагинов.',\n 'enabledTag': 'Включён',\n 'disabledTag': 'Отключён',\n 'configuration': 'Конфигурация',\n 'unobserved': 'Не подключён',\n 'pending': 'Ожидание зависимостей',\n 'loadingPhase': 'Загрузка',\n 'active': 'Подключён',\n 'failed': 'Ошибка подключения',\n 'unloading': 'Отключение',\n 'presetTitle': 'Плагины сессии',\n 'presetSubtitle': 'Собираются для каждой сессии пресетами агента',\n 'countUnit': 'плагины',\n 'switcherLabel': 'Выберите пресет агента для просмотра',\n 'presetOptionDefault': '{name} (по умолчанию)',\n 'presetOptionBroken': '{name} (не удалось загрузить)',\n 'globalTitle': 'Глобальные плагины',\n 'globalSubtitle': 'Общие для системы и всех сессий',\n 'presetProvidedDetail': 'Глобально отключён; пресеты агента включают его на уровне сессии',\n 'enabledIn': 'Включён в',\n 'viewInPreset': 'Открыть в группе пресета',\n 'matchesInOtherPresets': 'Ещё совпадений в других пресетах: {count} ',\n 'failedCountLabel': 'ошибок',\n 'conditionalTag': 'Условно',\n 'presetEnabledTag': 'Включён через пресеты',\n 'failedTag': 'Сбой',\n 'moduleLabel': 'Модуль',\n 'fromPreset': 'Из',\n 'condition': 'Отключается, когда',\n 'runtime': 'Состояние',\n },\n 'settings.plugins': {\n 'nav': 'Плагины',\n 'title': 'Плагины',\n 'intro': 'Настройка и просмотр плагинов, установленных в этой сборке.',\n 'tabs': 'Виды плагинов',\n 'configurableTab': 'Конфигурация плагинов',\n 'empty': 'Эта сборка не открывает настроек плагинов.',\n 'overridden': 'Переопределено',\n 'reset': 'Сбросить к значению по умолчанию',\n 'readOnly': 'В этой сборке настройки хранятся только для чтения.',\n 'expand': 'Показать настройки',\n 'collapse': 'Скрыть настройки',\n 'save': 'Сохранить',\n 'saving': 'Сохранение…',\n 'discard': 'Отменить изменения',\n 'unsaved': 'Не сохранено',\n 'saveFailed': 'Сборка не приняла эти значения; они оставлены для исправления.',\n 'invalidNumber': 'Введите число или оставьте поле пустым, чтобы использовать значение по умолчанию.',\n 'bashTitle': 'Терминал',\n 'bashDescription': 'Ограничения для каждой команды, которую выполняет агент.',\n 'bashTimeoutMs': 'Тайм-аут команды (мс)',\n 'bashTimeoutMsHint': 'Сколько может выполняться одна команда, прежде чем будет завершена.',\n 'bashMaxOutputBytes': 'Лимит вывода на поток (байт)',\n 'bashMaxOutputBytesHint': 'Вывод сверх лимита сохраняется во временный файл, а не теряется.',\n 'agentLoopTitle': 'Цикл агента',\n 'agentLoopDescription': 'Как агент распределяет вызовы инструментов.',\n 'agentLoopMaxParallel': 'Параллельные вызовы инструментов',\n 'agentLoopMaxParallelHint': 'Верхний предел параллельных вызовов в пределах одного шага.',\n 'webSearchTitle': 'Веб-поиск',\n 'webSearchDescription': 'Поисковый провайдер DeepSeek.',\n 'webSearchApiKey': 'API-ключ',\n 'webSearchApiKeyHint': 'Хранится вне файла настроек. Оставьте пустым, чтобы сохранить текущий ключ.',\n 'webSearchApiKeySet': 'Ключ настроен.',\n 'webSearchApiKeyUnset': 'Ключ не настроен; поиск недоступен, пока он не будет добавлен.',\n 'webSearchBaseUrl': 'Эндпоинт',\n 'webSearchBaseUrlHint': 'Оставьте пустым, чтобы использовать адрес провайдера по умолчанию.',\n 'webSearchMaxUses': 'Максимум поисков за запрос',\n 'webSearchMaxUsesHint': 'Сколько раз один запрос может искать, прежде чем должен дать ответ.',\n 'subagentModelSelectionTitle': 'Субагенты',\n 'subagentModelSelectionDescription': 'Укажите, какие модели агенты могут выбирать для субагентов.',\n 'subagentModelSelectionToggle': 'Разрешить агентам выбирать модели для субагентов',\n 'subagentModelSelectionChoose': 'При включении агенты могут выбирать провайдера, модель и уровень рассуждения для каждого субагента из авторизованных моделей ниже. Применяется только к новым сессиям.',\n 'subagentModelSelectionAllowed': 'Модели, доступные агентам для выбора',\n 'subagentModelSelectionLoading': 'Загрузка моделей…',\n 'subagentModelSelectionLoadFailed': 'Не удалось загрузить модели.',\n 'subagentModelSelectionRetry': 'Повторить',\n 'subagentModelSelectionPartial': 'Некоторые провайдеры моделей не загрузились; сохранённые выборки по-прежнему можно удалить.',\n 'subagentModelSelectionUnavailable': 'Сейчас недоступно',\n 'subagentModelSelectionUnavailableGroup': 'Сохранено, но сейчас недоступно',\n 'subagentModelSelectionEmpty': 'Ни один провайдер моделей сейчас не предлагает моделей.',\n 'subagentModelSelectionRequired': 'Перед сохранением выберите хотя бы одну модель.',\n 'subagentModelSelectionConflict': 'Настройки изменены в другом месте. Отмените черновик и повторите.',\n 'subagentModelSelectionOff': 'Субагенты используют настроенные значения по умолчанию или наследуют модель родительского агента. Сохранённые выборки моделей остаются.',\n },\n 'sidebar': {\n 'session.new': 'Новая сессия',\n 'session.new.label': 'Новая сессия',\n 'toggle.open': 'Открыть боковую панель',\n 'toggle.collapse': 'Свернуть боковую панель',\n 'panels.label': 'Глобальные панели',\n },\n 'skill': {\n 'row.title': 'Навык',\n 'row.running': 'Загрузка навыка',\n 'row.failed': 'Не удалось загрузить навык',\n 'row.stopped': 'Загрузка навыка прервана',\n 'row.instructions': 'Инструкции',\n 'row.inspect': 'Просмотр',\n 'menu.userOnly': 'только пользователь',\n },\n 'subagent': {\n 'diagnostic.corrupt': 'повреждённая запись сессии',\n 'diagnostic.unsupported': 'неподдерживаемая версия записи субагента',\n 'diagnostic.unavailable': 'запись сессии временно недоступна',\n 'duration.seconds': '{seconds} с',\n 'duration.minutes': '{minutes} мин {seconds} с',\n 'duration.hours': '{hours} ч {minutes} мин {seconds} с',\n 'duration.days': '{days} д',\n 'duration.daysHours': '{days} д {hours} ч',\n 'duration.months': '~{months} мес',\n 'duration.monthsDays': '~{months} мес {days} д',\n 'duration.years': '~{years} г',\n 'duration.yearsMonths': '~{years} г {months} мес',\n 'duration.exactDays': '{days} д {hours} ч {minutes} мин {seconds} с',\n 'duration.exactTitle': 'Общее время активности: {duration}',\n 'loading.label': 'Загрузка субагентов…',\n 'loading.aria': 'Загрузка субагентов',\n 'load.error': 'Не удалось загрузить субагентов',\n 'retry': 'Повторить',\n 'mode.oneShot': 'одноразовый',\n 'mode.continuable': 'можно продолжить',\n 'activity.running': 'выполняется',\n 'activity.inactive': 'не выполняется',\n 'branch.collapse': 'Свернуть потомков {label}',\n 'branch.expand': 'Развернуть потомков {label}',\n 'count.total.one': '{count} субагент',\n 'count.total.other': '{count} субагентов',\n 'count.running.one': '{count} субагент выполняется',\n 'count.running.other': '{count} субагентов выполняется',\n 'switcher.aria': 'Переключить субагента: {title}',\n 'tree.aria': 'Сессии субагентов',\n 'readonly.oneShot.title': 'Запись одноразового субагента',\n 'readonly.title': 'Этот субагент пока доступен только для чтения',\n 'readonly.oneShot.body': 'Одноразовые задачи не принимают продолжений; здесь можно посмотреть полную запись выполнения.',\n 'readonly.body': 'Родительская сессия сейчас не в сети; откройте её заново, чтобы продолжить отправку сообщений.',\n 'tokens.thousand': '{value} тыс.',\n 'tokens.million': '{value} млн',\n 'tokens.total': '{value} ток',\n },\n 'settings.theme': {\n 'appearance.title': 'Оформление',\n 'appearance.light': 'Светлая',\n 'appearance.dark': 'Тёмная',\n 'appearance.system': 'Как в системе',\n 'fontSize.title': 'Размер шрифта',\n 'fontSize.description': 'Влияет только на содержимое беседы',\n 'fontSize.unit': 'px',\n 'fontSize.increase': 'Увеличить размер шрифта',\n 'fontSize.decrease': 'Уменьшить размер шрифта',\n },\n 'trajectory': {\n 'view.trajectory': 'Траектория',\n 'toolbar.aria': 'Панель траектории',\n 'toolbar.duration': 'Длительность',\n 'toolbar.useActualDuration': 'Фактическая длительность',\n 'toolbar.useEqualWidth': 'Равная ширина операций',\n 'toolbar.actualTime': 'Фактическое время',\n 'toolbar.turns': 'Раунды',\n 'toolbar.expandTurns': 'Развернуть раунды',\n 'toolbar.collapseTurns': 'Свернуть раунды',\n 'toolbar.calls': 'Вызовы',\n 'toolbar.expandCalls': 'Развернуть вызовы',\n 'toolbar.collapseCalls': 'Свернуть вызовы',\n 'toolbar.search': 'Поиск по траектории',\n 'toolbar.searchPlaceholder': 'Поиск',\n 'column.input': 'Ввод',\n 'column.model': 'Модель',\n 'column.tools': 'Инструменты',\n 'status.pending': 'Ожидает',\n 'timing.notAvailable': 'Недоступно',\n 'timing.notRecorded': 'Не записано',\n 'timing.stepStartUnavailable': 'Недоступно время начала шага',\n 'timing.firstTokenUnavailable': 'Недоступно время первого токена',\n 'timing.usageUnavailable': 'Данные об использовании недоступны',\n 'timing.outputTokensUnavailable': 'Недоступно число выходных токенов',\n 'timing.durationTooShort': 'Длительность слишком мала',\n 'timing.started': 'Начало',\n 'timing.totalDuration': 'Общая длительность',\n 'timing.ttft': 'TTFT',\n 'timing.generation': 'Генерация',\n 'timing.throughput': 'Пропускная способность',\n 'timing.duration': 'Длительность',\n 'timing.source': 'Источник времени',\n 'timing.sessionTimestamps': 'Метки времени сессии',\n 'timing.sessionTimestampsRunning': 'Метки времени сессии (выполняется)',\n 'usage.input': 'Ввод',\n 'tab.tools': 'Инструменты',\n 'record.noContent': 'Нет содержимого',\n 'record.noPayload': 'Ввод не зафиксирован',\n 'record.noResult': 'Результат не зафиксирован',\n 'record.resultJson': 'Результат JSON',\n 'record.outputJson': 'Результат JSON',\n 'record.thinking': 'Рассуждение',\n 'record.tools': 'Инструменты',\n 'block.openSummaryTitle': 'Открыть сводку вызова',\n 'history.loadingEarlier': 'Загрузка более ранней истории…',\n 'history.loadingEarlierAria': 'Загрузка более ранней истории…',\n 'history.loadEarlier': 'Загрузить более раннюю историю',\n 'history.clickToLoadEarlier': 'Нажмите, чтобы загрузить более раннюю историю',\n 'details.event': 'Детали события',\n 'details.resize': 'Изменить размер панели деталей',\n 'details.resizeTitle': 'Перетащите, чтобы изменить размер. Двойной клик — сброс.',\n 'details.close': 'Закрыть детали',\n 'details.model': 'Модель',\n 'timeline.aria': 'Таймлайн траектории',\n 'timeline.overviewAria': 'Обзор таймлайна; перетаскивайте по горизонтали, чтобы фокусироваться на событиях',\n 'timeline.noTimingData': 'Нет данных о времени',\n 'timeline.total': 'Всего: {duration}',\n 'timeline.started': 'Начало: {time}',\n 'layout.toolCallOnly': 'Только вызов инструмента',\n 'kind.system': 'SYSTEM',\n 'kind.user': 'USER',\n 'kind.context': 'CONTEXT',\n 'kind.compacted': 'COMPACTED',\n 'kind.message': 'Сообщение',\n 'kind.assistant': 'ASSISTANT',\n 'kind.tool': 'TOOL',\n 'kind.subtool': 'SUBTOOL',\n 'kind.sub': 'Sub',\n 'column.output': 'Вывод',\n 'column.think': 'Размышление',\n 'column.time': 'Время',\n 'turn.label': 'Ход {turn}',\n 'section.betweenTurns': 'Между ходами',\n 'group.message': 'Сообщение',\n 'group.step': 'Шаг {step}',\n 'group.compaction': 'Сжатие {seq}',\n 'status.failed': 'Ошибка',\n 'status.completed': 'Завершено',\n 'timing.showLocalTime': 'Показать локальное время',\n 'timing.showUnixTimestamp': 'Показать Unix-метку времени',\n 'timing.request': 'Время запроса',\n 'unit.milliseconds': '{value} мс',\n 'unit.seconds': '{value} с',\n 'unit.tokens': '{value} ток',\n 'unit.tokensPerSecond': '{value} ток/с',\n 'usage.tokens': 'Токены',\n 'usage.reasoning': 'Размышление',\n 'usage.content': 'Содержимое',\n 'usage.notReported': 'Данные об использовании не сообщаются',\n 'usage.cached': 'Из кэша',\n 'usage.cacheCreated': 'Запись в кэш',\n 'usage.other': 'Прочее',\n 'usage.output': 'Выход',\n 'usage.thisRequest': 'Этот запрос',\n 'usage.sessionCumulative': 'Суммарно по сессии',\n 'options.notRecorded': 'Параметры не записаны',\n 'options.json': 'JSON параметров запроса',\n 'source.unknown': 'Неизвестно',\n 'source.user': 'Пользователь',\n 'source.plugin': 'Плагин',\n 'source.pluginNamed': 'Плагин · {plugin}',\n 'source.goal': 'Цель',\n 'source.goalRound': 'Цель · Раунд {round}',\n 'source.notRecorded': 'Источник не записан',\n 'source.messageJson': 'JSON источника сообщения',\n 'tab.summary': 'Сводка',\n 'tab.rawOutput': 'Исходный вывод',\n 'tab.preview': 'Предпросмотр',\n 'tab.raw': 'Исходный текст',\n 'tab.source': 'Источник',\n 'tab.payload': 'Запрос',\n 'tab.result': 'Результат',\n 'tab.schema': 'Схема',\n 'tab.timing': 'Время',\n 'tab.diff': 'Дифф',\n 'tab.systemPrompt': 'Системный промпт',\n 'tab.options': 'Параметры',\n 'tab.usage': 'Использование',\n 'record.toolCallOnly': '(только вызов инструмента)',\n 'record.noOutput': 'Нет вывода',\n 'record.schemaUnavailable': 'Схема недоступна',\n 'record.parameters': 'Параметры',\n 'record.json': 'JSON',\n 'record.parametersJson': 'JSON параметров',\n 'record.namedParametersJson': 'JSON параметров {name}',\n 'record.payloadJson': 'JSON запроса',\n 'record.systemPromptMissing': 'В этом запросе нет системного промпта',\n 'record.toolsMissing': 'В этом запросе нет инструментов',\n 'record.systemPrompt': 'Системный промпт',\n 'block.openSummary': 'Открыть сводку вызова инструментов для блока #{index}',\n 'block.label': 'Блок #{index} {type}',\n 'history.loadingTrajectory': 'Загрузка траектории…',\n 'request.label': 'Запрос #{request}',\n 'request.labelCompaction': 'Запрос #{request} · Сжатие',\n 'request.compaction': 'Сжатие · {section}',\n 'request.compactionPurpose': 'Сжатие',\n 'request.retryProgress': '{retry} из {maximum}',\n 'request.collapsedSummary': 'Свёрнутая сводка {kind}, {summary}',\n 'request.collapsedTurn': 'хода',\n 'request.collapsedAssistant': 'ассистента',\n 'request.rowAria': '{request}{kind}, {content}',\n 'request.rowPrefix': 'Запрос {request}, ',\n 'request.rowAriaCompaction': 'Запрос {request}, сжатие',\n 'request.noContent': 'нет содержимого',\n 'summary.toolCalls.one': '{count} вызов инструмента',\n 'summary.toolCalls.other': '{count} вызовов инструментов',\n 'summary.steps.one': '{count} шаг',\n 'summary.steps.other': '{count} шагов',\n 'details.status': 'Состояние',\n 'details.purpose': 'Назначение',\n 'details.provider': 'Провайдер',\n 'details.toolCalls': 'Вызовы инструментов',\n 'details.subtoolCalls': 'Вложенные вызовы',\n 'details.error': 'Ошибка',\n 'details.failure.auth': 'Недействительный API-ключ',\n 'details.retry': 'Повтор',\n 'details.scheduled': 'Запланирован',\n 'details.retryDelay': 'Задержка повтора',\n 'details.result': 'Результат',\n 'details.compacted': 'Сжато',\n 'details.assistantMessage': 'Сообщение ассистента',\n 'details.source': 'Источник',\n 'details.hierarchy': 'Иерархия',\n 'details.toolCall': 'Вызов инструмента',\n 'timeline.ttftDecoding': 'TTFT {ttft} · Декодирование {decoding}',\n 'layout.compacting': 'Сжатие контекста…',\n 'layout.compactionFailed': 'Сжатие не удалось',\n 'layout.compacted': 'Контекст сжат',\n 'layout.imageOnly': 'Изображения ×{count}',\n 'layout.fileAttachments': 'Файлы ×{count}',\n 'layout.initialSystemPrompt': 'Начальный системный промпт',\n 'layout.systemPromptUpdated': 'Системный промпт обновлён',\n 'layout.toolsUpdated': 'Инструменты обновлены',\n 'layout.systemPromptAndToolsUpdated': 'Системный промпт и инструменты обновлены',\n 'layout.compactionInterrupted': 'Сжатие было прервано до завершения.',\n 'record.wrapLines': 'Перенос строк',\n 'code.source': 'Код',\n 'code.output': 'Результат',\n 'code.copySource': 'Копировать код',\n 'code.copyOutput': 'Копировать результат',\n 'code.originalJson': 'Исходный JSON',\n 'code.running': 'Выполняется…',\n },\n 'question': {\n 'error.incomplete': 'Сначала завершите этот вопрос.',\n 'error.unanswered': 'Выберите вариант или введите свой ответ.',\n 'nav.prev': 'Предыдущий вопрос',\n 'nav.next': 'Следующий вопрос',\n 'nav.minimize': 'Свернуть карточку вопроса',\n 'nav.maximize': 'Развернуть карточку вопроса',\n 'nav.cancel': 'Отменить все вопросы',\n 'option.recommended': 'Рекомендуется',\n 'custom.placeholder': 'Введите ваш ответ',\n 'action.skip': 'Пропустить',\n 'action.next': 'Далее',\n 'plan.header': 'План на рассмотрении',\n 'plan.approve': 'Утвердить',\n 'plan.decline': 'Отклонить',\n 'plan.discuss': 'Обсудить в чате',\n },\n 'workflowRun': {\n 'run.title': '{name}',\n 'run.members.one': '{count} участник',\n 'run.members.other': '{count} участников',\n 'run.empty': 'Участники не запущены',\n 'phase.unassigned': 'Без фазы',\n 'phase.empty': 'Пустое имя фазы',\n 'statusCount.running': 'Выполняется: {count}',\n 'statusCount.completed': 'Завершено: {count}',\n 'statusCount.failed': 'Ошибка: {count}',\n 'statusCount.cancelled': 'Отменено: {count}',\n 'statusCount.interrupted': 'Прервано: {count}',\n 'member.empty': 'Пустое имя участника',\n 'member.open': 'Открыть {name}',\n 'status.running': 'Выполняется',\n 'status.completed': 'Завершено',\n 'status.failed': 'Ошибка',\n 'status.cancelled': 'Отменено',\n 'status.interrupted': 'Прервано',\n },\n 'workspace': {\n 'group.ungrouped': 'Без группы',\n 'session.new': 'Новая сессия',\n 'section.workspaces': 'Рабочие пространства',\n 'section.sessions': 'Сессии',\n 'viewOptions.label': 'Параметры вида',\n 'groupBy.label': 'Группировка',\n 'groupBy.workspace': 'По рабочим пространствам',\n 'groupBy.flat': 'Единым списком',\n 'orderBy.label': 'Сортировка',\n 'orderBy.manual': 'Вручную',\n 'orderBy.updated': 'По обновлению',\n 'sessions.expand': 'Показать ещё {n}',\n 'sessions.collapse': 'Свернуть',\n 'empty.none': 'Пока нет сессий',\n 'empty.noMatches': 'Ничего не найдено',\n 'workspace.add': 'Добавить рабочее пространство',\n 'search.sessions.aria': 'Поиск сессий',\n 'search.placeholder': 'Поиск сессий…',\n 'search.clear': 'Очистить поиск',\n 'search.results.aria': 'Результаты поиска',\n 'search.pending': 'Поиск по истории сессий…',\n 'search.unavailable': 'Контентный поиск временно недоступен. Показываем совпадения по имени.',\n 'search.noMatches': 'Нет подходящих сессий',\n 'search.hasMore': 'Показаны первые {n}. Сузьте поиск.',\n 'menu.addWorkspace': 'Добавить рабочее пространство…',\n 'picker.loading': 'Загрузка рабочих пространств…',\n 'conflict.named': 'Рабочее пространство с именем «{name}» уже существует.',\n 'folderError.title': 'Не удалось открыть папку',\n 'folderError.retry': 'Выбрать снова',\n 'rename': 'Переименовать',\n 'rename.workspace.title': 'Переименовать рабочее пространство',\n 'rename.session.title': 'Переименовать сессию',\n 'field.workspaceName': 'Имя рабочего пространства',\n 'field.sessionName': 'Имя сессии',\n 'delete.workspace': 'Удалить рабочее пространство',\n 'delete.desc': 'Это удалит «{name}» из списка рабочих пространств. Папка и журналы сессий сохранятся; их сессии появятся в разделе «Без группы».',\n 'delete.pending': 'Удаление рабочего пространства…',\n 'menu.fork': 'Создать ответвление сессии',\n 'menu.archiveSession': 'Архивировать сессию',\n 'sessions.count.one': '{n} сессия',\n 'sessions.count.other': '{n} сессий',\n 'actions.workspace.aria': 'Действия рабочего пространства {name}',\n 'actions.session.aria': 'Действия сессии {name}',\n 'actions.newSession.aria': 'Новая сессия в {name}',\n 'status.running': 'Выполняется',\n 'status.subagentsRunning.one': '{n} субагент выполняется',\n 'status.subagentsRunning.other': '{n} субагентов выполняется',\n 'status.idle': 'Ожидает',\n 'status.waitingApproval': 'Ожидает одобрения',\n 'status.planReview': 'План на рассмотрении',\n 'status.waitingAnswer': 'Ожидает ответа',\n 'status.completed': 'Завершено',\n 'schedule.active': 'Есть активная запланированная задача',\n 'hover.created': 'Создано {time}',\n 'hover.copied': 'Скопировано',\n 'date.ymd': '{d}.{m}.{y}',\n 'time.now': 'только что',\n 'time.minutes': '{n} мин',\n 'time.hours': '{n} ч',\n 'time.days': '{n} д',\n 'time.months': '{n} мес',\n 'time.years': '{n} г',\n 'time.ago': '{t} назад',\n },\n 'agent-team': {\n 'memberStatus.running': 'Выполняется',\n 'memberStatus.idle': 'Простой',\n 'memberStatus.inactive': 'Неактивен',\n 'memberStatus.provisioning': 'Подготовка',\n 'memberStatus.failed': 'Ошибка',\n 'status.pending': 'Ожидание',\n 'status.in_progress': 'В процессе',\n 'status.completed': 'Завершено',\n 'trigger': 'Команда агентов',\n 'refresh': 'Обновить команду',\n 'close': 'Закрыть',\n 'loading': 'Загрузка команды…',\n 'empty': 'Общих задач пока нет',\n 'roster': 'Участники',\n 'tasks': 'Общие задачи',\n 'model': 'Модель',\n 'open': 'Открыть диалог с участником',\n 'create': 'Новая задача',\n 'subject': 'Тема задачи',\n 'description': 'Описание задачи',\n 'blockers': 'ID блокирующих задач (через запятую)',\n 'scopes': 'Области записи (через запятую)',\n 'save': 'Сохранить',\n 'cancel': 'Отмена',\n 'edit': 'Изменить',\n 'complete': 'Завершить',\n 'reopen': 'Открыть заново',\n 'delete': 'Удалить',\n 'owner': 'Исполнитель',\n 'unowned': 'Без исполнителя',\n 'blockedBy': 'Блокируется',\n 'writeScopes': 'Области записи',\n 'ready': 'Готово к работе',\n 'blocked': 'Заблокировано зависимостями',\n 'conflict': 'Состояние задачи изменилось, она перезагружена. Проверьте её перед повтором.',\n },\n 'cordis': {\n 'row.defineTitle': 'Зарегистрировать плагин Cordis',\n 'row.runTitle': 'Запустить плагин Cordis',\n 'row.updateTitle': 'Обновить плагин Cordis',\n 'row.stopTitle': 'Остановить плагин Cordis',\n 'row.removeTitle': 'Удалить плагин Cordis',\n 'purpose.missing': '(цель не указана)',\n 'status.idle': 'Готов',\n 'status.awaitingApproval': 'Ожидает одобрения',\n 'status.failed': 'Ошибка запуска',\n 'status.clientPending': 'Client готов к активации',\n 'status.running': 'Выполняется',\n 'status.removed': 'Удалён',\n 'status.superseded': 'Доступен более новый запуск',\n 'run.removed': 'Этого пакета больше не существует',\n 'run.superseded': 'Ниже доступна более новая карточка запуска',\n 'panel.hint': 'Управление запуском находится на панели Cordis над настройками',\n 'panel.plugins.aria': 'Плагины Cordis',\n 'panel.approvals.aria': 'Одобрения Cordis',\n 'panel.trigger': 'Плагин Cordis',\n 'panel.runningCount': '{count} в работе',\n 'panel.title': 'Плагины Cordis',\n 'panel.empty': 'Плагины ещё не определены',\n 'panel.loading': 'Чтение…',\n 'panel.readFailed': 'Не удалось прочитать список плагинов: {message}',\n 'panel.group.current': 'Эта сессия',\n 'panel.group.others': 'Другие сессии',\n 'panel.version': 'Версия',\n 'panel.current': 'Текущая: {packageId}',\n 'panel.next': 'Следующая: {packageId}',\n 'action.approve': 'Разрешить',\n 'action.approveOnce': 'Разрешить только эту версию',\n 'action.approvePlugin': 'Разрешить будущие версии этого плагина',\n 'action.decline': 'Отклонить',\n 'action.run': 'Запустить',\n 'action.stop': 'Остановить',\n 'action.remove': 'Удалить',\n 'action.retry': 'Повторить',\n 'action.rollback': 'Откатить',\n 'action.inspect': 'Просмотр',\n 'render.failedAbdicated': 'Сбой рендеринга в {slot}; восстановлен интерфейс по умолчанию:',\n 'render.failedHeld': 'Сбой рендеринга в {slot}:',\n 'a11y.defining': 'Идёт определение плагина',\n 'a11y.failed': 'Определение не удалось',\n 'a11y.stopped': 'Определение прервано',\n 'body.source': 'Исходный код плагина',\n 'body.hostCode': 'Хост',\n 'body.clientCode': 'Клиент',\n 'body.output': 'Результат',\n 'body.copy': 'Копировать',\n 'body.copied': 'Скопировано',\n },\n 'session-log-download': {\n 'dialog.preparingTitle': 'Экспорт сессии',\n 'dialog.preparingDescription': 'Готовится ZIP-архив с этой сессией, её подсессиями и вложениями.',\n 'dialog.successTitle': 'Загрузка сессии началась',\n 'dialog.successDescription': 'Браузер загружает ZIP-архив сессии.',\n 'dialog.errorTitle': 'Не удалось экспортировать сессию',\n 'dialog.close': 'Закрыть',\n 'dialog.commandFailed': 'Не удалось запустить экспорт сессии.',\n 'header.more': 'Другие действия',\n 'menu.download': 'Скачать журнал сессии',\n },\n 'chat': {\n 'view.chat': 'Чат',\n 'number.groupSeparator': ' ',\n 'duration.compactSeconds': '{seconds} с',\n 'duration.compactMinutes': '{minutes} мин {seconds} с',\n 'duration.milliseconds': '{milliseconds} мс',\n 'stats.counts': '{turns} ходов, {steps} шагов',\n 'stats.cacheHit': 'Попадание в кэш {percent}%',\n 'chat.loadingHistory': 'Загрузка истории…',\n 'chat.loadError': 'Не удалось загрузить историю: {message} ({code})',\n 'chat.loadOlder': 'Загрузить ранее',\n 'chat.toBottom': 'Вниз',\n 'chat.deepDiving': 'Глубокое исследование…',\n 'chat.turnNavigation.label': 'Навигация по ходам',\n 'chat.turnNavigation.jump': 'Перейти к ходу {turn}',\n 'chat.turnNavigation.jumpLoad': 'Загрузить и перейти к ходу {turn}',\n 'chat.turnNavigation.turn': 'Ход {turn}',\n 'settings.transcript.title': 'Отображение диалога',\n 'settings.transcript.description': 'Управляет содержимым процесса в завершённых ходах',\n 'settings.transcript.normal': 'Обычный',\n 'settings.transcript.compact': 'Компактный',\n 'fileOpen.title': 'Не удалось открыть файл',\n 'fileOpen.unknown': 'Не удалось открыть этот файл',\n 'message.extraBlock': 'Дополнительный блок содержимого',\n 'message.systemPrompt': 'Системный промпт',\n 'message.contextInjection': 'Инъекция контекста',\n 'message.contextRecall': 'Межсессонный поиск',\n 'message.referenceSummary': 'Ссылка на сессию · {labels}',\n 'message.referenceSeparator': ', ',\n 'message.context.instructions.loaded': 'загружено',\n 'message.context.instructions.added': 'добавлено',\n 'message.context.instructions.updated': 'обновлено',\n 'message.context.instructions.removed': 'удалено',\n 'message.context.catalog.replaced': 'Заменённый каталог',\n 'message.context.catalog.more': '… ещё {count}',\n 'message.context.snapshot.supersedes': 'Заменяет предыдущие снимки',\n 'message.context.relay.from': 'Из сессии {session}',\n 'message.context.recall.counts': 'Сохранено {retained} · Пропущено {omitted}',\n 'message.context.recall.truncated': 'обрезано',\n 'message.compaction': 'Контекст сжат',\n 'message.compaction.running': 'Сжатие контекста…',\n 'message.compaction.completed': 'Сжато {items} записей истории (~{tokens} токенов)',\n 'message.compaction.expand': 'Показать сводку сжатия',\n 'message.compaction.unavailable': 'Сводка сжатия недоступна',\n 'message.compaction.commandTitle': 'compact',\n 'message.think': 'Размышление',\n 'message.unknownSurface': 'Неизвестное surface-событие: {type}',\n 'message.unknownBlock': 'Неизвестный блок содержимого',\n 'message.turnProcess.toolCalls.one': '{count} вызов инструмента',\n 'message.turnProcess.toolCalls.other': '{count} вызовов инструментов',\n 'message.turnProcess.messages.one': '{count} сообщение',\n 'message.turnProcess.messages.other': '{count} сообщений',\n 'message.turnProcess.subagents.one': '{count} субагент',\n 'message.turnProcess.subagents.other': '{count} субагентов',\n 'message.turnProcess.thoughtForAWhile': 'Думал некоторое время',\n 'message.turnProcess.separator': ' · ',\n 'message.stopped': 'Остановлено',\n 'message.branch': 'Ответвить новый диалог',\n 'message.branchUnavailable': 'Доступно только на последнем сообщении завершённого хода',\n 'message.retry.active': 'Повтор запроса к модели',\n 'message.retry.cancelled': 'Повтор запроса к модели отменён',\n 'message.retry.started': 'Запрос к модели повторён',\n 'message.retry.scheduled': 'Ожидание повтора запроса к модели',\n 'message.retry.status': '{label} ({retry}/{maximum}) · {seconds} с',\n 'message.retry.delay': 'Задержка повтора: ',\n 'message.retry.failure': 'Причина сбоя: ',\n 'message.failure.auth': 'Недействительный API-ключ',\n 'message.turnError': 'Этот ход завершился с ошибкой',\n 'message.maxTokens': 'Достигнут лимит выходных токенов',\n 'message.maxTokens.hint': 'Ответ обрезан; уже выведенное сохранено в диалоге. Отправьте «продолжай», чтобы модель завершила ответ.',\n 'message.ranFor': 'Выполнялся {duration}',\n 'message.tokensPerSecond': '{tps} ток/с',\n 'message.turnUsage.title': 'Расход хода',\n 'message.turnUsage.consumed': 'Расход {total}',\n 'message.turnUsage.model': 'Провайдер / модель',\n 'message.turnUsage.cacheHit': 'Попадание в кэш',\n 'message.turnUsage.input': 'Вход без кэша',\n 'message.turnUsage.cacheRead': 'Чтение из кэша',\n 'message.turnUsage.cacheWrite': 'Запись в кэш',\n 'message.turnUsage.output': 'Выход',\n 'message.turnUsage.reasoning': ' (из них размышление {tokens})',\n 'message.turnUsage.count': '{count} ток',\n 'message.turnTime.title': 'Время и скорость хода',\n 'message.turnTime.duration': 'Общее время хода',\n 'message.turnTime.speed': 'Скорость вывода (TPS)',\n 'message.turnTime.ttft': 'Время до первого токена (TTFT)',\n 'duration.seconds': '{seconds} с',\n 'duration.minutes': '{minutes} мин {seconds} с',\n 'command.running': 'Выполняется…',\n 'command.failed': 'Команда завершилась с ошибкой',\n 'command.done': 'Завершено',\n 'command.title': 'Команда',\n 'row.running': 'Выполняется',\n 'row.failed': 'Ошибка',\n 'json.truncated': '… обрезано, всего {total} символов',\n 'clock.md': '{d}.{m}',\n 'clock.ymd': '{d}.{m}.{y}',\n 'message.systemPromptUpdate': 'Системный промпт обновлён',\n 'stats.dialog.title': 'Статистика сессии',\n 'stats.dialog.usageTitle': 'Использование токенов',\n 'stats.dialog.llmTime': 'Время модели',\n 'stats.dialog.toolTime': 'Время инструментов',\n 'stats.dialog.ttft': 'Среднее время до первого токена (TTFT)',\n 'stats.dialog.speed': 'Скорость вывода (ток./с)',\n 'duration.hours': '{hours} ч {minutes} мин {seconds} с',\n },\n 'directory-browser': {\n 'browser.title': 'Выбор рабочего каталога',\n 'browser.home': 'Домой',\n 'browser.newFolder': 'Новая папка',\n 'browser.folderName': 'Имя папки',\n 'browser.createIn': 'Новая папка в \"{name}\"',\n 'browser.untitledFolder': 'Папка без имени',\n 'browser.create': 'Создать',\n 'browser.cancel': 'Отмена',\n 'browser.open': 'Открыть',\n 'browser.editPath': 'Изменить путь',\n 'browser.loading': 'Загрузка…',\n 'browser.truncated': 'Слишком много папок; показано только начало списка.',\n 'browser.showHidden': 'Показывать скрытые файлы',\n },\n 'open-in-app': {\n 'open.title': 'Открыть рабочую область в {app}',\n 'open.tooltip': 'Открыть локально',\n 'open.error': 'Не удалось открыть',\n 'menu.toggle': 'Выберите приложение для открытия',\n 'menu.aria': 'Открыть в',\n 'app.cursor': 'Cursor',\n 'app.vscode': 'VS Code',\n 'app.vscodeinsiders': 'VS Code Insiders',\n 'app.windsurf': 'Windsurf',\n 'app.zed': 'Zed',\n 'app.sublimetext': 'Sublime Text',\n 'app.xcode': 'Xcode',\n 'app.androidstudio': 'Android Studio',\n 'app.intellij': 'IntelliJ IDEA',\n 'app.pycharm': 'PyCharm',\n 'app.webstorm': 'WebStorm',\n 'app.phpstorm': 'PhpStorm',\n 'app.goland': 'GoLand',\n 'app.rider': 'Rider',\n 'app.rustrover': 'RustRover',\n 'app.fork': 'Fork',\n 'app.sourcetree': 'Sourcetree',\n 'app.github': 'GitHub Desktop',\n 'app.tower': 'Tower',\n 'app.gitkraken': 'GitKraken',\n 'app.smartgit': 'SmartGit',\n 'app.sublimemerge': 'Sublime Merge',\n 'app.ghostty': 'Ghostty',\n 'app.warp': 'Warp',\n 'app.iterm': 'iTerm2',\n 'app.kitty': 'kitty',\n 'app.windowsterminal': 'Windows Terminal',\n 'app.gitbash': 'Git Bash',\n 'app.gnometerminal': 'GNOME Terminal',\n 'app.konsole': 'Konsole',\n 'app.finder': 'Finder',\n 'app.explorer': 'Проводник',\n 'app.filemanager': 'Файлы',\n 'app.terminal': 'Терминал',\n },\n 'sidebarCodePreview': {\n 'title': 'Код',\n 'copy': 'Копировать',\n 'copied': 'Скопировано',\n },\n 'sidebarFiles': {\n 'entry.other': 'Это не файл и не каталог, открыть нельзя.',\n 'error.notDirectory': 'Это не каталог.',\n 'error.notFound': 'Каталог исчез. Возможно, он перемещён или удалён.',\n 'error.outsideWorkspace': 'Каталог вне рабочей области, боковая панель его не читает.',\n 'error.unavailable': 'Не удалось прочитать: {message}',\n 'guide.description': 'Просмотр файлов рабочей области этой сессии',\n 'guide.title': 'Файлы рабочей области',\n 'type.label': 'Файлы',\n 'loading': 'Чтение…',\n 'empty': 'Пустой каталог',\n 'truncated': 'Слишком много элементов, показана только часть.',\n 'noWorkspace': 'У этой сессии нет рабочего каталога.',\n 'reload': 'Перезагрузить',\n },\n 'sidebarRight': {\n 'chrome.collapse': 'Свернуть боковую панель',\n 'chrome.collapseAria': 'Свернуть правую боковую панель',\n 'chrome.exitFullscreen': 'Выйти из полноэкранного режима',\n 'chrome.expand': 'Открыть боковую панель',\n 'chrome.expandAria': 'Открыть правую боковую панель',\n 'chrome.toFullscreen': 'Во весь экран',\n 'dock.addTab': 'Новая вкладка',\n 'dock.closeFloat': 'Закрыть',\n 'dock.closeTab': 'Закрыть',\n 'dock.dockFloat': 'Вернуть в боковую панель',\n 'dock.drop.bottom': 'Добавить нижнюю область',\n 'dock.drop.center': 'Переместить сюда',\n 'dock.drop.left': 'Добавить область слева',\n 'dock.drop.right': 'Добавить область справа',\n 'dock.drop.top': 'Добавить верхнюю область',\n 'dock.emptyPane': 'Пустая область',\n 'dock.splitPane': 'Разделить',\n 'dock.splitPaneDisabled': 'Максимум две области',\n 'dock.splitPaneNarrow': 'Недостаточно ширины для разделения — расширьте боковую панель',\n 'tab.guide.title': 'Начало',\n 'tab.unavailable': 'Пока ничто здесь не умеет отображать такой контент.',\n },\n 'settings.archivedSessions': {\n 'nav': 'Архивные сессии',\n 'search': 'Поиск в архиве сессий',\n 'loading': 'Чтение сессий…',\n 'empty': 'Архивных сессий нет.',\n 'unavailable': 'Ни одну архивную сессию здесь нельзя восстановить.',\n 'emptySearch': 'Подходящих сессий нет.',\n 'unarchive': 'Вернуть из архива',\n 'unarchiveNamed': 'Вернуть из архива: {title}',\n 'ungrouped': 'Без группы',\n 'time.now': 'сейчас',\n 'time.minutes': '{n} мин',\n 'time.hours': '{n} ч',\n 'time.days': '{n} д',\n 'time.months': '{n} мес',\n 'time.years': '{n} г',\n },\n 'documentHtml': {\n 'title': 'HTML',\n 'frame': 'Предпросмотр HTML-документа',\n 'loading': 'Чтение…',\n 'failed': 'Не удалось показать этот HTML-документ.',\n },\n 'sidebarImage': {\n 'title': 'Изображение',\n 'preview': 'Предпросмотр изображения: {name}',\n 'loading': 'Чтение…',\n 'failed': 'Не удалось показать это изображение.',\n 'unsupported': 'Для предпросмотра изображения нужен полный файл.',\n },\n 'sidebarDocumentPreview': {\n 'loading': 'Чтение…',\n 'loadMore': 'Загрузить ещё',\n 'changed': 'Файл изменился, показано прежнее содержимое.',\n 'reloadNow': 'Перезагрузить',\n 'reload': 'Прочитать файл заново',\n 'wrap.enable': 'Включить перенос строк',\n 'wrap.disable': 'Отключить перенос строк',\n 'wrap.aria': 'Перенос строк',\n 'openWith': 'Открыть в',\n 'viewer.text': 'Обычный текст',\n 'resourceUnavailable': 'Служба файловых ресурсов недоступна.',\n 'rendererUnavailable': 'Предпросмотр «{name}» недоступен.',\n 'unsupportedFile': 'Для этого типа файлов предпросмотр пока недоступен.',\n 'error.notFound': 'Файл не найден. Возможно, он перемещён или удалён.',\n 'error.tooLarge': 'Страница превышает лимит {limit} и не может быть прочитана.',\n 'error.notText': 'Для этого типа файлов предпросмотр пока недоступен.',\n 'error.notRegularFile': 'Это не обычный файл, показывать нечего.',\n 'error.unavailable': 'Не удалось прочитать: {message}',\n 'retry': 'Повторить',\n },\n 'documentMarkdown': {\n 'viewer.label': 'Markdown',\n 'code.copy': 'Копировать',\n 'code.copied': 'Скопировано',\n 'footnotes': 'Сноски',\n },\n 'sidebarPdf': {\n 'title': 'PDF',\n 'pageImage': 'Страница PDF {page}',\n 'loading': 'Чтение…',\n 'rendering': 'Отрисовка страницы…',\n 'failed': 'Не удалось показать PDF: {message}',\n 'password': 'Этот PDF защищён паролем; предпросмотр файлов с паролем не поддерживается.',\n 'workerFailed': 'Процесс отрисовки PDF прервался. Повторите попытку.',\n 'unsupported': 'Для предпросмотра PDF нужен полный файл.',\n 'retry': 'Повторить',\n },\n 'sidebarTerminal': {\n 'recoveryFailed': 'Не удалось восстановить терминал: {message}',\n 'retryRecovery': 'Повторить восстановление терминала',\n 'shell': 'Выбрать shell',\n 'shellLoading': 'Чтение списка shell…',\n 'shellEmpty': 'Нет доступных shell',\n 'description': 'Выполнять команды в рабочей папке сессии',\n 'title': 'Терминал',\n 'new': 'Новый терминал',\n 'loading': 'Чтение окружения терминала…',\n 'creating': 'Запуск…',\n 'connecting': 'Подключение…',\n 'disconnected': 'Соединение разорвано.',\n 'reconnect': 'Переподключиться',\n 'readonly': 'Эта страница сейчас только для чтения.',\n 'control': 'Взять управление',\n 'closed': 'Терминал закрыт.',\n 'exited': 'Процесс завершился ({code})',\n 'failed': 'Ошибка терминала: {message}',\n 'rename': 'Имя терминала',\n 'unavailable': 'Недоступно',\n 'retry': 'Повторить',\n 'cleanupFailed': 'Не удалось завершить терминал «{title}»: {message}',\n 'missingTerminal': 'Этот терминал больше не существует. Создайте новый.',\n 'inputFull': 'Буфер ввода заполнен. Переподключитесь и повторите.',\n 'attachmentEnded': 'Соединение с терминалом завершено. Переподключитесь, чтобы продолжить.',\n 'invalidOutput': 'Не удалось получить изображение терминала. Переподключитесь, чтобы восстановить его.',\n 'terminalLimit': 'Достигнут предел числа терминалов. Закройте ненужные и повторите. Завершённые терминалы тоже учитываются.',\n },\n}\n","/**\n * Russian (ru) language pack, browser half. Registers `ru` as an external\n * selectable language and contributes a `ru` dictionary for every client\n * locale namespace, following the language-pack pattern from\n * `@deepseek-ai/dsh-client-locale` (addLanguage + per-locale register).\n */\nimport type { Context as ClientContext } from '@deepseek-ai/cordis'\nimport type {} from '@deepseek-ai/dsh-client-locale/client'\nimport { RU_DICTS, RU_LABEL } from './dicts.ts'\n\n/** Required service: the locale registry that owns languages and dictionaries. */\nexport const inject = ['locale']\n\n/**\n * Client plugin body: add `ru` to the selectable language catalog and register\n * a ru dictionary for every namespace this pack contributes. Registration is\n * an effect, so the contributed language and dictionaries are torn down with\n * this plugin's fiber.\n * @param ctx - client root context.\n */\nexport function apply(ctx: ClientContext): void {\n ctx.effect(\n () => ctx.locale.addLanguage({ id: 'ru', label: RU_LABEL, fallback: 'en' }),\n 'locale-ru: language',\n )\n for (const [ns, dict] of Object.entries(RU_DICTS)) {\n ctx.effect(() => ctx.locale.register(ns, 'ru', dict), `locale-ru: ${ns} dictionary`)\n }\n}\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@ragnoryok1/dsh-client-locale-ru",
3
3
  "description": "Russian (ru) language pack for the dsh web GUI, registered as an external client language",
4
- "version": "0.1.2",
4
+ "version": "0.1.3",
5
5
  "publishConfig": {
6
6
  "access": "public"
7
7
  },