@ragnoryok1/dsh-client-locale-ru 0.2.18 → 0.2.21

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/lib/client.js CHANGED
@@ -55,6 +55,13 @@ window.__ModuleLoader__.load({
55
55
  "codeBlock.unwrap": "Не переносить строки",
56
56
  "workspace.defaultName": "Рабочая папка по умолчанию"
57
57
  },
58
+ "entryCustomization": {
59
+ "install": "Посмотреть другие плагины",
60
+ "create": "Создать свой плагин",
61
+ "createPrompt.sidebar": "Создать плагин DSH с пунктом в левой панели.",
62
+ "createPrompt.conversation": "Создать плагин DSH с собственным видом беседы.",
63
+ "createPrompt.rightbar": "Создать плагин DSH с пунктом в правой панели."
64
+ },
58
65
  "settings.locale": { "language.title": "Язык" },
59
66
  "settings.agentPreset": {
60
67
  "standardUnavailable": "Стандартный режим недоступен. Восстановите его или выберите другой доступный режим.",
@@ -521,7 +528,9 @@ window.__ModuleLoader__.load({
521
528
  "detail.weekday.7": "Вс",
522
529
  "detail.weekday.join": ", ",
523
530
  "row.imageSize": "{width}×{height} px, {bytes} Б",
524
- "row.imageSizeDownscaled": "{width}×{height} px (уменьшено с {originalWidth}×{originalHeight} px), {bytes} Б"
531
+ "row.imageSizeDownscaled": "{width}×{height} px (уменьшено с {originalWidth}×{originalHeight} px), {bytes} Б",
532
+ "session.moreViews": "Другие виды беседы",
533
+ "session.moreViewsCurrent": "Другие виды беседы · {name}"
525
534
  },
526
535
  "deliverables": {
527
536
  "presented.all": "Все файлы: {count}",
@@ -729,7 +738,8 @@ window.__ModuleLoader__.load({
729
738
  "confirm.description": "«Полный доступ» позволяет новым сессиям уменьшать число шагов подтверждения и выполнять больше действий напрямую, включая чувствительные операции, изменение файлов или внешние команды. Используйте его, только если доверяете последующим задачам.",
730
739
  "confirm.acknowledge": "Я понимаю риски и хочу продолжить",
731
740
  "confirm.cancel": "Отмена",
732
- "confirm.enable": "Включить «Полный доступ»"
741
+ "confirm.enable": "Включить «Полный доступ»",
742
+ "close": "Закрыть"
733
743
  },
734
744
  "permission.access": {
735
745
  "description": "Выберите режим прав по умолчанию для новых сессий",
@@ -751,7 +761,8 @@ window.__ModuleLoader__.load({
751
761
  "auto.confirm.title": "Включить автопроверку (экспериментально)?",
752
762
  "auto.confirm.description": "Автопроверка работает без песочницы. Перед каждым вызовом нативного инструмента и внутренним вызовом PTC та же модель, что и у текущего агента, решает, разрешить ли его; вы подтверждаете или отклоняете каждый вызов, который она запретила. Возможность экспериментальная: она может ошибочно разрешить или запретить действие и расходует дополнительные токены.",
753
763
  "auto.confirm.acknowledge": "Я понимаю эти риски и хочу продолжить",
754
- "auto.confirm.enable": "Включить автопроверку"
764
+ "auto.confirm.enable": "Включить автопроверку",
765
+ "loading": "Загрузка"
755
766
  },
756
767
  "plan": {
757
768
  "chip.label": "План",
@@ -1019,7 +1030,8 @@ window.__ModuleLoader__.load({
1019
1030
  "session.new.label": "Новая сессия",
1020
1031
  "toggle.open": "Открыть боковую панель",
1021
1032
  "toggle.collapse": "Свернуть боковую панель",
1022
- "panels.label": "Глобальные панели"
1033
+ "panels.label": "Глобальные панели",
1034
+ "panels.more": "Ещё"
1023
1035
  },
1024
1036
  "skill": {
1025
1037
  "row.title": "Навык",
@@ -1924,7 +1936,8 @@ window.__ModuleLoader__.load({
1924
1936
  "command.float": "Действие недоступно в плавающей панели",
1925
1937
  "command.empty": "Сначала откройте страницу",
1926
1938
  "command.budget": "Максимум две области",
1927
- "command.width": "Недостаточно ширины для разделения — расширьте боковую панель"
1939
+ "command.width": "Недостаточно ширины для разделения — расширьте боковую панель",
1940
+ "tab.guide.more": "Другие инструменты"
1928
1941
  },
1929
1942
  "documentHtml": {
1930
1943
  "title": "HTML",
@@ -2292,7 +2305,8 @@ window.__ModuleLoader__.load({
2292
2305
  "title": "Инспектор Node.js",
2293
2306
  "toggle": "Показать или скрыть инспектор Node.js",
2294
2307
  "resize": "Изменить высоту панели NodeJS Inspector",
2295
- "frameTitle": "Инспектор Node.js"
2308
+ "frameTitle": "Инспектор Node.js",
2309
+ "close": "Свернуть"
2296
2310
  },
2297
2311
  "session-inspector": {
2298
2312
  "tab.title": "Журнал сессии",
@@ -10621,7 +10635,7 @@ window.__ModuleLoader__.load({
10621
10635
  "testingAllProgress": "Проверка {n}/{total}…",
10622
10636
  "testingMatrix": "Проверка ключей…",
10623
10637
  "testKey": "Проверить",
10624
- "testOk": "ОК",
10638
+ "testOk": "OK",
10625
10639
  "title": "Ротация ключей",
10626
10640
  "tokenLimitHint": "Сколько токенов эти учётные данные могут потратить на эту модель за окно квоты. Пусто — без ограничений.",
10627
10641
  "tokenLimitLabel": "Предел токенов",
@@ -15902,7 +15916,7 @@ window.__ModuleLoader__.load({
15902
15916
  "workspaceTabPersonas": "Эксперты",
15903
15917
  "workspaceTabSkills": "Навыки"
15904
15918
  },
15905
- "dsh-graph.hidden-versions.": {
15919
+ "dsh-graph": {
15906
15920
  "activity.allTypes": "Все типы",
15907
15921
  "activity.colActor": "Исполнитель",
15908
15922
  "activity.colEvent": "Событие",
@@ -47450,7 +47464,7 @@ window.__ModuleLoader__.load({
47450
47464
  "status.scanRejected": "Отклонено проверкой безопасности",
47451
47465
  "status.verifyFailed": "Проверка не пройдена"
47452
47466
  },
47453
- "h3.internal.event.": {
47467
+ "dsh-mcp-studio": {
47454
47468
  "addServer": "Добавить сервер",
47455
47469
  "args": "Аргументы (по одному в строке)",
47456
47470
  "cancel": "Отмена",
@@ -47560,7 +47574,8 @@ window.__ModuleLoader__.load({
47560
47574
  "userInvocable": "Вызывается пользователем (/)",
47561
47575
  "view": "Просмотр",
47562
47576
  "viewSkill": "Просмотр навыка",
47563
- "workspaceUnavailable": "Рабочая область недоступна. Откройте или подключите рабочую область перед созданием навыка."
47577
+ "workspaceUnavailable": "Рабочая область недоступна. Откройте или подключите рабочую область перед созданием навыка.",
47578
+ "url": "URL"
47564
47579
  },
47565
47580
  "hypatia-auto-memory": {
47566
47581
  "advancedHint": "Дополнительные поля (исполняемые файлы, лимиты сборщика, настройка очереди) правятся в разделе «Настройки → Плагины» под этим плагином или в конфигурации записи {ns} в патче профиля.",
@@ -68819,6 +68834,760 @@ window.__ModuleLoader__.load({
68819
68834
  "worktreeBranchPrefix": "Префикс веток рабочего дерева",
68820
68835
  "worktreeBranchPrefixEffect": "Изменения префикса действуют на ветки рабочего дерева, создаваемые после этого. Явно заданные полные имена веток не меняются.",
68821
68836
  "yes": "Да"
68837
+ },
68838
+ "settings.workbuddy": {
68839
+ "cliLive.aria": "Идёт раунд CodeBuddy: {detail}",
68840
+ "cliLive.chars": "Символов: {count}",
68841
+ "cliLive.elapsed": "{seconds} с",
68842
+ "cliLive.finishing": "завершается…",
68843
+ "cliLive.lastTool": "последний: {tool}",
68844
+ "cliLive.running": "CodeBuddy",
68845
+ "cliLive.starting": "запускается…",
68846
+ "cliLive.toolCalls": "Инструментов: {count}",
68847
+ "composer.account": "Учётная запись",
68848
+ "composer.credits": "Кредиты",
68849
+ "composer.current": "Используется",
68850
+ "composer.lastRefresh": "Последнее обновление",
68851
+ "composer.newModels": "новые модели",
68852
+ "composer.newModelsNote": "«Новые» значит, что эта машина впервые записала идентификатор модели: когда модель появилась у сервиса, отсюда не видно. Показываются только модели, впервые замеченные за последние 7 дней.",
68853
+ "composer.newModelsRow": "Модели, впервые замеченные этой машиной",
68854
+ "composer.newModelsSep": ", ",
68855
+ "composer.newModelsTitle": "Модели, впервые замеченные этой машиной: ",
68856
+ "composer.noAccounts": "В этом регионе нет учётной записи",
68857
+ "composer.panelTitle": "Кредиты WorkBuddy",
68858
+ "composer.panelTitleCn": "Кредиты WB CN",
68859
+ "composer.panelTitleGlobal": "Кредиты WB AI",
68860
+ "composer.pointsCn": "WB CN",
68861
+ "composer.pointsGlobal": "WB AI",
68862
+ "composer.refreshFailed": "Не удалось обновить кредиты",
68863
+ "composer.signedOut": "Вход не выполнен",
68864
+ "composer.switchTo": "Переключиться на {account}",
68865
+ "composer.testAll": "Проверить все",
68866
+ "composer.testAllHint": "Проверить все учётные записи этого региона по очереди",
68867
+ "composer.testFailed": "Не удалось проверить учётные записи",
68868
+ "composer.testing": "Проверка…",
68869
+ "quotaNotice.fallbackHead": "Квота на этот запрос исчерпана",
68870
+ "quotaNotice.supplement": " (у части моделей есть ещё суточный лимит, не связанный с вашими кредитами)",
68871
+ "row.accountsHint": "Список берётся из локально найденных входов. Токены никогда не показываются и не сохраняются в настройках DSH.",
68872
+ "row.accountsLoading": "Загрузка учётных записей…",
68873
+ "row.accountsRescan": "Найти учётные записи заново",
68874
+ "row.accountsScanning": "Поиск…",
68875
+ "row.accountsWriteFailed": "Изменение учётной записи не сохранилось: {message} — не удалось обновить файл настроек активного профиля (в Windows его может держать антивирус или клиент синхронизации). Прежний выбор продолжает действовать: закройте то, что держит файл, и повторите (точный путь — в docs/WINDOWS.md репозитория плагина).",
68876
+ "row.accountUnnamed": "Учётная запись без имени",
68877
+ "row.cardCrashed": "Область настроек не отрисовалась.",
68878
+ "row.cardCrashedHint": "Сам провайдер моделей не затронут — чат и кредиты работают. Процитируйте строку выше в отчёте об ошибке.",
68879
+ "row.cheer": "Поставить звезду на GitHub",
68880
+ "row.cliBridgeEffortAria": "Уровень рассуждения, на котором работает локальный CLI CodeBuddy",
68881
+ "row.cliBridgeEffortDefault": "Как в CLI",
68882
+ "row.cliBridgeEffortHint": "Записывается в cliBridge.effort и передаётся CLI как --effort. «Как в CLI» оставляет уровень самому CLI. Если у выбранной модели перечислены поддерживаемые уровни, предлагаются только они.",
68883
+ "row.cliBridgeEffortLabel": "Уровень CLI",
68884
+ "row.cliBridgeHint": "Добавляет инструмент codebuddy_ask и команду /codebuddy. Каждый вызов тратит квоту CodeBuddy. injectResult влияет только на /codebuddy: его результат возвращается в беседу и, когда беседа простаивает, стоит одного раунда DSH; вызовы инструментов его не читают. Есть ограничение частоты: 6 раундов на беседу и 20 на процесс в час, по одному раунду за раз. По умолчанию выключено.",
68885
+ "row.cliBridgeLabel": "Поручить работу локальному CLI CodeBuddy",
68886
+ "row.cliBridgeModelAria": "Модель, на которой работает локальный CLI CodeBuddy",
68887
+ "row.cliBridgeModelDefault": "Как в CLI",
68888
+ "row.cliBridgeModelHint": "Записывается в cliBridge.model и передаётся CLI как --model. «Как в CLI» оставляет выбор модели самому CLI. Список — это каталог, который вкладка синхронизировала с сервисом.",
68889
+ "row.cliBridgeModelLabel": "Модель CLI",
68890
+ "row.cliBridgePickersHint": "Все три списка пишут общий блок cliBridge; «Как в CLI» у модели и уровня — это явное пустое значение, а не «не задано»: дальше CLI берёт свои умолчания. Список регионов пишет cliBridge.regionOrder.",
68891
+ "row.cliBridgeRegionOrderAria": "Порядок, в котором локальный CLI CodeBuddy перебирает регионы учётных данных",
68892
+ "row.cliBridgeRegionOrderCnFirst": "Сначала CN",
68893
+ "row.cliBridgeRegionOrderCnOnly": "Только CN",
68894
+ "row.cliBridgeRegionOrderGlobalFirst": "Сначала глобальный",
68895
+ "row.cliBridgeRegionOrderGlobalOnly": "Только глобальный",
68896
+ "row.cliBridgeRegionOrderHint": "Записывается в cliBridge.regionOrder: в каком порядке CLI пробует учётные данные WorkBuddy, пока один из входов не сработает. Фактически использованный регион сообщается в каждом раунде как credential_region. Действует со следующего вызова.",
68897
+ "row.cliBridgeRegionOrderLabel": "Порядок регионов",
68898
+ "row.collapse": "Свернуть",
68899
+ "row.contextBudget": "Бюджет контекста DSH",
68900
+ "row.credentialRejectedChoose": "Другие локальные входы есть, но сейчас ни один из них не ответил сервису. Попробуйте переключиться на любой из списка выше; если не поможет — войдите заново в приложении WorkBuddy.",
68901
+ "row.credentialRejectedIntro": "Токен «{accountName}» больше не принимается сервисом, поэтому кредиты и ежедневная отметка недоступны. Повторный вход поможет, только если дело в самом токене — а на деле верно вот что:",
68902
+ "row.credentialRejectedRelogin": "Другого локального входа нет, переключиться не на что. Войдите заново в приложении WorkBuddy.",
68903
+ "row.credentialRejectedSwitch": "Другой вход на этой машине сервис принял: «{accountName}». Переключение решит проблему — входить заново не нужно.",
68904
+ "row.credentialRejectedSwitchAction": "Переключиться на «{accountName}»",
68905
+ "row.credentialRejectedTitle": "WorkBuddy отклонил токен этой учётной записи",
68906
+ "row.creditPositionAria": "Расположение счётчика кредитов для региона {region}",
68907
+ "row.creditPositionComposer": "панель поля ввода",
68908
+ "row.creditPositionDisabledHint": "Недоступно, пока выключен переключатель выше: сначала отметьте «Показывать кредиты на панели поля ввода».",
68909
+ "row.creditPositionHint": "Где стоит счётчик кредитов. «Панель поля ввода» — по умолчанию, это строка с выбором модели. Выберите «под полем ввода» — строку со счётчиками раундов, шагов и токенов, — если панель поля ввода занял другой плагин и счётчик не появляется.",
68910
+ "row.creditPositionHintInline": "Где стоит счётчик. «Панель поля ввода» — по умолчанию, это строка с выбором модели.",
68911
+ "row.creditPositionLabel": "Расположение",
68912
+ "row.creditPositionStats": "под полем ввода",
68913
+ "row.creditsError": "Запрос кредитов недоступен: {message}",
68914
+ "row.desc": "Модели WorkBuddy в DSH: при каждом обновлении из каталога сервиса читается множитель кредитов для каждой модели, ввод изображений включается отдельно для каждой модели, несколько учётных записей можно переключать или передавать между ними автоматически, а ежедневная отметка и остаток кредитов — в один щелчок. Отечественная и международная стороны — два независимых провайдера, у каждого своя учётная запись: можно пользоваться обеими сразу.",
68915
+ "row.diagAccount": "Обслуживающая учётная запись",
68916
+ "row.diagCatalog": "Моделей в каталоге",
68917
+ "row.diagDomain": "Домен сервиса",
68918
+ "row.diagEnabled": "Включённых моделей",
68919
+ "row.diagFailures": "Последняя ошибка",
68920
+ "row.diagHint": "Что эта карточка действительно прочитала — чтобы можно было сослаться в отчёте. Ничего здесь настройки не меняет.",
68921
+ "row.diagNoFailures": "Ничего не сообщалось.",
68922
+ "row.diagPool": "Пул учётных записей",
68923
+ "row.diagPoolOff": "выключен",
68924
+ "row.diagPoolOn": "включён · учётных записей: {count}",
68925
+ "row.diagPromoUnreadable": "Часов акции не прочитать: {count} — значок скрыт",
68926
+ "row.diagRegion": "Регион",
68927
+ "row.diagToken": "Вход истекает",
68928
+ "row.discard": "Отменить изменения",
68929
+ "row.expand": "Развернуть",
68930
+ "row.extraPrefixesCount": "Действующих добавленных префиксов:",
68931
+ "row.imageToolHint": "Добавляет инструмент workbuddy_draw_image, который МОДЕЛЬ может вызвать сама: около 5,71 кредита за изображение на китайском шлюзе и около 0,03 на международном, без подтверждения на каждый вызов. Отметка здесь разрешает инструмент только для региона этой вкладки. Если он выключен везде, инструмент не регистрируется вовсе.",
68932
+ "row.imageToolLabel": "Разрешить модели рисовать изображения",
68933
+ "row.keepPromptLastHint": "Переносит внедряемый харнессом контекст выполнения выше вашей настоящей подсказки, чтобы страница использования не показывала «Время замера…» вместо вашего вопроса. Число сообщений и текст сохраняются. По умолчанию выключено, потому что это меняет порядок сообщений, который считает сервис.",
68934
+ "row.keepPromptLastLabel": "Записывать то, что набрали вы, а не внедрённый контекст",
68935
+ "row.mediaModelsEmpty": "В этом регионе нет ни одной модели изображений или видео.",
68936
+ "row.mediaModelsError": "Не удалось прочитать список медиамоделей: {message}",
68937
+ "row.mediaModelsHint": "Читается из настройки продуктов этой учётной записи. Инструмент рисования берёт модель отсюда: подсказка без изображения использует модель «текст в изображение», с изображением — «изображение в изображение». Только чтение: чтобы взять другую модель, передайте её инструменту.",
68938
+ "row.mediaModelsLabel": "Модели изображений в этом регионе",
68939
+ "row.mediaModelsRefresh": "Перечитать",
68940
+ "row.mediaModelsRefreshing": "Чтение…",
68941
+ "row.mediaTagImageToImage": "изображение → изображение",
68942
+ "row.mediaTagImageToVideo": "изображение → видео",
68943
+ "row.mediaTagTextToImage": "текст → изображение",
68944
+ "row.mediaTagTextToVideo": "текст → видео",
68945
+ "row.modelCapabilityPending": "Показываются только возможности, заявленные WorkBuddy.",
68946
+ "row.modelContext": "Максимальный контекст {context}",
68947
+ "row.modelImage": "Изображения",
68948
+ "row.modelImageText": "Ввод изображений: провайдер описывает модель как текстовую, поэтому после обновления отметка снимается. Ставьте её сами, только если уверены, что модель читает изображения.",
68949
+ "row.modelImageUnverified": "Ввод изображений не подтверждён: ни один источник провайдера не говорит, что модель читает изображения, поэтому после обновления отметка снимается, а не угадывается. Ставьте её, если проверили сами.",
68950
+ "row.modelMultimodal": "Мультимодальная",
68951
+ "row.modelOff": "Можно отключить",
68952
+ "row.modelOffHint": "Предлагать этой модели уровень «выключено»",
68953
+ "row.modelOffRefused": "отклоняет выключение",
68954
+ "row.modelOffRefusedHint": "Проверено, что оба шлюза отклоняют уровень «выключено» с HTTP 400 (код 11133). С этой отметкой падал бы каждый запрос без уровня рассуждения — прежде всего сводки при сжатии, — поэтому включить это нельзя.",
68955
+ "row.modelOutput": "Ответ {output}",
68956
+ "row.modelRate": "Кредитов: {rate}x",
68957
+ "row.modelReasoning": "Рассуждение: {efforts}",
68958
+ "row.modelsDirty": "есть несохранённые изменения",
68959
+ "row.modelsRefresh": "Обновить из WorkBuddy",
68960
+ "row.modelsRefreshing": "Обновление моделей…",
68961
+ "row.modelsSummary": "включено: {count}",
68962
+ "row.modelsTestAll": "Проверить все модели",
68963
+ "row.modelsTestAllHint": "Проверяет ВСЕ модели каталога этого региона, включая те, что вы НЕ включали, поэтому стоит заметно дороже проверки включённых. Цена одной пробы та же, остановка при отклонённых учётных данных такая же.",
68964
+ "row.modelsTestAuth": "Остановлено: сервис отклонил учётные данные, остальные модели ответили бы так же. Войдите заново и повторите.",
68965
+ "row.modelsTestDone": "Готово: доступно {available} из {total}",
68966
+ "row.modelsTestEnabled": "Проверить включённые модели",
68967
+ "row.modelsTestEnabledHint": "Проверяет каждую включённую модель одним запросом: проба отправляет запрос настоящего объёма, поэтому тратит настоящие кредиты (около 0,01 на модель при размере 25 000 токенов по умолчанию). Строки показывают вердикт по мере готовности. Останавливается, если сервис отклонил учётные данные.",
68968
+ "row.modelsTesting": "Проверка {done}/{total}…",
68969
+ "row.modelsTitle": "Модели",
68970
+ "row.modelUnknown": "Неизвестно",
68971
+ "row.oauthCancel": "Отмена",
68972
+ "row.oauthCancelled": "Вход отменён.",
68973
+ "row.oauthCopied": "Ссылка скопирована",
68974
+ "row.oauthCopy": "Скопировать ссылку",
68975
+ "row.oauthDialogClose": "Закрыть",
68976
+ "row.oauthDone": "Добавлена учётная запись «{accountName}». Выберите её выше, чтобы использовать.",
68977
+ "row.oauthError": "Вход не удался: {message}",
68978
+ "row.oauthExpires": "Окно входа закроется примерно через {minutes} мин.",
68979
+ "row.oauthOpened": "Открыто. Ждём завершения…",
68980
+ "row.oauthOpenHint": "Откройте страницу входа и подтвердите — учётная запись добавится сюда автоматически, когда вы закончите:",
68981
+ "row.oauthReopen": "Открыть страницу снова",
68982
+ "row.oauthStart": "Войти по QR-коду",
68983
+ "row.oauthStartGlobal": "Войти через веб",
68984
+ "row.oauthStarting": "Открывается…",
68985
+ "row.oauthSyncing": "Добавляем учётную запись…",
68986
+ "row.oauthTimedOut": "Вход не уложился во время — начните заново, когда будете готовы.",
68987
+ "row.oauthTitle": "Добавить учётную запись входом по QR-коду",
68988
+ "row.oauthTitleGlobal": "Добавить учётную запись входом через веб",
68989
+ "row.oauthWaiting": "Ждём завершения входа… ({seconds} с)",
68990
+ "row.panelAccounts": "Учётные записи",
68991
+ "row.panelAria": "Разделы карточки",
68992
+ "row.panelCapabilities": "Возможности",
68993
+ "row.panelCapabilitiesHint": "Что плагин может делать от вашего имени. Каждый переключатель срабатывает по щелчку — кнопки «Сохранить» в этом разделе нет.",
68994
+ "row.panelDiag": "Диагностика",
68995
+ "row.panelModels": "Модели",
68996
+ "row.poolBenefitClaim": "Получить",
68997
+ "row.poolBenefitClaimable": "{title}: кредитов {count}",
68998
+ "row.poolBenefitClaimAria": "Получить «{title}» (кредитов: {count}) для этой учётной записи",
68999
+ "row.poolBenefitClaiming": "Получение…",
69000
+ "row.poolBenefitDueToday": "{title} — кредитов: {count} · последний день",
69001
+ "row.poolBenefitHint": "Получите на странице тарифов: {url}",
69002
+ "row.poolBenefitUrgent": "{title} — кредитов: {count} · осталось дней: {days}",
69003
+ "row.poolBusyHint": "По одному аккаунту за раз…",
69004
+ "row.poolCheckedIn": "Отмечено",
69005
+ "row.poolCheckinAll": "Отметить выбранные",
69006
+ "row.poolCheckinEnterprise": "Нет (корпоративный)",
69007
+ "row.poolCheckingIn": "Отметка…",
69008
+ "row.poolCheckinUnknown": "—",
69009
+ "row.poolColumnAccount": "Аккаунт",
69010
+ "row.poolColumnCheckin": "Отметка",
69011
+ "row.poolColumnCredits": "Кредиты",
69012
+ "row.poolColumnProbe": "Статус",
69013
+ "row.poolCreditNearest": "Ближайший пакет истекает {at}",
69014
+ "row.poolCreditSoon": "Истекают в течение 3 дней: {count}",
69015
+ "row.poolCurrentBadge": "Используется",
69016
+ "row.poolCurrentHeader": "Используется: {account}",
69017
+ "row.poolDirty": "● Несохранённые изменения",
69018
+ "row.poolDiscard": "Отменить изменения",
69019
+ "row.poolEnabled": "Включить пул аккаунтов",
69020
+ "row.poolEnabledHint": "Вкл.: пул выбирает аккаунт для каждого запроса, и только сбой, достойный переключения, передаёт запрос следующему аккаунту — некорректный запрос, занятая модель, очередь на платформе или отказ шлюза этого не делают (смена аккаунта лишь сожжёт квоту на тот же отказ). Выкл.: выбранный вами аккаунт обслуживает каждый запрос, а сбой сообщается как есть.",
69021
+ "row.poolErrFailed": "Пакет не выполнен на стороне хоста: {message}",
69022
+ "row.poolErrHttp": "Пакет отклонён (HTTP {status}). Проверьте, что плагин обновлён, и повторите попытку.",
69023
+ "row.poolErrNoCheckin": "В этом регионе нет ежедневной отметки — действие здесь не предлагается.",
69024
+ "row.poolErrNoFreeModel": "В этом регионе нет модели с нулевым множителем для проверки. Обновите каталог моделей или выберите целевую модель сами.",
69025
+ "row.poolErrNoLiveMembers": "У всех аккаунтов, отмеченных в этом пуле, пропал локальный вход, поэтому пакету нечего было выполнять. Войдите снова в настольном приложении WorkBuddy или сохраните, чтобы убрать их.",
69026
+ "row.poolErrNoMembers": "В этом пуле не отмечен ни один аккаунт — пакету нечего было выполнять. Отметьте хотя бы один аккаунт и сохраните.",
69027
+ "row.poolErrRouteMissing": "Точка пакетной обработки не ответила (HTTP {status}, пустой ответ) — вероятно, хост DSH всё ещё работает со старым кодом плагина, поэтому этот маршрут не зарегистрирован. Полностью закройте DSH и запустите его снова, затем повторите.",
69028
+ "row.poolErrStaleModel": "Этот регион больше не предлагает целевую модель. Выберите другую или вернитесь к автоматическому выбору.",
69029
+ "row.poolErrUnavailable": "В этой сборке пул аккаунтов недоступен (или отсутствует его пакетный маршрут). Перезапустите приложение; если это повторяется, плагин нужно переустановить.",
69030
+ "row.poolExcludedAccountRestricted": "Аккаунт ограничен на стороне сервиса",
69031
+ "row.poolExcludedModelBusy": "Модель занята",
69032
+ "row.poolExcludedOutOfCredit": "Кредиты закончились",
69033
+ "row.poolExcludedRateLimited": "Ограничение частоты",
69034
+ "row.poolExcludedRejected": "Отклонён",
69035
+ "row.poolExcludedUnusable": "Непригоден",
69036
+ "row.poolGhostMembers": "Участников пула без входа на этом компьютере: {count} — они не учитываются и не используются: {names}. Уберите ниже те, которые больше не нужны.",
69037
+ "row.poolGhostRemove": "Убрать {account} из этого пула",
69038
+ "row.poolGhostRemoveNamed": "Убрать {account} из этого пула. На этом компьютере аккаунт больше не авторизован.",
69039
+ "row.poolGhostRemoveUnnamed": "Убрать {account} из этого пула. Имя этого аккаунта никогда не записывалось, поэтому вы видите начало его идентификатора.",
69040
+ "row.poolLogBatchFailed": "Пакет не выполнен — ничего не запускалось: {message}",
69041
+ "row.poolLogBenefitClaimed": "{accountName} получил {title} — кредитов: {count}",
69042
+ "row.poolLogBenefitFailed": "{accountName}: получение не удалось — {message}",
69043
+ "row.poolLogCheckinAlready": "{accountName}: сегодня уже отмечено — пропущено",
69044
+ "row.poolLogCheckinClaimed": "{accountName}: отмечено (+{credit})",
69045
+ "row.poolLogCheckinDone": "Отметка завершена",
69046
+ "row.poolLogCheckinFailed": "{accountName}: отметка не удалась — {message}",
69047
+ "row.poolLogCheckinSkipped": "{accountName}: корпоративный аккаунт, ежедневной отметки нет",
69048
+ "row.poolLogCheckinStart": "Отметка аккаунтов по одному, всего: {count}",
69049
+ "row.poolLogClear": "Очистить",
69050
+ "row.poolLogEmpty": "Пока пусто. Здесь записываются отметки, проверки и переключения аккаунтов.",
69051
+ "row.poolLogTestDone": "Проверка завершена; пул переупорядочен",
69052
+ "row.poolLogTestRow": "{accountName}: {outcome}",
69053
+ "row.poolLogTestRowMalformed": "{accountName}: хост не вернул результат для этого аккаунта",
69054
+ "row.poolLogTestStart": "Проверка аккаунтов на {model}, всего: {count}",
69055
+ "row.poolLogTitle": "Активность",
69056
+ "row.poolManualAccountLabel": "Аккаунт в работе",
69057
+ "row.poolManualAccountNone": "Аккаунт не действует",
69058
+ "row.poolManualUnlock": "Выключить ротацию",
69059
+ "row.poolMembersHint": "В ротации, отметке и проверке участвуют только отмеченные аккаунты.",
69060
+ "row.poolMembersTitle": "Аккаунты в этом пуле",
69061
+ "row.poolModeAuto": "выбирается автоматически",
69062
+ "row.poolModelWideBusy": "Все участники заблокированы на одной и той же модели — дело в модели, а не в ваших аккаунтах.",
69063
+ "row.poolModelWideBusyHint": "Смена аккаунта не поможет: лимит привязан к модели, и другой аккаунт упрётся в ту же стену. Подождите около минуты или переключитесь на менее занятую модель в этой сессии.",
69064
+ "row.poolModeManual": "выбираете вы",
69065
+ "row.poolMoveDownAria": "Переместить {accountName} ниже в порядке этого пула",
69066
+ "row.poolMoveDownTitle": "Переместить аккаунт ниже в порядке этого пула",
69067
+ "row.poolMoveUpAria": "Переместить {accountName} выше в порядке этого пула",
69068
+ "row.poolMoveUpTitle": "Переместить аккаунт выше в порядке этого пула",
69069
+ "row.poolNeverTested": "Не проверялся",
69070
+ "row.poolNoCandidate": "Сейчас ни один аккаунт в этом пуле нельзя использовать.",
69071
+ "row.poolNoCandidateHint": "Участники ограничены по частоте, без кредитов, отклонены или недоступны. Ограничения частоты, исчерпанные квоты и временные сбои возвращаются в пул сами — в срок, указанный сервисом, или через 30 минут по умолчанию. Только отклонённые учётные данные требуют нового входа.",
69072
+ "row.poolNoneSelected": "В этом пуле не отмечен ни один аккаунт.",
69073
+ "row.poolNoneSelectedHint": "Отметьте хотя бы один аккаунт, чтобы включить отметку и проверку.",
69074
+ "row.poolNotCheckedIn": "Не отмечено",
69075
+ "row.poolNotMember": "Не в пуле",
69076
+ "row.poolNotMemberHint": "Не в пуле: ротация его пропускает, а пакетная отметка и проверка его не трогают.",
69077
+ "row.poolOrderBadgeNote": "Значок показывает позицию, которую вы сохранили, а не текущий рейтинг. Аккаунт может значиться как «№ 2», хотя он отстранён из-за ограничения частоты — число отражает ваше сохранённое предпочтение, а пул пропускает аккаунты, которые сейчас не может оплатить.",
69078
+ "row.poolOrderRuleExpiring": "2. Есть ли кредиты, истекающие в течение 3 дней? Если да, аккаунт идёт первым. Это важнее и вашего ручного порядка — см. примечание ниже.",
69079
+ "row.poolOrderRuleExpiringAmount": "5. Сколько их истекает? Среди этих аккаунтов первым идёт тот, у кого больше на кону. Если истекающих кредитов нет, это равносильно сравнению итогов.",
69080
+ "row.poolOrderRuleFreshness": "7. Свежесть входа. При равенстве побеждают более свежие учётные данные.",
69081
+ "row.poolOrderRuleId": "8. Идентификатор аккаунта. Окончательное разрешение равенства, чтобы один и тот же пул всегда давал одинаковый порядок.",
69082
+ "row.poolOrderRuleManual": "3. Ручной порядок. Позиция, которую вы задали стрелками ↑ / ↓. Аккаунты без заданного порядка ставятся после всех упорядоченных.",
69083
+ "row.poolOrderRuleNearestExpiry": "4. Чей срок истечения ближе? Среди аккаунтов, у которых есть истекающие кредиты, первым идёт тот, кто теряет их раньше.",
69084
+ "row.poolOrderRulesIntro": "Пул всегда выбирает первый аккаунт, который действительно можно оплатить прямо сейчас. Правила ниже проверяются по порядку — решает первое, которое различает два аккаунта; остальные лишь разрешают равенство.",
69085
+ "row.poolOrderRulesTitle": "Как этот пул выбирает аккаунт",
69086
+ "row.poolOrderRulesToggle": "Показать все правила порядка",
69087
+ "row.poolOrderRuleTotal": "6. Всего кредитов. Первым идёт аккаунт, у которого их больше, чтобы почти исчерпанный оставался в запасе.",
69088
+ "row.poolOrderRuleUsable": "1. Можно ли оплатить его прямо сейчас? Аккаунты с ограничением частоты, без кредитов, с отклонёнными учётными данными или со сбоями уходят в конец до конца паузы. Это важнее всего, включая ваш собственный порядок ниже.",
69089
+ "row.poolOrderWhy": "Почему истекающие кредиты важнее ручного порядка: истекающие кредиты — это деньги, которые вот-вот пропадут, а ручной порядок может быть устаревшим или случайным. Если бы побеждал ручной порядок, одно неверное перетаскивание могло бы дать кредитам сгореть без пользы. Поэтому аккаунт с кредитами, истекающими в течение 3 дней, всегда идёт впереди аккаунта без них, даже если вы перетащили его в самый низ.",
69090
+ "row.poolProbeDaysAgo": "{count} д назад",
69091
+ "row.poolProbeHoursAgo": "{count} ч назад",
69092
+ "row.poolProbeJustNow": "только что",
69093
+ "row.poolProbeMinutesAgo": "{count} мин назад",
69094
+ "row.poolProbeModel": "модель {model}",
69095
+ "row.poolProbeModelUnknown": "модель не записана",
69096
+ "row.poolProbeSizeDefault": "По умолчанию (25 тыс.)",
69097
+ "row.poolProbeSizeHint": "Сколько текста отправляет проверка. Сервис отклоняет запрос, когда тот превышает примерно 20–30 тыс. токенов, поэтому проверка меньше ваших реальных диалогов отвечает «пригоден» для аккаунта, который их отклонил бы. Крупные проверки правдивее, но каждая стоит больше кредитов.",
69098
+ "row.poolProbeSizeLabel": "Размер запроса проверки",
69099
+ "row.poolProbeSizeOption": "{tokens} тыс. токенов",
69100
+ "row.poolProbeSourceLive": "по живому запросу",
69101
+ "row.poolProbeSourceTest": "проверено",
69102
+ "row.poolProbeSourceUnknown": "источник неизвестен",
69103
+ "row.poolRankAuto": "Авто",
69104
+ "row.poolRankAutoTitle": "Ручной порядок ещё не задан: пул сначала тратит истекающие кредиты, затем выбирает аккаунты по остатку. Задайте свой порядок стрелками ↑/↓.",
69105
+ "row.poolRankLabel": "Номер: {rank}",
69106
+ "row.poolRankManualTitle": "Этот аккаунт поставлен вами вручную на позицию {rank} в пуле.",
69107
+ "row.poolRegionNote": "Внутренний и международный пулы полностью независимы: аккаунты, переключения, интервалы и целевые модели никогда не влияют друг на друга.",
69108
+ "row.poolRetryAt": "Вернётся после {at}",
69109
+ "row.poolRetryUnknown": "Сервис не указал, когда это освободится",
69110
+ "row.poolRowRemove": "Убрать",
69111
+ "row.poolRowRemoveAria": "Убрать сохранённые учётные данные {accountName}",
69112
+ "row.poolRowRemoved": "{accountName}: скрыт из списка. «Найти аккаунты снова» вернёт его; настольное приложение остаётся в системе.",
69113
+ "row.poolRowRemoveDesktopOnly": "{accountName}: скрыт из списка — этот аккаунт взят из входа самого настольного приложения, который не затрагивается. «Найти аккаунты снова» вернёт его.",
69114
+ "row.poolRowRemoveHint": "Убрать этот аккаунт из списка. Настольное приложение WorkBuddy при этом не выходит из системы — у него остаётся собственный вход. Удаление лишь скрывает аккаунт здесь; «Найти аккаунты снова» вернёт его.",
69115
+ "row.poolRowRemoving": "Удаление аккаунта…",
69116
+ "row.poolRowTest": "Проверить",
69117
+ "row.poolSaved": "Сохранить",
69118
+ "row.poolSavedStaleRefresh": "Сохранено, но панель не смогла перечитать значение. Оно записано; следующее обновление его покажет.",
69119
+ "row.poolSaveFailed": "Не удалось сохранить: {message}",
69120
+ "row.poolSaving": "Сохранение…",
69121
+ "row.poolSelectAll": "Выбрать все",
69122
+ "row.poolSelectAria": "Включить {accountName} в пул аккаунтов этого региона",
69123
+ "row.poolSelectedCount": "Выбрано: {count} из {total}",
69124
+ "row.poolSelectNone": "Снять выбор",
69125
+ "row.poolServingOutside": "«{account}» сейчас обслуживает запросы, но его нет в этом пуле: ротация его не выберет, а пакетная отметка и проверка его не тронут.",
69126
+ "row.poolSettingsHint": "Это предпочтения: они вступают в силу при сохранении (как и список моделей). Результаты проверок записываются автоматически, и эта кнопка на них не влияет.",
69127
+ "row.poolSettingsTitle": "Дополнительные настройки",
69128
+ "row.poolTargetAuto": "Авто",
69129
+ "row.poolTargetAutoOption": "Авто — выбрать бесплатную модель",
69130
+ "row.poolTargetCurrentFree": "Текущая: {model} (бесплатная модель выбрана автоматически).",
69131
+ "row.poolTargetCurrentPreferred": "Текущая: {model} (ваш выбор).",
69132
+ "row.poolTargetFree": "Бесплатная модель, выбранная автоматически: {model}",
69133
+ "row.poolTargetHint": "Одна модель для всех аккаунтов здесь — проверка измеряет каждую строку ею. «Авто» выбирает модель с нулевым множителем из каталога этого региона, предпочитая самое большое контекстное окно; ручной выбор важнее.",
69134
+ "row.poolTargetLabel": "Модель проверки (весь пул)",
69135
+ "row.poolTargetNone": "В этом регионе пока нет модели с нулевым множителем.",
69136
+ "row.poolTargetNoneHint": "Внутренний каталог раскрывает множители только после обновления моделей. Чтобы не тратить кредиты на платную модель молча, проверка выключена, пока такая модель не появится — обновите модели или выберите целевую модель сами.",
69137
+ "row.poolTargetNoneShort": "нет бесплатной модели",
69138
+ "row.poolTargetPreferred": "Выбранная вами модель: {model}",
69139
+ "row.poolTargetStale": "Сохранённая целевая модель больше не предлагается: {model}",
69140
+ "row.poolTargetStaleClear": "Вернуться к автоматическому выбору",
69141
+ "row.poolTargetStaleHint": "Каталог региона изменился и больше не содержит эту модель, поэтому проверка выключена, а не выполняется на модели, которую сервис может не принять. Выберите другую цель или вернитесь к автоматическому выбору.",
69142
+ "row.poolTargetStaleOption": "{model} (больше не предлагается)",
69143
+ "row.poolTargetStaleShort": "целевая модель недоступна",
69144
+ "row.poolTestAll": "Проверить выбранные",
69145
+ "row.poolTestedAt": "Проверено {at}",
69146
+ "row.poolTesting": "Проверка…",
69147
+ "row.poolTitle": "Пул аккаунтов",
69148
+ "row.poolUnsavedMembers": "Выбор изменён — сохраните, чтобы применить",
69149
+ "row.probe": "Проверить",
69150
+ "row.probeAccountRestricted": "Аккаунт ограничен на стороне сервиса",
69151
+ "row.probeChannelRejected": "✗ Шлюз отклонил сам запрос, а не этот аккаунт — начало системного сообщения совпало с его фильтром сторонних агентов, поэтому другой аккаунт или регион ответят так же",
69152
+ "row.probeChannelRejectedShort": "✗ Шлюз отклонил запрос",
69153
+ "row.probeCredentialRejected": "✗ WorkBuddy отклонил токен этого аккаунта — войдите снова или выберите другой аккаунт",
69154
+ "row.probeError": "Не удалось выполнить проверку: {message}",
69155
+ "row.probeFailed": "✗ Проверка не удалась",
69156
+ "row.probeFailedStatus": "✗ Проверка не удалась (HTTP {status})",
69157
+ "row.probeHint": "Отправляет этой модели запрос реального объёма (~25 тыс. входных токенов) и сообщает, отвечает ли она прямо сейчас. Ограничение частоты у сервиса срабатывает на РАЗМЕР запроса — замерено: около 20 тыс. токенов проходят, около 30 тыс. отклоняются — поэтому маленький запрос может выглядеть нормально, тогда как все запросы из долгих диалогов отклоняются. Именно поэтому каждая проверка стоит реальных кредитов (около 0,7) и выполняется по одной модели за раз.",
69158
+ "row.probeModelBusyAt": "✗ Эта модель сейчас загружена · дело не в вашем аккаунте; повторите после {at} или смените модель",
69159
+ "row.probeModelBusyUnknown": "✗ Эта модель сейчас загружена · дело не в вашем аккаунте — другой аккаунт не поможет; подождите около минуты или смените модель",
69160
+ "row.probeNotFound": "✗ Сервис не знает эту модель",
69161
+ "row.probeOk": "✓ Пригодна",
69162
+ "row.probeOkMs": "✓ Пригодна ({ms})",
69163
+ "row.probeOutOfCreditAt": "✗ Кредитов не хватает · квота обновится {at}",
69164
+ "row.probeOutOfCreditUnknown": "✗ Кредитов не хватает · сервис не указал, когда это освободится",
69165
+ "row.probePolicyRejected": "✗ Сервер WorkBuddy отклонил запрос по своей политике содержимого — повторный вход не поможет; попробуйте настольное приложение, другой регион или другой аккаунт",
69166
+ "row.probeRateLimitedAt": "✗ Ограничение частоты · снова пригодна после {at}",
69167
+ "row.probeRateLimitedUnknown": "✗ Ограничение частоты · сервис не указал, когда это освободится",
69168
+ "row.probeUnavailable": "✗ Не удалось связаться с сервисом — пригодного ответа не пришло",
69169
+ "row.probing": "Проверка…",
69170
+ "row.reasonEncrypted": "зашифровано — нужно настольное приложение",
69171
+ "row.reasonInvalid": "нет пригодного токена",
69172
+ "row.reasonMissing": "не найдено",
69173
+ "row.reasonUnreadable": "не читается",
69174
+ "row.reasonWrongRegion": "относится к другому региону",
69175
+ "row.recoversDays": "восстановится примерно через {count} д",
69176
+ "row.recoversHours": "восстановится примерно через {count} ч",
69177
+ "row.recoversImminent": "восстановится с минуты на минуту",
69178
+ "row.recoversMinutes": "восстановится примерно через {count} мин",
69179
+ "row.refresh": "Обновить",
69180
+ "row.refreshing": "Обновление…",
69181
+ "row.reloginHint": "При ошибках войдите заново в приложении WorkBuddy.",
69182
+ "row.remainingDays": "примерно через {count} д",
69183
+ "row.remainingHours": "примерно через {count} ч",
69184
+ "row.remainingImminent": "с минуты на минуту",
69185
+ "row.remainingMinutes": "примерно через {count} мин",
69186
+ "row.requestFailed": "Запрос не выполнен",
69187
+ "row.requestFailedHint": "Не удалось обновить — показаны последние загруженные данные: {message}",
69188
+ "row.rescanHidesKept": "Удалённые вами аккаунты всё ещё скрыты: плагин не смог обновить свой файл списка. В Windows это обычно блокировка файла — закройте антивирус или программы синхронизации, которые могут держать файлы в профиле DSH, и повторите.",
69189
+ "row.save": "Сохранить",
69190
+ "row.saveContentionHint": " (Файл заблокирован, поэтому запись отклонена — в Windows это обычно антивирус, клиент синхронизации вроде OneDrive или редактор с открытым файлом. Закройте то, что его держит, и сохраните снова; ваши правки на месте.)",
69191
+ "row.saveError": "Не удалось сохранить: {message}",
69192
+ "row.saving": "Сохранение…",
69193
+ "row.searchedHint": "Если WorkBuddy хранит вход в другом месте, укажите его плагину через переменную окружения WORKBUDDY_AUTH_FILE.",
69194
+ "row.searchedMore": "Показать ненайденные пути: {count}",
69195
+ "row.searchedTitle": "Проверенные пути",
69196
+ "row.selectionLostHint": "Сохранённого аккаунта больше нет на этом компьютере.",
69197
+ "row.selectionLostMessage": "Сохранённый для этого региона аккаунт больше не среди локальных входов (WorkBuddy заменил свой вход или убрал резервные копии). Остальные ваши входы в порядке — выберите актуальный из списка выше. Повторный вход в настольном приложении это не исправит.",
69198
+ "row.sessionTitleHint": "Хост отправляет один запрос заголовка на каждую новую сессию и тарифицирует его по ставке основной модели. Эта настройка перенаправляет этот единственный запрос на скрытую лёгкую модель. Сам запрос выполняется в любом случае. По умолчанию выключено.",
69199
+ "row.sessionTitleLabel": "Отправлять заголовки сессии лёгкой модели",
69200
+ "row.sessionTitleModel": "Целевая модель:",
69201
+ "row.showCreditsCn": "Показывать кредиты на панели поля ввода",
69202
+ "row.showCreditsCnHint": "Показывать остаток кредитов отечественного региона (WB CN) на панели поля ввода, но только пока эта сессия использует модель WB CN. Щёлкните по нему, чтобы увидеть остатки по аккаунтам и проверить отмеченные аккаунты одним щелчком (проверка тратит настоящие кредиты). Показание обновляется само каждые 5 минут, таблица по аккаунтам — каждые 60 секунд, пока она открыта.",
69203
+ "row.showCreditsGlobal": "Показывать кредиты на панели поля ввода",
69204
+ "row.showCreditsGlobalHint": "Показывать остаток кредитов международного региона (WB AI) на панели поля ввода, но только пока эта сессия использует модель WB AI. Щёлкните по нему, чтобы увидеть остатки по аккаунтам и проверить отмеченные аккаунты одним щелчком (проверка тратит настоящие кредиты). Показание обновляется само каждые 5 минут, таблица по аккаунтам — каждые 60 секунд, пока она открыта.",
69205
+ "row.showCreditsHintInline": "Остаток на аккаунте, который сейчас обслуживает эту вкладку. Щёлкните, чтобы увидеть остатки по аккаунтам; он также обновляется каждые 5 минут.",
69206
+ "row.signedOutEncrypted": "Вход WorkBuddy на месте, но его поля токенов зашифрованы, и плагин не смог прочитать ключ. Установите настольное приложение WorkBuddy или укажите в WORKBUDDY_APP_EXECUTABLE путь к его исполняемому файлу — повторный вход этого не изменит.",
69207
+ "row.signedOutHint": "Войдите один раз в настольном приложении WorkBuddy; плагин подхватит этот вход автоматически.",
69208
+ "row.signedOutWrongRegion": "Вход WorkBuddy найден, но он относится к вкладке другого региона. Переключитесь на неё выше — входить заново ничего не нужно.",
69209
+ "row.sourceDesktop": "настольное приложение",
69210
+ "row.sourceDsh": "копия плагина",
69211
+ "row.tabCn": "Отечественный",
69212
+ "row.tabFreeQuotaWarn": "У бесплатных моделей есть пределы — сервис ограничивает их по размеру запроса и нагрузке.",
69213
+ "row.tabGlobal": "Международный",
69214
+ "row.tabHint": "Каждая вкладка — отдельный провайдер (workbuddy / workbuddy-global) со своим аккаунтом, кредитами и моделями. Обе стороны работают одновременно: разные сессии могут брать любую из них, а изменения на одной вкладке никогда не затрагивают другую.",
69215
+ "row.tabOffNotice": "Этот провайдер выключен: ни одна его модель не предлагается DSH. Аккаунт, кредиты и настройки моделей сохранены — отметьте флажок над вкладкой, чтобы вернуть его.",
69216
+ "row.tabSwitchAria": "Предлагать провайдер {region} в DSH",
69217
+ "row.tabSwitchHint": "Снимите флажок, чтобы выключить этого провайдера. Его модели исчезнут из списка моделей DSH; аккаунт, кредиты и настройки моделей сохранятся и вернутся, когда вы отметите флажок снова.",
69218
+ "row.title": "Кредиты и модели WorkBuddy (dsh-connect-workbuddy)",
69219
+ "row.tpsAllFailed": "Не удалось измерить скорость",
69220
+ "row.tpsCredit": "Кредитов: {credit}",
69221
+ "row.tpsHint": "Измеряет скорость вывода этой модели: три коротких запроса, берётся медиана. За один прогон расходуется около 256 выходных токенов, и это заметно дешевле проверки доступности (замерено: 0,01–0,15 кредита). Результат показывается вместе со временем замера, потому что скорость зависит от нагрузки, а старое число хуже, чем никакого.",
69222
+ "row.tpsMeasure": "Скорость",
69223
+ "row.tpsMeasuredAt": "замерено {at}",
69224
+ "row.tpsMeasuring": "Измерение…",
69225
+ "row.tpsNoSample": "Не удалось замерить эту модель (слишком мало фрагментов потока)",
69226
+ "row.tpsNoUsage": "Не удалось замерить эту модель (сервис не сообщил число токенов)",
69227
+ "row.tpsPartial": "{tps} ток/с (прогонов: {samples})",
69228
+ "row.tpsSweepAll": "Измерить скорость (все)",
69229
+ "row.tpsSweepEnabled": "Измерить скорость (включённые)",
69230
+ "row.tpsSweepEnabledHint": "Измеряет СКОРОСТЬ ВЫВОДА для каждой ВКЛЮЧЁННОЙ вами модели: по три прогона, берётся медиана. В отличие от проверок доступности выше, здесь отправляется крошечная подсказка и запрашивается 256 выходных токенов, поэтому на модель выходит намного дешевле (замерено: 0,01–0,15 кредита против 0,72), так как этот шлюз считает цену по входу. Скорость важна, потому что DSH запускает модели как параллельных субагентов, и медленная модель стоит времени в масштабе всего прогона.",
69231
+ "row.tpsTesting": "Измерение {done}/{total}…",
69232
+ "row.tpsValue": "{tps} ток/с",
69233
+ "row.tpsValueTtft": "{tps} ток/с · первый токен {ttft} с",
69234
+ "row.transferCancel": "Отмена",
69235
+ "row.transferEntryUnknown": "аккаунт неизвестен",
69236
+ "row.transferError": "Не удалось перенести: {message}",
69237
+ "row.transferExport": "Экспортировать аккаунты",
69238
+ "row.transferExportConfirm": "Экспортировать аккаунты: {count}",
69239
+ "row.transferExported": "Экспортировано аккаунтов: {count} в файл {fileName}.",
69240
+ "row.transferExporting": "Экспорт…",
69241
+ "row.transferExportPick": "Выберите аккаунты для экспорта (доступно: {total}):",
69242
+ "row.transferHint": "Перенос аккаунтов между компьютерами в виде файла JSON. Файл содержит учётные данные — держите его при себе. Формат общий с другими менеджерами учётных данных WorkBuddy.",
69243
+ "row.transferImport": "Импортировать аккаунты",
69244
+ "row.transferImportConfirm": "Импортировать аккаунты: {count}",
69245
+ "row.transferImported": "Импортировано аккаунтов: {imported}; пропущено: {skipped} (нет токена или относится к другому региону).",
69246
+ "row.transferImporting": "Импорт…",
69247
+ "row.transferNoToken": "в этой записи нет токена",
69248
+ "row.transferPreviewing": "Чтение файла…",
69249
+ "row.transferPreviewTotal": "В файле аккаунтов: {total} — снимите отметки с тех, что не нужны. Аккаунты, уже сохранённые здесь, будут перезаписаны импортом.",
69250
+ "row.transferTitle": "Экспорт и импорт аккаунтов",
69251
+ "row.upstreamHint": "Это меняет то, что видит шлюз, а не то, какой провайдер обслуживает вызов. Все они считываются при монтировании плагина, поэтому после изменения перезагрузите плагин (или перезапустите DSH).",
69252
+ "row.usageIdentityHint": "Добавляет заголовки X-IDE-* (они заполняют столбец использования, иначе пустой) и отправляет идентификаторы беседы как 32-символьный UUIDv7 в шестнадцатеричном виде. Только для вида: User-Agent и тело запроса не меняются никогда. По умолчанию выключено, потому что сведения идут от стороннего наблюдателя, а не от этого плагина.",
69253
+ "row.usageIdentityLabel": "Чтобы страница использования записывала эти вызовы как официальный клиент",
69254
+ "row.veilHintList": "Список обновится, как только это завершится.",
69255
+ "sidebar.creditsCn": "Кредиты WB CN",
69256
+ "sidebar.creditsGlobal": "Кредиты WB AI",
69257
+ "sidebar.lastRefresh": "Последнее обновление: {time}",
69258
+ "sidebar.refresh": "Обновить",
69259
+ "sidebar.refreshFailed": "Не удалось обновить",
69260
+ "sidebar.refreshing": "Обновление…",
69261
+ "sidebar.signedOut": "Вход не выполнен"
69262
+ },
69263
+ "web-search-free": {
69264
+ "Aliyun API key (configured)": "Ключ Aliyun DashScope API (DASHSCOPE_API_KEY)",
69265
+ "AnySearch API key (configured)": "Ключ AnySearch API (необязателен: без него бесплатно, с ключом квота выше)",
69266
+ "apiKeys": "Ключи API",
69267
+ "Baidu API key (configured)": "Ключ Baidu Qianfan API (BAIDU_API_KEY)",
69268
+ "billedHint": "Поиск через модель (OpenAI/Gemini/Claude): платный за каждый вызов, работает только при явном выборе и никогда в автоматическом переборе.",
69269
+ "billedLabel": "Оплата за поиск",
69270
+ "bingMarketHint": "За этим следуют mkt и Accept-Language в Bing. Например, ru-RU даёт русские результаты для запросов на кириллице.",
69271
+ "bingMarketLabel": "Рынок Bing (локализованные результаты)",
69272
+ "blockedDomainsHint": "По одному домену в строке. Совпавший сайт и все его поддомены исключаются из результатов (csdn.net покрывает blog.csdn.net). Пустое поле отключает список. Полные адреса принимаются — схема, путь и порт отбрасываются автоматически.",
69273
+ "blockedDomainsLabel": "Список заблокированных доменов (blockedDomains)",
69274
+ "blockedDomainsWarn": "Пропущено дублей: ${dupes}, неузнанных строк: ${dropped}; исправлено до голых доменов: ${corrected}. Правила вступят в силу при следующем поиске, кэш результатов при этом сбрасывается.",
69275
+ "cacheTtl": "Время жизни кэша результатов (мин)",
69276
+ "cacheTtlHint": "0 отключает кэш, максимум 5 минут. Меньше — свежее результаты, больше — меньше упрёков в частоту и меньше кредитов.",
69277
+ "checkingUpdate": "Проверка…",
69278
+ "checkUpdate": "Проверить обновление",
69279
+ "classAuth": "Ошибка авторизации (auth)",
69280
+ "classBotWall": "Защита от ботов (bot-wall)",
69281
+ "classInvalidResponse": "Ошибка разбора или пустой ответ (invalid-response)",
69282
+ "classQuota": "Квота или бюджет исчерпаны (quota)",
69283
+ "classTransient": "Тайм-аут, сеть или ограничение частоты (transient)",
69284
+ "classUnknown": "Прочее неизвестное (unknown)",
69285
+ "Claude key (configured)": "Ключ Anthropic (ANTHROPIC_API_KEY, платный за поиск, только при явном выборе)",
69286
+ "DeepSeek API key (configured)": "Ключ DeepSeek API (sk-…)",
69287
+ "description": "Бесплатный веб-поиск без ключа API (Bing, DuckDuckGo, AnySearch, Exa, Tavily, Keenable, Firecrawl, Parallel, You.com)",
69288
+ "discard": "Отменить",
69289
+ "Doubao search key (configured)": "Ключ поиска Doubao / Volcano (DOUBAO_SEARCH_API_KEY, 500 бесплатных в месяц)",
69290
+ "engineEnable": "Включённые поисковые системы",
69291
+ "engineEnableHint": "Снятые движки исключаются везде: в переборе web_search, в маршрутизации Auto, в advanced_search, multi_search и в проверках движков. Хотя бы один движок должен остаться включённым.",
69292
+ "engineHint": "Multi Search опрашивает все включённые движки языкового пула запроса одновременно и объединяет результаты без повторов (пулы zh и en редактируются ниже, не меньше двух движков в каждом). Auto подбирает один движок по языку запроса и фильтру времени. Движкам с API KEY нужны ключи ниже.",
69293
+ "enPoolLabel": "Пул запросов на английском",
69294
+ "Exa API key (configured)": "Ключ Exa API (необязателен: без него бесплатно)",
69295
+ "fallbackOnHint": "Какие классы ошибок запускают переход к следующему движку. Все отмечены — текущее поведение (поиск не падает никогда); сняли отметку — и такая ошибка остановит поиск и покажет ошибку движка вместо перебора. Отсутствие ключа, выключенный движок и неподдерживаемый фильтр времени ошибкой не считаются и всегда передают ход дальше.",
69296
+ "fallbackOnLabel": "Причины перехода (fallbackOn)",
69297
+ "fallbackPriority": "Общий порядок перебора",
69298
+ "fallbackPriorityHint": "Сверху вниз — порядок перебора. Предпочитаемый движок всё равно пробуется первым. Auto сохраняет маршрутизацию по языку и времени, а заданный порядок упорядочивает движки внутри группы маршрута и остальную цепочку. Выключенные движки сохраняют место, но пропускаются.",
69299
+ "fallbackPriorityReset": "Вернуть порядок по умолчанию",
69300
+ "fetchTakeoverHint": "Включено: если web.fetchProvider не задан или всё ещё равен заводскому http, он подменяется на fs-quality-fetch. Выключите, если http закреплён намеренно (например, нужен только встроенный загрузчик).",
69301
+ "fetchTakeoverLabel": "Перехватывать web_fetch автоматически",
69302
+ "Firecrawl API key (configured)": "Ключ Firecrawl API (необязателен: без него бесплатно)",
69303
+ "Gemini key (configured)": "Ключ Gemini (GEMINI_API_KEY / GOOGLE_API_KEY, платный за поиск, только при явном выборе)",
69304
+ "getKey": "Получить ключ API →",
69305
+ "hasUpdate": "Доступно обновление",
69306
+ "Jina key (configured)": "Ключ Jina (JINA_API_KEY)",
69307
+ "Keenable API key (configured)": "Ключ Keenable API (необязателен: без него бесплатно)",
69308
+ "keysHint": "Где ищется ключ: сначала центр учётных данных .credentials.yaml, затем это поле, затем переменные окружения. Рекомендуем хранить ключи в центре учётных данных — там же, где ключи провайдеров моделей: одно место для всего.",
69309
+ "keyStatusConfigured": "Ключ задан",
69310
+ "keyStatusMissing": "Нужен ключ",
69311
+ "keyStatusOptional": "Ключ необязателен (работает и без него)",
69312
+ "keyStorage": "Хранение ключей",
69313
+ "keyStorageCred": "Центр учётных данных (рекомендуется)",
69314
+ "keyStorageCredHint": "Saved to ~/.dsh/.credentials.yaml (highest priority). Currently configured: ${[\"anysearch\", \"exa\", \"tavily\", \"keenable\", \"firecrawl\", \"parallel\", \"perplexity\", \"serpbase\", \"serply\", \"deepseek\", \"youcom\", \"baidu\", \"kimi\", \"aliyun\", \"doubao\", \"openai\", \"gemini\", \"claude\"].filter((k) => c[k]).map((k) => k.toUpperCase()).join(\", \") || \"none\"}",
69315
+ "keyStorageSettings": "Страница настроек (устаревший способ)",
69316
+ "keyStorageSettingsHint": "Сохраняется в конфигурацию плагина активного профиля (cordis.patch.yml; приоритет ниже, чем у центра учётных данных).",
69317
+ "Kimi API key (configured)": "Ключ Kimi API (MOONSHOT_API_KEY)",
69318
+ "languagePoolHint": "Голова маршрута для Auto и общий пул для Multi: выбираются по языку запроса. Multi опрашивает весь пул (уже не три движка). В каждом пуле не меньше двух движков, верхнего предела нет; выключенные, остывающие и бесключевые движки пропускаются автоматически.",
69319
+ "marketAuto": "Автоматически — mkt не передаётся (рекомендуется вне перечисленных регионов)",
69320
+ "marketDeDE": "de-DE — Германия",
69321
+ "marketEnGB": "en-GB — Великобритания",
69322
+ "marketEnUS": "en-US — США",
69323
+ "marketEsES": "es-ES — Испания",
69324
+ "marketFrFR": "fr-FR — Франция",
69325
+ "marketJaJP": "ja-JP — Япония",
69326
+ "marketKoKR": "ko-KR — Корея",
69327
+ "marketRuRU": "ru-RU — Россия",
69328
+ "marketZhCN": "zh-CN — Китай (по умолчанию)",
69329
+ "marketZhTW": "zh-TW — Тайвань",
69330
+ "multiMaxEngines": "Потолок одновременности Multi (multiMaxEngines)",
69331
+ "multiMaxEnginesHint": "Сколько движков Multi может опросить одновременно. 0 — без ограничения (по умолчанию опрашивается весь языковой пул, как раньше). Это потолок, а не квота: меньше кандидатов — просто меньше запусков.",
69332
+ "multiMinSources": "Цель Multi по удачным источникам (multiMinSources)",
69333
+ "multiMinSourcesHint": "Сколько движков в идеале должны вернуть результаты. Если не хватает, подключаются движки вне пула, пока цель не выполнится. Это цель, а не жёсткий минимум: если её не достичь, возвращаются имеющиеся результаты и добавляется пометка — поиск из-за этого не падает.",
69334
+ "multiPreset": "Набор",
69335
+ "multiPresetCustom": "Свой",
69336
+ "multiPresetHint": "Одно нажатие ставит два числа выше в частую комбинацию (Быстро — 1 движок / 1 источник, Сбалансированно — 3 / 1, Глубоко — 6 / 2); правка чисел переключает обратно на «Свой». Сейчас: ${now}.",
69337
+ "navBehavior": "Поведение поиска",
69338
+ "navEngines": "Движки",
69339
+ "navFallback": "Перебор",
69340
+ "navFetch": "Загрузка",
69341
+ "navLabel": "На странице",
69342
+ "navPerformance": "Производительность",
69343
+ "navPools": "Языковые пулы",
69344
+ "OpenAI key (configured)": "Ключ OpenAI (OPENAI_API_KEY, платный за поиск, только при явном выборе)",
69345
+ "Parallel API key (configured)": "Ключ Parallel API (необязателен: без него бесплатно)",
69346
+ "Perplexity API key (configured)": "Ключ Perplexity API (pplx-…)",
69347
+ "platformHint": "Включите площадки для инструмента platform_search у агента. Выключенные площадки пропускаются.",
69348
+ "platformSearch": "Поиск по площадкам (инструмент platform_search)",
69349
+ "poolAddFirst": "Добавить движок…",
69350
+ "poolRemove": "Убрать",
69351
+ "poolReset": "Вернуть пул по умолчанию",
69352
+ "priorityDisabled": "выключен",
69353
+ "safeSearchHint": "Действует для bing (adlt), ddg и ddg-lite (степень adlt). Если видите собственную фильтрацию движка, настройте здесь.",
69354
+ "safeSearchLabel": "Безопасный поиск (adlt)",
69355
+ "safeSearchModerate": "Умеренно — как в Bing по умолчанию",
69356
+ "safeSearchOff": "Выключено — как в движке по умолчанию (без фильтрации)",
69357
+ "safeSearchStrict": "Строго",
69358
+ "save": "Сохранить",
69359
+ "saveFailed": "не удалось сохранить",
69360
+ "saveFailedDetail": "не удалось сохранить: ${d}",
69361
+ "saving": "Сохранение…",
69362
+ "searchEngine": "Поисковый движок",
69363
+ "SerpBase API key (configured)": "Ключ SerpBase API (с serpbase.dev)",
69364
+ "Serply API key (configured)": "Ключ Serply API (с serply.io)",
69365
+ "starCta": "Поставить звезду",
69366
+ "starPrompt": "Оставьте звезду — автору будет приятно",
69367
+ "Tavily API key (configured)": "Ключ Tavily API (необязателен: без него бесплатно)",
69368
+ "testEngine": "Проверить движок",
69369
+ "testFail": "✗ ${e}",
69370
+ "testing": "Проверка…",
69371
+ "TinyFish key (configured)": "Ключ TinyFish (TINYFISH_API_KEY, 12000 бесплатных в день)",
69372
+ "toggleLang": "中文",
69373
+ "unavailable": "Настройки недоступны — мост бесплатного поиска не подключён.",
69374
+ "unsaved": "не сохранено",
69375
+ "updateAvailable": "Есть новая версия v${l} (текущая v${c})",
69376
+ "updateCheckFailed": "Не удалось проверить обновления (реестр npm недоступен)",
69377
+ "updateLatest": "У вас последняя версия v${c}",
69378
+ "updateView": "Открыть →",
69379
+ "upgrade": "Обновить",
69380
+ "upgradeDone": "Обновлено до v${l} — перезапустите dsh, чтобы применить",
69381
+ "upgradeFailed": "Обновление не удалось: ${m}",
69382
+ "upgradeLinkMode": "(локальная установка для разработки — обновляйте через git pull)",
69383
+ "upgrading": "Обновление…",
69384
+ "useBing": "Как в Bing по умолчанию",
69385
+ "visit": "Открыть сайт →",
69386
+ "You.com API key (configured)": "Ключ You.com API (необязателен: без него 100 поисков в день бесплатно; YDC_API_KEY)",
69387
+ "Zhihu key (configured)": "Ключ Zhihu (ZHIHU_API_KEY, общий для поиска по всему Zhihu и по сайту)",
69388
+ "zhPoolLabel": "Пул запросов на китайском"
69389
+ },
69390
+ "dshOps": {
69391
+ "allowed": "Разрешённые возможности",
69392
+ "always": "Загружаются всегда",
69393
+ "bashHint": "Укажите абсолютный путь. Очистите поле, чтобы вернуться к настроенному значению по умолчанию.",
69394
+ "bashPath": "Свой путь к Bash",
69395
+ "busy": "Работает…",
69396
+ "cancel": "Отменить выполняемое действие",
69397
+ "discoverEnabled": "Включить поиск по требованию",
69398
+ "discoverHelp": "Всегда загружаемые возможности остаются доступными и при выключенном поиске. Разрешения по-прежнему проверяются при каждом вызове.",
69399
+ "discovery": "Выберите возможности, доступные по требованию и загружаемые всегда.",
69400
+ "dismiss": "Закрыть предпросмотр",
69401
+ "error": "Операция не удалась.",
69402
+ "exitCode": "Код выхода",
69403
+ "git": "Использовать Git Bash",
69404
+ "gitCount": "Установок Git Bash",
69405
+ "glob": "Искать пути к файлам",
69406
+ "grep": "Искать в содержимом файлов",
69407
+ "install": "Установить управляемый Bash",
69408
+ "invalidLimit": "Введите целое число от 1 до 5.",
69409
+ "limit": "Сколько инструментов предлагать за один поиск",
69410
+ "loading": "Загрузка настроек хоста…",
69411
+ "managed": "Использовать управляемый Bash",
69412
+ "managedCount": "Управляемых установок",
69413
+ "noRuntime": "Управление средами требует включённой строки оболочки и служб среды хоста.",
69414
+ "poolHelp": "Если убрать возможность из разрешённого набора, она снимется и из выбора «загружаются всегда».",
69415
+ "preview": "Проверить это действие",
69416
+ "previewInstall": "Проверить установку Bash",
69417
+ "previewPwsh": "Проверить обновление PowerShell",
69418
+ "previewRemove": "Проверить удаление Bash",
69419
+ "publishBash": "Разрешить Bash в доверенных сессиях",
69420
+ "pwshHelp": "Обновляет стандартную установку PowerShell 7 через WinGet. После этого перезапустите DSH. Свой путь pwshPath проверяйте отдельно: Windows PowerShell 5.1 остаётся нетронутым.",
69421
+ "read": "Читать файлы",
69422
+ "refresh": "Обновить состояние сред",
69423
+ "rejected": "Хост отказался сохранять. Верните последние сохранённые значения и проверьте изменения.",
69424
+ "remove": "Удалить управляемый Bash",
69425
+ "replacementPool": "Оставьте inspect_local_file для чтения или glob/grep для поиска всегда загруженными в поиске либо включите их, прежде чем выбирать замену. read_files не заменяет чтение.",
69426
+ "replacements": "Выберите, какие официальные инструменты подменяет OPS.",
69427
+ "replacementsHelp": "Выбранные инструменты работают по контрактам аргументов и вывода OPS. Чтение ограничено UTF-8; поиск пропускает скрытые файлы и ссылки. Снимите отметку, чтобы оставить официальный порядок работы.",
69428
+ "reset": "Вернуть сохранённое",
69429
+ "runtime": "Управление средами",
69430
+ "runtimeHelp": "Установка не меняет сохранённый выбор исполнителя. Останавливайте задачи Bash перед удалением управляемой установки.",
69431
+ "save": "Сохранить изменения",
69432
+ "saved": "Сохранено. Хост перезагрузил эту строку.",
69433
+ "saving": "Сохранение…",
69434
+ "selectionHint": "Проверьте выбранный путь, затем сохраните настройки оболочки.",
69435
+ "shell": "Управление Bash и стандартной установкой PowerShell на хосте.",
69436
+ "unavailable": "Включите эту строку встроенным переключателем, чтобы менять её настройки. Нужен профиль хоста, доступный для записи.",
69437
+ "unknownEffect": "Изменения могли произойти. Проверьте установку, прежде чем повторять.",
69438
+ "upgrade": "Установить или обновить PowerShell"
69439
+ },
69440
+ "pet.config": {
69441
+ "add": "Добавить питомца",
69442
+ "animationDir": "Папка анимаций (сюда кладутся и правятся анимации)",
69443
+ "atLeastOne": "Оставьте хотя бы одного питомца.",
69444
+ "balanceEnabled": "Равновесие",
69445
+ "balanceEnabledHint": "Когда включено, питомец проигрывает анимации равновесия и показывает пузырь равновесия.",
69446
+ "busy": "Сохранение…",
69447
+ "cancel": "Отмена",
69448
+ "chatImageLimit": "Предел картинок в чате",
69449
+ "chatImageLimitHint": "Сколько мемов максимум передавать модели в чате («первые N» — те, что вы записали первыми в конфиге, поэтому нужные переносите в начало). Весь список прикладывается к каждому сообщению, и токены растут линейно: длинный список — чистый расход. Ограничив его первыми N, вы заставляете модель выбирать только из них. 0 — без предела (передавать всё). Встроенное значение по умолчанию — 10. Общая настройка для всех питомцев (набор питомца может переопределить её в своём файле). Только чат — шёпот несёт лишь один мем, который сам выбрал.",
69450
+ "chatImageToggle": "Картинки в чате",
69451
+ "chatImageToggleHint": "Разрешить ИИ выбирать из набора один мем под текущий контекст (необязательно; соответствие лежит в поле `memes` верхнего уровня). Токены: каждое сообщение несёт весь каталог — сейчас это ~1,1 тыс. символов (~650 токенов, примерно в 11 раз больше шёпота) и растёт с числом картинок; при выключении не добавляется ничего.",
69452
+ "chatMemory": "Раундов истории чата",
69453
+ "chatMemoryHint": "Сколько последних раундов несёт каждый запрос чата (1 раунд = 1 вопрос + 1 ответ; 0 — без истории, каждое сообщение с чистого листа). Сама память хранит всё — здесь решается лишь, сколько уйдёт в контекст: больше помнит и дороже по токенам. Общая настройка для всех питомцев (набор питомца может переопределить её в своём файле).",
69454
+ "chatModelLabel": "Модель чата",
69455
+ "cmd.balance": "Равновесие",
69456
+ "cmd.chat": "Чат",
69457
+ "cmd.pet": "Питомец",
69458
+ "configMeta": "Дополнительно (файлы)",
69459
+ "configMetaHint": "Пользовательский конфиг может переопределять питомцев, наборы анимаций и веса — чтобы применить, обновите страницу в браузере или щёлкните питомца правой кнопкой на рабочем столе → «Перезагрузить конфиг» (пересобирает все окна питомцев). Полный справочник — конфиг по умолчанию.",
69460
+ "confineToggle": "Держать в пределах текущего экрана",
69461
+ "confineToggleHint": "Несколько мониторов: когда включено, питомец остаётся в пределах того экрана, где он сейчас, — брошенный отскакивает только внутри своего экрана (края экранов работают как стены, на соседний монитор он не улетит), а самостоятельные прогулки идут только в пределах текущего экрана (шаг через край просто отменяется). Выключите, чтобы он снова мог переходить между экранами. Только рабочий стол — в браузере оверлей и так остаётся внутри области просмотра.",
69462
+ "confirmRemove": "Удалить питомца «{id}»?",
69463
+ "confirmSync": "Синхронизировать? Встроенный конфиг по умолчанию перезапишет пользовательский (все поля и комментарии); текущие настройки пропадут.",
69464
+ "confirmTitle": "Подтвердите действие",
69465
+ "corner.bottom-left": "Слева снизу",
69466
+ "corner.bottom-right": "Справа снизу",
69467
+ "corner.top-left": "Слева сверху",
69468
+ "corner.top-right": "Справа сверху",
69469
+ "cornerHint": "К какому углу экрана прилипает питомец (в режиме рабочего стола — рабочая область своего монитора).",
69470
+ "cornerLabel": "Положение",
69471
+ "corruptBody": "Файл пользовательского конфига не разбирается (повреждён, не JSON или JSONC): {path}. Сохранение сейчас пересоберёт его из белого списка — всё, что в нём есть теперь (анимации, физика, мемы…), пропадёт. «Отмена» — оставить файл как есть (исправьте и сохраните снова); «Всё равно сохранить» — сохранить и потерять то, что в файле.",
69472
+ "corruptConfirm": "Всё равно сохранить",
69473
+ "corruptTitle": "Пользовательский конфиг повреждён — не сохранён",
69474
+ "defaultConfig": "Конфиг по умолчанию (только чтение, полный справочник)",
69475
+ "display.both": "Везде",
69476
+ "display.desktop": "Только рабочий стол",
69477
+ "display.none": "Нигде",
69478
+ "display.web": "Только браузер",
69479
+ "displayHint": "web — только браузер, desktop — только рабочий стол, both — везде, none — нигде",
69480
+ "displayLabel": "Где показывать",
69481
+ "emptyPets": "Питомцев пока нет — нажмите «Добавить питомца».",
69482
+ "extraPetsHint": "Питомцев, заданных файлами в папке pet/, ещё: {n} (<имя>-config.json + <имя>-animation/ + <имя>-memes/). В этом списке их нет — после правки файлов обновите страницу (в браузере) или щёлкните питомца на рабочем столе правой кнопкой → «Перезагрузить конфиг».",
69483
+ "fixedEnabled": "Закрепить на месте",
69484
+ "fixedEnabledHint": "Когда включено, случайная цепочка больше не поворачивает питомца и не уводит его с места — играют только действия покоя и на месте. Выбор правой кнопкой, вызовы API и анимации равновесия, шёпота и статуса работы при этом не меняются.",
69485
+ "font.candy": "Candy (в комплекте)",
69486
+ "font.comic": "Comic Sans MS",
69487
+ "font.kaiti": "KaiTi",
69488
+ "font.simsun": "SimSun",
69489
+ "font.system": "Системный шрифт",
69490
+ "font.yahei": "Microsoft YaHei / PingFang",
69491
+ "font.youyuan": "YouYuan",
69492
+ "fontFamilyHint": "«Candy (в комплекте)» идёт с плагином, остальные — системные. Если шрифта на машине нет, берётся следующий в списке (никогда не пусто и не ошибка).",
69493
+ "fontFamilyLabel": "Шрифт",
69494
+ "fontFollowToggle": "Масштабировать шрифт вместе с питомцем",
69495
+ "fontFollowToggleHint": "Включено (по умолчанию): шрифт растёт вместе с питомцем — при ширине 462 px он ровно того размера, что указан выше. Выключено: размер не зависит от размера питомца.",
69496
+ "fontHint": "Семейство применяется везде, где сейчас используется шрифт candy: пузырь питомца, подсказка при наведении, всплывающее окно чата, окно счёта. Размер применяется только к пузырю и подсказке (у чата и счёта свои размеры). Общая настройка для всех питомцев (набор питомца может переопределить её в своём файле); записывается в пользовательский конфиг по «Сохранить» — в браузере сразу, на рабочем столе применится, когда сохранение перезагрузит окна питомцев.",
69497
+ "fontSizeHint": "Размер текста в пузыре; подсказка и мелкие строки внутри пузыря масштабируются пропорционально. Диапазон 4–200.",
69498
+ "fontSizeLabel": "Размер шрифта (px)",
69499
+ "fontTitle": "Вид и шрифт",
69500
+ "globalHint": "Общее для всех питомцев (набор питомца может переопределить это в своём файле). Эти переключатели меняют только локальное состояние и попадают в пользовательский конфиг по «Сохранить» (сразу не записываются); системные уведомления перечитываются сразу после сохранения, обновлять страницу не нужно.",
69501
+ "globalTitle": "Общие переключатели",
69502
+ "intro": "Несколько питомцев сразу: у каждого свой размер и положение (применяется сразу после сохранения).",
69503
+ "invalid": "Проверьте ввод: размер должен быть положительным, отступы — любыми числами.",
69504
+ "invalidChatImageLimit": "Проверьте предел картинок: нужно число не меньше 0 (0 — без предела).",
69505
+ "invalidChatMemory": "Проверьте число раундов истории: нужно число не меньше 0.",
69506
+ "invalidFont": "Проверьте шрифт: семейство должно быть из списка, а размер — числом от 4 до 200.",
69507
+ "invalidModel": "Проверьте модель: выберите и провайдера, и модель либо оставьте оба поля пустыми (следовать текущей беседе).",
69508
+ "invalidPhysics": "Проверьте физику: гравитация и трение о землю не меньше 0, упругость 0–1, сила броска больше 0.",
69509
+ "loadError": "Не удалось загрузить конфиг",
69510
+ "loading": "Загрузка конфига…",
69511
+ "marginX": "Смещение по горизонтали",
69512
+ "marginXHint": "Расстояние от выбранного угла по горизонтали (px); любое число.",
69513
+ "marginY": "Смещение по вертикали",
69514
+ "marginYHint": "Расстояние от выбранного угла по вертикали (px); любое число.",
69515
+ "memesDir": "Папка мемов (сюда кладутся и правятся картинки)",
69516
+ "modelCatalogFailed": "Не удалось загрузить список моделей (обновите страницу, чтобы повторить); текущие значения сохранены.",
69517
+ "modelEmpty": "Подходящих моделей нет.",
69518
+ "modelFieldHint": "«Следовать текущей беседе» — брать модель беседы; если выбранная модель не ответит, плагин вернётся к модели беседы и повторит запрос один раз.",
69519
+ "modelFollow": "Следовать текущей беседе",
69520
+ "modelHint": "Какая модель используется для шёпота и для чата и сколько истории несёт каждый запрос чата. «Следовать текущей беседе» — брать модель текущей беседы (по умолчанию). Общая настройка: действует для всех питомцев, набор питомца может переопределить её в своём файле. Список берётся из того же источника, что и выбор модели в DSH, и отдаётся хостом вживую.",
69521
+ "modelLoading": "Обновление списка моделей…",
69522
+ "modelNoModels": "Моделей нет.",
69523
+ "modelNone": "У этого провайдера нет моделей",
69524
+ "modelSearch": "Поиск моделей…",
69525
+ "modelTitle": "Модели ИИ и контекст чата",
69526
+ "modelTriggerAria": "Выбрать модель, сейчас {model}",
69527
+ "modelUnknown": " (текущий конфиг, в списке нет)",
69528
+ "nameHint": "Показывается при наведении и добавляется в персону («тебя зовут X»). Повторы разрешены; пустое поле — берётся идентификатор питомца.",
69529
+ "nameLabel": "Имя",
69530
+ "nav": "Настройки питомца",
69531
+ "notifyDenyBlocked": "Браузер заблокировал разрешение на уведомления.",
69532
+ "notifyDenyError": "Не удалось запросить разрешение",
69533
+ "notifyDenyRejected": "Выбрано «Заблокировать» в запросе разрешения.",
69534
+ "notifyDenyUnsupported": "Системные уведомления здесь не поддерживаются (нет API Notification).",
69535
+ "notifyGuide": "Как включить: нажмите значок 🔒 или ⓘ рядом с адресной строкой → Настройки сайта → Уведомления → «Разрешить», затем обновите страницу и повторите.",
69536
+ "notifyTest": "Проверить уведомление",
69537
+ "notifyTestOk": "Пробное уведомление отправлено — смотрите правый нижний угол рабочего стола.",
69538
+ "notifyToggle": "Системные уведомления",
69539
+ "notifyToggleHint": "Всплывающие уведомления системы (правый нижний угол рабочего стола) о завершении беседы, ошибках, запросах разрешений и вопросах — только пока это окно не в фокусе.",
69540
+ "ok": "Понятно",
69541
+ "personaCount": "Символов: {n}",
69542
+ "personaHint": "Действует только на этого питомца. Оставьте пустым, чтобы наследовать персону записи — серый текст в поле это и есть. Фактически отправляемая системная подсказка = этот текст + строка «тебя зовут «<имя>»» + текущий контекст времени, поэтому имя и дату здесь не повторяйте.",
69543
+ "personaLabel": "Персона (необязательно)",
69544
+ "petCardHint": "Настройки питомца: имя, размер, где показывать, угол, смещения и четыре переключателя возможностей. Нажмите «Сохранить» внизу, чтобы применить сразу.",
69545
+ "petCardTitle": "Питомец",
69546
+ "petsLabel": "Питомцы",
69547
+ "physics.gravity": "Гравитация",
69548
+ "physics.gravityHint": "px/с² — чем больше, тем быстрее падает; 0 — невесомость (летит прямо бесконечно)",
69549
+ "physics.groundFriction": "Трение о землю",
69550
+ "physics.groundFrictionHint": "в секунду, горизонтальное затухание на земле; 0 — скользкий лёд",
69551
+ "physics.restitution": "Упругость",
69552
+ "physics.restitutionHint": "0–1, доля скорости при отскоке от стены или пола (1 — идеальный отскок, 0 — гасит сразу)",
69553
+ "physics.throwPower": "Сила броска",
69554
+ "physics.throwPowerHint": "больше 0, общий множитель слежения за указателем и скорости отпускания (1 — по умолчанию; больше — точнее слежение и сильнее броски)",
69555
+ "physicsCeilingBounce": "Отскок от потолка",
69556
+ "physicsCeilingBounceHint": "Выключите, чтобы брошенный питомец мог улететь за верхний край экрана (гравитация всё равно вернёт его)",
69557
+ "physicsHint": "Общая настройка для всех питомцев (набор питомца может переопределить её в своём файле); записывается в пользовательский конфиг по «Сохранить» (сразу не пишется). В браузере применяется сразу, на рабочем столе — когда сохранение перезагрузит окна питомцев.",
69558
+ "physicsPetCollision": "Столкновения питомцев",
69559
+ "physicsPetCollisionHint": "Летящий питомец отскакивает от других с сохранением импульса (масса пропорциональна квадрату размера)",
69560
+ "physicsTitle": "Физика (ощущение перетаскивания и броска)",
69561
+ "remove": "Убрать",
69562
+ "retry": "Повторить",
69563
+ "save": "Сохранить",
69564
+ "saved": "Сохранено — питомцы обновились сразу.",
69565
+ "saveHotkey": "Ctrl+S / Cmd+S",
69566
+ "sizeHint": "Высота считается сама: ширина × 9/16.",
69567
+ "sizeLabel": "Размер (ширина, px)",
69568
+ "storage.desktopCache": "Кэш окон питомца на рабочем столе и кэш масштаба основного монитора (можно удалять, собирается заново)",
69569
+ "storage.electron": "Среда Electron для питомца на рабочем столе (крупная; скачается заново при следующем запуске режима рабочего стола)",
69570
+ "storage.electronCache": "Кэш загрузки установщика Electron (можно удалять, скачается при необходимости)",
69571
+ "storage.package": "Сам плагин (управляется DSH — удаляйте командой ниже, а не вручную)",
69572
+ "storage.userData": "Данные плагина: свой конфиг main-config.jsonc, память чата memory.json, свои анимации main-animation/, питомцы из файлов pet/",
69573
+ "storageHint": "Все места, куда пишет плагин. Удалять папки кэша безопасно (скачаются и пересоберутся); удаление «данных плагина» забирает конфиг и память чата.",
69574
+ "storageMissing": " (ещё не создана)",
69575
+ "storageTitle": "Удаление и хранилище",
69576
+ "sync": "Синхронизировать",
69577
+ "syncHint": "«Синхронизировать» записывает встроенный конфиг по умолчанию (с комментариями и всеми дополнительными полями) в файл пользовательского конфига, затирая ваши настройки; после этого файл можно править напрямую. Два предостережения: (1) созданный файл становится слоем переопределения — будущие изменения встроенных значений сами не подхватятся (пока не синхронизируете снова или не удалите файл); (2) нажатие «Сохранить» на этой странице пересобирает файл по белому списку — значения полей сохраняются, комментарии пропадают.",
69578
+ "uninstallCmd": "dsh plugin --profile {profile} remove dsh-pet",
69579
+ "uninstallStep1": "1. Сначала закройте DSH (питомец на рабочем столе завершится вместе с ним); не удаляйте эти файлы, пока питомец работает.",
69580
+ "uninstallStep2": "2. Удалите сам плагин (выполните в терминале; он снимется и со слоя плагинов профиля):",
69581
+ "uninstallStep3": "3. Удалите перечисленные места по необходимости: папки кэша безопасны; удаление «данных плагина» забирает конфиг и память чата (если main-config.jsonc нужен, скопируйте его заранее).",
69582
+ "uninstallTitle": "Как удалить",
69583
+ "userConfig": "Пользовательский конфиг (свои переопределения)",
69584
+ "whisperEnabled": "Шёпот",
69585
+ "whisperEnabledHint": "Когда включено, питомец время от времени сам придумывает реплику через ИИ и проигрывает анимацию шёпота (персона — поле ниже; пустое наследуется).",
69586
+ "whisperImageToggle": "Картинки в шёпоте",
69587
+ "whisperImageToggleHint": "Прикладывать к каждой реплике шёпота случайный мем из набора (карта картинок лежит в поле `memes` верхнего уровня). Токены: шёпот и так зовёт модель на каждом цикле, поэтому картинка добавляет к тому же запросу только имя и описание этого мема (~100 символов, ~60 токенов) — почти ничего.",
69588
+ "whisperModelLabel": "Модель шёпота",
69589
+ "workStatusEnabled": "Статус работы",
69590
+ "workStatusEnabledHint": "Когда включено, питомец следит за состоянием работы DSH: мыслит, работает, ждёт, готово, ошибка — меняются анимации и пузыри (набор в конфиге верхнего уровня; только слушает, модель не вызывает)."
68822
69591
  }
68823
69592
  };
68824
69593
  //#endregion
@@ -69237,6 +70006,7 @@ window.__ModuleLoader__.load({
69237
70006
  "Favicon indicator": "Индикатор фавикона",
69238
70007
  "Fetches pages with a real browser (local Playwright or CDP) and returns denoised markdown.": "Загружает страницы настоящим браузером (локальный Playwright или CDP) и возвращает очищенный Markdown.",
69239
70008
  "Fleet Radar": "Радар флота",
70009
+ "Free web search — no API key needed (Bing / DuckDuckGo / AnySearch / Exa / Tavily / Keenable / Firecrawl / Parallel / You.com)": "Бесплатный веб-поиск без ключа API (Bing, DuckDuckGo, AnySearch, Exa, Tavily, Keenable, Firecrawl, Parallel, You.com)",
69240
70010
  "GPT Responses route and search capabilities": "Маршрут GPT Responses и возможности поиска",
69241
70011
  "Git Bash path dialect": "Диалект путей Git Bash",
69242
70012
  "Git Credentials": "Учётные данные Git",
@@ -69289,6 +70059,7 @@ window.__ModuleLoader__.load({
69289
70059
  "Per-role model overrides and fallbacks for RigorQuant sessions. Left on Inherit, the DoubleChecker and adversary take the router's shipped routes (on DeepSeek Account when no API key is set); root follows the chatbox picker, and other roles inherit their session model.": "Переопределение моделей по ролям и резервные варианты для сессий RigorQuant. Если оставить «Наследовать», DoubleChecker и оппонент берут штатные маршруты маршрутизатора (через учётную запись DeepSeek, если API-ключ не задан); корневой оркестратор следует выбору в поле ввода, а остальные роли наследуют модель своей сессии.",
69290
70060
  "Persistent memory": "Постоянная память",
69291
70061
  "Personas": "Персоны",
70062
+ "Pet Config": "Настройки питомца",
69292
70063
  "Play a chime / spoken notice when an approval or question is waiting for you": "Проигрывать сигнал или голосовое уведомление, когда вас ждёт подтверждение или вопрос",
69293
70064
  "Plugin Hub": "Магазин плагинов",
69294
70065
  "Plugin Market": "Магазин плагинов",