@ragnoryok1/dsh-client-locale-ru 0.1.6 → 0.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +89 -0
- package/README.md +52 -6
- package/lib/client.js +231 -35
- package/lib/client.js.map +1 -1
- package/package.json +3 -2
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
Все значимые изменения пакета. Формат основан на [Keep a Changelog](https://keepachangelog.com/ru/1.1.0/),
|
|
4
|
+
версии — по [SemVer](https://semver.org/lang/ru/).
|
|
5
|
+
|
|
6
|
+
Пакет следует за харнессом: целевая версия — `dsh 0.1.7-rc.2` и новее
|
|
7
|
+
(`>=0.1.0-rc.2 <0.2.0` для `@deepseek-ai/dsh-client-locale`).
|
|
8
|
+
|
|
9
|
+
## [0.1.7] — 2026-09-27
|
|
10
|
+
|
|
11
|
+
### Исправлено
|
|
12
|
+
|
|
13
|
+
- **Мёртвый namespace `schedule.catalog`.** В 0.1.6 было ошибочно записано, что этот
|
|
14
|
+
namespace упразднён и заменён на `schedule.manager`. На деле в харнесе существуют оба:
|
|
15
|
+
`schedule.catalog` — каталог напоминаний в шапке сессии вместе с частотами и единицами
|
|
16
|
+
времени, `schedule.manager` — менеджер задач автоматизации. Из-за неверного вывода
|
|
17
|
+
около 30 строк перевода (`trigger.*`, `list.*`, `delete.*`, `frequency.*`, `cron.*`,
|
|
18
|
+
`unit.*`, `relative.*`, `mark.aria`, `hover.more`) регистрировались под именем, которое
|
|
19
|
+
никто не читает, и никогда не показывались в интерфейсе.
|
|
20
|
+
- **Числительные, неверные на числах 2–4.** Русский требует трёх форм для `n ≥ 2`, а
|
|
21
|
+
компоненты харнесса выбирают форму как `count === 1 ? 'ключ.one' : 'ключ.other'`.
|
|
22
|
+
Переписаны 17 пар ключей (`.one` — естественная форма для `n = 1`, `.other` —
|
|
23
|
+
конструкция, корректная при любом `n ≥ 2`) и 8 строк с `{count}` перед склоняемым
|
|
24
|
+
словом. Пример: «2 субагентов» → «Субагентов: 2», «каждые 2 часов» → «каждые 2 ч»,
|
|
25
|
+
«ещё 3 строк» → «ещё 3 стр.».
|
|
26
|
+
- Единицы измерения в частоте повтора: `unit.hour.other` «часов» → «ч» и аналогично
|
|
27
|
+
для минут, секунд и дней; `cron.time.everyMinutes` «минут» → «мин».
|
|
28
|
+
|
|
29
|
+
### Добавлено
|
|
30
|
+
|
|
31
|
+
- **Namespace `schedule.manager` (188 ключей)** — менеджер задач автоматизации полностью
|
|
32
|
+
на русском: панель и каталог задач, поиск, фильтр состояний, сведения о задаче и её
|
|
33
|
+
вкладки, журнал запусков с правилами хранения, редактор расписания (дата, время, час,
|
|
34
|
+
минута, секунда, часовой пояс, интервал повтора), правила повтора (разово, каждые
|
|
35
|
+
N минут/часов/секунд, ежедневно, понедельник — пятница, еженедельно, свой cron),
|
|
36
|
+
cron-форма с выбором дат и минуты, удаление с подтверждением, уведомления, карточки.
|
|
37
|
+
55 ключей приходят из общего frequency-словаря, поэтому их текст совпадает с каталогом.
|
|
38
|
+
- 7 ключей: `blocked.composer`, `defaultWorkspace.title`, `schedule.active`,
|
|
39
|
+
`settings.transcript.expanded`, `status.scheduled`, `status.overdue`, а также namespace
|
|
40
|
+
`shortcuts.layout` с подписью команды показа левой панели.
|
|
41
|
+
|
|
42
|
+
### Инструменты
|
|
43
|
+
|
|
44
|
+
- Аудит **имён** namespace (`audit-namespaces.mjs`): имена извлекаются из всех способов
|
|
45
|
+
объявления (`const NS`/`SETTINGS_NS`/`namespace`, `locale.register`, `locale.bind`,
|
|
46
|
+
`PropsLocale<…>`) и сравниваются множествами. Прежняя проверка покрытия сверяла ключи
|
|
47
|
+
внутри namespace, но не сверяла имена, из-за чего целый namespace мог тихо не работать.
|
|
48
|
+
|
|
49
|
+
### Состояние
|
|
50
|
+
|
|
51
|
+
52 namespace, 2598 переводов, ~2700 строк. Проверки: 0 отсутствующих ключей против
|
|
52
|
+
`dsh 0.1.7-rc.2`, 0 мёртвых namespace, 45/45 пар ключей с формами числа.
|
|
53
|
+
|
|
54
|
+
## [0.1.6] — 2026-09-25
|
|
55
|
+
|
|
56
|
+
Догнал `dsh 0.1.7-rc.2`: 252 ключа добавлено, 18 обновлено, 26 удалено.
|
|
57
|
+
Появились разделы `shortcuts` (редактор горячих клавиш), `schedule.manager`,
|
|
58
|
+
`settings.account`; исправлена единица счёта в инвентаре плагинов («187 плагины» →
|
|
59
|
+
«187 плагинов»); добавлены npm keywords, homepage, badges и снимки интерфейса; исправлен
|
|
60
|
+
peer-диапазон `@deepseek-ai/dsh-client-locale` на `>=0.1.0-rc.2 <0.2.0` (старый `^0.1.0`
|
|
61
|
+
не разрешался, так как пакет публикуется только под prerelease-версиями).
|
|
62
|
+
|
|
63
|
+
## [0.1.5] — 2026-09-24
|
|
64
|
+
|
|
65
|
+
Догнал `dsh 0.1.7-rc.1`: 49 ключей добавлено, 13 обновлено, 16 удалено, namespace
|
|
66
|
+
`directory-browser` убран. Переведены подписи шагов работы инструментов, полноэкранный
|
|
67
|
+
просмотр изображений, режимы показа ходов, установка плагинов из GitHub, сообщения команды
|
|
68
|
+
`Cordis`. Уточнены формулировки там, где upstream заменил «teammate/agent» на «subagent»,
|
|
69
|
+
а «Beta» — на «Experimental».
|
|
70
|
+
|
|
71
|
+
## [0.1.4] — 2026-09-23
|
|
72
|
+
|
|
73
|
+
Догнал `dsh 0.1.7-alpha.2`: 905 ключей добавлено, 29 изменены, 126 удалены. Появились
|
|
74
|
+
разделы `pluginManager` (встроенная панель плагинов), `settings.account`, семейство
|
|
75
|
+
`settings.agentLoop`/`settings.shell`/`settings.subagent`/`settings.webSearch`,
|
|
76
|
+
`sidebarBrowser`, `sidebarExcel`, `sidebarOffice`, `voice-input`.
|
|
77
|
+
|
|
78
|
+
## [0.1.3] — 2026-09-20
|
|
79
|
+
|
|
80
|
+
Догнал `dsh 0.1.6-alpha.1`: 139 ключей добавлено, 7 новых разделов, 28 устаревших ключей
|
|
81
|
+
удалено.
|
|
82
|
+
|
|
83
|
+
## [0.1.2] — 2026-09-19
|
|
84
|
+
|
|
85
|
+
Добавлены разделы `open-in-app`, `sidebarFiles`, `sidebarRight`, `sidebarCodePreview`.
|
|
86
|
+
|
|
87
|
+
## [0.1.1] — 2026-09-18
|
|
88
|
+
|
|
89
|
+
Первый публичный выпуск: регистрация языка `ru` и словари по namespace.
|
package/README.md
CHANGED
|
@@ -2,8 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
[](https://www.npmjs.com/package/@ragnoryok1/dsh-client-locale-ru)
|
|
4
4
|
[](LICENSE)
|
|
5
|
+
[](https://github.com/deepseek-ai/deepseek-harness)
|
|
6
|
+
[](https://github.com/Ragnoryok1/dsh-client-locale-ru)
|
|
7
|
+
[](https://github.com/Ragnoryok1/dsh-client-locale-ru)
|
|
5
8
|
|
|
6
|
-
**In English.** Russian (`ru`) language pack for the [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) web GUI (`dsh`). It registers `ru` as a selectable client language through the locale service (`ctx.locale.addLanguage`) plus one dictionary per namespace —
|
|
9
|
+
**In English.** Russian (`ru`) language pack for the [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) web GUI (`dsh`). It registers `ru` as a selectable client language through the locale service (`ctx.locale.addLanguage`) plus one dictionary per namespace — 52 namespaces, 2,598 strings, built against dsh `0.1.7-rc.2`. Install with `dsh plugin --profile web add @ragnoryok1/dsh-client-locale-ru`, then pick **Русский** in Settings → General. Missing keys fall back to English, so a newer harness keeps working. MIT, community-maintained, not affiliated with DeepSeek. Details below are in Russian.
|
|
7
10
|
|
|
8
11
|
---
|
|
9
12
|
|
|
@@ -42,7 +45,13 @@ dsh plugin --profile web add @ragnoryok1/dsh-client-locale-ru
|
|
|
42
45
|
- **Браузерная половина** (`lib/client.js`) — регистрирует `ru` и словари через сервис `locale` (инжект из `ctx`). Рантайм-импортов фреймворка нет — только сервис.
|
|
43
46
|
- **Рантайм-зависимостей нет** — `lib/client.js` не импортирует другие пакеты, поэтому не тянет тяжёлых зависимостей.
|
|
44
47
|
- **Эффекты** — язык и словари регистрируются через `ctx.effect(...)`, поэтому выгружаются вместе с плагином (HMR-безопасно).
|
|
45
|
-
- **Плюралы** — контракт локали не несёт правил плюрализации (нет ICU/`Intl.PluralRules`)
|
|
48
|
+
- **Плюралы** — контракт локали не несёт правил плюрализации (нет ICU/`Intl.PluralRules`), и
|
|
49
|
+
компоненты выбирают форму как `count === 1 ? 'ключ.one' : 'ключ.other'`. Русский язык
|
|
50
|
+
требует трёх форм для `n ≥ 2` (2 задачи / 5 задач), поэтому одна строка `.other` не может
|
|
51
|
+
быть верной всегда. Пакет решает это **без** изменения апстрима: `.one` (это ровно `n = 1`)
|
|
52
|
+
содержит естественную форму, а `.other` — конструкцию, корректную при любом `n ≥ 2`
|
|
53
|
+
(«Субагентов: 3», «Фоновых задач: 5») или инвариантное сокращение («каждые 2 ч»,
|
|
54
|
+
«ещё 3 стр.»). Ни одна видимая строка не показывает неверную форму числа.
|
|
46
55
|
- **Фолбэк** — отсутствующий русский ключ падает на `en` (настроенный `fallback`).
|
|
47
56
|
|
|
48
57
|
## Разработка
|
|
@@ -57,7 +66,7 @@ npm pack # -> ragnoryok1-dsh-client-locale-ru-<version>.tgz
|
|
|
57
66
|
|
|
58
67
|
## Содержимое
|
|
59
68
|
|
|
60
|
-
- `src/client/dicts.ts` — русские словари (
|
|
69
|
+
- `src/client/dicts.ts` — русские словари (52 namespace, 2598 переводов, ~2700 строк). Это и есть основная ценность.
|
|
61
70
|
- `src/client/index.ts` — точка входа клиентского плагина (регистрация `ru` + словарей).
|
|
62
71
|
- `src/index.ts` — пустая host-половина (`apply()`).
|
|
63
72
|
- `cordis.patch.yml` — профиль-патч (`- insert:` клиентской строки `locale-ru`).
|
|
@@ -67,6 +76,38 @@ npm pack # -> ragnoryok1-dsh-client-locale-ru-<version>.tgz
|
|
|
67
76
|
Актуальный набор — по тегам харнеса: ключи сняты с профильного коммита, а добавленные
|
|
68
77
|
позже падают на `en` при поиске, поэтому пакет не ломает интерфейс на новых версиях.
|
|
69
78
|
|
|
79
|
+
### 0.1.7 — исправлен мёртвый namespace, переведён менеджер задач, переписаны числительные
|
|
80
|
+
|
|
81
|
+
Главное в релизе — **исправление ошибки из 0.1.6**. Тогда было записано, что namespace
|
|
82
|
+
`schedule.catalog` упразднён, а его место занял `schedule.manager`. На деле в харнесе
|
|
83
|
+
**оба** namespace живут и по отдельности: `schedule.catalog` — это каталог напоминаний в
|
|
84
|
+
шапке сессии с частотами и единицами, `schedule.manager` — новый менеджер задач
|
|
85
|
+
автоматизации. Из-за неверного вывода ~30 строк переводов (напоминания, частота, единицы
|
|
86
|
+
времени) были зарегистрированы под именем, которое никто не читает, и **никогда не
|
|
87
|
+
показывались** в интерфейсе. Теперь каталог зарегистрирован как `schedule.catalog`.
|
|
88
|
+
|
|
89
|
+
- **исправлено:** переводы каталога расписания снова видны — `trigger.*`, `list.*`,
|
|
90
|
+
`delete.*`, `frequency.*`, `cron.*`, `unit.*`, `relative.*`, `mark.aria`, `hover.more`;
|
|
91
|
+
- **добавлен `schedule.manager`** (188 ключей) — менеджер задач автоматизации целиком на
|
|
92
|
+
русском: панель и каталог задач, поиск, фильтр состояний, сведения о задаче и её вкладки,
|
|
93
|
+
**журнал запусков** с правилами хранения, редактор расписания (дата, время, час, минута,
|
|
94
|
+
секунда, часовой пояс, интервал повтора), правила повтора (разово, каждые N минут/часов/
|
|
95
|
+
секунд, ежедневно, пн–пт, еженедельно, свой cron), cron-форма с выбором дат и минуты,
|
|
96
|
+
удаление с подтверждением, уведомления и карточки;
|
|
97
|
+
- **числительные переписаны** (17 пар ключей): формы, которые ломались на числах 2–4,
|
|
98
|
+
заменены на корректные при любом `n ≥ 2` — например «2 субагентов» → «Субагентов: 2»,
|
|
99
|
+
«каждые 2 часов» → «каждые 2 ч». Ещё 8 строк с `{count}` перед склоняемым словом
|
|
100
|
+
переведены на сокращения: «ещё 3 строк» → «ещё 3 стр.»;
|
|
101
|
+
- **добавлено 7 ключей**, которые отсутствовали: `blocked.composer`,
|
|
102
|
+
`defaultWorkspace.title`, `schedule.active`, `settings.transcript.expanded`,
|
|
103
|
+
`status.scheduled`, `status.overdue` и namespace `shortcuts.layout` (подпись команды
|
|
104
|
+
показа левой панели);
|
|
105
|
+
- **новая проверка в проекте:** аудит имён namespace. Прежняя проверка покрытия
|
|
106
|
+
сверяла ключи внутри namespace, но не сверяла сами имена, поэтому целый namespace
|
|
107
|
+
мог быть зарегистрирован под несуществующим именем и тихо не работать. Теперь имена
|
|
108
|
+
извлекаются из всех способов их объявления (`const NS`/`SETTINGS_NS`/`namespace`,
|
|
109
|
+
`locale.register`, `locale.bind`, `PropsLocale<…>`) и сравниваются множествами.
|
|
110
|
+
|
|
70
111
|
В 0.1.2 добавлены разделы, которых не было в 0.1.1: `open-in-app` («Открыть в
|
|
71
112
|
приложении»), `sidebarFiles`, `sidebarRight` (правый сайдбар с файлами) и
|
|
72
113
|
`sidebarCodePreview` (предпросмотр кода). Также обновлены ключи, изменившиеся в
|
|
@@ -91,9 +132,10 @@ npm pack # -> ragnoryok1-dsh-client-locale-ru-<version>.tgz
|
|
|
91
132
|
- **`shortcuts`** (новый namespace, 56 ключей) — редактор горячих клавиш: запись
|
|
92
133
|
сочетания, конфликты, зарезервированные комбинации, подсказки для macOS и
|
|
93
134
|
Windows, восстановление значений по умолчанию;
|
|
94
|
-
- **`schedule.manager`** (70 ключей) —
|
|
95
|
-
повтор, история запусков, выражения Cron
|
|
96
|
-
|
|
135
|
+
- **`schedule.manager`** (70 ключей на тот момент) — менеджер задач автоматизации: список,
|
|
136
|
+
удаление, повтор, история запусков, выражения Cron. **Ошибочно было записано, что
|
|
137
|
+
namespace `schedule.catalog` при этом упразднён; в 0.1.7 это исправлено — оба
|
|
138
|
+
namespace существуют параллельно**;
|
|
97
139
|
- **`settings.account`** (50 ключей) — первый запуск приложения: приветствие,
|
|
98
140
|
выбор назначения и глубины показа хода работы, пополнение баланса, выход из
|
|
99
141
|
учётной записи во время выполнения задач;
|
|
@@ -150,3 +192,7 @@ keywords и исправлен peer-диапазон `@deepseek-ai/dsh-client-lo
|
|
|
150
192
|
## Лицензия
|
|
151
193
|
|
|
152
194
|
MIT
|
|
195
|
+
|
|
196
|
+
## История изменений
|
|
197
|
+
|
|
198
|
+
[CHANGELOG.md](CHANGELOG.md) — что было в каждом выпуске.
|
package/lib/client.js
CHANGED
|
@@ -240,20 +240,20 @@ window.__ModuleLoader__.load({
|
|
|
240
240
|
"tool.title.webSearch": "Поиск",
|
|
241
241
|
"tool.title.webFetch": "Запрос",
|
|
242
242
|
"diff.collapseAria": "Свернуть изменения",
|
|
243
|
-
"diff.expandAria": "Показать ещё {count}
|
|
244
|
-
"diff.expandRest": "… ещё {count}
|
|
243
|
+
"diff.expandAria": "Показать ещё {count} стр. изменений",
|
|
244
|
+
"diff.expandRest": "… ещё {count} стр.",
|
|
245
245
|
"read.window": "Показано {shown} из {total} строк",
|
|
246
246
|
"read.collapseAria": "Свернуть содержимое",
|
|
247
|
-
"read.expandAria": "Показать ещё {count}
|
|
248
|
-
"read.expandRest": "… ещё {count}
|
|
247
|
+
"read.expandAria": "Показать ещё {count} стр.",
|
|
248
|
+
"read.expandRest": "… ещё {count} стр.",
|
|
249
249
|
"search.paths": "{shown} путей",
|
|
250
250
|
"search.paths.truncated": "Показано {shown} из {total} путей",
|
|
251
251
|
"search.matches": "{shown} совпадений · {files} файлов",
|
|
252
252
|
"search.matches.truncated": "Показано {shown} из {total} совпадений · {files} файлов",
|
|
253
253
|
"search.noResults": "Ничего не найдено",
|
|
254
254
|
"search.collapseAria": "Свернуть результаты",
|
|
255
|
-
"search.expandAria": "Показать ещё {count}
|
|
256
|
-
"search.expandRest": "… ещё {count}
|
|
255
|
+
"search.expandAria": "Показать ещё {count} стр. результатов",
|
|
256
|
+
"search.expandRest": "… ещё {count} стр.",
|
|
257
257
|
"web.noResults": "Ничего не найдено",
|
|
258
258
|
"web.sourcesTruncated": "Список источников обрезан",
|
|
259
259
|
"web.http": "HTTP",
|
|
@@ -379,7 +379,7 @@ window.__ModuleLoader__.load({
|
|
|
379
379
|
"detail.none": "Нет",
|
|
380
380
|
"detail.yes": "Да",
|
|
381
381
|
"detail.no": "Нет",
|
|
382
|
-
"detail.moreInInspect": "
|
|
382
|
+
"detail.moreInInspect": "В разделе «Просмотр» доступно ещё: {count}",
|
|
383
383
|
"detail.status.running": "Выполняется",
|
|
384
384
|
"detail.status.idle": "Ожидает",
|
|
385
385
|
"detail.status.ready": "Готов",
|
|
@@ -561,7 +561,7 @@ window.__ModuleLoader__.load({
|
|
|
561
561
|
"diff.deleted": "Удалён в этом ходе",
|
|
562
562
|
"diff.unchanged": "В обеих версиях одинаковые строки",
|
|
563
563
|
"diff.coarse": "Сравнение по строкам заняло слишком много времени; показано как полная замена файла",
|
|
564
|
-
"diff.truncated": "Показаны первые {count}
|
|
564
|
+
"diff.truncated": "Показаны первые {count} стр.",
|
|
565
565
|
"row.preparing": "Подготовка результатов",
|
|
566
566
|
"changes.singleTitle": "Изменён {name}"
|
|
567
567
|
},
|
|
@@ -592,9 +592,9 @@ window.__ModuleLoader__.load({
|
|
|
592
592
|
},
|
|
593
593
|
"job": {
|
|
594
594
|
"count.live.one": "{count} фоновая задача выполняется",
|
|
595
|
-
"count.live.other": "{count}
|
|
595
|
+
"count.live.other": "Фоновых задач выполняется: {count}",
|
|
596
596
|
"count.idle.one": "{count} фоновая задача",
|
|
597
|
-
"count.idle.other": "{count}
|
|
597
|
+
"count.idle.other": "Фоновых задач: {count}",
|
|
598
598
|
"list.aria": "Фоновые задачи",
|
|
599
599
|
"status.running": "выполняется",
|
|
600
600
|
"status.stopping": "останавливается",
|
|
@@ -675,7 +675,8 @@ window.__ModuleLoader__.load({
|
|
|
675
675
|
"option.deepseekV4Pro.description": "Усиленное агентное программирование, знания и сложные рассуждения; для комплексных или критичных к качеству задач с большей стоимостью.",
|
|
676
676
|
"command.label": "Модель",
|
|
677
677
|
"error.sessionInUse": "Эта сессия уже используется — возможно, другим запущенным экземпляром DSH (например, dsh web или десктопным приложением). Закройте другие экземпляры DSH и повторите.",
|
|
678
|
-
"provider.account": "Учётная запись DeepSeek"
|
|
678
|
+
"provider.account": "Учётная запись DeepSeek",
|
|
679
|
+
"blocked.composer": "Эта модель недоступна — выберите другую, чтобы продолжить"
|
|
679
680
|
},
|
|
680
681
|
"settings.permission": {
|
|
681
682
|
"title": "Права доступа",
|
|
@@ -981,9 +982,9 @@ window.__ModuleLoader__.load({
|
|
|
981
982
|
"branch.collapse": "Свернуть потомков {label}",
|
|
982
983
|
"branch.expand": "Развернуть потомков {label}",
|
|
983
984
|
"count.total.one": "{count} субагент",
|
|
984
|
-
"count.total.other": "{count}
|
|
985
|
+
"count.total.other": "Субагентов: {count}",
|
|
985
986
|
"count.running.one": "{count} субагент выполняется",
|
|
986
|
-
"count.running.other": "{count}
|
|
987
|
+
"count.running.other": "Субагентов выполняется: {count}",
|
|
987
988
|
"switcher.aria": "Переключить субагента: {title}",
|
|
988
989
|
"tree.aria": "Сессии субагентов",
|
|
989
990
|
"readonly.oneShot.title": "Запись одноразового субагента",
|
|
@@ -1157,9 +1158,9 @@ window.__ModuleLoader__.load({
|
|
|
1157
1158
|
"request.rowAriaCompaction": "Запрос {request}, сжатие",
|
|
1158
1159
|
"request.noContent": "нет содержимого",
|
|
1159
1160
|
"summary.toolCalls.one": "{count} вызов инструмента",
|
|
1160
|
-
"summary.toolCalls.other": "{count}
|
|
1161
|
+
"summary.toolCalls.other": "Вызовов инструментов: {count}",
|
|
1161
1162
|
"summary.steps.one": "{count} шаг",
|
|
1162
|
-
"summary.steps.other": "{count}
|
|
1163
|
+
"summary.steps.other": "Шагов: {count}",
|
|
1163
1164
|
"details.status": "Состояние",
|
|
1164
1165
|
"details.purpose": "Назначение",
|
|
1165
1166
|
"details.provider": "Провайдер",
|
|
@@ -1225,7 +1226,7 @@ window.__ModuleLoader__.load({
|
|
|
1225
1226
|
"workflowRun": {
|
|
1226
1227
|
"run.title": "{name}",
|
|
1227
1228
|
"run.members.one": "{count} участник",
|
|
1228
|
-
"run.members.other": "{count}
|
|
1229
|
+
"run.members.other": "Участников: {count}",
|
|
1229
1230
|
"run.empty": "Участники не запущены",
|
|
1230
1231
|
"phase.unassigned": "Без фазы",
|
|
1231
1232
|
"phase.empty": "Пустое имя фазы",
|
|
@@ -1282,13 +1283,13 @@ window.__ModuleLoader__.load({
|
|
|
1282
1283
|
"menu.fork": "Создать ответвление сессии",
|
|
1283
1284
|
"menu.archiveSession": "Архивировать сессию",
|
|
1284
1285
|
"sessions.count.one": "{n} сессия",
|
|
1285
|
-
"sessions.count.other": "{n}
|
|
1286
|
+
"sessions.count.other": "Сессий: {n}",
|
|
1286
1287
|
"actions.workspace.aria": "Действия рабочего пространства {name}",
|
|
1287
1288
|
"actions.session.aria": "Действия сессии {name}",
|
|
1288
1289
|
"actions.newSession.aria": "Новая сессия в {name}",
|
|
1289
1290
|
"status.running": "Выполняется",
|
|
1290
1291
|
"status.subagentsRunning.one": "{n} субагент выполняется",
|
|
1291
|
-
"status.subagentsRunning.other": "{n}
|
|
1292
|
+
"status.subagentsRunning.other": "Субагентов выполняется: {n}",
|
|
1292
1293
|
"status.idle": "Ожидает",
|
|
1293
1294
|
"status.waitingApproval": "Ожидает одобрения",
|
|
1294
1295
|
"status.planReview": "План на рассмотрении",
|
|
@@ -1305,6 +1306,8 @@ window.__ModuleLoader__.load({
|
|
|
1305
1306
|
"time.years": "{n} г",
|
|
1306
1307
|
"time.ago": "{t} назад",
|
|
1307
1308
|
"defaultWorkspace.failed": "Не удалось создать рабочее пространство по умолчанию. Выберите папку через «Выбрать рабочее пространство».",
|
|
1309
|
+
"defaultWorkspace.title": "Рабочее пространство по умолчанию",
|
|
1310
|
+
"schedule.active": "Есть активная задача по расписанию",
|
|
1308
1311
|
"groupBy.workspaceTree": "Дерево рабочих пространств",
|
|
1309
1312
|
"filterBy.label": "Фильтр сессий",
|
|
1310
1313
|
"viewOptions.showArchived": "Все диалоги (с архивными)",
|
|
@@ -1322,13 +1325,13 @@ window.__ModuleLoader__.load({
|
|
|
1322
1325
|
"archive.confirm.activity": "Работа, которая будет остановлена",
|
|
1323
1326
|
"archive.confirm.turn": "Текущий ход",
|
|
1324
1327
|
"archive.confirm.subagents.one": "{n} выполняющийся субагент: {names}",
|
|
1325
|
-
"archive.confirm.subagents.other": "{n}
|
|
1328
|
+
"archive.confirm.subagents.other": "Выполняющихся субагентов: {n} — {names}",
|
|
1326
1329
|
"archive.confirm.jobs.one": "{n} фоновая задача: {names}",
|
|
1327
|
-
"archive.confirm.jobs.other": "{n}
|
|
1330
|
+
"archive.confirm.jobs.other": "Фоновых задач: {n} — {names}",
|
|
1328
1331
|
"archive.confirm.schedules.one": "{n} запланированное напоминание: {names}",
|
|
1329
|
-
"archive.confirm.schedules.other": "{n}
|
|
1332
|
+
"archive.confirm.schedules.other": "Запланированных напоминаний: {n} — {names}",
|
|
1330
1333
|
"archive.confirm.other.one": "{n} другая единица работы ({kind})",
|
|
1331
|
-
"archive.confirm.other.other": "{n}
|
|
1334
|
+
"archive.confirm.other.other": "Других единиц работы: {n} ({kind})",
|
|
1332
1335
|
"archive.confirm.listSeparator": ", ",
|
|
1333
1336
|
"archive.confirm.action": "Остановить и архивировать",
|
|
1334
1337
|
"archive.confirm.pending": "Остановка и архивирование…",
|
|
@@ -1467,6 +1470,7 @@ window.__ModuleLoader__.load({
|
|
|
1467
1470
|
"settings.transcript.title": "Детали работы",
|
|
1468
1471
|
"settings.transcript.description": "Выберите, сколько деталей показывать для вызовов инструментов",
|
|
1469
1472
|
"settings.transcript.compact": "Компактный",
|
|
1473
|
+
"settings.transcript.expanded": "Полностью развёрнутый",
|
|
1470
1474
|
"fileOpen.title": "Не удалось открыть файл",
|
|
1471
1475
|
"fileOpen.unknown": "Не удалось открыть этот файл",
|
|
1472
1476
|
"message.extraBlock": "Дополнительный блок содержимого",
|
|
@@ -1495,11 +1499,11 @@ window.__ModuleLoader__.load({
|
|
|
1495
1499
|
"message.unknownSurface": "Неизвестное surface-событие: {type}",
|
|
1496
1500
|
"message.unknownBlock": "Неизвестный блок содержимого",
|
|
1497
1501
|
"message.turnProcess.toolCalls.one": "{count} вызов инструмента",
|
|
1498
|
-
"message.turnProcess.toolCalls.other": "{count}
|
|
1502
|
+
"message.turnProcess.toolCalls.other": "Вызовов инструментов: {count}",
|
|
1499
1503
|
"message.turnProcess.messages.one": "{count} сообщение",
|
|
1500
|
-
"message.turnProcess.messages.other": "{count}
|
|
1504
|
+
"message.turnProcess.messages.other": "Сообщений: {count}",
|
|
1501
1505
|
"message.turnProcess.subagents.one": "{count} субагент",
|
|
1502
|
-
"message.turnProcess.subagents.other": "{count}
|
|
1506
|
+
"message.turnProcess.subagents.other": "Субагентов: {count}",
|
|
1503
1507
|
"message.turnProcess.thoughtForAWhile": "Думал некоторое время",
|
|
1504
1508
|
"message.turnProcess.separator": " · ",
|
|
1505
1509
|
"message.stopped": "Остановлено",
|
|
@@ -2375,7 +2379,7 @@ window.__ModuleLoader__.load({
|
|
|
2375
2379
|
"setupPrompt.unavailableTitle": "Распознавание речи не готово",
|
|
2376
2380
|
"setupPrompt.unavailableBody": "Откройте сведения о голосовом плагине, чтобы проверить состояние распознавания, ход подготовки или ошибки."
|
|
2377
2381
|
},
|
|
2378
|
-
"schedule.
|
|
2382
|
+
"schedule.catalog": {
|
|
2379
2383
|
"trigger.label": "Напоминания",
|
|
2380
2384
|
"list.loading": "Загрузка напоминаний…",
|
|
2381
2385
|
"list.error": "Не удалось загрузить напоминания.",
|
|
@@ -2385,8 +2389,10 @@ window.__ModuleLoader__.load({
|
|
|
2385
2389
|
"delete.label": "Удалить напоминание: {title}",
|
|
2386
2390
|
"list.open": "Открыть сведения о напоминании: {title}",
|
|
2387
2391
|
"trigger.one": "{count} напоминание",
|
|
2388
|
-
"trigger.other": "{count}
|
|
2392
|
+
"trigger.other": "Напоминаний: {count}",
|
|
2389
2393
|
"list.aria": "Активные напоминания",
|
|
2394
|
+
"status.scheduled": "По расписанию",
|
|
2395
|
+
"status.overdue": "Просрочено",
|
|
2390
2396
|
"list.nextRun": "Следующий запуск",
|
|
2391
2397
|
"frequency.once": "Один раз",
|
|
2392
2398
|
"frequency.every": "Каждые {value} {unit}",
|
|
@@ -2412,13 +2418,13 @@ window.__ModuleLoader__.load({
|
|
|
2412
2418
|
"cron.hours.range": "{from}–{to}",
|
|
2413
2419
|
"cron.hours.list": "{hours}",
|
|
2414
2420
|
"cron.time.everyMinute": "Каждую минуту",
|
|
2415
|
-
"cron.time.everyMinutes": "Каждые {step}
|
|
2421
|
+
"cron.time.everyMinutes": "Каждые {step} мин",
|
|
2416
2422
|
"cron.time.joinedEveryMinute": "каждую минуту",
|
|
2417
|
-
"cron.time.joinedEveryMinutes": "каждые {step}
|
|
2423
|
+
"cron.time.joinedEveryMinutes": "каждые {step} мин",
|
|
2418
2424
|
"cron.time.everyHour": "Каждый час",
|
|
2419
2425
|
"cron.time.joinedEveryHour": "каждый час",
|
|
2420
|
-
"cron.time.everyNHours": "Каждые {count}
|
|
2421
|
-
"cron.time.joinedEveryNHours": "каждые {count}
|
|
2426
|
+
"cron.time.everyNHours": "Каждые {count} ч",
|
|
2427
|
+
"cron.time.joinedEveryNHours": "каждые {count} ч",
|
|
2422
2428
|
"cron.time.hourlyAt": "Каждый час в минуту {minutes}",
|
|
2423
2429
|
"cron.time.joinedHourlyAt": "каждый час в минуту {minutes}",
|
|
2424
2430
|
"cron.time.hoursEveryMinute": "каждую минуту в часы {hours}",
|
|
@@ -2434,19 +2440,209 @@ window.__ModuleLoader__.load({
|
|
|
2434
2440
|
"frequency.weekday.6": "Сб",
|
|
2435
2441
|
"frequency.weekday.7": "Вс",
|
|
2436
2442
|
"unit.day.one": "день",
|
|
2437
|
-
"unit.day.other": "
|
|
2443
|
+
"unit.day.other": "д",
|
|
2438
2444
|
"unit.hour.one": "час",
|
|
2439
|
-
"unit.hour.other": "
|
|
2445
|
+
"unit.hour.other": "ч",
|
|
2440
2446
|
"unit.minute.one": "минута",
|
|
2441
|
-
"unit.minute.other": "
|
|
2447
|
+
"unit.minute.other": "мин",
|
|
2442
2448
|
"unit.second.one": "секунда",
|
|
2443
|
-
"unit.second.other": "
|
|
2449
|
+
"unit.second.other": "с",
|
|
2444
2450
|
"relative.now": "Подходит время",
|
|
2445
2451
|
"relative.future": "через {value} {unit}",
|
|
2446
2452
|
"relative.overdue": "просрочено на {value} {unit}",
|
|
2447
2453
|
"mark.aria": "Задач по расписанию: {count}",
|
|
2448
2454
|
"hover.more": "ещё {count}"
|
|
2449
2455
|
},
|
|
2456
|
+
"schedule.manager": {
|
|
2457
|
+
"panel": "Задачи автоматизации",
|
|
2458
|
+
"title": "Задачи автоматизации",
|
|
2459
|
+
"new.action": "Создать",
|
|
2460
|
+
"list.label": "Каталог задач",
|
|
2461
|
+
"list.nextPrefix": "Следующий запуск: ",
|
|
2462
|
+
"list.loading": "Загрузка задач…",
|
|
2463
|
+
"list.error": "Не удалось загрузить задачи.",
|
|
2464
|
+
"list.retry": "Повторить",
|
|
2465
|
+
"list.empty": "Задач пока нет. Задачи, созданные в сессиях, появятся здесь.",
|
|
2466
|
+
"list.emptyInactive": "Неактивных задач автоматизации нет",
|
|
2467
|
+
"list.noMatches": "Подходящих задач нет",
|
|
2468
|
+
"search.label": "Поиск задач",
|
|
2469
|
+
"search.placeholder": "Поиск задач автоматизации",
|
|
2470
|
+
"search.clear": "Очистить поиск",
|
|
2471
|
+
"empty.action": "Создать задачу автоматизации",
|
|
2472
|
+
"statusFilter.label": "Состояние задачи",
|
|
2473
|
+
"statusFilter.all": "Все",
|
|
2474
|
+
"status.active": "Включена",
|
|
2475
|
+
"status.inactive": "Неактивна",
|
|
2476
|
+
"detail.label": "Сведения о задаче",
|
|
2477
|
+
"detail.close": "Закрыть сведения",
|
|
2478
|
+
"detail.more": "Действия с задачей автоматизации",
|
|
2479
|
+
"detail.nextRun": "Следующий запуск",
|
|
2480
|
+
"detail.tabs": "Представления сведений о задаче",
|
|
2481
|
+
"detail.rule": "Правила",
|
|
2482
|
+
"detail.records": "Журнал запусков",
|
|
2483
|
+
"delivery.empty": "Записей о запусках пока нет",
|
|
2484
|
+
"delivery.loading": "Загрузка журнала запусков…",
|
|
2485
|
+
"delivery.error": "Не удалось загрузить журнал запусков.",
|
|
2486
|
+
"delivery.notFound": "Эта задача больше недоступна.",
|
|
2487
|
+
"delivery.cursorError": "Записи обновлены.",
|
|
2488
|
+
"delivery.retry": "Повторить",
|
|
2489
|
+
"delivery.refresh": "Обновить",
|
|
2490
|
+
"delivery.loadMore": "Показать ещё",
|
|
2491
|
+
"delivery.expand": "Развернуть",
|
|
2492
|
+
"delivery.collapse": "Свернуть",
|
|
2493
|
+
"delivery.pruned": "Более ранние записи о запусках удалены",
|
|
2494
|
+
"delivery.retention": "Правила хранения",
|
|
2495
|
+
"delivery.retentionBounds": "Каждая задача хранит до {records} записей о запусках за последние {days} дн.",
|
|
2496
|
+
"delivery.retentionExplanation": "При сохранении новой записи более старые записи сверх этих пределов удаляются автоматически. Удаление записей не останавливает задачу.",
|
|
2497
|
+
"detail.name": "Название задачи автоматизации",
|
|
2498
|
+
"detail.instruction": "Инструкция для задачи",
|
|
2499
|
+
"detail.status": "Состояние",
|
|
2500
|
+
"detail.next": "Следующий запуск",
|
|
2501
|
+
"detail.frequency": "Периодичность",
|
|
2502
|
+
"detail.id": "ID задачи",
|
|
2503
|
+
"detail.session": "Связанная сессия",
|
|
2504
|
+
"detail.openSession": "Связанная сессия: открыть исходную сессию",
|
|
2505
|
+
"detail.openSessionTitle": "Связанная сессия {title}: открыть исходную сессию",
|
|
2506
|
+
"detail.sessionLoading": "Загрузка сведений об исходной сессии.",
|
|
2507
|
+
"detail.sessionArchived": "Исходная сессия в архиве.",
|
|
2508
|
+
"detail.sessionUnavailable": "Исходная сессия недоступна.",
|
|
2509
|
+
"detail.missing": "Задача недоступна. Возможно, она удалена.",
|
|
2510
|
+
"delivery.label": "Сохранённая запись о запуске",
|
|
2511
|
+
"frequency.once": "Один раз",
|
|
2512
|
+
"frequency.every": "Каждые {value} {unit}",
|
|
2513
|
+
"timing.date": "Дата",
|
|
2514
|
+
"timing.time": "Время",
|
|
2515
|
+
"timing.hour": "Часы",
|
|
2516
|
+
"timing.minute": "Минуты",
|
|
2517
|
+
"timing.second": "Секунды",
|
|
2518
|
+
"timing.prevMonth": "Предыдущий месяц",
|
|
2519
|
+
"timing.nextMonth": "Следующий месяц",
|
|
2520
|
+
"timing.zone": "Часовой пояс",
|
|
2521
|
+
"timing.zoneSearch": "Поиск по смещению UTC, идентификатору IANA или городу",
|
|
2522
|
+
"timing.zoneNoResults": "Подходящих часовых поясов нет",
|
|
2523
|
+
"timing.interval": "Интервал повтора",
|
|
2524
|
+
"timing.intervalIncrease": "Увеличить интервал",
|
|
2525
|
+
"timing.intervalDecrease": "Уменьшить интервал",
|
|
2526
|
+
"timing.unit.hour": "ч",
|
|
2527
|
+
"timing.unit.minute": "мин",
|
|
2528
|
+
"timing.unit.second": "с",
|
|
2529
|
+
"timing.intervalHint.hour": "Не менее 1 ч. Интервал отсчитывается от создания задачи или последнего изменения правила и не зависит от часового пояса.",
|
|
2530
|
+
"timing.intervalHint.minute": "Не менее 1 мин. Интервал отсчитывается от создания задачи или последнего изменения правила и не зависит от часового пояса.",
|
|
2531
|
+
"timing.intervalHint.second": "Не менее 60 с. Интервал отсчитывается от создания задачи или последнего изменения правила и не зависит от часового пояса.",
|
|
2532
|
+
"timing.zoneNoStored": "Одноразовая задача хранит только момент срабатывания, без часового пояса. Дата и время трактуются в выбранном часовом поясе.",
|
|
2533
|
+
"timing.inactive": "Неактивные задачи доступны только для чтения, их расписание нельзя изменить.",
|
|
2534
|
+
"timing.conflict": "Задача изменилась, пока вы её редактировали. Черновик сохранён. Отмените правку и откройте задачу заново после обновления, чтобы изменить последнее правило.",
|
|
2535
|
+
"timing.notFound": "Эта задача больше недоступна. Черновик сохранён; отмените правку, чтобы закрыть редактор.",
|
|
2536
|
+
"timing.invalid": "Введите корректные дату и время или проверьте поля расписания.",
|
|
2537
|
+
"timing.invalidZone": "Введите корректный часовой пояс IANA, например Asia/Shanghai.",
|
|
2538
|
+
"timing.notFuture": "Выберите дату и время в будущем.",
|
|
2539
|
+
"timing.invalidInterval": "Введите интервал не менее 1 мин.",
|
|
2540
|
+
"timing.invalidInterval.hour": "Введите интервал не менее 1 ч.",
|
|
2541
|
+
"timing.invalidInterval.minute": "Введите интервал не менее 1 мин.",
|
|
2542
|
+
"timing.invalidInterval.second": "Введите интервал не менее 60 с.",
|
|
2543
|
+
"timing.error": "Не удалось подтвердить изменение расписания. Черновик сохранён. Проверьте задачу перед повторной попыткой.",
|
|
2544
|
+
"rule.title": "Время запуска",
|
|
2545
|
+
"rule.repeat": "Повтор",
|
|
2546
|
+
"rule.weekday": "День недели",
|
|
2547
|
+
"rule.weekdayOption": "День недели: {weekday}",
|
|
2548
|
+
"rule.unsaved": "Несохранённые изменения",
|
|
2549
|
+
"rule.save": "Сохранить изменения",
|
|
2550
|
+
"rule.saving": "Сохранение…",
|
|
2551
|
+
"rule.cancel": "Отмена",
|
|
2552
|
+
"rule.invalidTitle": "Введите название задачи длиной не более 120 символов.",
|
|
2553
|
+
"rule.invalidPrompt": "Введите инструкцию для задачи.",
|
|
2554
|
+
"rule.once": "Один раз",
|
|
2555
|
+
"rule.everyMinutes": "Каждые N минут",
|
|
2556
|
+
"rule.everyHours": "Каждые N часов",
|
|
2557
|
+
"rule.everySeconds": "Каждые N секунд",
|
|
2558
|
+
"rule.daily": "Каждый день",
|
|
2559
|
+
"rule.weekdays": "С понедельника по пятницу",
|
|
2560
|
+
"rule.weekly": "Еженедельно",
|
|
2561
|
+
"rule.cron": "Свой cron",
|
|
2562
|
+
"rule.cronLabel": "Cron-выражение",
|
|
2563
|
+
"rule.cronInvalid": "Введите cron-выражение из пяти полей, например 0 9 * * 1-5.",
|
|
2564
|
+
"cronForm.frequency": "Частота",
|
|
2565
|
+
"cronForm.monthly": "Ежемесячно",
|
|
2566
|
+
"cronForm.weekly": "Еженедельно",
|
|
2567
|
+
"cronForm.daily": "Каждый день",
|
|
2568
|
+
"cronForm.dates": "В указанные даты",
|
|
2569
|
+
"cronForm.dateOption": "День {day}",
|
|
2570
|
+
"cronForm.atMinute": "В минуту",
|
|
2571
|
+
"cronForm.minuteIncrease": "Увеличить минуту",
|
|
2572
|
+
"cronForm.minuteDecrease": "Уменьшить минуту",
|
|
2573
|
+
"rule.zone.system": " (системный)",
|
|
2574
|
+
"rule.error.conflict": "Задача изменилась до сохранения. В строке показано сохранённое правило; попробуйте ещё раз.",
|
|
2575
|
+
"rule.error.notFound": "Эта задача больше недоступна.",
|
|
2576
|
+
"rule.error.unknown": "Не удалось подтвердить обновление правила. В строке показано сохранённое правило.",
|
|
2577
|
+
"delete.action": "Удалить задачу",
|
|
2578
|
+
"delete.title": "Удалить эту задачу?",
|
|
2579
|
+
"delete.description": "Задача перестанет срабатывать, а сама она и сохранённые записи о запусках будут удалены. Исходная сессия и её сообщения сохранятся; поставленные в очередь сообщения не будут отозваны.",
|
|
2580
|
+
"delete.confirm": "Подтвердить удаление",
|
|
2581
|
+
"delete.cancel": "Отмена",
|
|
2582
|
+
"delete.close": "Закрыть подтверждение удаления",
|
|
2583
|
+
"delete.pending": "Удаление…",
|
|
2584
|
+
"toast.deleted": "Задача удалена.",
|
|
2585
|
+
"toast.deleteFailed": "Не удалось удалить задачу.",
|
|
2586
|
+
"card.open": "Открыть",
|
|
2587
|
+
"card.openLabel": "Открыть сведения о задаче: {title}",
|
|
2588
|
+
"card.deleted": "Удалена",
|
|
2589
|
+
"tool.invoked": "Вызвано: {name}",
|
|
2590
|
+
"time.locale": "en",
|
|
2591
|
+
"time.utcPrefix": "UTC",
|
|
2592
|
+
"frequency.daily": "Каждый день в {time} ({timeZone})",
|
|
2593
|
+
"frequency.dailyLocal": "Каждый день в {time}",
|
|
2594
|
+
"frequency.weekly": "По {weekdays} в {time} ({timeZone})",
|
|
2595
|
+
"frequency.weeklyLocal": "По {weekdays} в {time}",
|
|
2596
|
+
"frequency.cron": "Cron {expression} ({timeZone})",
|
|
2597
|
+
"frequency.cronLocal": "Cron {expression}",
|
|
2598
|
+
"frequency.cronRule": "{rule} ({timeZone})",
|
|
2599
|
+
"cron.list.join": ", ",
|
|
2600
|
+
"cron.part.join": " ",
|
|
2601
|
+
"cron.weekday.name": "{weekday}",
|
|
2602
|
+
"cron.weekday.range": "{from}–{to}",
|
|
2603
|
+
"cron.months": " в {months}",
|
|
2604
|
+
"cron.day.every": "Каждый день{months}",
|
|
2605
|
+
"cron.day.weekdays": "{weekdays}{months}",
|
|
2606
|
+
"cron.day.monthDays": "{days} числа каждого месяца{months}",
|
|
2607
|
+
"cron.day.both": "{days} числа каждого месяца или {weekdays}{months}",
|
|
2608
|
+
"cron.day.bothStarred": "{days} числа каждого месяца и {weekdays}{months}",
|
|
2609
|
+
"cron.hours.range": "{from}–{to}",
|
|
2610
|
+
"cron.hours.list": "{hours}",
|
|
2611
|
+
"cron.time.everyMinute": "Каждую минуту",
|
|
2612
|
+
"cron.time.everyMinutes": "Каждые {step} мин",
|
|
2613
|
+
"cron.time.joinedEveryMinute": "каждую минуту",
|
|
2614
|
+
"cron.time.joinedEveryMinutes": "каждые {step} мин",
|
|
2615
|
+
"cron.time.everyHour": "Каждый час",
|
|
2616
|
+
"cron.time.joinedEveryHour": "каждый час",
|
|
2617
|
+
"cron.time.everyNHours": "Каждые {count} ч",
|
|
2618
|
+
"cron.time.joinedEveryNHours": "каждые {count} ч",
|
|
2619
|
+
"cron.time.hourlyAt": "Каждый час в минуту {minutes}",
|
|
2620
|
+
"cron.time.joinedHourlyAt": "каждый час в минуту {minutes}",
|
|
2621
|
+
"cron.time.hoursEveryMinute": "каждую минуту в часы {hours}",
|
|
2622
|
+
"cron.time.hoursEveryMinutes": "Каждые {step} мин в часы {hours}",
|
|
2623
|
+
"cron.time.at": "в {times}",
|
|
2624
|
+
"cron.time.hoursAt": "в минуту {minutes} часов {hours}",
|
|
2625
|
+
"frequency.weekday.join": ", ",
|
|
2626
|
+
"frequency.weekday.1": "Пн",
|
|
2627
|
+
"frequency.weekday.2": "Вт",
|
|
2628
|
+
"frequency.weekday.3": "Ср",
|
|
2629
|
+
"frequency.weekday.4": "Чт",
|
|
2630
|
+
"frequency.weekday.5": "Пт",
|
|
2631
|
+
"frequency.weekday.6": "Сб",
|
|
2632
|
+
"frequency.weekday.7": "Вс",
|
|
2633
|
+
"unit.day.one": "день",
|
|
2634
|
+
"unit.day.other": "д",
|
|
2635
|
+
"unit.hour.one": "час",
|
|
2636
|
+
"unit.hour.other": "ч",
|
|
2637
|
+
"unit.minute.one": "минута",
|
|
2638
|
+
"unit.minute.other": "мин",
|
|
2639
|
+
"unit.second.one": "секунда",
|
|
2640
|
+
"unit.second.other": "с",
|
|
2641
|
+
"relative.now": "Подходит время",
|
|
2642
|
+
"relative.future": "через {value} {unit}",
|
|
2643
|
+
"relative.overdue": "просрочено на {value} {unit}"
|
|
2644
|
+
},
|
|
2645
|
+
"shortcuts.layout": { "toggle": "Показать или скрыть левую панель" },
|
|
2450
2646
|
"shortcuts": {
|
|
2451
2647
|
"edit-label": "Изменить сочетание клавиш для «{command}»",
|
|
2452
2648
|
"record": "Нажмите сочетание клавиш",
|