@object-ui/i18n 17.3.0 → 17.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +1929 -1
- package/README.md +41 -12
- package/dist/i18n.d.ts +1 -1
- package/dist/i18n.js +1 -2
- package/dist/index.d.ts +23 -21
- package/dist/index.js +31 -21
- package/dist/locales/ar.d.ts +638 -369
- package/dist/locales/ar.js +744 -424
- package/dist/locales/de.d.ts +638 -369
- package/dist/locales/de.js +759 -446
- package/dist/locales/en.d.ts +673 -404
- package/dist/locales/en.js +899 -406
- package/dist/locales/es.d.ts +638 -369
- package/dist/locales/es.js +739 -427
- package/dist/locales/fr.d.ts +638 -369
- package/dist/locales/fr.js +738 -423
- package/dist/locales/index.d.ts +6476 -3786
- package/dist/locales/index.js +20 -20
- package/dist/locales/ja.d.ts +638 -369
- package/dist/locales/ja.js +732 -417
- package/dist/locales/ko.d.ts +638 -369
- package/dist/locales/ko.js +736 -424
- package/dist/locales/pt.d.ts +638 -369
- package/dist/locales/pt.js +737 -425
- package/dist/locales/ru.d.ts +638 -369
- package/dist/locales/ru.js +750 -424
- package/dist/locales/zh.d.ts +672 -403
- package/dist/locales/zh.js +720 -403
- package/dist/pickLocalized.d.ts +58 -0
- package/dist/pickLocalized.js +115 -7
- package/dist/provider.d.ts +84 -2
- package/dist/provider.js +305 -31
- package/dist/useDisplayLocale.d.ts +49 -0
- package/dist/useDisplayLocale.js +55 -0
- package/dist/useObjectLabel.d.ts +94 -14
- package/dist/useObjectLabel.js +134 -21
- package/dist/useSafeTranslation.js +51 -3
- package/dist/utils/index.d.ts +4 -3
- package/dist/utils/index.js +4 -3
- package/dist/utils/number-display.d.ts +32 -0
- package/dist/utils/number-display.js +32 -0
- package/dist/utils/spec-formatters.d.ts +39 -13
- package/dist/utils/spec-formatters.js +3 -3
- package/package.json +4 -3
package/dist/locales/ru.js
CHANGED
|
@@ -1,4 +1,18 @@
|
|
|
1
1
|
const ru = {
|
|
2
|
+
// objectui#4467 — the impersonation banner (app-shell ImpersonationBanner).
|
|
3
|
+
// Raised by `session.impersonatedBy`, so it survives SPA reboots; it names
|
|
4
|
+
// BOTH parties because the audit trail attributes the work to the impersonated
|
|
5
|
+
// user, and the exit states its own failure rather than appearing to succeed.
|
|
6
|
+
impersonation: {
|
|
7
|
+
banner: {
|
|
8
|
+
message: 'Вы работаете от имени {{user}} — все действия записываются на этого пользователя.',
|
|
9
|
+
startedBy: 'Начато администратором {{admin}}.',
|
|
10
|
+
stop: 'Прекратить работу от чужого имени',
|
|
11
|
+
stopping: 'Завершение…',
|
|
12
|
+
stopFailed: 'Не удалось прекратить работу от чужого имени: {{reason}}',
|
|
13
|
+
notRestored: 'Сервер принял запрос, но не восстановил сеанс администратора — вы всё ещё работаете от имени {{user}}. Выйдите и войдите снова, чтобы завершить.',
|
|
14
|
+
},
|
|
15
|
+
},
|
|
2
16
|
// objectui#2600 B5 — capability picker scope group headers (labels come from the sys_capability registry).
|
|
3
17
|
capability: {
|
|
4
18
|
label: {
|
|
@@ -16,6 +30,32 @@ const ru = {
|
|
|
16
30
|
other: 'Другое',
|
|
17
31
|
},
|
|
18
32
|
},
|
|
33
|
+
// objectui#3546 slice six — сводка шести граней авторизации в
|
|
34
|
+
// PermissionFacetLink (только чтение) плюс ссылка в Studio.
|
|
35
|
+
//
|
|
36
|
+
// Четыре счётных значения записаны как «Существительное: {{count}}» — этот
|
|
37
|
+
// приём в паке уже применён 25 раз (lookup.recordCount, notifications.
|
|
38
|
+
// groupCount, approvalsInbox.bulkApproved …) и он верен при ЛЮБОМ числе, так
|
|
39
|
+
// что для категорий few/many, которых в паке нет, базовый ключ даёт
|
|
40
|
+
// правильный русский, а не английский. Поэтому `_one` здесь совпадает с
|
|
41
|
+
// базовым ключом — форма не зависит от числа.
|
|
42
|
+
perm: {
|
|
43
|
+
facet: {
|
|
44
|
+
none: "Нет",
|
|
45
|
+
more: "+{{count}} ещё",
|
|
46
|
+
objects: "Объектов: {{count}}",
|
|
47
|
+
objects_one: "Объектов: {{count}}",
|
|
48
|
+
fields: "Правил для полей: {{count}}",
|
|
49
|
+
fields_one: "Правил для полей: {{count}}",
|
|
50
|
+
rls: "Политик RLS: {{count}}",
|
|
51
|
+
rls_one: "Политик RLS: {{count}}",
|
|
52
|
+
tabs: "Правил для вкладок: {{count}}",
|
|
53
|
+
tabs_one: "Правил для вкладок: {{count}}",
|
|
54
|
+
adminScope: "Делегированное администрирование настроено",
|
|
55
|
+
designInStudio: "Дизайн в Studio →",
|
|
56
|
+
designInStudioHint: "Дизайн в Studio",
|
|
57
|
+
},
|
|
58
|
+
},
|
|
19
59
|
lookup: {
|
|
20
60
|
recentlyUsed: 'Недавние',
|
|
21
61
|
allResults: 'Все результаты',
|
|
@@ -46,13 +86,13 @@ const ru = {
|
|
|
46
86
|
common: {
|
|
47
87
|
addToFavorites: "Добавить в избранное",
|
|
48
88
|
removeFromFavorites: "Удалить из избранного",
|
|
49
|
-
loading: "
|
|
89
|
+
loading: "Загрузка…",
|
|
50
90
|
save: "Сохранить",
|
|
91
|
+
discard: "Отменить",
|
|
51
92
|
cancel: "Отмена",
|
|
52
93
|
delete: "Удалить",
|
|
53
94
|
edit: "Редактировать",
|
|
54
95
|
create: "Создать",
|
|
55
|
-
search: "Поиск",
|
|
56
96
|
filter: "Фильтр",
|
|
57
97
|
reset: "Сбросить",
|
|
58
98
|
confirm: "Подтвердить",
|
|
@@ -76,7 +116,7 @@ const ru = {
|
|
|
76
116
|
required: "Обязательно",
|
|
77
117
|
optional: "Необязательно",
|
|
78
118
|
selectOption: "Выберите вариант",
|
|
79
|
-
select: "
|
|
119
|
+
select: "Выбрать…",
|
|
80
120
|
openChat: "Открыть чат",
|
|
81
121
|
closeChat: "Закрыть чат",
|
|
82
122
|
closePanel: "Закрыть панель",
|
|
@@ -85,6 +125,11 @@ const ru = {
|
|
|
85
125
|
itemCountOne: "{{count}} элемент",
|
|
86
126
|
toggleSidebar: "Переключить боковую панель",
|
|
87
127
|
package: "Пакет",
|
|
128
|
+
done: "Готово",
|
|
129
|
+
editInStudio: "Редактировать в Studio",
|
|
130
|
+
record: "Запись",
|
|
131
|
+
retry: "Повторить",
|
|
132
|
+
printDialogHint: "Открывает диалог печати браузера (это не экспорт в PDF)",
|
|
88
133
|
},
|
|
89
134
|
actions: {
|
|
90
135
|
decisionOutput: {
|
|
@@ -116,6 +161,9 @@ const ru = {
|
|
|
116
161
|
submitFailed: "Не удалось сохранить. Попробуйте ещё раз.",
|
|
117
162
|
discardTitle: "Отменить изменения?",
|
|
118
163
|
discardMessage: "Есть несохранённые изменения. Если закрыть форму сейчас, правки будут потеряны.",
|
|
164
|
+
// objectui#4024 — the create/edit dialog's `sr-only` accessible
|
|
165
|
+
// description, used when the form declares no `description` of its own.
|
|
166
|
+
dialogDescriptionFallback: "Заполните поля формы, затем отправьте или отмените.",
|
|
119
167
|
keepEditing: "Продолжить редактирование",
|
|
120
168
|
discard: "Отменить",
|
|
121
169
|
conflictTitle: "Конфликт сохранения",
|
|
@@ -184,7 +232,7 @@ const ru = {
|
|
|
184
232
|
richText: {
|
|
185
233
|
format: "Формат: {{format}}",
|
|
186
234
|
basicEditorHint: "Редактор форматированного текста (базовый)",
|
|
187
|
-
placeholder: "Введите
|
|
235
|
+
placeholder: "Введите текст…",
|
|
188
236
|
},
|
|
189
237
|
options: {
|
|
190
238
|
empty: "Нет доступных вариантов",
|
|
@@ -220,6 +268,14 @@ const ru = {
|
|
|
220
268
|
tags: {
|
|
221
269
|
placeholder: "Введите и нажмите Enter, чтобы добавить…",
|
|
222
270
|
},
|
|
271
|
+
// objectui#4028 — `AddressField`'s five sub-labels.
|
|
272
|
+
address: {
|
|
273
|
+
street: "Улица и дом",
|
|
274
|
+
city: "Город",
|
|
275
|
+
state: "Область / штат",
|
|
276
|
+
postalCode: "Почтовый индекс",
|
|
277
|
+
country: "Страна",
|
|
278
|
+
},
|
|
223
279
|
textarea: {
|
|
224
280
|
characterCount: "Количество символов: {{count}} из {{max}}",
|
|
225
281
|
charactersRemaining: "Осталось символов: {{count}}",
|
|
@@ -250,7 +306,7 @@ const ru = {
|
|
|
250
306
|
saveAll: "Сохранить всё ({{count}})",
|
|
251
307
|
addRecord: "Добавить запись",
|
|
252
308
|
open: "Открыть",
|
|
253
|
-
search: "
|
|
309
|
+
search: "Поиск…",
|
|
254
310
|
modified: "{{count}} строк изменено",
|
|
255
311
|
saveFailed: 'Не удалось сохранить',
|
|
256
312
|
selected: "{{count}} выбрано",
|
|
@@ -294,7 +350,7 @@ const ru = {
|
|
|
294
350
|
delete: "Удалить",
|
|
295
351
|
export: "Экспорт",
|
|
296
352
|
exportAs: "Экспорт в {{format}}",
|
|
297
|
-
loading: "Загрузка
|
|
353
|
+
loading: "Загрузка таблицы…",
|
|
298
354
|
errorLoading: "Ошибка загрузки таблицы",
|
|
299
355
|
pullToRefresh: "Потяните для обновления",
|
|
300
356
|
refreshing: "Обновление…",
|
|
@@ -305,6 +361,22 @@ const ru = {
|
|
|
305
361
|
yes: "Да",
|
|
306
362
|
no: "Нет",
|
|
307
363
|
systemFields: "Система",
|
|
364
|
+
// objectui#4024 — column-footer aggregate prefixes, keyed by the spec's
|
|
365
|
+
// `ColumnSummary` vocabulary. `pattern` owns the label/value join so this
|
|
366
|
+
// pack controls its own separator and word order.
|
|
367
|
+
summary: {
|
|
368
|
+
pattern: "{{label}}: {{value}}",
|
|
369
|
+
count: "Количество",
|
|
370
|
+
countEmpty: "Пустые",
|
|
371
|
+
countFilled: "Заполненные",
|
|
372
|
+
countUnique: "Уникальные",
|
|
373
|
+
percentEmpty: "Пустые",
|
|
374
|
+
percentFilled: "Заполненные",
|
|
375
|
+
sum: "Сумма",
|
|
376
|
+
avg: "Среднее",
|
|
377
|
+
min: "Мин.",
|
|
378
|
+
max: "Макс.",
|
|
379
|
+
},
|
|
308
380
|
toolbar: {
|
|
309
381
|
densityMode: "Плотность",
|
|
310
382
|
densityCompact: "Компактный",
|
|
@@ -418,12 +490,12 @@ const ru = {
|
|
|
418
490
|
templateName: "Название шаблона",
|
|
419
491
|
save: "Сохранить",
|
|
420
492
|
deleteTemplate: "Удалить шаблон",
|
|
421
|
-
savedMapping: '
|
|
422
|
-
chooseSavedMapping: '
|
|
423
|
-
manualMapping: '—
|
|
424
|
-
transform: '
|
|
425
|
-
savedMappingHint: '
|
|
426
|
-
savedMappingPreviewNote: '
|
|
493
|
+
savedMapping: 'Сохранённое сопоставление:',
|
|
494
|
+
chooseSavedMapping: 'Выбрать сохранённое сопоставление…',
|
|
495
|
+
manualMapping: '— Сопоставить столбцы вручную —',
|
|
496
|
+
transform: 'Преобразование',
|
|
497
|
+
savedMappingHint: 'Сопоставление «{{name}}» применяет на сервере переименование + преобразования + приведение типов. Сопоставление столбцов доступно только для чтения.',
|
|
498
|
+
savedMappingPreviewNote: 'В предпросмотре показаны исходные столбцы; при импорте сопоставление «{{name}}» применяет на сервере переименование, преобразования и приведение типов.',
|
|
427
499
|
csvColumn: "Столбец",
|
|
428
500
|
mapsTo: "Сопоставляется с",
|
|
429
501
|
typeMismatch: "Похоже на {{type}}",
|
|
@@ -483,6 +555,8 @@ const ru = {
|
|
|
483
555
|
loadErrorUnauthorizedMessage: "Сессия истекла или вы вышли из системы. Войдите снова, чтобы просмотреть эти записи.",
|
|
484
556
|
loadErrorRejectedTitle: "Запрос этого представления отклонён",
|
|
485
557
|
loadErrorRejectedMessage: "Сервер не смог обработать фильтр или параметры запроса этого представления. Обычно помогает сброс фильтров; если представление сохранено в таком виде, исправить его должен администратор.",
|
|
558
|
+
loadErrorApiDisabledTitle: "Этот объект недоступен через API",
|
|
559
|
+
loadErrorApiDisabledMessage: "Страница не может загрузить записи, потому что объект не открыт через API. Это настройка самого объекта, а не права доступа — администратор должен включить доступ по API, чтобы эта страница заработала.",
|
|
486
560
|
retry: "Повторить",
|
|
487
561
|
managedBy: {
|
|
488
562
|
system: {
|
|
@@ -507,7 +581,7 @@ const ru = {
|
|
|
507
581
|
},
|
|
508
582
|
},
|
|
509
583
|
refresh: "Обновить",
|
|
510
|
-
loading:
|
|
584
|
+
loading: "Загрузка записей…",
|
|
511
585
|
recordCount: "{{count}} записей",
|
|
512
586
|
recordCountOne: "{{count}} запись",
|
|
513
587
|
addRecord: "Добавить запись",
|
|
@@ -519,7 +593,8 @@ const ru = {
|
|
|
519
593
|
sort: "Сортировка",
|
|
520
594
|
sortRecords: "Сортировка записей",
|
|
521
595
|
sortByIdSuffix: "(по ID)",
|
|
522
|
-
sortRelationalHint: "Столбцы, ссылающиеся на другую запись, здесь не показаны: их можно сортировать только по сохранённому ID, а не по имени, которое видно в ячейке. Чтобы сортировать по этому имени,
|
|
596
|
+
sortRelationalHint: "Столбцы, ссылающиеся на другую запись, здесь не показаны: их можно сортировать только по сохранённому ID, а не по имени, которое видно в ячейке. Чтобы сортировать по этому имени, денормализуйте его в этот объект — как сохраняемое поле, которое записывается при изменении источника, — и сортируйте по нему. Не поле-формула: она виртуальна, столбец для неё не хранится, и сервер отказывается сортировать по ней.",
|
|
597
|
+
resetSortToDefault: "Сбросить к сортировке представления",
|
|
523
598
|
group: "Группировка",
|
|
524
599
|
groupBy: "Группировать по",
|
|
525
600
|
export: "Экспорт",
|
|
@@ -577,13 +652,16 @@ const ru = {
|
|
|
577
652
|
},
|
|
578
653
|
kanban: {
|
|
579
654
|
uncategorized: "Без категории",
|
|
655
|
+
columns: "колонок",
|
|
580
656
|
addCard: "Добавить карточку",
|
|
581
657
|
addColumn: "Добавить колонку",
|
|
582
658
|
moveCard: "Переместить карточку",
|
|
583
659
|
deleteCard: "Удалить карточку",
|
|
584
660
|
deleteColumn: "Удалить колонку",
|
|
585
661
|
noCards: "Нет карточек",
|
|
586
|
-
cardTitlePlaceholder: "Введите название
|
|
662
|
+
cardTitlePlaceholder: "Введите название карточки…",
|
|
663
|
+
requiredFieldsTitle: "Заполните обязательные поля",
|
|
664
|
+
requiredFieldsDescription: "Это перемещение делает поля ниже обязательными. Заполните их, чтобы продолжить.",
|
|
587
665
|
},
|
|
588
666
|
timeline: {
|
|
589
667
|
bucket: {
|
|
@@ -596,6 +674,13 @@ const ru = {
|
|
|
596
674
|
noDate: "Без даты",
|
|
597
675
|
unassigned: "Не назначено",
|
|
598
676
|
},
|
|
677
|
+
scale: {
|
|
678
|
+
week: "Неделя {{n}}",
|
|
679
|
+
quarter: "{{quarter}} кв. {{year}}",
|
|
680
|
+
},
|
|
681
|
+
gantt: {
|
|
682
|
+
rowLabel: "Элементы",
|
|
683
|
+
},
|
|
599
684
|
},
|
|
600
685
|
gantt: {
|
|
601
686
|
viewMode: {
|
|
@@ -642,6 +727,18 @@ const ru = {
|
|
|
642
727
|
ff: "Окончание → Окончание",
|
|
643
728
|
sf: "Начало → Окончание",
|
|
644
729
|
},
|
|
730
|
+
linkEnd: {
|
|
731
|
+
start: "Начало",
|
|
732
|
+
end: "Конец",
|
|
733
|
+
},
|
|
734
|
+
link: {
|
|
735
|
+
rejected: {
|
|
736
|
+
self: "Задача не может зависеть от самой себя.",
|
|
737
|
+
locked: "Эта строка заблокирована и не может принять новую зависимость.",
|
|
738
|
+
group: "Сводная строка не может быть целью зависимости — свяжите одну из её задач.",
|
|
739
|
+
cycle: "Эта связь создаст циклическую зависимость.",
|
|
740
|
+
},
|
|
741
|
+
},
|
|
645
742
|
conflict: {
|
|
646
743
|
title: "Конфликт расписания",
|
|
647
744
|
body: "Это перемещение противоречит ограничениям зависимостей. Автоматически перепланировать затронутые задачи ({{count}})?",
|
|
@@ -650,8 +747,8 @@ const ru = {
|
|
|
650
747
|
},
|
|
651
748
|
autoScheduleDlg: {
|
|
652
749
|
title: "Автопланирование",
|
|
653
|
-
body: "Сдвинуть {count} задач(и) на более поздний срок, чтобы соблюсти связи зависимостей?",
|
|
654
|
-
skipped: "{count} заблокированных задач(и) также нарушают связи и были пропущены.",
|
|
750
|
+
body: "Сдвинуть {{count}} задач(и) на более поздний срок, чтобы соблюсти связи зависимостей?",
|
|
751
|
+
skipped: "{{count}} заблокированных задач(и) также нарушают связи и были пропущены.",
|
|
655
752
|
confirm: "Применить",
|
|
656
753
|
cancel: "Отмена",
|
|
657
754
|
none: "Все зависимости соблюдены — перепланировать нечего.",
|
|
@@ -688,6 +785,7 @@ const ru = {
|
|
|
688
785
|
exportPng: "Экспортировать в PNG",
|
|
689
786
|
exportPdf: "Экспортировать в PDF",
|
|
690
787
|
saveLayout: "Сохранить компоновку",
|
|
788
|
+
refresh: "Обновить",
|
|
691
789
|
undo: "Отменить",
|
|
692
790
|
redo: "Повторить",
|
|
693
791
|
prevPeriod: "Предыдущий период",
|
|
@@ -728,11 +826,11 @@ const ru = {
|
|
|
728
826
|
defaultBadge: "по умолчанию",
|
|
729
827
|
tabActionsFor: "Действия с представлением {{name}}",
|
|
730
828
|
readonlyAriaLabel: "Представление только для чтения",
|
|
731
|
-
readonlyTooltip: "Системное представление —
|
|
829
|
+
readonlyTooltip: "Системное представление — определено в коде, только для чтения.",
|
|
732
830
|
},
|
|
733
831
|
designer: {
|
|
734
|
-
undo:
|
|
735
|
-
redo:
|
|
832
|
+
undo: "Отменить",
|
|
833
|
+
redo: "Повторить",
|
|
736
834
|
},
|
|
737
835
|
detail: {
|
|
738
836
|
editInlineHint: "Дважды щёлкните для редактирования",
|
|
@@ -774,13 +872,15 @@ const ru = {
|
|
|
774
872
|
relatedRecords: "{{count}} записей",
|
|
775
873
|
relatedRecordOne: "{{count}} запись",
|
|
776
874
|
noRelatedRecords: "Связанные записи не найдены",
|
|
777
|
-
loading: "
|
|
875
|
+
loading: "Загрузка…",
|
|
778
876
|
copyToClipboard: "Копировать в буфер обмена",
|
|
779
877
|
copied: "Скопировано!",
|
|
780
878
|
deleteConfirmation: "Вы уверены, что хотите удалить эту запись?",
|
|
879
|
+
deleted: "Запись удалена",
|
|
781
880
|
editRecord: "Редактировать запись",
|
|
782
881
|
viewAll: "Показать все",
|
|
783
882
|
new: "Создать",
|
|
883
|
+
add: "Добавить",
|
|
784
884
|
emptyValue: "—",
|
|
785
885
|
activity: "Активность",
|
|
786
886
|
editRow: "Редактировать",
|
|
@@ -791,7 +891,7 @@ const ru = {
|
|
|
791
891
|
nextPage: "Далее",
|
|
792
892
|
pageOf: "Страница {{current}} из {{total}}",
|
|
793
893
|
sortBy: "Сортировать по",
|
|
794
|
-
filterPlaceholder: "
|
|
894
|
+
filterPlaceholder: "Фильтр…",
|
|
795
895
|
highlightFields: "Ключевые поля",
|
|
796
896
|
comments: "Комментарии",
|
|
797
897
|
searchComments: "Поиск комментариев…",
|
|
@@ -821,6 +921,10 @@ const ru = {
|
|
|
821
921
|
attachmentDownloadDenied: "У вас нет доступа для скачивания этого вложения.",
|
|
822
922
|
attachmentAuthRequired: "Войдите в систему, чтобы скачать это вложение.",
|
|
823
923
|
attachmentPermissionDenied: "У вас нет разрешения на это действие.",
|
|
924
|
+
attachmentsAccessDenied: "У вас нет доступа к этим вложениям.",
|
|
925
|
+
attachmentsLoadFailed: "Не удалось загрузить вложения этой записи.",
|
|
926
|
+
attachmentsApiUnavailable: "Список вложений недоступен для этого объекта.",
|
|
927
|
+
retryLoadAttachments: "Повторить",
|
|
824
928
|
unifiedDiff: "Единое представление",
|
|
825
929
|
sideBySideDiff: "Параллельное представление",
|
|
826
930
|
noChanges: "Нет изменений",
|
|
@@ -856,6 +960,7 @@ const ru = {
|
|
|
856
960
|
loadMore: "Загрузить ещё",
|
|
857
961
|
edited: "(изменено)",
|
|
858
962
|
via: "через {{source}}",
|
|
963
|
+
viewSource: "Показать источник",
|
|
859
964
|
replyCount: "{{count}} ответ",
|
|
860
965
|
replyCountPlural: "{{count}} ответов",
|
|
861
966
|
replyPlaceholder: "Ответить…",
|
|
@@ -871,6 +976,8 @@ const ru = {
|
|
|
871
976
|
writeStrippedTitle: "Сохранено, но часть полей не применена",
|
|
872
977
|
writeStrippedReadonly: "Поля только для чтения, поэтому не применены: {{fields}}",
|
|
873
978
|
writeStrippedByState: "Поля недоступны для редактирования в текущем состоянии записи, поэтому не применены: {{fields}}",
|
|
979
|
+
writeStrippedPrimaryKey: "Идентификатор записи нельзя изменить при сохранении, поэтому поля не применены: {{fields}}",
|
|
980
|
+
writeStrippedUnknownReason: "Не применены сервером: {{fields}}",
|
|
874
981
|
approvalPendingEditable: "На согласовании · редактирование доступно",
|
|
875
982
|
approvalPendingTooltip: "У этой записи есть ожидающий запрос на согласование, но этот шаг всё ещё разрешает редактирование",
|
|
876
983
|
approvalProgress: "Согласования — {{got}} из {{need}}",
|
|
@@ -883,6 +990,13 @@ const ru = {
|
|
|
883
990
|
cancelApprovalTooltipUnlocked: "Отменить ожидающий запрос на согласование",
|
|
884
991
|
cancelApprovalFailed: "Не удалось отменить согласование",
|
|
885
992
|
cancelApprovalUnavailable: "Отмена согласований не поддерживается этим источником данных",
|
|
993
|
+
pathLabel: 'Путь записи',
|
|
994
|
+
pathStageCompleted: '{{stage}}, завершён',
|
|
995
|
+
pathStageCurrent: '{{stage}}, текущий этап',
|
|
996
|
+
pathStageUpcoming: '{{stage}}, предстоит',
|
|
997
|
+
pathStageLostCurrent: '{{stage}}, проигран, текущий этап',
|
|
998
|
+
pathStageLostUpcoming: '{{stage}}, проигран, не достигнут',
|
|
999
|
+
pathStageWonUpcoming: '{{stage}}, целевой этап, не достигнут',
|
|
886
1000
|
linkCopied: "Ссылка скопирована в буфер обмена",
|
|
887
1001
|
linkCopyFailed: "Не удалось скопировать ссылку",
|
|
888
1002
|
cancel: "Отмена",
|
|
@@ -897,11 +1011,20 @@ const ru = {
|
|
|
897
1011
|
concurrentUpdateReload: "Загрузить текущую версию",
|
|
898
1012
|
concurrentUpdateOverwrite: "Всё равно перезаписать",
|
|
899
1013
|
concurrentUpdateCancel: "Отмена",
|
|
1014
|
+
concurrentUpdateRecordLabel: "этой записи",
|
|
900
1015
|
openInNewTab: "Открыть в новой вкладке",
|
|
901
1016
|
history: "История",
|
|
1017
|
+
historyEmpty: "Истории пока нет",
|
|
902
1018
|
deleteRowTitle: "Удалить запись",
|
|
903
1019
|
createdBy: "Создано",
|
|
904
1020
|
updatedBy: "Обновлено",
|
|
1021
|
+
// objectui#3863 — base key, and in ru this is the slot users actually hit: `few`
|
|
1022
|
+
// (2-4) and `many` (5-20, 25-30, …) are unenumerated, so before this key those
|
|
1023
|
+
// counts rendered ENGLISH. The value therefore cannot agree with the numeral —
|
|
1024
|
+
// it uses the «Существительное: {{count}}» form this pack already writes 22 times
|
|
1025
|
+
// (lookup.recordCount `Записей: {{count}}`, notifications.groupCount), which is
|
|
1026
|
+
// correct for EVERY Russian count. `_one` keeps the agreeing form for 1/21/31/…
|
|
1027
|
+
showEmptyRelated: "+ Пустых: {{count}}",
|
|
905
1028
|
showEmptyRelated_one: "+ {{count}} пустое",
|
|
906
1029
|
showEmptyRelated_other: "+ {{count}} пустых",
|
|
907
1030
|
copyEmail: "Копировать email",
|
|
@@ -913,7 +1036,8 @@ const ru = {
|
|
|
913
1036
|
},
|
|
914
1037
|
chart: {
|
|
915
1038
|
noData: "Нет данных для графика",
|
|
916
|
-
loading: "Загрузка
|
|
1039
|
+
loading: "Загрузка графика…",
|
|
1040
|
+
nullCategory: "(Не указано)",
|
|
917
1041
|
},
|
|
918
1042
|
map: {
|
|
919
1043
|
searchLocations: "Поиск местоположений…",
|
|
@@ -922,68 +1046,9 @@ const ru = {
|
|
|
922
1046
|
invalidCoordinates: "{{count}} запись с отсутствующими или недействительными координатами исключена из карты.",
|
|
923
1047
|
invalidCoordinatesPlural: "{{count}} записей с отсутствующими или недействительными координатами исключены из карты.",
|
|
924
1048
|
},
|
|
925
|
-
workflow: {
|
|
926
|
-
draft: "Черновик",
|
|
927
|
-
active: "Активный",
|
|
928
|
-
paused: "Приостановлен",
|
|
929
|
-
completed: "Завершён",
|
|
930
|
-
cancelled: "Отменён",
|
|
931
|
-
save: "Сохранить",
|
|
932
|
-
publish: "Опубликовать",
|
|
933
|
-
addNode: "Добавить узел",
|
|
934
|
-
workflowFlow: "Рабочий процесс",
|
|
935
|
-
properties: "Свойства",
|
|
936
|
-
connections: "Соединения",
|
|
937
|
-
quickConnect: "Быстрое соединение",
|
|
938
|
-
fromPlaceholder: "От...",
|
|
939
|
-
toPlaceholder: "К...",
|
|
940
|
-
connect: "Соединить",
|
|
941
|
-
label: "Метка",
|
|
942
|
-
type: "Тип",
|
|
943
|
-
description: "Описание",
|
|
944
|
-
assignee: "Ответственный",
|
|
945
|
-
assigneeType: "Тип ответственного",
|
|
946
|
-
user: "Пользователь",
|
|
947
|
-
role: "Роль",
|
|
948
|
-
group: "Группа",
|
|
949
|
-
expression: "Выражение",
|
|
950
|
-
timeoutMinutes: "Тайм-аут (минуты)",
|
|
951
|
-
selectNodeToEdit: "Выберите узел для редактирования его свойств",
|
|
952
|
-
workflowTitle: "Название рабочего процесса",
|
|
953
|
-
newWorkflow: "Новый рабочий процесс",
|
|
954
|
-
outConnections: "{{count}} выходов",
|
|
955
|
-
start: "Начало",
|
|
956
|
-
end: "Конец",
|
|
957
|
-
task: "Задача",
|
|
958
|
-
userTask: "Задача пользователя",
|
|
959
|
-
serviceTask: "Сервисная задача",
|
|
960
|
-
scriptTask: "Скриптовая задача",
|
|
961
|
-
approval: "Одобрение",
|
|
962
|
-
condition: "Условие",
|
|
963
|
-
parallelGateway: "Параллельный шлюз",
|
|
964
|
-
joinGateway: "Шлюз объединения",
|
|
965
|
-
boundaryEvent: "Граничное событие",
|
|
966
|
-
delay: "Задержка",
|
|
967
|
-
notification: "Уведомление",
|
|
968
|
-
webhook: "Webhook",
|
|
969
|
-
allowConcurrency: "Разрешить (параллельное выполнение)",
|
|
970
|
-
forbidConcurrency: "Запретить (пропустить новые)",
|
|
971
|
-
replaceConcurrency: "Заменить (отменить текущие)",
|
|
972
|
-
queueConcurrency: "Очередь (выполнить после текущего)",
|
|
973
|
-
conditionEvent: "Условие",
|
|
974
|
-
manualEvent: "Ручной",
|
|
975
|
-
webhookEvent: "Webhook",
|
|
976
|
-
timerEvent: "Таймер",
|
|
977
|
-
signalEvent: "Сигнал",
|
|
978
|
-
versionHistory: "История версий",
|
|
979
|
-
importBpmn: "Импорт BPMN",
|
|
980
|
-
exportBpmn: "Экспорт BPMN",
|
|
981
|
-
undo: "Отменить",
|
|
982
|
-
redo: "Повторить",
|
|
983
|
-
resetZoom: "Сбросить масштаб",
|
|
984
|
-
},
|
|
985
1049
|
dashboard: {
|
|
986
1050
|
noRows: "Нет строк",
|
|
1051
|
+
loading: "Загрузка…",
|
|
987
1052
|
pickMeasures: "Выберите меры (значения) для этого виджета набора данных.",
|
|
988
1053
|
datasetUnsupported: "Этот источник данных не поддерживает запросы к наборам данных.",
|
|
989
1054
|
details: "Подробности",
|
|
@@ -1020,6 +1085,105 @@ const ru = {
|
|
|
1020
1085
|
total: "Итого",
|
|
1021
1086
|
noDataAvailable: "Данные недоступны",
|
|
1022
1087
|
noDataSourceFor: "Нет источника данных для",
|
|
1088
|
+
config: {
|
|
1089
|
+
breadcrumb: {
|
|
1090
|
+
dashboard: "Дашборд",
|
|
1091
|
+
configuration: "Конфигурация",
|
|
1092
|
+
widget: "Виджет",
|
|
1093
|
+
chart: "Диаграмма",
|
|
1094
|
+
table: "Таблица",
|
|
1095
|
+
pivotTable: "Сводная таблица",
|
|
1096
|
+
},
|
|
1097
|
+
section: {
|
|
1098
|
+
general: "Основные",
|
|
1099
|
+
layout: "Макет",
|
|
1100
|
+
data: "Данные",
|
|
1101
|
+
dataBinding: "Привязка данных",
|
|
1102
|
+
appearance: "Внешний вид",
|
|
1103
|
+
},
|
|
1104
|
+
field: {
|
|
1105
|
+
title: "Заголовок",
|
|
1106
|
+
description: "Описание",
|
|
1107
|
+
columns: "Столбцы",
|
|
1108
|
+
gap: "Отступ",
|
|
1109
|
+
rowHeight: "Высота строки (px)",
|
|
1110
|
+
autoRefresh: "Автообновление",
|
|
1111
|
+
showDescription: "Показать описание",
|
|
1112
|
+
theme: "Тема",
|
|
1113
|
+
widgetType: "Тип виджета",
|
|
1114
|
+
colorVariant: "Вариант цвета",
|
|
1115
|
+
dataset: "Набор данных",
|
|
1116
|
+
dimensions: "Измерения",
|
|
1117
|
+
values: "Значения",
|
|
1118
|
+
width: "Ширина (столбцы)",
|
|
1119
|
+
height: "Высота (строки)",
|
|
1120
|
+
},
|
|
1121
|
+
placeholder: {
|
|
1122
|
+
dashboardTitle: "Заголовок дашборда",
|
|
1123
|
+
dashboardDescription: "Краткое описание под заголовком",
|
|
1124
|
+
widgetTitle: "Заголовок виджета",
|
|
1125
|
+
widgetDescription: "Описание виджета",
|
|
1126
|
+
datasetName: "Имя набора данных",
|
|
1127
|
+
selectDataset: "Выберите набор данных…",
|
|
1128
|
+
searchDatasets: "Поиск наборов данных…",
|
|
1129
|
+
addDimension: "Добавить измерение…",
|
|
1130
|
+
addMeasure: "Добавить меру…",
|
|
1131
|
+
searchMembers: "Поиск…",
|
|
1132
|
+
},
|
|
1133
|
+
empty: {
|
|
1134
|
+
datasets: "Наборы данных не найдены.",
|
|
1135
|
+
dimensions: "Измерения не выбраны.",
|
|
1136
|
+
measures: "Меры не выбраны.",
|
|
1137
|
+
nothingToAdd: "Больше нечего добавить.",
|
|
1138
|
+
},
|
|
1139
|
+
help: {
|
|
1140
|
+
dataset: "Набор данных семантического слоя, к которому привязан этот виджет (ADR-0021).",
|
|
1141
|
+
dimensions: "Группировать/разделять значения по этим измерениям набора данных.",
|
|
1142
|
+
dimensionsPivot: "Поля группировки/разделения. Последнее измерение разворачивается по столбцам.",
|
|
1143
|
+
values: "Меры из набора данных для отображения (хотя бы одна).",
|
|
1144
|
+
},
|
|
1145
|
+
action: {
|
|
1146
|
+
add: "Добавить",
|
|
1147
|
+
remove: "Удалить {{name}}",
|
|
1148
|
+
},
|
|
1149
|
+
refresh: {
|
|
1150
|
+
off: "Выкл.",
|
|
1151
|
+
every30s: "Каждые 30 с",
|
|
1152
|
+
every1m: "Каждую 1 мин",
|
|
1153
|
+
every5m: "Каждые 5 мин",
|
|
1154
|
+
every15m: "Каждые 15 мин",
|
|
1155
|
+
every30m: "Каждые 30 мин",
|
|
1156
|
+
every1h: "Каждый 1 час",
|
|
1157
|
+
},
|
|
1158
|
+
themeOption: {
|
|
1159
|
+
light: "Светлая",
|
|
1160
|
+
dark: "Тёмная",
|
|
1161
|
+
auto: "Авто",
|
|
1162
|
+
},
|
|
1163
|
+
widgetType: {
|
|
1164
|
+
metric: "Метрика",
|
|
1165
|
+
bar: "Столбчатая диаграмма",
|
|
1166
|
+
horizontalBar: "Горизонтальная гистограмма",
|
|
1167
|
+
line: "Линейная диаграмма",
|
|
1168
|
+
pie: "Круговая диаграмма",
|
|
1169
|
+
donut: "Кольцевая диаграмма",
|
|
1170
|
+
area: "Диаграмма с областями",
|
|
1171
|
+
scatter: "Точечная диаграмма",
|
|
1172
|
+
funnel: "Воронка",
|
|
1173
|
+
table: "Таблица",
|
|
1174
|
+
pivot: "Сводная таблица",
|
|
1175
|
+
},
|
|
1176
|
+
color: {
|
|
1177
|
+
default: "По умолчанию",
|
|
1178
|
+
blue: "Синий",
|
|
1179
|
+
teal: "Бирюзовый",
|
|
1180
|
+
orange: "Оранжевый",
|
|
1181
|
+
purple: "Фиолетовый",
|
|
1182
|
+
success: "Успех",
|
|
1183
|
+
warning: "Предупреждение",
|
|
1184
|
+
danger: "Опасность",
|
|
1185
|
+
},
|
|
1186
|
+
},
|
|
1023
1187
|
trend: {
|
|
1024
1188
|
vsLastQuarter: "пред. квартал",
|
|
1025
1189
|
vsLastMonth: "пред. месяц",
|
|
@@ -1029,24 +1193,6 @@ const ru = {
|
|
|
1029
1193
|
vsPreviousPeriod: "пред. период",
|
|
1030
1194
|
},
|
|
1031
1195
|
},
|
|
1032
|
-
configPanel: {
|
|
1033
|
-
save: "Сохранить",
|
|
1034
|
-
discard: "Отменить",
|
|
1035
|
-
close: "Закрыть",
|
|
1036
|
-
layout: "Макет",
|
|
1037
|
-
columns: "Столбцы",
|
|
1038
|
-
gap: "Отступ",
|
|
1039
|
-
rowHeight: "Высота строки",
|
|
1040
|
-
data: "Данные",
|
|
1041
|
-
refreshInterval: "Интервал обновления",
|
|
1042
|
-
appearance: "Внешний вид",
|
|
1043
|
-
title: "Заголовок",
|
|
1044
|
-
showDescription: "Показать описание",
|
|
1045
|
-
theme: "Тема",
|
|
1046
|
-
configuration: "Конфигурация",
|
|
1047
|
-
general: "Основные",
|
|
1048
|
-
advanced: "Дополнительно",
|
|
1049
|
-
},
|
|
1050
1196
|
appDesigner: {
|
|
1051
1197
|
createApp: "Создать приложение",
|
|
1052
1198
|
editApp: "Редактировать приложение",
|
|
@@ -1077,7 +1223,7 @@ const ru = {
|
|
|
1077
1223
|
faviconUrl: "Favicon URL",
|
|
1078
1224
|
preview: "Предпросмотр",
|
|
1079
1225
|
complete: "Завершить",
|
|
1080
|
-
snakeCaseHint: "
|
|
1226
|
+
snakeCaseHint: "Должно быть в формате snake_case (например, my_app)",
|
|
1081
1227
|
modeEdit: "Редактировать",
|
|
1082
1228
|
modePreview: "Предпросмотр",
|
|
1083
1229
|
modeCode: "Код",
|
|
@@ -1097,8 +1243,6 @@ const ru = {
|
|
|
1097
1243
|
showSort: "Показать сортировку",
|
|
1098
1244
|
appearance: "Внешний вид",
|
|
1099
1245
|
rowHeight: "Высота строки",
|
|
1100
|
-
stripedRows: "Чередующиеся строки",
|
|
1101
|
-
bordered: "С рамкой",
|
|
1102
1246
|
livePreview: "Предпросмотр в реальном времени",
|
|
1103
1247
|
stepBasicDesc: "Имя, заголовок и макет",
|
|
1104
1248
|
stepObjectsDesc: "Выбрать бизнес-объекты",
|
|
@@ -1212,7 +1356,6 @@ const ru = {
|
|
|
1212
1356
|
unique: "Уникальное",
|
|
1213
1357
|
readOnly: "Только чтение",
|
|
1214
1358
|
hidden: "Скрытое",
|
|
1215
|
-
indexed: "Индексированное",
|
|
1216
1359
|
externalId: "Внешний ID",
|
|
1217
1360
|
trackHistory: "Отслеживать историю",
|
|
1218
1361
|
defaultValue: "Значение по умолчанию",
|
|
@@ -1241,6 +1384,7 @@ const ru = {
|
|
|
1241
1384
|
},
|
|
1242
1385
|
},
|
|
1243
1386
|
console: {
|
|
1387
|
+
saveAdvisoryTitle: "Сохранено — проверка авторинга выдала рекомендаций: {{count}}",
|
|
1244
1388
|
settingsHub: {
|
|
1245
1389
|
title: "Настройки",
|
|
1246
1390
|
subtitle: "Настройте рабочее пространство, интеграции и флаги функций.",
|
|
@@ -1285,6 +1429,15 @@ const ru = {
|
|
|
1285
1429
|
passwordsDownload: "Скачать CSV",
|
|
1286
1430
|
},
|
|
1287
1431
|
ai: {
|
|
1432
|
+
pendingDrafts: {
|
|
1433
|
+
// Число вынесено в конец («…: {{count}}») — так этот пак пишет
|
|
1434
|
+
// количества, как в home.pendingDrafts.publishedVerified.
|
|
1435
|
+
count: "Ещё не опубликовано изменений: {{count}} — пользователи их не видят.",
|
|
1436
|
+
publish: "Опубликовать",
|
|
1437
|
+
published: "Все ожидающие изменения вступили в силу.",
|
|
1438
|
+
failed: "Не удалось опубликовать.",
|
|
1439
|
+
publishedWithFindings: "Опубликовано, но проверки среды выполнения выявили проблемы: {{detail}}",
|
|
1440
|
+
},
|
|
1288
1441
|
usage: {
|
|
1289
1442
|
title: "Использование ИИ",
|
|
1290
1443
|
meterBuild: "Сборка",
|
|
@@ -1307,7 +1460,7 @@ const ru = {
|
|
|
1307
1460
|
shareTitle: "Поделиться этим диалогом",
|
|
1308
1461
|
shareDisabledTitle: "Начните диалог, чтобы включить публикацию",
|
|
1309
1462
|
newChat: "Создать",
|
|
1310
|
-
searchChats: "Поиск по
|
|
1463
|
+
searchChats: "Поиск по чатам…",
|
|
1311
1464
|
noChatsYet: "Чатов пока нет",
|
|
1312
1465
|
noChatsDescription: "Начните новый диалог, и он появится здесь.",
|
|
1313
1466
|
noMatchingChats: "Подходящих чатов нет.",
|
|
@@ -1316,18 +1469,18 @@ const ru = {
|
|
|
1316
1469
|
deleteConversation: "Удалить диалог",
|
|
1317
1470
|
saveRename: "Сохранить название",
|
|
1318
1471
|
cancelRename: "Отменить переименование",
|
|
1319
|
-
loadingHistory: "Загрузка истории
|
|
1472
|
+
loadingHistory: "Загрузка истории диалога…",
|
|
1320
1473
|
conversationReady: "Диалог готов",
|
|
1321
1474
|
preparingConversation: "Подготовка нового диалога",
|
|
1322
1475
|
offlineDemoMode: "Автономный демонстрационный режим — список агентов недоступен",
|
|
1323
1476
|
sendFailedRateLimited: "Вы отправляете сообщения слишком часто. Ваше сообщение сохранено ниже — подождите немного и попробуйте снова.",
|
|
1324
1477
|
sendFailedGeneric: "Не удалось отправить сообщение. Оно сохранено ниже — попробуйте ещё раз.",
|
|
1325
|
-
askAgent: "Спросить {{agent}}
|
|
1478
|
+
askAgent: "Спросить {{agent}}…",
|
|
1326
1479
|
assistant: "Ассистент",
|
|
1327
1480
|
liveCanvas: "Живой предпросмотр — {{app}} (черновик)",
|
|
1328
1481
|
liveCanvasUnlisted: "Работающее приложение — {{app}} (скрыто до публикации)",
|
|
1329
|
-
loadingAgents: "Загрузка
|
|
1330
|
-
askAnything: "Спросите о чём
|
|
1482
|
+
loadingAgents: "Загрузка агентов…",
|
|
1483
|
+
askAnything: "Спросите о чём угодно…",
|
|
1331
1484
|
emptyTitle: "Начните диалог",
|
|
1332
1485
|
emptyDescription: "Спросите о чём угодно — ассистент видит контекст вашего текущего приложения.",
|
|
1333
1486
|
switchAssistant: "Сменить ассистента",
|
|
@@ -1420,6 +1573,11 @@ const ru = {
|
|
|
1420
1573
|
changesConfirmed: "Подтверждено",
|
|
1421
1574
|
changesConfirm: "Подтвердить",
|
|
1422
1575
|
changesConfirmHint: "Ответьте, чтобы подтвердить или скорректировать это изменение.",
|
|
1576
|
+
changesApplying: "Применение…",
|
|
1577
|
+
changesApplied: "Применено",
|
|
1578
|
+
changesDrafted: "Сохранено как черновик",
|
|
1579
|
+
changesFailed: "Не применено",
|
|
1580
|
+
discussing: "Обсуждается: {{target}}",
|
|
1423
1581
|
changeVerb: {
|
|
1424
1582
|
createObject: "Создать объект",
|
|
1425
1583
|
addField: "Добавить поле",
|
|
@@ -1430,9 +1588,60 @@ const ru = {
|
|
|
1430
1588
|
createSeed: "Сгенерировать примеры данных",
|
|
1431
1589
|
createPackage: "Создать пакет приложения",
|
|
1432
1590
|
},
|
|
1591
|
+
// objectui#3546 slice four — the AI console surfaces: the /ai chat page's app switcher,
|
|
1592
|
+
// connection banner and plan/publish cards, the ChatDock chrome, and the
|
|
1593
|
+
// conversation-list date buckets. `group.*` is the template-key family
|
|
1594
|
+
// `console.ai.group.${key}` (ConversationsSidebar), enumerated from the
|
|
1595
|
+
// ConversationGroupKey union — all five members, no wildcard.
|
|
1596
|
+
collapseToDock: "Свернуть в боковую панель",
|
|
1597
|
+
switchApp: "Сменить приложение",
|
|
1598
|
+
switchAppLabel: "Диалоги сборки по приложениям",
|
|
1599
|
+
newApp: "Новое приложение",
|
|
1600
|
+
connectionWaiting: "Ожидание сервера…",
|
|
1601
|
+
connectionStalled: "Всё ещё выполняется…",
|
|
1602
|
+
connectionOffline: "Соединение потеряно — переподключение…",
|
|
1603
|
+
designingPlan: "Проектирование вашего приложения…",
|
|
1604
|
+
designingPlanHint: {
|
|
1605
|
+
data: "Определяю данные, которые вы будете отслеживать…",
|
|
1606
|
+
objects: "Формирую объекты и их поля…",
|
|
1607
|
+
relations: "Соединяю связанные записи…",
|
|
1608
|
+
lookups: "Настраиваю связи и подстановки…",
|
|
1609
|
+
views: "Планирую экраны и представления…",
|
|
1610
|
+
forms: "Размещаю формы и списки…",
|
|
1611
|
+
defaults: "Добавляю разумные значения по умолчанию и проверки…",
|
|
1612
|
+
dashboard: "Набрасываю дашборд для отслеживания…",
|
|
1613
|
+
review: "Перепроверяю, что структура согласована…",
|
|
1614
|
+
finalize: "Собираю план воедино…",
|
|
1615
|
+
},
|
|
1616
|
+
planBuilding: "Сборка…",
|
|
1617
|
+
planBuilt: "Собрано",
|
|
1618
|
+
planDeferred: "Ещё не собрано",
|
|
1619
|
+
planReady: "План готов. Соберите его сейчас или скажите, что нужно скорректировать.",
|
|
1620
|
+
published: "Опубликовано",
|
|
1621
|
+
publishFailed: "Не удалось опубликовать",
|
|
1622
|
+
unavailableTitle: "Ассистент ИИ недоступен",
|
|
1623
|
+
unavailableDescription: "В этой среде ассистент ИИ не включён. Всё остальное работает как обычно.",
|
|
1624
|
+
unavailableError: "Не удалось связаться с сервисом ИИ. Возможно, он временно недоступен — повторите попытку или вернитесь на главную.",
|
|
1625
|
+
unavailableRetry: "Повторить",
|
|
1626
|
+
unavailableHome: "На главную",
|
|
1627
|
+
dock: {
|
|
1628
|
+
title: "Ассистент",
|
|
1629
|
+
description: "Чат с ассистентом ИИ",
|
|
1630
|
+
resize: "Изменить размер чата",
|
|
1631
|
+
collapse: "Свернуть чат",
|
|
1632
|
+
maximize: "Открыть на всю страницу",
|
|
1633
|
+
open: "Открыть ассистента",
|
|
1634
|
+
},
|
|
1635
|
+
group: {
|
|
1636
|
+
today: "Сегодня",
|
|
1637
|
+
yesterday: "Вчера",
|
|
1638
|
+
previous7Days: "Предыдущие 7 дней",
|
|
1639
|
+
previous30Days: "Предыдущие 30 дней",
|
|
1640
|
+
older: "Ранее",
|
|
1641
|
+
},
|
|
1433
1642
|
},
|
|
1434
1643
|
title: "Консоль ObjectStack",
|
|
1435
|
-
initializing: "Инициализация
|
|
1644
|
+
initializing: "Инициализация приложения…",
|
|
1436
1645
|
loadingHint: "Настройка нового окружения может занять некоторое время.",
|
|
1437
1646
|
breadcrumb: {
|
|
1438
1647
|
dashboards: "Панели",
|
|
@@ -1440,6 +1649,31 @@ const ru = {
|
|
|
1440
1649
|
reports: "Отчёты",
|
|
1441
1650
|
system: "Система",
|
|
1442
1651
|
},
|
|
1652
|
+
// objectui#4024 — the single-namespace settings screen. Its sibling
|
|
1653
|
+
// `settingsHub` above already resolved through this pack; the view was the
|
|
1654
|
+
// one file still carrying English literals.
|
|
1655
|
+
settingsView: {
|
|
1656
|
+
backToHub: "Все настройки",
|
|
1657
|
+
back: "Назад",
|
|
1658
|
+
noNamespace: "Пространство имён не выбрано.",
|
|
1659
|
+
loadError: "Не удалось загрузить настройки",
|
|
1660
|
+
saved: "Настройки сохранены",
|
|
1661
|
+
saveFailed: "Ошибка сохранения",
|
|
1662
|
+
lockedByEnv: "Заблокировано окружением: {{key}}",
|
|
1663
|
+
lockedByEnvNoKey: "Заблокировано окружением",
|
|
1664
|
+
actionSucceeded: "Действие выполнено",
|
|
1665
|
+
actionFailed: "Действие не выполнено",
|
|
1666
|
+
discard: "Отменить",
|
|
1667
|
+
saveChanges: "Сохранить изменения",
|
|
1668
|
+
unsavedCount: "Несохранённых изменений: {{count}}",
|
|
1669
|
+
unsavedCount_one: "{{count}} несохранённое изменение",
|
|
1670
|
+
unsavedCount_other: "{{count}} несохранённых изменений",
|
|
1671
|
+
cryptoRefusalTitle: "Эта установка не может шифровать секреты",
|
|
1672
|
+
cryptoRefusalSubjectSuffix: "объявлен зашифрованным, поэтому ничего не было записано.",
|
|
1673
|
+
cryptoRefusalNoSubject: "Значение, объявленное зашифрованным, было отклонено, поэтому ничего не было записано.",
|
|
1674
|
+
cryptoRefusalToast: "Не удалось зашифровать секреты: {{subject}}",
|
|
1675
|
+
cryptoRefusalToastNoSubject: "Не удалось зашифровать секреты",
|
|
1676
|
+
},
|
|
1443
1677
|
loadingSteps: {
|
|
1444
1678
|
connecting: "Подключение к источнику данных",
|
|
1445
1679
|
loadingConfig: "Загрузка конфигурации",
|
|
@@ -1469,6 +1703,7 @@ const ru = {
|
|
|
1469
1703
|
general: "Общие",
|
|
1470
1704
|
navigation: "Навигация",
|
|
1471
1705
|
dataViews: "Представления данных",
|
|
1706
|
+
aiChat: "Ассистент ИИ",
|
|
1472
1707
|
preferences: "Настройки",
|
|
1473
1708
|
},
|
|
1474
1709
|
openCommandPalette: "Открыть палитру команд",
|
|
@@ -1479,11 +1714,13 @@ const ru = {
|
|
|
1479
1714
|
createRecord: "Создать новую запись",
|
|
1480
1715
|
refreshData: "Обновить данные",
|
|
1481
1716
|
editRecord: "Редактировать выбранную запись",
|
|
1717
|
+
newChat: "Новый чат",
|
|
1718
|
+
toggleChatsList: "Переключить список чатов",
|
|
1482
1719
|
toggleDarkMode: "Переключить тёмный режим",
|
|
1483
1720
|
},
|
|
1484
1721
|
commandPalette: {
|
|
1485
1722
|
title: "Палитра команд",
|
|
1486
|
-
placeholder: "Введите команду или
|
|
1723
|
+
placeholder: "Введите команду или поиск…",
|
|
1487
1724
|
noResults: "Результаты не найдены.",
|
|
1488
1725
|
objects: "Объекты",
|
|
1489
1726
|
dashboards: "Панели мониторинга",
|
|
@@ -1509,6 +1746,12 @@ const ru = {
|
|
|
1509
1746
|
goHome: "На главную",
|
|
1510
1747
|
errorDetails: "Подробности ошибки (только для разработки)",
|
|
1511
1748
|
},
|
|
1749
|
+
// objectui#3546 slice four — the console's catch-all route (AppContent `RouteNotFound`).
|
|
1750
|
+
notFound: {
|
|
1751
|
+
title: "Страница не найдена",
|
|
1752
|
+
description: "Открытый URL не соответствует ни одному представлению в этом приложении.",
|
|
1753
|
+
back: "Назад",
|
|
1754
|
+
},
|
|
1512
1755
|
theme: {
|
|
1513
1756
|
toggle: "Переключить тему",
|
|
1514
1757
|
light: "Светлая",
|
|
@@ -1524,109 +1767,41 @@ const ru = {
|
|
|
1524
1767
|
viewNameHelp: "Машинный ключ (snake_case). Заполняется автоматически из заголовка — при желании измените.",
|
|
1525
1768
|
viewNameRequired: "Введите ключ (строчные буквы, цифры, подчёркивание). Для нелатинских заголовков автозаполнение не работает.",
|
|
1526
1769
|
viewNameInvalid: "Используйте строчные латинские буквы, цифры и подчёркивания; начните с буквы или подчёркивания.",
|
|
1527
|
-
systemViewReadonly:
|
|
1528
|
-
|
|
1770
|
+
systemViewReadonly: "Системное представление определено в коде — только для чтения.",
|
|
1771
|
+
cannotEditMetaView: "Это встроенное представление, определённое в коде, — изменить его нельзя.",
|
|
1772
|
+
cannotDeleteMetaView: "Это встроенное представление, определённое в коде, — удалить его нельзя.",
|
|
1773
|
+
expandToPage: "Открыть на всю страницу",
|
|
1529
1774
|
objectNotFound: "Объект не найден",
|
|
1530
1775
|
objectNotFoundDescription: "Объект «{{objectName}}» не существует в текущей конфигурации.",
|
|
1531
1776
|
objectNotFoundHint: "Проверьте настройки навигации приложения или выберите другой объект на боковой панели.",
|
|
1532
1777
|
filterOrNotSavable: "Этот фильтр объединяет условия через ИЛИ, что сохранённое представление пока не может хранить. Он по-прежнему применяется к этому списку — уберите группировку ИЛИ, чтобы сохранить его в представлении.",
|
|
1533
1778
|
filterNestedNotSavable: "Этот фильтр использует вложенные группы условий, которые сохранённое представление не может хранить. Преобразуйте его в один список условий, чтобы сохранить в представлении.",
|
|
1534
1779
|
allRecords: "Все записи",
|
|
1535
|
-
exitDesignMode: "Выйти из режима дизайна",
|
|
1536
|
-
enterDesignMode: "Войти в режим дизайна",
|
|
1537
|
-
metadataInspector: "Инспектор метаданных",
|
|
1538
|
-
editView: "Редактировать представление",
|
|
1539
|
-
addView: "Добавить представление",
|
|
1540
|
-
designTools: "Инструменты дизайна",
|
|
1541
1780
|
new: "Создать",
|
|
1542
1781
|
configureView: "Настроить представление",
|
|
1543
|
-
closePanel: "Закрыть панель",
|
|
1544
|
-
page: "Страница",
|
|
1545
|
-
pageConfigHint: "Панель инструментов, навигация и настройки оболочки представления",
|
|
1546
|
-
listConfigHint: "Отрисовка данных, столбцы и внешний вид для этого типа списка",
|
|
1547
|
-
general: "Общие",
|
|
1548
|
-
generalHint: "Название, описание и тип представления",
|
|
1549
1782
|
toolbar: "Панель инструментов",
|
|
1550
|
-
toolbarHint: "Поиск, фильтр, сортировка, группировка и переключение плотности",
|
|
1551
1783
|
toolbarEnabledCount: "{{count}} из {{total}} включено",
|
|
1552
|
-
|
|
1553
|
-
navigationHint: "Поведение при нажатии на строку и настройки детального представления",
|
|
1554
|
-
records: "Записи",
|
|
1555
|
-
recordsHint: "Режим выбора, добавление записи и встроенное редактирование",
|
|
1556
|
-
exportPrint: "Экспорт и печать",
|
|
1557
|
-
exportPrintHint: "Форматы экспорта, печать и отображение количества записей",
|
|
1558
|
-
showAllFields: "Показать все",
|
|
1559
|
-
hideAllFields: "Скрыть все",
|
|
1560
|
-
searchFields: "Поиск полей...",
|
|
1784
|
+
searchFields: "Поиск полей…",
|
|
1561
1785
|
title: "Заголовок",
|
|
1562
|
-
description: "Описание",
|
|
1563
|
-
data: "Данные",
|
|
1564
|
-
source: "Источник",
|
|
1565
|
-
columns: "Столбцы",
|
|
1566
|
-
filterBy: "Фильтр по",
|
|
1567
|
-
sortBy: "Сортировка по",
|
|
1568
|
-
appearance: "Внешний вид",
|
|
1569
|
-
showDescription: "Показать описание",
|
|
1570
1786
|
viewType: "Тип представления",
|
|
1571
|
-
userFilters: "Фильтры пользователя",
|
|
1572
|
-
enableSearch: "Включить поиск",
|
|
1573
|
-
enableFilter: "Включить фильтр",
|
|
1574
|
-
enableSort: "Включить сортировку",
|
|
1575
|
-
enableHideFields: "Включить скрытие полей",
|
|
1576
|
-
enableGroup: "Включить группировку",
|
|
1577
|
-
enableColor: "Включить цвет",
|
|
1578
|
-
enableDensity: "Включить плотность",
|
|
1579
|
-
userActions: "Действия пользователя",
|
|
1580
|
-
addRecordViaForm: "Добавить записи через форму",
|
|
1581
|
-
advanced: "Расширенные",
|
|
1582
|
-
allowExport: "Разрешить экспорт",
|
|
1583
1787
|
recordCount: "{{count}} записей",
|
|
1584
|
-
noDescription: "Нет описания",
|
|
1585
|
-
none: "Нет",
|
|
1586
|
-
columnsConfigured: "{{count}} столбцов",
|
|
1587
1788
|
save: "Сохранить",
|
|
1588
1789
|
discard: "Отменить",
|
|
1589
1790
|
createView: "Создать представление",
|
|
1590
1791
|
newView: "Новое представление",
|
|
1591
|
-
typeOptions: "Параметры типа",
|
|
1592
1792
|
groupByField: "Поле группировки",
|
|
1593
1793
|
startDateField: "Поле даты начала",
|
|
1594
1794
|
titleField: "Поле заголовка",
|
|
1595
1795
|
latitudeField: "Поле широты",
|
|
1596
1796
|
longitudeField: "Поле долготы",
|
|
1597
1797
|
imageField: "Поле изображения",
|
|
1598
|
-
|
|
1599
|
-
selectField: "Выберите поле...",
|
|
1600
|
-
gridOptionsHint: "Представление таблицы использует столбцы, настроенные выше.",
|
|
1798
|
+
selectField: "Выберите поле…",
|
|
1601
1799
|
groupBy: "Группировать по",
|
|
1602
|
-
prefixField: "Поле префикса",
|
|
1603
|
-
fields: "Поля",
|
|
1604
|
-
fieldsVisible: "{{count}} видимых",
|
|
1605
|
-
sortsCount: "{{count}} сортировок",
|
|
1606
|
-
filtersCount: "{{count}} фильтров",
|
|
1607
1800
|
endDateField: "Поле даты окончания",
|
|
1608
|
-
color: "Цвет",
|
|
1609
|
-
fieldTextColor: "Цвет текста поля",
|
|
1610
|
-
rowHeight: "Высота строки",
|
|
1611
|
-
wrapHeaders: "Перенос заголовков",
|
|
1612
|
-
showFieldDescriptions: "Показать описания полей",
|
|
1613
|
-
collapseAllByDefault: "Свернуть всё по умолчанию",
|
|
1614
|
-
striped: "Полосатые строки",
|
|
1615
|
-
bordered: "Ячейки с границами",
|
|
1616
|
-
inlineEdit: "Редактировать записи встроенно",
|
|
1617
|
-
addDeleteRecordsInline: "Добавлять/удалять записи встроенно",
|
|
1618
|
-
clickIntoRecordDetails: "Нажмите для просмотра деталей записи",
|
|
1619
|
-
navigationMode: "Режим навигации",
|
|
1620
|
-
navigationWidth: "Ширина навигации",
|
|
1621
|
-
navigationWidthHint: "Доступно для режимов навигации: выдвижная панель, модальное окно и разделённый вид",
|
|
1622
|
-
openNewTab: "Открыть в новой вкладке",
|
|
1623
|
-
openNewTabHint: "Доступно для режимов навигации: страница и новое окно",
|
|
1624
1801
|
import: "Импорт",
|
|
1625
1802
|
importTitle: "Импорт из CSV",
|
|
1626
1803
|
importedToast: "{{count}} строк импортировано.",
|
|
1627
1804
|
importedWithSkipped: "{{ok}} строк импортировано; {{skipped}} пропущено.",
|
|
1628
|
-
showAdvancedSettings: "Показать расширенные настройки",
|
|
1629
|
-
showFewerSettings: "Меньше настроек",
|
|
1630
1805
|
createViewDesc: "Выберите тип представления и задайте ему имя. Все настройки можно изменить позже.",
|
|
1631
1806
|
cancel: "Отмена",
|
|
1632
1807
|
create: "Создать",
|
|
@@ -1659,7 +1834,7 @@ const ru = {
|
|
|
1659
1834
|
latitudeFieldHelp: "Поле с широтой (только гео-поля).",
|
|
1660
1835
|
longitudeFieldHelp: "Поле с долготой (только гео-поля).",
|
|
1661
1836
|
imageFieldHelp: "Обложка галереи берётся из этого поля изображения или вложений.",
|
|
1662
|
-
selectOption: "
|
|
1837
|
+
selectOption: "Выбрать…",
|
|
1663
1838
|
noEligibleFieldForType: "Нет подходящих полей этого типа. Сначала добавьте его к объекту.",
|
|
1664
1839
|
viewTypeUnavailable: "У этого объекта нет поля, которое может служить \"{{field}}\".",
|
|
1665
1840
|
viewTypeUnavailableShort: "Не поддерживается этим объектом.",
|
|
@@ -1674,58 +1849,9 @@ const ru = {
|
|
|
1674
1849
|
xAxisFieldHelp: "Категориальное или временное измерение.",
|
|
1675
1850
|
yAxisField: "Поле оси Y",
|
|
1676
1851
|
yAxisFieldHelp: "Числовое поле для агрегации.",
|
|
1677
|
-
selectionMode: "Режим выбора",
|
|
1678
|
-
selectionNone: "Нет",
|
|
1679
|
-
selectionSingle: "Одиночный",
|
|
1680
|
-
selectionMultiple: "Множественный",
|
|
1681
|
-
pageSize: "Размер страницы",
|
|
1682
|
-
pageSizeOptions: "Варианты размера страницы",
|
|
1683
|
-
exportFormats: "Форматы экспорта",
|
|
1684
|
-
exportMaxRecords: "Макс. записей",
|
|
1685
|
-
exportIncludeHeaders: "Включить заголовки",
|
|
1686
|
-
exportFileNamePrefix: "Префикс имени файла",
|
|
1687
|
-
searchableFields: "Поля для поиска",
|
|
1688
|
-
filterableFields: "Поля для фильтрации",
|
|
1689
|
-
resizableColumns: "Изменяемые столбцы",
|
|
1690
|
-
densityCompact: "Компактный",
|
|
1691
|
-
densityComfortable: "Обычный",
|
|
1692
|
-
densitySpacious: "Просторный",
|
|
1693
|
-
densityMode: "Режим плотности",
|
|
1694
|
-
hiddenFields: "Скрытые поля",
|
|
1695
|
-
rowActions: "Действия строки",
|
|
1696
|
-
bulkActions: "Массовые действия",
|
|
1697
|
-
sharing: "Общий доступ",
|
|
1698
|
-
sharingEnabled: "Общий доступ включён",
|
|
1699
|
-
sharingVisibility: "Видимость",
|
|
1700
|
-
addRecordEnabled: "Добавление записей включено",
|
|
1701
|
-
addRecordPosition: "Позиция",
|
|
1702
|
-
addRecordMode: "Режим",
|
|
1703
|
-
addRecordFormView: "Представление формы",
|
|
1704
|
-
conditionalFormatting: "Условное форматирование",
|
|
1705
|
-
addRule: "Добавить правило",
|
|
1706
|
-
quickFilters: "Быстрые фильтры",
|
|
1707
|
-
addQuickFilter: "Добавить быстрый фильтр",
|
|
1708
|
-
ufElements: "Элементы",
|
|
1709
|
-
ufDropdown: "Выпадающий список",
|
|
1710
1852
|
ufTabs: "Вкладки",
|
|
1711
|
-
|
|
1712
|
-
ufAddField: "+ Добавить поле фильтра...",
|
|
1713
|
-
ufNoFields: "Поля недоступны",
|
|
1714
|
-
ufAddTab: "+ Добавить вкладку",
|
|
1715
|
-
ufTabLabel: "Метка",
|
|
1853
|
+
ufAddField: "+ Добавить поле фильтра…",
|
|
1716
1854
|
ufShowAllRecords: "Показать вкладку \"Все записи\"",
|
|
1717
|
-
ufAllowAddTab: "Разрешить добавление вкладок",
|
|
1718
|
-
showRecordCount: "Показать количество записей",
|
|
1719
|
-
allowPrinting: "Разрешить печать",
|
|
1720
|
-
virtualScroll: "Виртуальная прокрутка",
|
|
1721
|
-
emptyStateTitle: "Заголовок пустого состояния",
|
|
1722
|
-
emptyStateMessage: "Сообщение пустого состояния",
|
|
1723
|
-
emptyStateIcon: "Значок пустого состояния",
|
|
1724
|
-
ariaLabel: "Метка ARIA",
|
|
1725
|
-
ariaDescribedBy: "Описано ARIA",
|
|
1726
|
-
ariaLive: "ARIA Live",
|
|
1727
|
-
accessibility: "Доступность",
|
|
1728
|
-
viewTabs: "Вкладки представлений",
|
|
1729
1855
|
},
|
|
1730
1856
|
localeSwitcher: {
|
|
1731
1857
|
label: "Язык",
|
|
@@ -1769,7 +1895,7 @@ const ru = {
|
|
|
1769
1895
|
passwordPlaceholder: "Введите пароль",
|
|
1770
1896
|
forgotPasswordText: "Забыли пароль?",
|
|
1771
1897
|
submitButton: "Войти",
|
|
1772
|
-
submittingButton: "
|
|
1898
|
+
submittingButton: "Вход…",
|
|
1773
1899
|
noAccountText: "Нет аккаунта?",
|
|
1774
1900
|
signUpText: "Зарегистрироваться",
|
|
1775
1901
|
errors: {
|
|
@@ -1777,6 +1903,18 @@ const ru = {
|
|
|
1777
1903
|
invalidCredentials: "Неверный email или пароль. Попробуйте ещё раз.",
|
|
1778
1904
|
emailNotVerified: "Пожалуйста, подтвердите email перед входом.",
|
|
1779
1905
|
},
|
|
1906
|
+
// objectui#3546 slice three — phone/OTP sign-in. `{seconds}` is LoginForm's own
|
|
1907
|
+
// literal `.replace()` hole, not i18next interpolation: keep the single braces.
|
|
1908
|
+
emailOrPhoneLabel: "Электронная почта или номер телефона",
|
|
1909
|
+
emailOrPhonePlaceholder: "name@example.com или +1 555 000 0000",
|
|
1910
|
+
phoneLabel: "Номер телефона",
|
|
1911
|
+
phonePlaceholder: "+1 555 000 0000",
|
|
1912
|
+
otpCodeLabel: "Код подтверждения",
|
|
1913
|
+
otpCodePlaceholder: "6-значный код",
|
|
1914
|
+
sendOtpButton: "Получить код",
|
|
1915
|
+
resendOtpCountdownText: "Отправить снова через {seconds} с",
|
|
1916
|
+
usePhoneOtpText: "Войти по коду подтверждения",
|
|
1917
|
+
usePasswordSignInText: "Войти с паролем",
|
|
1780
1918
|
},
|
|
1781
1919
|
register: {
|
|
1782
1920
|
title: "Создать аккаунт",
|
|
@@ -1792,7 +1930,7 @@ const ru = {
|
|
|
1792
1930
|
passwordMismatchError: "Пароли не совпадают",
|
|
1793
1931
|
passwordTooShortError: "Пароль должен содержать не менее 8 символов",
|
|
1794
1932
|
submitButton: "Создать аккаунт",
|
|
1795
|
-
submittingButton: "Создание
|
|
1933
|
+
submittingButton: "Создание аккаунта…",
|
|
1796
1934
|
hasAccountText: "Уже есть аккаунт?",
|
|
1797
1935
|
signInText: "Войти",
|
|
1798
1936
|
errors: {
|
|
@@ -1813,12 +1951,26 @@ const ru = {
|
|
|
1813
1951
|
emailLabel: "Электронная почта",
|
|
1814
1952
|
emailPlaceholder: "name@example.com",
|
|
1815
1953
|
submitButton: "Отправить ссылку для сброса",
|
|
1816
|
-
submittingButton: "
|
|
1954
|
+
submittingButton: "Отправка…",
|
|
1817
1955
|
successTitle: "Проверьте почту",
|
|
1818
|
-
successDescription: "Мы отправили ссылку для сброса пароля на {
|
|
1956
|
+
successDescription: "Мы отправили ссылку для сброса пароля на {email}. Пожалуйста, проверьте свою почту.",
|
|
1819
1957
|
backToSignInText: "Вернуться к входу",
|
|
1820
1958
|
rememberPasswordText: "Помните свой пароль?",
|
|
1821
1959
|
signInText: "Войти",
|
|
1960
|
+
// objectui#3546 slice three — the SMS reset branch of the same form.
|
|
1961
|
+
phoneLabel: "Номер телефона",
|
|
1962
|
+
phonePlaceholder: "+1 555 000 0000",
|
|
1963
|
+
otpCodeLabel: "Код подтверждения",
|
|
1964
|
+
otpCodePlaceholder: "6-значный код",
|
|
1965
|
+
sendOtpButton: "Получить код",
|
|
1966
|
+
resendOtpCountdownText: "Отправить снова через {seconds} с",
|
|
1967
|
+
newPasswordLabel: "Новый пароль",
|
|
1968
|
+
newPasswordPlaceholder: "Введите новый пароль",
|
|
1969
|
+
resetButton: "Сбросить пароль",
|
|
1970
|
+
usePhoneResetText: "Сбросить по SMS-коду",
|
|
1971
|
+
useEmailResetText: "Сбросить по электронной почте",
|
|
1972
|
+
phoneSuccessTitle: "Пароль сброшен",
|
|
1973
|
+
phoneSuccessDescription: "Ваш пароль сброшен. Теперь вы можете войти с новым паролем.",
|
|
1822
1974
|
},
|
|
1823
1975
|
resetPassword: {
|
|
1824
1976
|
title: "Установить новый пароль",
|
|
@@ -1857,6 +2009,8 @@ const ru = {
|
|
|
1857
2009
|
backToLogin: "Вернуться ко входу",
|
|
1858
2010
|
checkSpam: "Не получили письмо? Проверьте папку \"Спам\" или обратитесь в поддержку.",
|
|
1859
2011
|
or: "Или",
|
|
2012
|
+
// objectui#3546 slice three.
|
|
2013
|
+
resendUnavailable: "Возможно, отправка писем не настроена для этой среды. Если проблема повторяется, обратитесь в поддержку.",
|
|
1860
2014
|
},
|
|
1861
2015
|
setup: {
|
|
1862
2016
|
welcomeTitle: "Добро пожаловать в ObjectStack",
|
|
@@ -1895,6 +2049,9 @@ const ru = {
|
|
|
1895
2049
|
invalidDescription: "В URL не указан код устройства.",
|
|
1896
2050
|
loading: "Загрузка…",
|
|
1897
2051
|
cancel: "Отмена",
|
|
2052
|
+
// objectui#3546 slice three — device-authorization plugin switched off.
|
|
2053
|
+
disabledTitle: "Авторизация устройств не включена",
|
|
2054
|
+
disabledDescription: "В этой инсталляции авторизация устройств не включена, поэтому это устройство здесь одобрить нельзя.",
|
|
1898
2055
|
},
|
|
1899
2056
|
shell: {
|
|
1900
2057
|
tenantHostHint: "Вы входите в это рабочее пространство",
|
|
@@ -1934,6 +2091,29 @@ const ru = {
|
|
|
1934
2091
|
},
|
|
1935
2092
|
},
|
|
1936
2093
|
},
|
|
2094
|
+
// objectui#3546 slice three — the /oauth/consent screen.
|
|
2095
|
+
oauth: {
|
|
2096
|
+
consent: {
|
|
2097
|
+
title: "{{appName}} запрашивает доступ к вашему аккаунту",
|
|
2098
|
+
request: "{{appName}} запрашивает разрешение{{suffix}}.",
|
|
2099
|
+
unknownApp: "приложение",
|
|
2100
|
+
willAllow: "Это приложение сможет:",
|
|
2101
|
+
scope: {
|
|
2102
|
+
openid: "Подтверждать вашу личность",
|
|
2103
|
+
profile: "Читать основной профиль (имя, фото)",
|
|
2104
|
+
email: "Читать ваш адрес электронной почты",
|
|
2105
|
+
offlineAccess: "Оставаться в системе (обновление доступа)",
|
|
2106
|
+
},
|
|
2107
|
+
deny: "Отклонить",
|
|
2108
|
+
authorize: "Разрешить",
|
|
2109
|
+
submitting: "Авторизация…",
|
|
2110
|
+
granted: "Доступ предоставлен",
|
|
2111
|
+
denied: "Доступ запрещён",
|
|
2112
|
+
noRedirect: "Сервер не вернул URL для перенаправления.",
|
|
2113
|
+
failed: "Не удалось выдать согласие",
|
|
2114
|
+
footer: "Вы можете отозвать доступ в любое время в настройках аккаунта.",
|
|
2115
|
+
},
|
|
2116
|
+
},
|
|
1937
2117
|
profile: {
|
|
1938
2118
|
title: "Профиль",
|
|
1939
2119
|
subtitle: "Управляйте настройками своей учётной записи",
|
|
@@ -1995,6 +2175,8 @@ const ru = {
|
|
|
1995
2175
|
invite: "Пригласить участника",
|
|
1996
2176
|
members: "Участники",
|
|
1997
2177
|
settings: "Настройки рабочего пространства",
|
|
2178
|
+
multiOrgDisabled: "Создание новых организаций отключено в этой среде.",
|
|
2179
|
+
createFailed: 'Не удалось создать рабочее пространство',
|
|
1998
2180
|
},
|
|
1999
2181
|
help: {
|
|
2000
2182
|
onThisPage: "На этой странице",
|
|
@@ -2005,7 +2187,7 @@ const ru = {
|
|
|
2005
2187
|
},
|
|
2006
2188
|
sidebar: {
|
|
2007
2189
|
packageManagement: "Управление пакетами",
|
|
2008
|
-
searchNavigation: "Поиск по
|
|
2190
|
+
searchNavigation: "Поиск по навигации…",
|
|
2009
2191
|
settings: "Настройки",
|
|
2010
2192
|
help: "Помощь",
|
|
2011
2193
|
helpTooltip: "Помощь и документация",
|
|
@@ -2029,8 +2211,8 @@ const ru = {
|
|
|
2029
2211
|
switchObject: "Сменить объект",
|
|
2030
2212
|
connection: {
|
|
2031
2213
|
connected: "Подключено",
|
|
2032
|
-
connecting: "
|
|
2033
|
-
reconnecting: "
|
|
2214
|
+
connecting: "Подключение…",
|
|
2215
|
+
reconnecting: "Переподключение…",
|
|
2034
2216
|
disconnected: "Отключено",
|
|
2035
2217
|
error: "Ошибка подключения",
|
|
2036
2218
|
},
|
|
@@ -2046,10 +2228,12 @@ const ru = {
|
|
|
2046
2228
|
build: {
|
|
2047
2229
|
title: "Создать приложение",
|
|
2048
2230
|
subtitle: "Начните с нуля — спроектируйте объекты, формы, автоматизации и интерфейсы.",
|
|
2231
|
+
noCapability: "Создание приложений недоступно в этом рабочем пространстве — для этого нужно разрешение «Управление метаданными», которого нет у вашей учётной записи.",
|
|
2049
2232
|
},
|
|
2050
2233
|
template: {
|
|
2051
2234
|
title: "Начать с шаблона",
|
|
2052
2235
|
subtitle: "Установите шаблонное приложение из маркетплейса и настройте его под себя.",
|
|
2236
|
+
marketplaceDisabled: "Для этого рантайма не настроен маркетплейс приложений, поэтому здесь нет шаблонов для установки.",
|
|
2053
2237
|
},
|
|
2054
2238
|
welcomeAdminDescription: "Опишите свой бизнес одним предложением — ИИ создаст объекты, экраны, API и инструменты агента. Либо настройте всё сами через меню слева.",
|
|
2055
2239
|
welcomeAdminDescriptionNoBuild: "Настройте первое приложение через меню «Администрирование» слева. Когда появятся данные, ИИ-ассистент поможет их изучить.",
|
|
@@ -2069,6 +2253,15 @@ const ru = {
|
|
|
2069
2253
|
publishing: "Публикация…",
|
|
2070
2254
|
published: "Опубликовано! Изменения вступили в силу.",
|
|
2071
2255
|
publishFailed: "Не удалось опубликовать",
|
|
2256
|
+
// objectui#3546 slice six — seedWarn совпадает с console.ai.seedWarn по
|
|
2257
|
+
// английскому тексту, поэтому берём тот же перевод. В двух счётных
|
|
2258
|
+
// строках число вынесено в конец («…: {{count}}») — так пак пишет
|
|
2259
|
+
// количества, скобочные формы вида «файл(ов)» здесь не нужны.
|
|
2260
|
+
nothing: "Публиковать нечего.",
|
|
2261
|
+
probeWarn: "Опубликовано, но проверка выявила проблемы.",
|
|
2262
|
+
seedWarn: "Опубликовано, но часть примеров данных загрузить не удалось.",
|
|
2263
|
+
publishedVerified: "Опубликовано и проверено — активных строк примеров данных: {{count}}.",
|
|
2264
|
+
capabilityWarn: "Проверка при создании — несуществующих ссылок на возможности: {{count}}.",
|
|
2072
2265
|
},
|
|
2073
2266
|
title: "Главная",
|
|
2074
2267
|
subtitle: "Панель вашего рабочего пространства",
|
|
@@ -2082,7 +2275,7 @@ const ru = {
|
|
|
2082
2275
|
title: "Требует вашего внимания",
|
|
2083
2276
|
empty: "Всё выполнено",
|
|
2084
2277
|
},
|
|
2085
|
-
loading: "Загрузка рабочего
|
|
2278
|
+
loading: "Загрузка рабочего пространства…",
|
|
2086
2279
|
recent: "Недавние",
|
|
2087
2280
|
starred: "Избранные",
|
|
2088
2281
|
welcome: "Добро пожаловать в ObjectUI",
|
|
@@ -2143,6 +2336,9 @@ const ru = {
|
|
|
2143
2336
|
roles: "Роли",
|
|
2144
2337
|
configuration: "Конфигурация",
|
|
2145
2338
|
createApp: "Создать приложение",
|
|
2339
|
+
administration: "Администрирование",
|
|
2340
|
+
datasources: "Источники данных",
|
|
2341
|
+
documentation: "Документация",
|
|
2146
2342
|
},
|
|
2147
2343
|
appSwitcher: {
|
|
2148
2344
|
switchApplication: "Сменить приложение",
|
|
@@ -2182,7 +2378,7 @@ const ru = {
|
|
|
2182
2378
|
search: {
|
|
2183
2379
|
title: "Поиск",
|
|
2184
2380
|
back: "Назад",
|
|
2185
|
-
placeholder: "Поиск объектов, панелей, страниц,
|
|
2381
|
+
placeholder: "Поиск объектов, панелей, страниц, отчётов…",
|
|
2186
2382
|
inputAriaLabel: "Поиск объектов, панелей, страниц, отчётов",
|
|
2187
2383
|
resultsCount: "{{count}} результат для \"{{query}}\"",
|
|
2188
2384
|
resultsCountPlural: "{{count}} результатов для \"{{query}}\"",
|
|
@@ -2201,6 +2397,7 @@ const ru = {
|
|
|
2201
2397
|
empty: {
|
|
2202
2398
|
objectNotFound: "Объект не найден",
|
|
2203
2399
|
objectNotFoundDescription: "Определение объекта \"{{name}}\" отсутствует. Проверьте конфигурацию или вернитесь назад.",
|
|
2400
|
+
interfacePageSourceMissing: "Эта интерфейсная страница ссылается на \"{{name}}\", который недоступен.",
|
|
2204
2401
|
pageNotFound: "Страница не найдена",
|
|
2205
2402
|
pageNotFoundDescription: "Страница \"{{name}}\" не найдена. Возможно, она была удалена или переименована.",
|
|
2206
2403
|
dashboardNotFound: "Панель не найдена",
|
|
@@ -2209,27 +2406,17 @@ const ru = {
|
|
|
2209
2406
|
reportNotFoundDescription: "Отчёт \"{{name}}\" не найден. Возможно, он был удалён или переименован.",
|
|
2210
2407
|
noAppsConfigured: "Нет приложений",
|
|
2211
2408
|
noAppsConfiguredDescription: "Нет зарегистрированных приложений. Создайте первое приложение или посетите системные настройки.",
|
|
2409
|
+
appNotAvailable: "Приложение недоступно",
|
|
2410
|
+
appNotAvailableDescription: "Это приложение пока недоступно — возможно, публикация ещё идёт. Повторите попытку через мгновение.",
|
|
2411
|
+
appAccessDenied: "У вас нет доступа к этому приложению",
|
|
2412
|
+
appAccessDeniedDescription: "Это приложение существует, но у вашей учётной записи нет прав на его открытие. Обратитесь к администратору за доступом.",
|
|
2413
|
+
appAccessDeniedHome: "На главную",
|
|
2212
2414
|
createFirstApp: "Создать приложение",
|
|
2213
2415
|
systemSettings: "Системные настройки",
|
|
2214
2416
|
back: "Назад",
|
|
2215
2417
|
recordNotFound: "Запись не найдена",
|
|
2216
2418
|
recordNotFoundDescription: "Искомая запись не существует или была удалена.",
|
|
2217
2419
|
},
|
|
2218
|
-
renderer: {
|
|
2219
|
-
noPageSchema: "Схема страницы не указана",
|
|
2220
|
-
noFormSchema: "Схема формы не указана",
|
|
2221
|
-
noDashboardSchema: "Схема панели не указана",
|
|
2222
|
-
pageRendering: "Рендеринг страницы: {{name}}",
|
|
2223
|
-
dashboardRendering: "Рендеринг панели: {{name}}",
|
|
2224
|
-
formRenderingMode: "Форма в режиме {{mode}}",
|
|
2225
|
-
formRenderingFor: "для записи {{id}}",
|
|
2226
|
-
createRecord: "Создать запись",
|
|
2227
|
-
editRecord: "Редактировать запись",
|
|
2228
|
-
page: "Страница",
|
|
2229
|
-
dashboard: "Панель",
|
|
2230
|
-
save: "Сохранить",
|
|
2231
|
-
cancel: "Отмена",
|
|
2232
|
-
},
|
|
2233
2420
|
actionDialog: {
|
|
2234
2421
|
title: "Параметры действия",
|
|
2235
2422
|
description: "Введите необходимую информацию для продолжения.",
|
|
@@ -2280,7 +2467,7 @@ const ru = {
|
|
|
2280
2467
|
deleteFailed: "Не удалось удалить представление",
|
|
2281
2468
|
},
|
|
2282
2469
|
dashboardActions: {
|
|
2283
|
-
|
|
2470
|
+
printDialogOpening: "Открывается диалог печати браузера (это не экспорт в PDF)",
|
|
2284
2471
|
exportFailed: "Ошибка экспорта: {{message}}",
|
|
2285
2472
|
forecastSoon: "Прогнозное представление скоро будет",
|
|
2286
2473
|
},
|
|
@@ -2324,126 +2511,159 @@ const ru = {
|
|
|
2324
2511
|
first: "Первый",
|
|
2325
2512
|
},
|
|
2326
2513
|
editor: {
|
|
2327
|
-
|
|
2328
|
-
basic: "Основное",
|
|
2329
|
-
title: "Заголовок",
|
|
2330
|
-
titlePlaceholder: "напр., Воронка по кварталам",
|
|
2331
|
-
description: "Описание",
|
|
2332
|
-
descriptionPlaceholder: "Что показывает этот отчёт?",
|
|
2333
|
-
type: "Тип отчёта",
|
|
2334
|
-
typeTabular: "Табличный — плоский список",
|
|
2335
|
-
typeSummary: "Сводный — группировка с итогами",
|
|
2336
|
-
typeMatrix: "Матричный — сводка строки × столбцы",
|
|
2337
|
-
typeJoined: "Объединённый — несколько блоков",
|
|
2338
|
-
typeHelp: "Выберите макет, который соответствует тому, что хотите увидеть.",
|
|
2339
|
-
data: "Данные",
|
|
2340
|
-
objectName: "Источник данных",
|
|
2341
|
-
objectNamePlaceholder: "напр., opportunity",
|
|
2342
|
-
objectNameHelp: "К какому объекту обращается этот отчёт?",
|
|
2343
|
-
limit: "Лимит строк",
|
|
2344
|
-
limitPlaceholder: "напр., 100",
|
|
2345
|
-
columns: "Столбцы",
|
|
2346
|
-
columnsHint: "Выберите поля для столбцов. В сводных и матричных отчётах добавляйте агрегаты (Сумма, Количество…).",
|
|
2347
|
-
filters: "Фильтры",
|
|
2348
|
-
filtersHint: "Ограничьте строки, попадающие в отчёт.",
|
|
2349
|
-
filtersComplex: "В отчёте используется расширенный фильтр, который нельзя редактировать здесь. При сохранении он останется без изменений.",
|
|
2350
|
-
groupBy: "Группировать по",
|
|
2351
|
-
groupByHint: "Сгруппируйте данные и посчитайте промежуточные итоги.",
|
|
2352
|
-
rows: "Строки",
|
|
2353
|
-
rowsHint: "Сгруппировать строки по этим полям.",
|
|
2354
|
-
columnsAxis: "Столбцы",
|
|
2355
|
-
columnsAxisHint: "Развернуть эти поля по горизонтали.",
|
|
2356
|
-
values: "Значения",
|
|
2357
|
-
valuesHint: "Числа в каждой ячейке. Выберите одно или несколько полей и задайте агрегат (Сумма, Количество…).",
|
|
2358
|
-
grouping: "Группировка",
|
|
2359
|
-
addGrouping: "Добавить группировку",
|
|
2360
|
-
dateGranularity: "Гранулярность даты",
|
|
2361
|
-
dateGranularityNone: "(исходное значение)",
|
|
2362
|
-
day: "День",
|
|
2363
|
-
week: "Неделя",
|
|
2364
|
-
month: "Месяц",
|
|
2365
|
-
quarter: "Квартал",
|
|
2366
|
-
year: "Год",
|
|
2367
|
-
sortAsc: "По возрастанию",
|
|
2368
|
-
sortDesc: "По убыванию",
|
|
2369
|
-
chart: "График",
|
|
2370
|
-
chartHint: "Дополнительная визуализация рядом с таблицей.",
|
|
2371
|
-
chartType: "Тип графика",
|
|
2372
|
-
chartTitle: "Заголовок графика",
|
|
2373
|
-
chartTitlePlaceholder: "По умолчанию — заголовок отчёта",
|
|
2374
|
-
chartXAxis: "Ось X (категория)",
|
|
2375
|
-
chartYAxis: "Ось Y (значение)",
|
|
2376
|
-
chartShowLegend: "Показывать легенду",
|
|
2377
|
-
chartShowDataLabels: "Показывать подписи данных",
|
|
2378
|
-
chartNone: "(без графика)",
|
|
2379
|
-
chartBar: "Столбчатый",
|
|
2380
|
-
chartLine: "Линейный",
|
|
2381
|
-
chartArea: "Областной",
|
|
2382
|
-
chartPie: "Круговой",
|
|
2383
|
-
chartDonut: "Кольцевой",
|
|
2384
|
-
chartFunnel: "Воронка",
|
|
2385
|
-
validationNeedsObject: "Выберите источник данных перед добавлением столбцов.",
|
|
2386
|
-
validationMatrixNeedsRowsCols: "Для матричного отчёта нужны хотя бы одна строка и один столбец.",
|
|
2387
|
-
validationSummaryNeedsRows: "Для сводного отчёта нужно хотя бы одно поле группировки.",
|
|
2388
|
-
blocks: "Блоки",
|
|
2389
|
-
blocksHint: "Каждый блок — отдельная таблица или график. Фильтры блока объединяются с фильтром отчёта по И.",
|
|
2390
|
-
addBlock: "Добавить блок",
|
|
2391
|
-
removeBlock: "Удалить блок",
|
|
2392
|
-
blockName: "Имя блока",
|
|
2393
|
-
blockNamePlaceholder: "уникальное_имя_блока",
|
|
2394
|
-
blockLabel: "Отображаемое название",
|
|
2395
|
-
blockLabelPlaceholder: "Показывается над блоком",
|
|
2396
|
-
blockDescription: "Описание",
|
|
2397
|
-
blockDescriptionPlaceholder: "Необязательный контекст для блока",
|
|
2398
|
-
validationJoinedNeedsBlocks: "Объединённый отчёт должен содержать хотя бы один блок.",
|
|
2399
|
-
validationBlockNameRequired: "У каждого блока должно быть непустое имя.",
|
|
2400
|
-
validationBlockNameDuplicate: "Имена блоков в отчёте должны быть уникальными.",
|
|
2401
|
-
validationBlockNeedsColumns: "В каждом блоке должна быть хотя бы одна колонка.",
|
|
2402
|
-
noneOption: "(нет)",
|
|
2403
|
-
addCondition: "Добавить условие",
|
|
2404
|
-
combineLogic: "Объединить с",
|
|
2405
|
-
opContains: "содержит",
|
|
2406
|
-
opIsEmpty: "пусто",
|
|
2407
|
-
opIsNotEmpty: "не пусто",
|
|
2408
|
-
formatAuto: "Авто",
|
|
2409
|
-
formatCurrency: "Валюта",
|
|
2410
|
-
formatPercent: "Процент",
|
|
2411
|
-
formatInteger: "Целое число",
|
|
2412
|
-
formatDate: "Дата",
|
|
2413
|
-
formatDatetime: "Дата и время",
|
|
2414
|
-
columnLabelPlaceholder: "Переопределить подпись",
|
|
2415
|
-
aggregateColumn: "Агрегат",
|
|
2416
|
-
formatColumn: "Формат",
|
|
2417
|
-
addColumns: "Добавить столбцы",
|
|
2418
|
-
searchFields: "Поиск полей…",
|
|
2419
|
-
noMatchingFields: "Нет полей, соответствующих запросу.",
|
|
2420
|
-
noFieldsAvailable: "Полей нет.",
|
|
2421
|
-
columnsCount: "{n} столбец(ов) выбрано",
|
|
2422
|
-
columnsEmpty: "Столбцы ещё не выбраны.",
|
|
2423
|
-
fieldPickerTitle: "Выбрать поля",
|
|
2424
|
-
fieldPickerDescription: "Выберите одно или несколько полей для добавления. Используйте поиск для фильтрации.",
|
|
2425
|
-
fieldPickerChangeTitle: "Изменить поле",
|
|
2426
|
-
fieldPickerAddGroupingTitle: "Добавить группировку",
|
|
2427
|
-
fieldPickerEmpty: "(Выбрать поле)",
|
|
2428
|
-
fieldPickerSelected: "{n} выбрано",
|
|
2429
|
-
fieldPickerClear: "Сбросить выбор",
|
|
2430
|
-
fieldPickerAdd: "Добавить",
|
|
2431
|
-
fieldPickerAddN: "Добавить {n}",
|
|
2514
|
+
panelTitle: "Редактировать отчёт",
|
|
2432
2515
|
},
|
|
2433
2516
|
},
|
|
2434
2517
|
organizations: {
|
|
2435
2518
|
create: "Создать рабочее пространство",
|
|
2436
|
-
mine: "Мои
|
|
2437
|
-
title: "
|
|
2438
|
-
heading: "Ваши
|
|
2439
|
-
subtitle: "Выберите
|
|
2440
|
-
searchPlaceholder: "Поиск
|
|
2441
|
-
new: "
|
|
2442
|
-
current: "
|
|
2519
|
+
mine: "Мои рабочие пространства",
|
|
2520
|
+
title: "Рабочие пространства",
|
|
2521
|
+
heading: "Ваши рабочие пространства",
|
|
2522
|
+
subtitle: "Выберите рабочее пространство, чтобы продолжить, или создайте новое.",
|
|
2523
|
+
searchPlaceholder: "Поиск рабочего пространства",
|
|
2524
|
+
new: "Новое рабочее пространство",
|
|
2525
|
+
current: "Текущее рабочее пространство",
|
|
2443
2526
|
manage: "Управление",
|
|
2444
|
-
emptyTitle: "Пока нет
|
|
2445
|
-
emptyDescription: "Создайте
|
|
2446
|
-
noMatches: "Нет
|
|
2527
|
+
emptyTitle: "Пока нет рабочих пространств",
|
|
2528
|
+
emptyDescription: "Создайте своё первое рабочее пространство, чтобы начать.",
|
|
2529
|
+
noMatches: "Нет рабочих пространств, соответствующих запросу.",
|
|
2530
|
+
},
|
|
2531
|
+
organization: {
|
|
2532
|
+
roles: {
|
|
2533
|
+
owner: 'Владелец',
|
|
2534
|
+
admin: 'Администратор',
|
|
2535
|
+
delegatedAdmin: 'Делегированный администратор',
|
|
2536
|
+
member: 'Участник',
|
|
2537
|
+
},
|
|
2538
|
+
errors: {
|
|
2539
|
+
notAllowedToInvite: 'У вас нет прав приглашать пользователей в эту организацию.',
|
|
2540
|
+
notAllowedToInviteWithRole: 'У вас нет прав приглашать пользователя с этой ролью.',
|
|
2541
|
+
alreadyInvited: 'Этот пользователь уже приглашён в эту организацию.',
|
|
2542
|
+
organizationExists: 'Такая организация уже существует.',
|
|
2543
|
+
slugTaken: 'Этот идентификатор уже занят.',
|
|
2544
|
+
notAllowedToCreate: 'У вас нет прав создавать новую организацию.',
|
|
2545
|
+
notTheRecipient: 'Вы не являетесь получателем этого приглашения.',
|
|
2546
|
+
invitationNotFound: 'Это приглашение больше не существует или истекло.',
|
|
2547
|
+
unknown: 'Что-то пошло не так. Попробуйте ещё раз.',
|
|
2548
|
+
},
|
|
2549
|
+
backToList: "Назад к организациям",
|
|
2550
|
+
notFound: "Организация не найдена",
|
|
2551
|
+
notFoundDescription: "Эта организация не существует или у вас нет к ней доступа.",
|
|
2552
|
+
tabs: {
|
|
2553
|
+
members: "Участники",
|
|
2554
|
+
invitations: "Приглашения",
|
|
2555
|
+
settings: "Настройки",
|
|
2556
|
+
},
|
|
2557
|
+
members: {
|
|
2558
|
+
title: "Участники",
|
|
2559
|
+
inviteMember: "Пригласить участника",
|
|
2560
|
+
inviteRestrictedNote: "Только администраторы организации могут приглашать участников.",
|
|
2561
|
+
removeMember: "Удалить участника",
|
|
2562
|
+
removeConfirmTitle: "Удалить участника?",
|
|
2563
|
+
removeConfirmDescription: "{{name}} будет удалён из организации и сразу потеряет доступ.",
|
|
2564
|
+
removeConfirmAction: "Удалить",
|
|
2565
|
+
memberRemoved: "Участник удалён",
|
|
2566
|
+
removeFailed: "Не удалось удалить участника",
|
|
2567
|
+
roleUpdated: "Роль обновлена",
|
|
2568
|
+
roleUpdateFailed: "Не удалось обновить роль",
|
|
2569
|
+
memberActions: 'Действия с участником',
|
|
2570
|
+
loadFailed: 'Не удалось загрузить участников',
|
|
2571
|
+
},
|
|
2572
|
+
invitations: {
|
|
2573
|
+
title: "Приглашения",
|
|
2574
|
+
empty: "Приглашений нет.",
|
|
2575
|
+
expiresAt: "Истекает",
|
|
2576
|
+
linkCopied: "Ссылка на приглашение скопирована",
|
|
2577
|
+
copyFailed: "Не удалось скопировать ссылку",
|
|
2578
|
+
canceled: "Приглашение отменено",
|
|
2579
|
+
cancelFailed: "Не удалось отменить приглашение",
|
|
2580
|
+
cancelTitle: "Отменить приглашение?",
|
|
2581
|
+
cancelDescription: "Приглашение для {{email}} будет отозвано.",
|
|
2582
|
+
cancelAction: "Отменить приглашение",
|
|
2583
|
+
inviteTitle: "Пригласить участника",
|
|
2584
|
+
inviteDescription: "Человек получит приглашение вступить в эту организацию.",
|
|
2585
|
+
emailLabel: "Электронная почта",
|
|
2586
|
+
roleLabel: "Роль",
|
|
2587
|
+
placementLabel: "Назначение (необязательно)",
|
|
2588
|
+
placementDescription: "Применяется при принятии приглашения. Показаны только подразделения и должности, которые вы можете делегировать.",
|
|
2589
|
+
businessUnitLabel: "Бизнес-подразделение",
|
|
2590
|
+
businessUnitPlaceholder: "Без назначения",
|
|
2591
|
+
positionsLabel: "Должности",
|
|
2592
|
+
sendInvite: "Отправить приглашение",
|
|
2593
|
+
sentTitle: "Приглашение создано",
|
|
2594
|
+
sentDescription: "Отправьте ссылку ниже приглашённому. Чтобы принять приглашение, ему нужно войти в систему.",
|
|
2595
|
+
linkLabel: "Ссылка для принятия",
|
|
2596
|
+
invitedAs: "{{email}} приглашён как {{role}}",
|
|
2597
|
+
copyLinkLabel: 'Скопировать ссылку-приглашение',
|
|
2598
|
+
loadFailed: 'Не удалось загрузить приглашения',
|
|
2599
|
+
inviteFailed: 'Не удалось пригласить участника',
|
|
2600
|
+
status: {
|
|
2601
|
+
all: "Все",
|
|
2602
|
+
pending: "Ожидает",
|
|
2603
|
+
accepted: "Принято",
|
|
2604
|
+
rejected: "Отклонено",
|
|
2605
|
+
canceled: "Отменено",
|
|
2606
|
+
},
|
|
2607
|
+
},
|
|
2608
|
+
settings: {
|
|
2609
|
+
generalTitle: "Общие",
|
|
2610
|
+
generalDescription: "Обновите сведения об организации.",
|
|
2611
|
+
readOnlyNote: "Изменять настройки могут только владельцы.",
|
|
2612
|
+
nameLabel: "Название организации",
|
|
2613
|
+
slugLabel: "Слаг",
|
|
2614
|
+
logoLabel: "Логотип",
|
|
2615
|
+
logoUpload: "Загрузить",
|
|
2616
|
+
logoReplace: "Заменить",
|
|
2617
|
+
logoClear: "Удалить",
|
|
2618
|
+
logoUploaded: "Логотип загружен — сохраните, чтобы применить",
|
|
2619
|
+
logoUploadFailed: "Не удалось загрузить логотип",
|
|
2620
|
+
save: "Сохранить изменения",
|
|
2621
|
+
saved: "Настройки сохранены",
|
|
2622
|
+
saveFailed: "Не удалось сохранить настройки",
|
|
2623
|
+
leaveTitle: "Покинуть организацию",
|
|
2624
|
+
leaveDescription: "Вы потеряете доступ к этой организации.",
|
|
2625
|
+
leaveAction: "Покинуть",
|
|
2626
|
+
leaveConfirmTitle: "Покинуть организацию?",
|
|
2627
|
+
leaveConfirmDescription: "Вы уверены, что хотите покинуть {{name}}? Доступ будет потерян немедленно.",
|
|
2628
|
+
leaveConfirmAction: "Покинуть",
|
|
2629
|
+
leftOrg: "Вы покинули организацию",
|
|
2630
|
+
leaveFailed: "Не удалось покинуть организацию",
|
|
2631
|
+
dangerZone: "Опасная зона",
|
|
2632
|
+
deleteTitle: "Удалить организацию",
|
|
2633
|
+
deleteDescription: "Безвозвратно удалить эту организацию и все её данные.",
|
|
2634
|
+
deleteAction: "Удалить",
|
|
2635
|
+
deleteConfirmTitle: "Удалить организацию?",
|
|
2636
|
+
deleteConfirmDescription: "Это действие необратимо. Все данные будут удалены безвозвратно. Введите слаг организации для подтверждения.",
|
|
2637
|
+
deleteConfirmSlugLabel: "Введите «{{slug}}» для подтверждения",
|
|
2638
|
+
deleteConfirmAction: "Удалить организацию",
|
|
2639
|
+
deleted: "Организация удалена",
|
|
2640
|
+
deleteFailed: "Не удалось удалить организацию",
|
|
2641
|
+
},
|
|
2642
|
+
accept: {
|
|
2643
|
+
title: "Вас пригласили",
|
|
2644
|
+
description: "Вас пригласили присоединиться к {{orgName}} в роли {{role}}.",
|
|
2645
|
+
errorTitle: "Приглашение недоступно",
|
|
2646
|
+
goToOrgs: "Перейти к организациям",
|
|
2647
|
+
loading: "Загрузка приглашения…",
|
|
2648
|
+
organization: "Организация",
|
|
2649
|
+
role: "Роль",
|
|
2650
|
+
expiresAt: "Истекает",
|
|
2651
|
+
accept: "Принять приглашение",
|
|
2652
|
+
accepted: "Приглашение принято",
|
|
2653
|
+
acceptFailed: "Не удалось принять приглашение",
|
|
2654
|
+
decline: "Отклонить",
|
|
2655
|
+
declined: "Приглашение отклонено",
|
|
2656
|
+
declineFailed: "Не удалось отклонить приглашение",
|
|
2657
|
+
},
|
|
2658
|
+
current: {
|
|
2659
|
+
label: "Текущая организация",
|
|
2660
|
+
},
|
|
2661
|
+
switcher: {
|
|
2662
|
+
label: "Переключить организацию",
|
|
2663
|
+
groupLabel: "Рабочая организация",
|
|
2664
|
+
groupHint: "Новые записи создаются здесь. В представлениях отображаются данные из всех ваших организаций.",
|
|
2665
|
+
manageMembers: "Управление участниками",
|
|
2666
|
+
},
|
|
2447
2667
|
},
|
|
2448
2668
|
notifications: {
|
|
2449
2669
|
regionLabel: "Уведомления",
|
|
@@ -2458,6 +2678,9 @@ const ru = {
|
|
|
2458
2678
|
viewApprovals: "Показать утверждения",
|
|
2459
2679
|
noPendingApprovals: "Нет ожидающих утверждений",
|
|
2460
2680
|
openApprovalsInbox: "Открыть входящие утверждений",
|
|
2681
|
+
badgeTotal: "Всего: {{total}}",
|
|
2682
|
+
badgeNotifications: "{{unread}} уведомлений",
|
|
2683
|
+
badgeApprovals: "{{approvals}} ожидающих утверждений",
|
|
2461
2684
|
emptyUnread: "Всё прочитано",
|
|
2462
2685
|
filterUnread: "Непрочитанные",
|
|
2463
2686
|
filterAll: "Все",
|
|
@@ -2482,52 +2705,6 @@ const ru = {
|
|
|
2482
2705
|
consentRequired: "Пожалуйста, примите политику конфиденциальности.",
|
|
2483
2706
|
rateLimited: "Проверьте ответы перед отправкой.",
|
|
2484
2707
|
redirectBlocked: "Ответ принят, но URL перенаправления заблокирован по соображениям безопасности.",
|
|
2485
|
-
demo: {
|
|
2486
|
-
contactTitle: "Связаться с нами",
|
|
2487
|
-
contactDescription: "Расскажите о вашем проекте, и наш менеджер свяжется с вами в течение рабочего дня.",
|
|
2488
|
-
supportTitle: "Отправить запрос в поддержку",
|
|
2489
|
-
supportDescription: "Опишите проблему — наша команда ответит в течение рабочего дня.",
|
|
2490
|
-
thankYouSalesTitle: "Спасибо — мы получили ваше сообщение!",
|
|
2491
|
-
thankYouSalesMessage: "Наш менеджер свяжется с вами в течение рабочего дня.",
|
|
2492
|
-
thankYouSupportTitle: "Готово — ваш запрос в очереди.",
|
|
2493
|
-
thankYouSupportMessage: "Инженер поддержки скоро свяжется с вами. Сохраните эту страницу, если у вас есть скриншоты.",
|
|
2494
|
-
field: {
|
|
2495
|
-
firstName: "Имя",
|
|
2496
|
-
lastName: "Фамилия",
|
|
2497
|
-
email: "Рабочий email",
|
|
2498
|
-
phone: "Телефон",
|
|
2499
|
-
jobTitle: "Должность",
|
|
2500
|
-
company: "Компания",
|
|
2501
|
-
website: "Сайт",
|
|
2502
|
-
industry: "Отрасль",
|
|
2503
|
-
companySize: "Размер компании",
|
|
2504
|
-
howCanWeHelp: "Как мы можем помочь?",
|
|
2505
|
-
subject: "Тема",
|
|
2506
|
-
description: "Описание",
|
|
2507
|
-
issueType: "Тип проблемы",
|
|
2508
|
-
priority: "Приоритет",
|
|
2509
|
-
},
|
|
2510
|
-
industry: {
|
|
2511
|
-
technology: "Технологии",
|
|
2512
|
-
software: "Программное обеспечение / SaaS",
|
|
2513
|
-
finance: "Финансы",
|
|
2514
|
-
healthcare: "Здравоохранение",
|
|
2515
|
-
retail: "Розница",
|
|
2516
|
-
other: "Другое",
|
|
2517
|
-
},
|
|
2518
|
-
issueType: {
|
|
2519
|
-
question: "Вопрос",
|
|
2520
|
-
problem: "Проблема",
|
|
2521
|
-
bug: "Ошибка",
|
|
2522
|
-
feature_request: "Пожелание",
|
|
2523
|
-
},
|
|
2524
|
-
priority: {
|
|
2525
|
-
low: "Низкий",
|
|
2526
|
-
medium: "Средний",
|
|
2527
|
-
high: "Высокий",
|
|
2528
|
-
critical: "Критический",
|
|
2529
|
-
},
|
|
2530
|
-
},
|
|
2531
2708
|
},
|
|
2532
2709
|
connectAgent: {
|
|
2533
2710
|
disabled: {
|
|
@@ -2640,6 +2817,7 @@ const ru = {
|
|
|
2640
2817
|
retry: "Повторить",
|
|
2641
2818
|
errors: {
|
|
2642
2819
|
expired: "Срок действия запроса истёк до подтверждения. Начните заново.",
|
|
2820
|
+
accessDenied: "Запрос на подключение отклонён. Начните заново.",
|
|
2643
2821
|
bindFailed: "Не удалось выполнить привязку.",
|
|
2644
2822
|
deviceCodeFailed: "Не удалось запросить код устройства.",
|
|
2645
2823
|
},
|
|
@@ -2705,10 +2883,16 @@ const ru = {
|
|
|
2705
2883
|
installedBadge: "Установлено v{{version}}",
|
|
2706
2884
|
load: {
|
|
2707
2885
|
failed: "Не удалось загрузить маркетплейс",
|
|
2708
|
-
|
|
2886
|
+
failedHintConfigured: "Этот рантайм обращается к маркетплейсу через control plane по адресу {{url}}. Убедитесь, что он доступен и достижим отсюда.",
|
|
2887
|
+
failedHintSameOrigin: "Этот рантайм сам обслуживает каталог маркетплейса. Убедитесь, что рантайм онлайн.",
|
|
2709
2888
|
packageFailed: "Не удалось загрузить пакет",
|
|
2710
2889
|
notFound: "Не найдено.",
|
|
2711
2890
|
},
|
|
2891
|
+
disabled: {
|
|
2892
|
+
title: "Маркетплейс приложений отключён",
|
|
2893
|
+
description: "Для этого рантайма не настроен маркетплейс, поэтому здесь нечего просматривать или устанавливать.",
|
|
2894
|
+
hint: "Это ожидаемое состояние, когда рантайм запущен с <code>OS_CLOUD_URL=off</code> (или <code>none</code>, <code>local</code>, <code>disabled</code>). Чтобы включить маркетплейс, укажите в <code>OS_CLOUD_URL</code> адрес control plane и перезапустите рантайм.",
|
|
2895
|
+
},
|
|
2712
2896
|
detail: {
|
|
2713
2897
|
homepage: "Сайт",
|
|
2714
2898
|
installedV: "Установлено · v{{version}}",
|
|
@@ -2744,6 +2928,7 @@ const ru = {
|
|
|
2744
2928
|
dismiss: "Закрыть",
|
|
2745
2929
|
openOnCloud: "Открыть в облаке",
|
|
2746
2930
|
backHome: "На главную",
|
|
2931
|
+
updateTo: "Обновить",
|
|
2747
2932
|
},
|
|
2748
2933
|
install: {
|
|
2749
2934
|
dialogTitle: "Установить {{name}}",
|
|
@@ -2760,6 +2945,37 @@ const ru = {
|
|
|
2760
2945
|
localManifestConflict: "{{message}}\nПримечание: Локальное приложение уже имеет этот manifest_id. Сначала удалите его из objectstack.config.ts.",
|
|
2761
2946
|
localUnauthorized: "Сначала войдите в этот рантайм.",
|
|
2762
2947
|
localMarketplaceUnavailable: "OS_CLOUD_URL не настроен.",
|
|
2948
|
+
updateTo: "Обновить → v{{version}}",
|
|
2949
|
+
installedVersion: "Установлено v{{version}}",
|
|
2950
|
+
},
|
|
2951
|
+
// objectui#3546 — the MarketplacePage "Your organization" strip.
|
|
2952
|
+
org: {
|
|
2953
|
+
heading: "Ваша организация",
|
|
2954
|
+
install: "Установить",
|
|
2955
|
+
installed: "Установлено {{name}}",
|
|
2956
|
+
installedBadge: "Установлено",
|
|
2957
|
+
installing: "Установка…",
|
|
2958
|
+
},
|
|
2959
|
+
// ADR-0025 PD4 §3.5/§3.11 — the pre-install consent panel
|
|
2960
|
+
// (PluginDisclosure.tsx). `runtime` is a CLOSED enum: spec
|
|
2961
|
+
// PluginRuntimeSchema = z.enum(['node', 'sandbox', 'worker']).
|
|
2962
|
+
disclosure: {
|
|
2963
|
+
containsCode: "Этот пакет содержит код",
|
|
2964
|
+
reviewed: "Проверено и одобрено",
|
|
2965
|
+
unreviewed: "Ещё не проверено",
|
|
2966
|
+
signed: "Подписано",
|
|
2967
|
+
grantsIntro: "При установке пакет получит:",
|
|
2968
|
+
services: "Сервисы платформы",
|
|
2969
|
+
hooks: "Хуки жизненного цикла",
|
|
2970
|
+
network: "Доступ к сети",
|
|
2971
|
+
fs: "Доступ к файловой системе",
|
|
2972
|
+
noPermissions: "Не запрашивает особых разрешений.",
|
|
2973
|
+
acknowledge: "Я понимаю, что этот пакет выполняет код и получает указанные выше разрешения.",
|
|
2974
|
+
runtime: {
|
|
2975
|
+
node: "В процессе · полное доверие",
|
|
2976
|
+
sandbox: "В песочнице",
|
|
2977
|
+
worker: "Вне процесса",
|
|
2978
|
+
},
|
|
2763
2979
|
},
|
|
2764
2980
|
uninstall: {
|
|
2765
2981
|
confirm: "Удалить {{manifestId}} v{{version}}?\n\nКэшированный манифест будет удалён.",
|
|
@@ -2916,12 +3132,19 @@ const ru = {
|
|
|
2916
3132
|
submittedAgo: 'Отправлен {{when}}',
|
|
2917
3133
|
completedAt: 'Завершён {{when}}',
|
|
2918
3134
|
waitingOn: 'Ожидает решения',
|
|
3135
|
+
approverNameSeparator: ', ',
|
|
3136
|
+
approverUnstaffed: '{{seat}} (сейчас не занята)',
|
|
2919
3137
|
history: 'История',
|
|
2920
3138
|
noActions: 'Действий пока нет.',
|
|
2921
3139
|
actSubmit: 'Отправлен',
|
|
2922
3140
|
actApprove: 'Согласован',
|
|
2923
3141
|
actReject: 'Отклонён',
|
|
2924
3142
|
actRecall: 'Отозван',
|
|
3143
|
+
overrideActionLabel: '{{action}} (по праву администратора)',
|
|
3144
|
+
overrideNotice: 'У вас нет места согласующего на этом шаге. Продолжив, вы воспользуетесь правом администратора: шаг будет немедленно завершён, а все согласующие, ещё не принявшие решение, будут пропущены. Решение будет записано как административное переопределение.',
|
|
3145
|
+
overrideNoticeWho: 'У вас нет места согласующего на этом шаге. Продолжив, вы воспользуетесь правом администратора: шаг будет немедленно завершён, а согласующие, ещё не принявшие решение, будут пропущены — {{who}}. Решение будет записано как административное переопределение.',
|
|
3146
|
+
viaOverrideChip: 'Переопределение администратора',
|
|
3147
|
+
viaOverrideHint: 'У исполнителя не было места согласующего на этом шаге — допущен по пути административного переопределения.',
|
|
2925
3148
|
rawData: 'Исходные данные (JSON)',
|
|
2926
3149
|
copy: 'Копировать',
|
|
2927
3150
|
copied: 'Скопировано',
|
|
@@ -3008,6 +3231,39 @@ const ru = {
|
|
|
3008
3231
|
detailChangedKeys: 'Также изменено:',
|
|
3009
3232
|
confirmNote: 'Публикация атомарно выпускает все {{count}} ожидающих черновиков этого пакета.',
|
|
3010
3233
|
publishConfirm: 'Опубликовать всё',
|
|
3234
|
+
// [objectui#5418] Pre-publish security-posture findings, shown next to
|
|
3235
|
+
// the confirm button so a refusal the door would issue is read BEFORE
|
|
3236
|
+
// the click rather than as a toast after the batch rolled back.
|
|
3237
|
+
securityBlockTitle: 'Публикация будет отклонена — {{count}} элемент(ов) требуют решения',
|
|
3238
|
+
securityBlockWhere: 'Исправьте это в объекте в разделе «Настройки → Общий доступ к записям» и опубликуйте снова.',
|
|
3239
|
+
},
|
|
3240
|
+
// ADR-0045 — the materialized-but-unlisted app banner
|
|
3241
|
+
// (UnpublishedAppBar.tsx), sibling of draftBar above.
|
|
3242
|
+
unpublishedBar: {
|
|
3243
|
+
message: 'Неопубликованное приложение — полностью работает, но видно только создателям. Опубликуйте, чтобы его увидели ваши пользователи.',
|
|
3244
|
+
publish: 'Опубликовать',
|
|
3245
|
+
publishing: 'Публикация…',
|
|
3246
|
+
published: 'Опубликовано! Приложение теперь видно вашим пользователям.',
|
|
3247
|
+
publishFailed: 'Не удалось опубликовать',
|
|
3248
|
+
},
|
|
3249
|
+
// ADR-0067 — the append-only build/revert timeline (CommitTimeline.tsx);
|
|
3250
|
+
// `button` is the banner's entry point into it.
|
|
3251
|
+
history: {
|
|
3252
|
+
button: 'История',
|
|
3253
|
+
title: 'История сборок',
|
|
3254
|
+
description: 'Все изменения этого приложения, новые сверху. Любой шаг можно отменить — подтверждать публикацию не нужно.',
|
|
3255
|
+
loadFailed: 'Не удалось загрузить историю:',
|
|
3256
|
+
loadFailedUnavailable: 'Хранилище коммитов временно недоступно — это чтение не выполнено, поэтому история не показана. Повторите попытку через мгновение.',
|
|
3257
|
+
loading: 'Загрузка истории…',
|
|
3258
|
+
empty: 'Истории для этого приложения пока нет.',
|
|
3259
|
+
revertLabel: 'Изменение отменено',
|
|
3260
|
+
applyLabel: 'Изменение сборки',
|
|
3261
|
+
revert: 'отмена',
|
|
3262
|
+
items: 'элементов',
|
|
3263
|
+
revertAction: 'Отменить',
|
|
3264
|
+
reverted: 'Отменено — изменение возвращено.',
|
|
3265
|
+
revertFailed: 'Не удалось отменить',
|
|
3266
|
+
revertUnavailable: 'Хранилище коммитов временно недоступно — отмена могла не примениться. Откройте историю заново и проверьте, прежде чем повторять.',
|
|
3011
3267
|
},
|
|
3012
3268
|
},
|
|
3013
3269
|
filterBuilder: {
|
|
@@ -3026,10 +3282,15 @@ const ru = {
|
|
|
3026
3282
|
noResults: "Нет результатов",
|
|
3027
3283
|
searchField: "Поиск {{label}}…",
|
|
3028
3284
|
enterId: "Введите ID {{label}}",
|
|
3285
|
+
addValue: "Введите значение и нажмите Enter",
|
|
3286
|
+
removeValue: "Удалить {{value}}",
|
|
3287
|
+
rangeStart: "От",
|
|
3288
|
+
rangeEnd: "До",
|
|
3029
3289
|
operators: {
|
|
3030
3290
|
equals: "Равно",
|
|
3031
3291
|
notEquals: "Не равно",
|
|
3032
3292
|
contains: "Содержит",
|
|
3293
|
+
containsCaseInsensitive: "Содержит (без учёта регистра)",
|
|
3033
3294
|
notContains: "Не содержит",
|
|
3034
3295
|
isEmpty: "Пусто",
|
|
3035
3296
|
isNotEmpty: "Не пусто",
|
|
@@ -3042,6 +3303,12 @@ const ru = {
|
|
|
3042
3303
|
between: "Между",
|
|
3043
3304
|
in: "В списке",
|
|
3044
3305
|
notIn: "Не в списке",
|
|
3306
|
+
startsWith: "Начинается с",
|
|
3307
|
+
endsWith: "Заканчивается на",
|
|
3308
|
+
isNull: "Равно null",
|
|
3309
|
+
isNotNull: "Не равно null",
|
|
3310
|
+
exists: "Задано",
|
|
3311
|
+
notExists: "Не задано",
|
|
3045
3312
|
},
|
|
3046
3313
|
},
|
|
3047
3314
|
sortBuilder: {
|
|
@@ -3087,5 +3354,64 @@ const ru = {
|
|
|
3087
3354
|
statusIdle: "бездействует",
|
|
3088
3355
|
statusAway: "отошёл",
|
|
3089
3356
|
},
|
|
3357
|
+
wizard: {
|
|
3358
|
+
missingRequired: "Заполните обязательные поля: {{fields}}",
|
|
3359
|
+
},
|
|
3360
|
+
flowRunner: {
|
|
3361
|
+
title: 'Ввод',
|
|
3362
|
+
submitting: 'Отправка…',
|
|
3363
|
+
saveAndContinue: 'Сохранить и продолжить',
|
|
3364
|
+
nextStep: 'Сохранено — следующий шаг',
|
|
3365
|
+
completed: 'Поток «{{flow}}» завершён',
|
|
3366
|
+
},
|
|
3367
|
+
appManagement: {
|
|
3368
|
+
title: "Приложения",
|
|
3369
|
+
subtitle: "Управление всеми настроенными приложениями",
|
|
3370
|
+
newApp: "Новое приложение",
|
|
3371
|
+
searchLabel: "Поиск приложений",
|
|
3372
|
+
searchPlaceholder: "Поиск приложений…",
|
|
3373
|
+
selectedCount: "Выбрано: {{n}}",
|
|
3374
|
+
bulkEnable: "Включить",
|
|
3375
|
+
bulkDisable: "Отключить",
|
|
3376
|
+
selectAll: "Выбрать все ({{n}})",
|
|
3377
|
+
empty: "Приложения не найдены.",
|
|
3378
|
+
defaultBadge: "По умолчанию",
|
|
3379
|
+
active: "Активно",
|
|
3380
|
+
inactive: "Неактивно",
|
|
3381
|
+
selectApp: "Выбрать {{name}}",
|
|
3382
|
+
openApp: "Открыть приложение",
|
|
3383
|
+
openAppNamed: "Открыть {{name}}",
|
|
3384
|
+
editApp: "Редактировать приложение",
|
|
3385
|
+
editAppNamed: "Редактировать {{name}}",
|
|
3386
|
+
editWithAi: "Редактировать с ИИ",
|
|
3387
|
+
editWithAiNamed: "Редактировать {{name}} с ИИ",
|
|
3388
|
+
enableApp: "Включить приложение",
|
|
3389
|
+
disableApp: "Отключить приложение",
|
|
3390
|
+
enableAppNamed: "Включить {{name}}",
|
|
3391
|
+
disableAppNamed: "Отключить {{name}}",
|
|
3392
|
+
setDefault: "Установить по умолчанию",
|
|
3393
|
+
setDefaultNamed: "Установить {{name}} по умолчанию",
|
|
3394
|
+
deleteApp: "Удалить приложение",
|
|
3395
|
+
deleteAppNamed: "Удалить {{name}}",
|
|
3396
|
+
confirmDelete: "Нажмите ещё раз для подтверждения удаления",
|
|
3397
|
+
confirmDeleteNamed: "Подтвердить удаление {{name}}",
|
|
3398
|
+
toast: {
|
|
3399
|
+
noClient: "Не удаётся подключиться к службе метаданных",
|
|
3400
|
+
unknownError: "неизвестная ошибка",
|
|
3401
|
+
appEnabled: "{{name}} включено",
|
|
3402
|
+
appDisabled: "{{name}} отключено",
|
|
3403
|
+
toggleFailed: "Не удалось изменить состояние приложения: {{reason}}",
|
|
3404
|
+
setDefaultDone: "{{name}} установлено по умолчанию",
|
|
3405
|
+
setDefaultFailed: "Не удалось установить приложение по умолчанию: {{reason}}",
|
|
3406
|
+
appDeleted: "{{name}} удалено",
|
|
3407
|
+
deleteFailed: "Не удалось удалить приложение: {{reason}}",
|
|
3408
|
+
bulkEnabled: "Включено приложений: {{n}}",
|
|
3409
|
+
bulkDisabled: "Отключено приложений: {{n}}",
|
|
3410
|
+
bulkFailed: "Не удалось для {{n}}: {{details}}",
|
|
3411
|
+
bulkFailureEntry: "{{name}} ({{reason}})",
|
|
3412
|
+
bulkFailureJoiner: "; ",
|
|
3413
|
+
bulkOperationFailed: "Массовая операция не выполнена: {{reason}}",
|
|
3414
|
+
},
|
|
3415
|
+
},
|
|
3090
3416
|
};
|
|
3091
3417
|
export default ru;
|