@object-ui/i18n 17.7.0 → 18.0.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.
@@ -13,18 +13,19 @@ const ru = {
13
13
  notRestored: 'Сервер принял запрос, но не восстановил сеанс администратора — вы всё ещё работаете от имени {{user}}. Выйдите и войдите снова, чтобы завершить.',
14
14
  },
15
15
  },
16
- // objectui#2600 B5 — capability picker scope group headers (labels come from the sys_capability registry).
16
+ // objectui#2600 B5 — capability picker scope group headers (labels come from the capability registry).
17
17
  capability: {
18
18
  label: {
19
19
  manage_users: "Управление пользователями",
20
20
  manage_org_users: "Управление пользователями организации",
21
21
  manage_metadata: "Управление метаданными",
22
- manage_org_presentation: "Управление представлением организации",
22
+ manage_mailboxes: "Управление почтовыми ящиками",
23
23
  manage_platform_settings: "Управление настройками платформы",
24
24
  setup_access: "Доступ к настройке",
25
25
  setup_write: "Запись настроек",
26
26
  studio_access: "Доступ к Studio",
27
27
  manage_sharing: "Управление общим доступом",
28
+ view_all_audit_log: "Просмотр всего журнала аудита",
28
29
  },
29
30
  group: {
30
31
  platform: 'Платформа',
@@ -32,43 +33,6 @@ const ru = {
32
33
  other: 'Другое',
33
34
  },
34
35
  },
35
- // objectui#3546 slice six — the read-only summary of PermissionFacetLink's six
36
- // authorization facets, plus the Studio link.
37
- //
38
- // The four count labels carry one slot per ru CLDR category (objectui#11432):
39
- // `_one` 1/21/31… (nominative singular), `_few` 2-4/22-24… (genitive singular),
40
- // `_many` 0/5-20… (genitive plural), `_other` fractions (genitive singular).
41
- // The base key keeps the count-invariant «Существительное: {{count}}» form for
42
- // a call made without a count.
43
- perm: {
44
- facet: {
45
- none: "Нет",
46
- more: "+{{count}} ещё",
47
- objects: "Объектов: {{count}}",
48
- objects_one: "{{count}} объект",
49
- objects_few: "{{count}} объекта",
50
- objects_many: "{{count}} объектов",
51
- objects_other: "{{count}} объекта",
52
- fields: "Правил для полей: {{count}}",
53
- fields_one: "{{count}} правило для полей",
54
- fields_few: "{{count}} правила для полей",
55
- fields_many: "{{count}} правил для полей",
56
- fields_other: "{{count}} правила для полей",
57
- rls: "Политик RLS: {{count}}",
58
- rls_one: "{{count}} политика RLS",
59
- rls_few: "{{count}} политики RLS",
60
- rls_many: "{{count}} политик RLS",
61
- rls_other: "{{count}} политики RLS",
62
- tabs: "Правил для вкладок: {{count}}",
63
- tabs_one: "{{count}} правило для вкладок",
64
- tabs_few: "{{count}} правила для вкладок",
65
- tabs_many: "{{count}} правил для вкладок",
66
- tabs_other: "{{count}} правила для вкладок",
67
- adminScope: "Делегированное администрирование настроено",
68
- designInStudio: "Дизайн в Studio →",
69
- designInStudioHint: "Дизайн в Studio",
70
- },
71
- },
72
36
  lookup: {
73
37
  recentlyUsed: 'Недавние',
74
38
  allResults: 'Все результаты',
@@ -146,6 +110,7 @@ const ru = {
146
110
  itemCount_many: "{{count}} элементов",
147
111
  itemCount_other: "{{count}} элемента",
148
112
  toggleSidebar: "Переключить боковую панель",
113
+ breadcrumb: "Навигационная цепочка",
149
114
  package: "Пакет",
150
115
  done: "Готово",
151
116
  editInStudio: "Редактировать в Studio",
@@ -174,6 +139,7 @@ const ru = {
174
139
  copyAll: 'Копировать всё',
175
140
  },
176
141
  notAvailableHere: '«{{action}}» недоступно на текущей странице.',
142
+ notAvailableForRecord: 'Недоступно для этой записи',
177
143
  completedSuccessfully: 'Действие успешно выполнено',
178
144
  failed: 'Действие не выполнено',
179
145
  parallelFailed: 'Одно или несколько параллельных действий не выполнены',
@@ -210,6 +176,8 @@ const ru = {
210
176
  // description, used when the form declares no `description` of its own.
211
177
  dialogDescriptionFallback: "Заполните поля формы, затем отправьте или отмените.",
212
178
  deniedDescription: "У вас нет прав на редактирование этого поля.",
179
+ serverDefaultHint: "Задаётся автоматически при сохранении.",
180
+ maxFileSize: "Максимальный размер: {{size}}",
213
181
  masterDetail: {
214
182
  loadingColumns: "Загрузка столбцов…",
215
183
  subtotal: "Промежуточный итог",
@@ -278,10 +246,14 @@ const ru = {
278
246
  remove: "Удалить изображение {{index}}",
279
247
  enlarge: "Увеличить {{name}}",
280
248
  preview: "Предпросмотр изображения",
249
+ cropPreview: "Предпросмотр обрезки изображения",
281
250
  previous: "Предыдущее изображение",
282
251
  next: "Следующее изображение",
283
252
  counter: "{{current}} / {{total}}",
284
253
  },
254
+ percent: {
255
+ slider: "Процент",
256
+ },
285
257
  relativeDate: {
286
258
  overdue: "Просрочено на {{count}} дн.",
287
259
  overdue_one: "Просрочено на {{count}} дн.",
@@ -305,6 +277,8 @@ const ru = {
305
277
  exceedsMaxSize: '«{{name}}» превышает максимальный размер ({{max}} МБ)',
306
278
  uploadFailed: 'Не удалось загрузить «{{name}}»: {{error}}',
307
279
  uploadIncomplete: 'Загрузка «{{name}}» не завершена: идентификатор файла не получен, ничего не сохранено',
280
+ restricted: 'Файл с ограниченным доступом',
281
+ restrictedHint: 'У вас нет доступа к сведениям об этом файле',
308
282
  },
309
283
  richText: {
310
284
  format: "Формат: {{format}}",
@@ -321,6 +295,10 @@ const ru = {
321
295
  search: "Поиск объектов…",
322
296
  empty: "Объекты не найдены",
323
297
  },
298
+ registryRef: {
299
+ loadFailed: "Не удалось загрузить список. Имя можно ввести вручную.",
300
+ notFound: "{{name}} (не найдено)",
301
+ },
324
302
  recipient: {
325
303
  selectTypeFirst: "Сначала выберите тип получателя.",
326
304
  loading: "Загрузка…",
@@ -362,6 +340,13 @@ const ru = {
362
340
  dateTime: {
363
341
  impossibleDay: "Сохранённое значение «{{value}}» — несуществующая дата. Выберите дату и время, чтобы заменить его.",
364
342
  },
343
+ datePicker: {
344
+ today: "Сегодня",
345
+ tomorrow: "Завтра",
346
+ clear: "Очистить дату",
347
+ openCalendar: "Открыть календарь",
348
+ invalid: "Не сохранено: «{{value}}» — не дата. Введите её в формате {{format}} или выберите в календаре.",
349
+ },
365
350
  number: {
366
351
  badInput: "Не сохранено: текст в этом поле — не число. Введите обычную десятичную дробь (например: {{example}}).",
367
352
  },
@@ -376,6 +361,11 @@ const ru = {
376
361
  postalCode: "Почтовый индекс",
377
362
  country: "Страна",
378
363
  },
364
+ boolean: {
365
+ offBadge: "{{label}} — Выкл.",
366
+ completed: "Выполнено",
367
+ notCompleted: "Не выполнено",
368
+ },
379
369
  textarea: {
380
370
  characterCount: "Количество символов: {{count}} из {{max}}",
381
371
  charactersRemaining: "Осталось символов: {{count}}",
@@ -405,10 +395,15 @@ const ru = {
405
395
  selectAllRows: "Выбрать все строки",
406
396
  expandRow: "Развернуть строку",
407
397
  collapseRow: "Свернуть строку",
398
+ rowActions: "Действия со строкой",
408
399
  hideColumn: "Скрыть столбец",
409
400
  freezeColumn: "Закрепить столбец",
410
401
  unfreezeColumn: "Открепить столбец",
411
402
  pageInfo: "Страница {{current}} из {{total}}",
403
+ firstPage: "Первая страница",
404
+ previousPage: "Предыдущая страница",
405
+ nextPage: "Следующая страница",
406
+ lastPage: "Последняя страница",
412
407
  totalRecords: "Всего {{count}}",
413
408
  noResults: "Результатов нет",
414
409
  noResultsHint: "Попробуйте изменить фильтры или поисковые запросы.",
@@ -422,6 +417,11 @@ const ru = {
422
417
  modified_few: "Изменено {{count}} строки",
423
418
  modified_many: "Изменено {{count}} строк",
424
419
  modified_other: "Изменено {{count}} строки",
420
+ saved: "{{count}} строк сохранено",
421
+ saved_one: "Сохранена {{count}} строка",
422
+ saved_few: "Сохранено {{count}} строки",
423
+ saved_many: "Сохранено {{count}} строк",
424
+ saved_other: "Сохранено {{count}} строки",
425
425
  saveFailed: 'Не удалось сохранить',
426
426
  selected: "{{count}} выбрано",
427
427
  selected_one: "Выбрано: {{count}}",
@@ -446,6 +446,7 @@ const ru = {
446
446
  bulkAllOnPage_other: "Выбраны все записи на этой странице ({{count}}).",
447
447
  bulkSelectAllMatching: "Выбрать все совпадения ({{count}})",
448
448
  bulkAllMatchingSelected: "Выбраны все подходящие записи ({{count}}).",
449
+ bulkActions: "Массовые действия",
449
450
  bulk: {
450
451
  confirmDefault: "Будет применено к записям: {{count}}.",
451
452
  confirmDefault_one: "Будет применено к записям: {{count}}.",
@@ -488,6 +489,7 @@ const ru = {
488
489
  pullToRefresh: "Потяните для обновления",
489
490
  refreshing: "Обновление…",
490
491
  openRecord: "Открыть запись",
492
+ recordUnavailable: "{{object}} · запись недоступна",
491
493
  rowHeight: "Высота строки: {{mode}}",
492
494
  openMenu: "Открыть меню",
493
495
  empty: "Пусто",
@@ -507,6 +509,7 @@ const ru = {
507
509
  // pack controls its own separator and word order.
508
510
  summary: {
509
511
  pattern: "{{label}}: {{value}}",
512
+ pagePattern: "{{label}} (эта страница): {{value}}",
510
513
  count: "Количество",
511
514
  countEmpty: "Пустые",
512
515
  countFilled: "Заполненные",
@@ -578,9 +581,6 @@ const ru = {
578
581
  needMatchFields: "Выберите хотя бы одно поле для сопоставления.",
579
582
  matchOnlyField: "(только сопоставление)",
580
583
  optCreateOptions: "Сохранять неизвестные значения списка",
581
- optRunAutomations: "Выполнять автоматизации и триггеры",
582
- optTreatHistorical: "Импортировать как исторические данные",
583
- optTreatHistoricalHint: "(импортирует завершённые записи как есть — пропускает проверки конечного автомата и сохраняет исходные отметки времени и автора вместо текущих)",
584
584
  optSkipBlankKey: "Пропускать строки с пустым значением сопоставления",
585
585
  optBackground: "Импортировать в фоновом режиме",
586
586
  optBackgroundHint: "(выполняется как отменяемая задача)",
@@ -595,6 +595,7 @@ const ru = {
595
595
  invalidBoolean: "«{{value}}» не является допустимым значением true/false",
596
596
  invalidNumber: "«{{value}}» не является допустимым числом",
597
597
  invalidDate: "«{{value}}» не является допустимой датой",
598
+ invalidTime: "«{{value}}» не является допустимым временем",
598
599
  invalidOption: "«{{value}}» не входит в число допустимых вариантов",
599
600
  requiredValue: "Это поле обязательно",
600
601
  matchAmbiguous: "Соответствует нескольким существующим записям — используйте уникальное значение или идентификатор записи",
@@ -619,6 +620,11 @@ const ru = {
619
620
  undoing: "Отмена…",
620
621
  undoConfirm: "Отменить этот импорт? Созданные им записи будут удалены, а обновлённые — восстановлены к прежним значениям.",
621
622
  reverted: "Отменён",
623
+ undoPartial: "Не удалось отменить {{count}} строк. Повторная отмена затронет только эти строки.",
624
+ undoPartial_one: "Не удалось отменить {{count}} строку. Повторная отмена затронет только эту строку.",
625
+ undoPartial_few: "Не удалось отменить {{count}} строки. Повторная отмена затронет только эти строки.",
626
+ undoPartial_many: "Не удалось отменить {{count}} строк. Повторная отмена затронет только эти строки.",
627
+ undoPartial_other: "Не удалось отменить {{count}} строки. Повторная отмена затронет только эти строки.",
622
628
  jobStatus: {
623
629
  pending: "Ожидает",
624
630
  running: "Выполняется",
@@ -688,6 +694,8 @@ const ru = {
688
694
  showingRows: "Отображено {{shown}} из {{total}} строк",
689
695
  importing: "Импорт… {{progress}}%",
690
696
  importComplete: "Импорт завершён",
697
+ importPartial: "Импорт завершён с ошибками",
698
+ importFailed: "Импорт не выполнен",
691
699
  imported: "{{count}} импортировано",
692
700
  skippedCount: "{{count}} пропущено",
693
701
  moreErrors: "…ещё {{count}} ошибок",
@@ -754,6 +762,7 @@ const ru = {
754
762
  firstRunMessage: "Создайте первую запись, чтобы начать.",
755
763
  noMatches: "Подходящих записей нет",
756
764
  noMatchesMessage: "Ни одна запись не соответствует текущим фильтрам или поиску. Измените или сбросьте их.",
765
+ viewFilterNoMatchesMessage: "Ни одна запись не соответствует фильтру этого представления.",
757
766
  loadErrorTitle: "Не удалось загрузить записи",
758
767
  loadErrorMessage: "При загрузке данных произошла ошибка. Проверьте соединение и попробуйте снова.",
759
768
  loadErrorForbiddenTitle: "Нет доступа",
@@ -798,15 +807,23 @@ const ru = {
798
807
  recordCount_many: "{{count}} записей",
799
808
  recordCount_other: "{{count}} записи",
800
809
  addRecord: "Добавить запись",
810
+ // objectui#12703 — the compact list's footer link to the object's list or the block's view.
811
+ viewAll: "Показать все",
801
812
  tabs: "Вкладки",
802
813
  allRecords: "Все записи",
803
814
  search: "Поиск",
804
815
  filter: "Фильтр",
805
816
  filterRecords: "Фильтр записей",
817
+ filterActive: "Фильтр, активных: {{count}}",
818
+ filterActive_one: "Фильтр, {{count}} активный",
819
+ filterActive_few: "Фильтр, {{count}} активных",
820
+ filterActive_many: "Фильтр, {{count}} активных",
821
+ filterActive_other: "Фильтр, активных: {{count}}",
806
822
  sort: "Сортировка",
807
823
  sortRecords: "Сортировка записей",
808
824
  sortByIdSuffix: "(по ID)",
809
825
  sortRelationalHint: "Столбцы, ссылающиеся на другую запись, здесь не показаны: их можно сортировать только по сохранённому ID, а не по имени, которое видно в ячейке. Чтобы сортировать по этому имени, денормализуйте его в этот объект — как сохраняемое поле, которое записывается при изменении источника, — и сортируйте по нему. Не поле-формула: она виртуальна, столбец для неё не хранится, и сервер отказывается сортировать по ней.",
826
+ sortRelationalPicked: "Связанный столбец сортируется по сохранённому ID, а не по отображаемому имени.",
810
827
  resetSortToDefault: "Сбросить к сортировке представления",
811
828
  group: "Группировка",
812
829
  groupBy: "Группировать по",
@@ -827,14 +844,15 @@ const ru = {
827
844
  print: "Печать",
828
845
  hideFieldsTitle: "Скрыть поля",
829
846
  dataLimitReached: "Отображаются первые {{limit}} записей. Возможно, есть ещё данные.",
830
- viewSettings: "Настройки представления",
831
- viewSettingsHint: "Группировка, цвет, плотность и отображаемые поля. Применяется ко всем пользователям этого представления.",
847
+ display: "Отображение",
848
+ layout: "Макет",
849
+ rowNumbers: "Номера строк",
850
+ resetToViewDefault: "Сбросить к настройкам представления",
832
851
  addGroup: "Добавить поле группировки",
833
852
  collapsedByDefault: "Свёрнуто по умолчанию",
834
853
  removeGroup: "Удалить",
835
854
  inlineEditShort: "Встроенное редактирование",
836
855
  inlineEditLabel: "Редактировать записи в таблице (щёлкните ячейку для редактирования)",
837
- recordEditingTitle: "Редактирование записей",
838
856
  },
839
857
  managedByBadge: {
840
858
  systemWritable: {
@@ -865,6 +883,7 @@ const ru = {
865
883
  },
866
884
  kanban: {
867
885
  uncategorized: "Без категории",
886
+ loadMore: "Загрузить ещё",
868
887
  columns: "колонок",
869
888
  addCard: "Добавить карточку",
870
889
  addColumn: "Добавить колонку",
@@ -872,13 +891,28 @@ const ru = {
872
891
  deleteCard: "Удалить карточку",
873
892
  deleteColumn: "Удалить колонку",
874
893
  noCards: "Нет карточек",
894
+ columnCards: "Карточки в колонке {{column}}",
895
+ laneCards: "Карточки: {{column}} - {{lane}}",
875
896
  cardTitlePlaceholder: "Введите название карточки…",
876
897
  requiredFieldsTitle: "Заполните обязательные поля",
877
898
  requiredFieldsDescription: "Это перемещение делает поля ниже обязательными. Заполните их, чтобы продолжить.",
899
+ dnd: {
900
+ start: "Карточка {{card}} взята в колонке {{column}}.",
901
+ overCard: "Карточка {{card}} над карточкой {{target}} в колонке {{column}}.",
902
+ overColumn: "Карточка {{card}} над колонкой {{column}}.",
903
+ overNone: "Карточка {{card}} не находится ни над одной колонкой.",
904
+ moved: "Карточка {{card}} перемещена в колонку {{column}}.",
905
+ dropped: "Карточка {{card}} отпущена. Она остаётся в колонке {{column}}.",
906
+ cancelled: "Перетаскивание отменено. Карточка {{card}} остаётся в колонке {{column}}.",
907
+ untitledCard: "без названия",
908
+ unnamedColumn: "без названия",
909
+ instructions: "Чтобы переместить карточку в другую колонку, перетащите её мышью или касанием.",
910
+ dragging: "Перетаскивается карточка {{card}}",
911
+ },
878
912
  },
879
913
  timeline: {
880
914
  bucket: {
881
- overdue: "Просрочено",
915
+ earlier: "Ранее",
882
916
  today: "Сегодня",
883
917
  tomorrow: "Завтра",
884
918
  thisWeek: "На этой неделе",
@@ -1065,10 +1099,13 @@ const ru = {
1065
1099
  readonlyAriaLabel: "Представление только для чтения",
1066
1100
  readonlyTooltip: "Системное представление — определено в коде, только для чтения.",
1067
1101
  malformedFilter: "Фильтр этого представления некорректен, поэтому записи не отображаются: условие {{subject}} невозможно применить.",
1102
+ noObject: "Объект не указан: задайте {{property}} или dataSource.object.",
1068
1103
  },
1069
1104
  designer: {
1070
1105
  undo: "Отменить",
1071
1106
  redo: "Повторить",
1107
+ canvasMinimap: "Миникарта холста",
1108
+ versionHistory: "История версий",
1072
1109
  },
1073
1110
  detail: {
1074
1111
  editInlineHint: "Дважды щёлкните для редактирования",
@@ -1175,6 +1212,7 @@ const ru = {
1175
1212
  noAttachments: "Вложений пока нет. Загрузите файл, чтобы начать.",
1176
1213
  downloadAttachment: "Скачать",
1177
1214
  deleteAttachment: "Удалить вложение",
1215
+ deleteAttachmentConfirm: "Вы уверены, что хотите удалить вложение \"{{name}}\"?",
1178
1216
  attachmentDeleteDenied: "Удалить это вложение может только загрузивший его пользователь или тот, кто может редактировать эту запись.",
1179
1217
  attachmentParentAccessDenied: "У вас нет доступа для прикрепления файлов к этой записи.",
1180
1218
  attachmentDownloadDenied: "У вас нет доступа для скачивания этого вложения.",
@@ -1240,10 +1278,12 @@ const ru = {
1240
1278
  lockedByApproval: "Заблокировано для согласования",
1241
1279
  lockedTooltip: "У этой записи есть ожидающий запрос на согласование; редактирование заблокировано",
1242
1280
  writeStrippedTitle: "Сохранено, но часть полей не применена",
1281
+ writeWarningsTitle: "Сохранено, но есть предупреждения",
1243
1282
  writeStrippedReadonly: "Поля только для чтения, поэтому не применены: {{fields}}",
1244
1283
  writeStrippedByState: "Поля недоступны для редактирования в текущем состоянии записи, поэтому не применены: {{fields}}",
1245
1284
  writeStrippedPrimaryKey: "Идентификатор записи нельзя изменить при сохранении, поэтому поля не применены: {{fields}}",
1246
1285
  writeStrippedComputed: "Поля вычисляются сервером по формуле, поэтому отправленные значения не применены: {{fields}}",
1286
+ writeStrippedStoredExpression: "Поля вычисляются из записи, поэтому вместо отправленных значений сохранены вычисленные: {{fields}}",
1247
1287
  writeStrippedUnknownReason: "Не применены сервером: {{fields}}",
1248
1288
  approvalPendingEditable: "На согласовании · редактирование доступно",
1249
1289
  approvalPendingTooltip: "У этой записи есть ожидающий запрос на согласование, но этот шаг всё ещё разрешает редактирование",
@@ -1267,6 +1307,11 @@ const ru = {
1267
1307
  linkCopied: "Ссылка скопирована в буфер обмена",
1268
1308
  commentFailed: "Комментарий не опубликован. Ничего не сохранено — попробуйте ещё раз.",
1269
1309
  reactionFailed: "Реакция не сохранена. Попробуйте ещё раз.",
1310
+ editComment: "Редактировать комментарий",
1311
+ deleteComment: "Удалить комментарий",
1312
+ deleteCommentConfirm: "Вы уверены, что хотите удалить этот комментарий?",
1313
+ commentEditFailed: "Изменения не сохранены. Комментарий сохраняет прежний текст.",
1314
+ commentDeleteFailed: "Комментарий не удалён. Попробуйте ещё раз.",
1270
1315
  linkCopyFailed: "Не удалось скопировать ссылку",
1271
1316
  cancel: "Отмена",
1272
1317
  cancelEdit: "Отменить изменения",
@@ -1675,7 +1720,8 @@ const ru = {
1675
1720
  },
1676
1721
  console: {
1677
1722
  studio: {
1678
- backToHome: "На главную",
1723
+ title: "Studio",
1724
+ accessRequired: "Чтобы открыть Studio, нужен доступ к Studio.",
1679
1725
  },
1680
1726
  saveAdvisoryTitle: "Сохранено — проверка авторинга выдала рекомендаций: {{count}}",
1681
1727
  saveAdvisoryTitle_one: "Сохранено — проверка авторинга выдала рекомендаций: {{count}}",
@@ -1695,13 +1741,13 @@ const ru = {
1695
1741
  savedViewsUnreadable: "Список пуст из-за того, что его не удалось прочитать, а не потому, что у этого объекта нет сохранённых представлений. Повторите попытку и сообщите о проблеме, если она повторяется.",
1696
1742
  settingsHub: {
1697
1743
  title: "Настройки",
1698
- subtitle: "Настройте рабочее пространство, интеграции и флаги функций.",
1744
+ subtitle: "Настройте систему, интеграции и флаги функций.",
1699
1745
  loadError: "Не удалось загрузить настройки",
1700
1746
  empty: "Настройки не зарегистрированы. Плагины могут регистрировать манифесты настроек через SettingsService.",
1701
1747
  settingsCount: "Настроек: {{n}}",
1702
1748
  beta: "Бета",
1703
1749
  categories: {
1704
- Workspace: "Рабочее пространство",
1750
+ Workspace: "Общие",
1705
1751
  Communication: "Коммуникации",
1706
1752
  Security: "Безопасность",
1707
1753
  Infrastructure: "Инфраструктура",
@@ -1748,8 +1794,7 @@ const ru = {
1748
1794
  },
1749
1795
  usage: {
1750
1796
  title: "Использование ИИ",
1751
- meterBuild: "Сборка",
1752
- meterAsk: "Вопрос",
1797
+ poolUsed: "Использовано {{percent}}",
1753
1798
  statusOk: "Осталось много",
1754
1799
  statusLow: "Заканчивается",
1755
1800
  statusFull: "Лимит исчерпан",
@@ -1768,7 +1813,6 @@ const ru = {
1768
1813
  ctaUpgrade: "Повысьте тариф, чтобы продолжить",
1769
1814
  ctaTopUp: "Добавьте кредиты, чтобы продолжить",
1770
1815
  ariaLabel: "Использование ИИ: {{status}}",
1771
- breakdownTitle: "Использовано на данный момент",
1772
1816
  },
1773
1817
  workspaceTitle: "Рабочее пространство ИИ",
1774
1818
  workspaceSubtitle: "Задавайте вопросы, изучайте и возвращайтесь к диалогам",
@@ -1825,6 +1869,8 @@ const ru = {
1825
1869
  liveCanvasUnlisted: "Работающее приложение — {{app}} (скрыто до публикации)",
1826
1870
  loadingAgents: "Загрузка агентов…",
1827
1871
  askAnything: "Спросите о чём угодно…",
1872
+ askOrChangeApp: "Спросите о данных или попросите меня изменить это приложение…",
1873
+ describeAppToBuild: "Опишите приложение, которое хотите создать, или что изменить…",
1828
1874
  emptyTitle: "Начните диалог",
1829
1875
  emptyDescription: "Спросите о чём угодно — ассистент видит контекст вашего текущего приложения.",
1830
1876
  switchAssistant: "Сменить ассистента",
@@ -1846,12 +1892,17 @@ const ru = {
1846
1892
  },
1847
1893
  clearConversation: "Очистить",
1848
1894
  sendHint: "чтобы отправить",
1895
+ newlineHint: "для новой строки",
1849
1896
  agentActivity: "Активность агента",
1850
1897
  toolCompleted: "Завершено",
1851
1898
  toolRunning: "Выполняется",
1852
1899
  toolAwaitingApproval: "Ожидает подтверждения",
1853
1900
  toolFailed: "Ошибка",
1854
1901
  toolDetailsHidden: "Входные данные инструментов и необработанные результаты в этом режиме скрыты.",
1902
+ toolDenyReason: "Отклонено оператором в чате",
1903
+ builderHandoffTitle: "Создать в конструкторе",
1904
+ builderHandoffOpen: "Открыть в конструкторе →",
1905
+ builderHandoffSuperseded: "Есть более новый запрос",
1855
1906
  copy: "Копировать",
1856
1907
  copied: "Скопировано",
1857
1908
  regenerate: "Сгенерировать заново",
@@ -1866,7 +1917,7 @@ const ru = {
1866
1917
  publishOk: "Опубликовано — объекты активны.",
1867
1918
  seedWarn: "Опубликовано, но часть примеров данных загрузить не удалось.",
1868
1919
  openBuiltApp: "Открыть приложение",
1869
- designBuiltApp: "Открыть в Studio",
1920
+ viewBuiltAppInStudio: "Открыть в Studio",
1870
1921
  previewDraft: "Предпросмотр",
1871
1922
  previewApp: "Предпросмотр приложения",
1872
1923
  resizeSplit: "Изменить размер чата и предпросмотра",
@@ -1993,6 +2044,7 @@ const ru = {
1993
2044
  collapse: "Свернуть чат",
1994
2045
  maximize: "Открыть на всю страницу",
1995
2046
  open: "Открыть ассистента",
2047
+ planAwaitingApproval: "Предложенный план ожидает вашего подтверждения",
1996
2048
  },
1997
2049
  group: {
1998
2050
  today: "Сегодня",
@@ -2003,12 +2055,9 @@ const ru = {
2003
2055
  },
2004
2056
  },
2005
2057
  title: "Консоль ObjectStack",
2006
- initializing: "Инициализация приложения…",
2007
- loadingHint: "Настройка нового окружения может занять некоторое время.",
2058
+ initializing: "Открытие консоли…",
2059
+ skipToContent: "Перейти к содержимому",
2008
2060
  breadcrumb: {
2009
- dashboards: "Панели",
2010
- pages: "Страницы",
2011
- reports: "Отчёты",
2012
2061
  system: "Система",
2013
2062
  marketplace: "Маркетплейс",
2014
2063
  settings: 'Настройки',
@@ -2039,16 +2088,32 @@ const ru = {
2039
2088
  unsavedCount_few: "{{count}} несохранённых изменения",
2040
2089
  unsavedCount_many: "{{count}} несохранённых изменений",
2041
2090
  unsavedCount_other: "{{count}} несохранённого изменения",
2091
+ fieldErrorsToast: "Настройки, требующие внимания ({{count}}): {{settings}}",
2092
+ fieldErrorsToast_one: "{{count}} настройка требует внимания: {{settings}}",
2093
+ fieldErrorsToast_few: "{{count}} настройки требуют внимания: {{settings}}",
2094
+ fieldErrorsToast_many: "{{count}} настроек требуют внимания: {{settings}}",
2095
+ fieldErrorsToast_other: "{{count}} настройки требуют внимания: {{settings}}",
2042
2096
  cryptoRefusalTitle: "Эта установка не может шифровать секреты",
2043
2097
  cryptoRefusalSubjectSuffix: "объявлен зашифрованным, поэтому ничего не было записано.",
2044
2098
  cryptoRefusalNoSubject: "Значение, объявленное зашифрованным, было отклонено, поэтому ничего не было записано.",
2045
2099
  cryptoRefusalToast: "Не удалось зашифровать секреты: {{subject}}",
2046
2100
  cryptoRefusalToastNoSubject: "Не удалось зашифровать секреты",
2047
- },
2048
- loadingSteps: {
2049
- connecting: "Подключение к источнику данных",
2050
- loadingConfig: "Загрузка конфигурации",
2051
- preparingWorkspace: "Подготовка рабочего пространства",
2101
+ sourceBadgeInherited: "Унаследовано: {{source}}",
2102
+ sourceBadgeOverrides: "Переопределяет: {{source}}",
2103
+ resetToDefault: "Сбросить к значению по умолчанию",
2104
+ envLockBadge: "Задано окружением",
2105
+ envLockBadgeTitle: "Закреплено переменной окружения — изменить в интерфейсе нельзя.",
2106
+ deprecatedBadge: "Устарело",
2107
+ deprecatedBadgeReplacedBy: "Устарело → {{replacedBy}}",
2108
+ unsupportedSpecifierType: "Неподдерживаемый тип настройки: {{type}}",
2109
+ },
2110
+ workspaceTimezonePrompt: {
2111
+ title: "Задайте часовой пояс системы",
2112
+ description: "В этой системе всё ещё используется часовой пояс платформы по умолчанию — {{current}}. Часовой пояс системы определяет, что означает «сегодня» в формулах, как отчёты группируют данные по датам и как отображаются дата и время, — для всех в системе. Ниже указан часовой пояс вашего браузера.",
2113
+ laterHint: "Его можно изменить в любое время на странице «Настройки».",
2114
+ decline: "Оставить по умолчанию",
2115
+ confirm: "Задать часовой пояс",
2116
+ saved: "Часовой пояс системы: {{zone}}",
2052
2117
  },
2053
2118
  error: {
2054
2119
  connectionFailed: "Не удаётся подключиться к серверу",
@@ -2073,27 +2138,28 @@ const ru = {
2073
2138
  groups: {
2074
2139
  general: "Общие",
2075
2140
  navigation: "Навигация",
2076
- dataViews: "Представления данных",
2077
2141
  aiChat: "Ассистент ИИ",
2078
- preferences: "Настройки",
2079
2142
  },
2080
2143
  openCommandPalette: "Открыть палитру команд",
2081
2144
  showShortcuts: "Показать горячие клавиши",
2082
2145
  closeDialog: "Закрыть диалог / панель",
2083
2146
  toggleSidebar: "Переключить боковую панель",
2084
- focusSearch: "Фокус на поиске",
2085
- createRecord: "Создать новую запись",
2086
- refreshData: "Обновить данные",
2087
- editRecord: "Редактировать выбранную запись",
2088
2147
  newChat: "Новый чат",
2089
2148
  toggleChatsList: "Переключить список чатов",
2090
- toggleDarkMode: "Переключить тёмный режим",
2149
+ goHome: "Вернуться на главную",
2150
+ },
2151
+ reportIndex: {
2152
+ title: "Отчёты",
2153
+ emptyTitle: "Нет отчётов",
2154
+ emptyDescription: "В этом приложении нет отчётов, которые вы можете открыть.",
2091
2155
  },
2092
2156
  commandPalette: {
2093
2157
  title: "Палитра команд",
2094
2158
  placeholder: "Введите команду или поиск…",
2095
2159
  noResults: "Результаты не найдены.",
2096
2160
  objects: "Объекты",
2161
+ packages: "Пакеты",
2162
+ flows: "Потоки",
2097
2163
  dashboards: "Панели мониторинга",
2098
2164
  pages: "Страницы",
2099
2165
  reports: "Отчёты",
@@ -2112,9 +2178,9 @@ const ru = {
2112
2178
  },
2113
2179
  // objectui#9954 — see the `en` pack for what raises each case.
2114
2180
  readRate: {
2115
- ratioTitle: 'Необычный объём чтения в этой среде',
2181
+ ratioTitle: 'Необычный объём чтения в этой системе',
2116
2182
  ratio: 'На каждую записанную строку читается {{ratio}} строк. Платформа отмечает всё, что выше {{threshold}}. Ничто не ограничивается и не блокируется; это отчёт, чтобы можно было проверить схему чтения.',
2117
- noWritesTitle: 'Чтение вообще без записи в этой среде',
2183
+ noWritesTitle: 'Чтение вообще без записи в этой системе',
2118
2184
  noWrites: 'Строки читаются, но не записывается ни одной, поэтому у скорости чтения нет верхней границы. Это самый серьёзный показатель. Платформа отмечает всё, что выше {{threshold}}. Ничто не ограничивается и не блокируется; это отчёт, чтобы можно было проверить схему чтения.',
2119
2185
  },
2120
2186
  // objectui#10439 — see the `en` pack for what raises each case.
@@ -2155,12 +2221,14 @@ const ru = {
2155
2221
  viewNameInvalid: "Используйте строчные латинские буквы, цифры и подчёркивания; начните с буквы или подчёркивания.",
2156
2222
  systemViewReadonly: "Системное представление определено в коде — только для чтения.",
2157
2223
  cannotEditMetaView: "Это встроенное представление, определённое в коде, — изменить его нельзя.",
2158
- viewConfigPermissionDenied: "Настройки представления применяются ко всем пользователям этого представления, поэтому их изменение требует разрешения «Управление метаданными». Обратитесь к администратору, чтобы внести это изменение.",
2224
+ resetView: "Сбросить представление",
2225
+ resetViewTitle: "Вернуть сортировку, фильтры и ширину столбцов этого представления к его собственным настройкам. Изменятся только ваши настройки.",
2159
2226
  cannotDeleteMetaView: "Это встроенное представление, определённое в коде, — удалить его нельзя.",
2160
2227
  expandToPage: "Открыть на всю страницу",
2161
2228
  objectNotFound: "Объект не найден",
2162
2229
  objectNotFoundDescription: "Объект «{{objectName}}» не существует в текущей конфигурации.",
2163
2230
  objectNotFoundHint: "Проверьте настройки навигации приложения или выберите другой объект на боковой панели.",
2231
+ objectPackageDisabled: "Объект «{{objectName}}» принадлежит отключённому пакету, поэтому он не предоставляется.",
2164
2232
  filterOrNotSavable: "Этот фильтр объединяет условия через ИЛИ, что сохранённое представление пока не может хранить. Он по-прежнему применяется к этому списку — уберите группировку ИЛИ, чтобы сохранить его в представлении.",
2165
2233
  filterNestedNotSavable: "Этот фильтр использует вложенные группы условий, которые сохранённое представление не может хранить. Преобразуйте его в один список условий, чтобы сохранить в представлении.",
2166
2234
  allRecords: "Все записи",
@@ -2257,6 +2325,10 @@ const ru = {
2257
2325
  ufAddField: "+ Добавить поле фильтра…",
2258
2326
  ufShowAllRecords: "Показать вкладку \"Все записи\"",
2259
2327
  },
2328
+ runtimeDraft: {
2329
+ publishFailed: "Не удалось опубликовать",
2330
+ discardFailed: "Не удалось отменить черновик",
2331
+ },
2260
2332
  localeSwitcher: {
2261
2333
  label: "Язык",
2262
2334
  },
@@ -2264,17 +2336,22 @@ const ru = {
2264
2336
  nav: {
2265
2337
  pinItem: "Закрепить {{name}}",
2266
2338
  unpinItem: "Открепить {{name}}",
2267
- dragToReorder: "Перетащите для изменения порядка",
2268
2339
  favorites: "Избранное",
2269
2340
  launcherLabel: "Панель приложений",
2270
2341
  menuLabel: "Навигация приложения",
2271
2342
  menuEmpty: "В этом приложении нет доступных для открытия элементов навигации.",
2343
+ itemMenu: "Другие действия для {{name}}",
2344
+ openInNewTab: "Открыть в новой вкладке",
2345
+ copyLink: "Копировать ссылку",
2346
+ linkCopied: "Ссылка скопирована в буфер обмена",
2347
+ linkCopyFailed: "Не удалось скопировать ссылку",
2348
+ design: "Дизайн",
2272
2349
  },
2273
2350
  },
2274
2351
  auth: {
2275
2352
  setPassword: {
2276
2353
  title: "Задать резервный пароль",
2277
- description: "Вы вошли через единый вход. Задайте локальный пароль, чтобы входить в эту среду напрямую, если SSO станет недоступен.",
2354
+ description: "Вы вошли через единый вход. Задайте локальный пароль, чтобы входить напрямую, если SSO станет недоступен.",
2278
2355
  email: "Электронная почта",
2279
2356
  newPassword: "Новый пароль",
2280
2357
  confirmPassword: "Подтвердите пароль",
@@ -2290,9 +2367,8 @@ const ru = {
2290
2367
  signingIn: "Выполняется вход…",
2291
2368
  ssoHandoff: "Перейти к {{target}}",
2292
2369
  devAdminHint: {
2293
- title: "Среда разработки",
2294
- body: "Войдите под предустановленным администратором для разработки:",
2295
- dismiss: "Закрыть",
2370
+ title: "Локальная среда разработки",
2371
+ signIn: "Войти как администратор разработки",
2296
2372
  },
2297
2373
  title: "Войдите в свой аккаунт",
2298
2374
  description: "Введите электронную почту и пароль для продолжения",
@@ -2324,6 +2400,20 @@ const ru = {
2324
2400
  usePasswordSignInText: "Войти с паролем",
2325
2401
  socialButton: "Продолжить через {provider}",
2326
2402
  orText: "или продолжите с электронной почтой",
2403
+ ssoButton: "Войти через SSO",
2404
+ ssoOnlyDescription: "Войдите через единый вход вашей организации",
2405
+ usePasswordText: "Использовать пароль",
2406
+ backToSsoText: "Вернуться к единому входу",
2407
+ // objectui#12600 — the console login card's own header, the password
2408
+ // field's reveal toggle, and the footer's legal links.
2409
+ welcomeTitle: "С возвращением",
2410
+ welcomeDescription: "Войдите, чтобы продолжить работу",
2411
+ showPasswordText: "Показать пароль",
2412
+ hidePasswordText: "Скрыть пароль",
2413
+ footer: {
2414
+ privacy: "Конфиденциальность",
2415
+ terms: "Условия",
2416
+ },
2327
2417
  },
2328
2418
  register: {
2329
2419
  title: "Создать аккаунт",
@@ -2346,7 +2436,7 @@ const ru = {
2346
2436
  orText: "или продолжите с электронной почтой",
2347
2437
  errors: {
2348
2438
  userExists: "Аккаунт с таким email уже существует. Попробуйте войти.",
2349
- selfRegistrationClosed: "Самостоятельная регистрация в этой среде закрыта. Обратитесь к администратору за приглашением.",
2439
+ selfRegistrationClosed: "Самостоятельная регистрация в этой системе закрыта. Обратитесь к администратору за приглашением.",
2350
2440
  emailDomainNotAllowed: "Регистрация с адресами этого домена здесь не разрешена. Используйте email вашей организации или обратитесь к администратору за приглашением.",
2351
2441
  },
2352
2442
  verifyInbox: {
@@ -2423,7 +2513,7 @@ const ru = {
2423
2513
  checkSpam: "Не получили письмо? Проверьте папку \"Спам\" или обратитесь в поддержку.",
2424
2514
  or: "Или",
2425
2515
  // objectui#3546 slice three.
2426
- resendUnavailable: "Возможно, отправка писем не настроена для этой среды. Если проблема повторяется, обратитесь в поддержку.",
2516
+ resendUnavailable: "Возможно, отправка писем не настроена для этой системы. Если проблема повторяется, обратитесь в поддержку.",
2427
2517
  },
2428
2518
  setup: {
2429
2519
  welcomeTitle: "Добро пожаловать в ObjectStack",
@@ -2467,7 +2557,7 @@ const ru = {
2467
2557
  disabledDescription: "В этой инсталляции авторизация устройств не включена, поэтому это устройство здесь одобрить нельзя.",
2468
2558
  },
2469
2559
  shell: {
2470
- tenantHostHint: "Вы входите в это рабочее пространство",
2560
+ tenantHostHint: "Вы входите в эту систему",
2471
2561
  },
2472
2562
  layout: {
2473
2563
  headline: "Создавайте мощные бизнес-приложения быстрее.",
@@ -2477,6 +2567,7 @@ const ru = {
2477
2567
  signOut: "Выйти из аккаунта",
2478
2568
  password: {
2479
2569
  title: "Срок действия пароля истёк",
2570
+ resetTitle: "Необходимо сменить пароль",
2480
2571
  fallbackMessage: "Задайте новый пароль, чтобы продолжить.",
2481
2572
  current: "Текущий пароль",
2482
2573
  next: "Новый пароль",
@@ -2502,6 +2593,11 @@ const ru = {
2502
2593
  verifying: "Проверка…",
2503
2594
  invalidCode: "Неверный код. Попробуйте ещё раз.",
2504
2595
  },
2596
+ impersonation: {
2597
+ passwordTitle: "Пользователь {{user}} должен сменить пароль",
2598
+ mfaTitle: "Пользователь {{user}} должен настроить двухфакторную аутентификацию",
2599
+ body: "Вы работаете от имени {{user}}, и сделать это может только сам пользователь. Прекратите работу от чужого имени, чтобы вернуться в свой аккаунт.",
2600
+ },
2505
2601
  },
2506
2602
  },
2507
2603
  // objectui#3546 slice three — the /oauth/consent screen.
@@ -2510,12 +2606,17 @@ const ru = {
2510
2606
  title: "{{appName}} запрашивает доступ к вашему аккаунту",
2511
2607
  request: "{{appName}} запрашивает разрешение{{suffix}}.",
2512
2608
  unknownApp: "приложение",
2609
+ unidentified: "Не удалось определить это приложение.",
2610
+ clientId: "ID клиента",
2513
2611
  willAllow: "Это приложение сможет:",
2514
2612
  scope: {
2515
2613
  openid: "Подтверждать вашу личность",
2516
2614
  profile: "Читать основной профиль (имя, фото)",
2517
2615
  email: "Читать ваш адрес электронной почты",
2518
2616
  offlineAccess: "Оставаться в системе (обновление доступа)",
2617
+ dataRead: "Читать записи (в пределах ваших собственных прав)",
2618
+ dataWrite: "Создавать, изменять и удалять записи (в пределах ваших собственных прав)",
2619
+ actionsExecute: "Выполнять действия от вашего имени (в пределах ваших собственных прав)",
2519
2620
  },
2520
2621
  deny: "Отклонить",
2521
2622
  authorize: "Разрешить",
@@ -2558,8 +2659,8 @@ const ru = {
2558
2659
  password: {
2559
2660
  changeTitle: "Изменить пароль",
2560
2661
  setTitle: "Задать локальный пароль",
2561
- changeDescription: "Обновите пароль, который вы используете для входа в эту среду.",
2562
- setDescription: "Вы вошли через единый вход (SSO). Задайте локальный пароль, чтобы также входить в эту среду по электронной почте и паролю.",
2662
+ changeDescription: "Обновите пароль, который вы используете для входа.",
2663
+ setDescription: "Вы вошли через единый вход (SSO). Задайте локальный пароль, чтобы также входить по электронной почте и паролю.",
2563
2664
  current: "Текущий пароль",
2564
2665
  new: "Новый пароль",
2565
2666
  password: "Пароль",
@@ -2568,7 +2669,7 @@ const ru = {
2568
2669
  mismatch: "Пароли не совпадают",
2569
2670
  enterCurrent: "Введите текущий пароль",
2570
2671
  changed: "Пароль изменён.",
2571
- localSet: "Локальный пароль задан. Теперь вы можете входить в эту среду по электронной почте и паролю.",
2672
+ localSet: "Локальный пароль задан. Теперь вы можете входить по электронной почте и паролю.",
2572
2673
  changeAction: "Изменить пароль",
2573
2674
  setAction: "Задать пароль",
2574
2675
  },
@@ -2583,21 +2684,21 @@ const ru = {
2583
2684
  unknown: "Произошла непредвиденная ошибка.",
2584
2685
  },
2585
2686
  workspace: {
2586
- label: "Рабочие пространства",
2587
- default: "Моё рабочее пространство",
2588
- switch: "Переключить рабочее пространство",
2589
- createTitle: "Создать рабочее пространство",
2590
- createDescription: "Рабочее пространство — это общее место для совместной работы вашей команды.",
2591
- createButton: "Создать рабочее пространство",
2592
- nameLabel: "Имя рабочего пространства",
2687
+ label: "Организации",
2688
+ default: "Моя организация",
2689
+ switch: "Переключить организацию",
2690
+ createTitle: "Создать организацию",
2691
+ createDescription: "Организация — это общее место для совместной работы вашей команды.",
2692
+ createButton: "Создать организацию",
2693
+ nameLabel: "Название организации",
2593
2694
  namePlaceholder: "например, Acme Inc",
2594
2695
  slugLabel: "URL-слаг",
2595
2696
  slugHint: "Используется в URL. Только строчные буквы, цифры и дефисы.",
2596
2697
  invite: "Пригласить участника",
2597
2698
  members: "Участники",
2598
- settings: "Настройки рабочего пространства",
2699
+ settings: "Настройки организации",
2599
2700
  multiOrgDisabled: "Создание новых организаций отключено в этой среде.",
2600
- createFailed: 'Не удалось создать рабочее пространство',
2701
+ createFailed: 'Не удалось создать организацию',
2601
2702
  },
2602
2703
  help: {
2603
2704
  onThisPage: "На этой странице",
@@ -2605,6 +2706,12 @@ const ru = {
2605
2706
  appDocs: 'Документация приложения',
2606
2707
  allDocs: 'Вся документация',
2607
2708
  onlineDocs: 'Онлайн-документация',
2709
+ loadingDocumentation: 'Загрузка документации',
2710
+ about: 'О программе',
2711
+ aboutTitle: 'Об этой консоли',
2712
+ aboutDescription: 'Сборка, из которой скомпилирована эта консоль.',
2713
+ aboutBuild: 'Сборка консоли',
2714
+ aboutBuildUnknown: 'Неизвестная сборка (при сборке этой консоли версия не была задана)',
2608
2715
  },
2609
2716
  sidebar: {
2610
2717
  packageManagement: "Управление пакетами",
@@ -2619,18 +2726,16 @@ const ru = {
2619
2726
  area: "Область",
2620
2727
  scope: "Область",
2621
2728
  recent: "Недавние",
2622
- favorites: "Избранное",
2623
2729
  starred: "Отмеченные",
2624
2730
  removeFromFavorites: "Убрать {{name}} из избранного",
2731
+ allReports: "Все отчёты",
2625
2732
  },
2626
2733
  topbar: {
2627
2734
  openAssistant: "Открыть ассистента {{name}}",
2628
2735
  offline: "Не в сети",
2629
2736
  usersOnline: "Пользователи сейчас в сети",
2630
2737
  switchView: "Сменить представление",
2631
- switchObject: "Сменить объект",
2632
2738
  connection: {
2633
- connected: "Подключено",
2634
2739
  connecting: "Подключение…",
2635
2740
  reconnecting: "Переподключение…",
2636
2741
  disconnected: "Отключено",
@@ -2643,23 +2748,22 @@ const ru = {
2643
2748
  },
2644
2749
  aiAssistant: "ИИ-ассистент",
2645
2750
  designInStudio: "Дизайн в Studio",
2751
+ editApp: "Редактировать приложение",
2646
2752
  },
2647
2753
  home: {
2648
2754
  build: {
2649
2755
  title: "Создать приложение",
2650
- subtitle: "Начните с нуля — спроектируйте объекты, формы, автоматизации и интерфейсы.",
2651
- noCapability: "Создание приложений недоступно в этом рабочем пространстве — для этого нужно разрешение «Управление метаданными», которого нет у вашей учётной записи.",
2756
+ noCapability: "Создание приложений недоступно в этой системе — для этого нужно разрешение «Управление метаданными», которого нет у вашей учётной записи.",
2652
2757
  },
2653
2758
  template: {
2654
2759
  title: "Начать с шаблона",
2655
- subtitle: "Установите шаблонное приложение из маркетплейса и настройте его под себя.",
2656
2760
  marketplaceDisabled: "Для этого рантайма не настроен маркетплейс приложений, поэтому здесь нет шаблонов для установки.",
2657
2761
  },
2658
2762
  welcomeAdminDescription: "Опишите свой бизнес одним предложением — ИИ создаст объекты, экраны, API и инструменты агента. Либо настройте всё сами через меню слева.",
2659
2763
  welcomeAdminDescriptionNoBuild: "Настройте первое приложение через меню «Администрирование» слева. Когда появятся данные, ИИ-ассистент поможет их изучить.",
2660
2764
  welcomeAdminDescriptionNoAi: "Настройте первое приложение через меню «Администрирование» слева.",
2661
2765
  noAppsTitle: "Приложений пока нет",
2662
- noAppsDescription: "Ваше рабочее пространство настраивается — приложения, которыми поделится администратор, появятся здесь.",
2766
+ noAppsDescription: "Система настраивается — приложения, которыми поделится администратор, появятся здесь.",
2663
2767
  buildWithAI: "Создать с помощью ИИ",
2664
2768
  askAI: "Спросить ИИ",
2665
2769
  recoveryReminder: {
@@ -2668,11 +2772,17 @@ const ru = {
2668
2772
  dismiss: "Закрыть",
2669
2773
  },
2670
2774
  pendingDrafts: {
2671
- message: "У вас {{count}} неопубликованных изменений — опубликуйте их, чтобы они вступили в силу.",
2672
- message_one: "У вас {{count}} неопубликованное изменение — опубликуйте его, чтобы оно вступило в силу.",
2673
- message_few: "У вас {{count}} неопубликованных изменения — опубликуйте их, чтобы они вступили в силу.",
2674
- message_many: "У вас {{count}} неопубликованных изменений — опубликуйте их, чтобы они вступили в силу.",
2675
- message_other: "У вас {{count}} неопубликованного изменения — опубликуйте их, чтобы они вступили в силу.",
2775
+ // objectui#12602 — the drafts row in Home's "My work" section: the
2776
+ // count, then the first draft names joined by `nameSeparator`, in
2777
+ // their package when they share one.
2778
+ title: "{{count}} неопубликованных изменений",
2779
+ title_one: "{{count}} неопубликованное изменение",
2780
+ title_few: "{{count}} неопубликованных изменения",
2781
+ title_many: "{{count}} неопубликованных изменений",
2782
+ title_other: "{{count}} неопубликованного изменения",
2783
+ inPackage: "{{names}} ожидают публикации в {{package}}",
2784
+ waiting: "{{names}} ожидают публикации",
2785
+ nameSeparator: ", ",
2676
2786
  cta: "Опубликовать",
2677
2787
  publishing: "Публикация…",
2678
2788
  published: "Опубликовано! Изменения вступили в силу.",
@@ -2694,11 +2804,18 @@ const ru = {
2694
2804
  showMoreApps: "Ещё",
2695
2805
  showLess: "Свернуть",
2696
2806
  continueEmpty: "Открытые вами элементы появятся здесь.",
2697
- actionCenter: {
2698
- title: "Требует вашего внимания",
2699
- empty: "Всё выполнено",
2807
+ // objectui#12602 — Home's "My work" section: its heading, the link to the
2808
+ // full inbox, each column's title, "view all" link and empty line.
2809
+ myWork: {
2810
+ title: "Моя работа",
2811
+ openInbox: "Открыть входящие",
2812
+ viewAll: "Показать все",
2813
+ approvals: "Ожидают одобрения",
2814
+ approvalsEmpty: "Нет заявок на одобрение",
2815
+ notifications: "Уведомления",
2816
+ notificationsEmpty: "Нет непрочитанных уведомлений",
2700
2817
  },
2701
- loading: "Загрузка рабочего пространства…",
2818
+ loading: "Загрузка…",
2702
2819
  welcome: "Добро пожаловать в ObjectUI",
2703
2820
  welcomeDescription: "Начните с создания вашего первого приложения или настройки системы.",
2704
2821
  createFirstApp: "Создайте первое приложение",
@@ -2709,7 +2826,7 @@ const ru = {
2709
2826
  manageObjects: "Управление объектами",
2710
2827
  manageObjectsDesc: "Настройте модели данных",
2711
2828
  systemSettings: "Системные настройки",
2712
- systemSettingsDesc: "Настройте рабочее пространство",
2829
+ systemSettingsDesc: "Настройте систему",
2713
2830
  },
2714
2831
  appCard: {
2715
2832
  noDescription: "Без описания",
@@ -2719,7 +2836,19 @@ const ru = {
2719
2836
  greetingAfternoon: "Добрый день",
2720
2837
  greetingEvening: "Добрый вечер",
2721
2838
  greetingNight: "Ночная смена",
2722
- heroTagline: "Продолжите с того места, где остановились, или откройте что-то новое.",
2839
+ greetingSeparator: ", ",
2840
+ greetingEnd: ".",
2841
+ search: "Поиск приложений, записей, страниц…",
2842
+ summary: {
2843
+ approvals: "Сегодня {{count}} запросов ждут вашего согласования",
2844
+ approvals_one: "Сегодня {{count}} запрос ждёт вашего согласования",
2845
+ approvals_few: "Сегодня {{count}} запроса ждут вашего согласования",
2846
+ approvals_many: "Сегодня {{count}} запросов ждут вашего согласования",
2847
+ approvals_other: "Сегодня {{count}} запроса ждут вашего согласования",
2848
+ none: "Сегодня ничего не ждёт вашего внимания",
2849
+ },
2850
+ addApp: "Добавить приложение",
2851
+ appOpened: "{{time}}",
2723
2852
  open: "Открыть",
2724
2853
  recentApps: {
2725
2854
  title: "Недавно открытые",
@@ -2728,6 +2857,8 @@ const ru = {
2728
2857
  dashboard: "Панель",
2729
2858
  page: "Страница",
2730
2859
  report: "Отчёт",
2860
+ package: "Пакет",
2861
+ view: "Представление списка",
2731
2862
  record: "Запись",
2732
2863
  metadata: "Метаданные",
2733
2864
  },
@@ -2765,11 +2896,17 @@ const ru = {
2765
2896
  manageAllApps: "Управление приложениями",
2766
2897
  systemConsole: "Системная консоль",
2767
2898
  noAppsConfigured: "Нет приложений",
2899
+ allApps: "Все приложения",
2900
+ editAppInStudio: "Редактировать {{app}} в Studio",
2901
+ backToHome: "Вернуться на главную",
2902
+ settings: "Настройки",
2903
+ productHome: "Главная {{product}}",
2768
2904
  },
2769
2905
  activityFeed: {
2770
2906
  title: "Последние действия",
2771
2907
  filter: "Фильтр",
2772
2908
  empty: "Нет действий",
2909
+ accessDenied: "У вас нет разрешения на просмотр активности.",
2773
2910
  ariaLabel: "Лента активности",
2774
2911
  typeCreate: "Создание",
2775
2912
  typeUpdate: "Обновление",
@@ -2841,11 +2978,19 @@ const ru = {
2841
2978
  appAccessDenied: "У вас нет доступа к этому приложению",
2842
2979
  appAccessDeniedDescription: "Это приложение существует, но у вашей учётной записи нет прав на его открытие. Обратитесь к администратору за доступом.",
2843
2980
  appAccessDeniedHome: "На главную",
2981
+ appNothingAvailable: "В {{app}} пока нет ничего доступного для вас",
2982
+ appNothingAvailableDescription: "В этом приложении нет страниц, которые может открыть ваша учётная запись. Обратитесь к администратору за доступом.",
2983
+ appNothingAvailableGrantDescription: "В этом приложении нет страниц, которые может открыть ваша учётная запись. Доступ можно предоставить в разделе настройки.",
2984
+ openSetup: "Открыть настройку",
2844
2985
  createFirstApp: "Создать приложение",
2845
2986
  systemSettings: "Системные настройки",
2846
2987
  back: "Назад",
2847
2988
  recordNotFound: "Запись не найдена",
2848
2989
  recordNotFoundDescription: "Искомая запись не существует или была удалена.",
2990
+ recordAccessDenied: "Нет доступа к записям «{{object}}»",
2991
+ recordAccessDeniedDescription: "У вас нет прав на просмотр записей этого типа. Обратитесь к администратору, если считаете, что доступ вам нужен.",
2992
+ recordLoadFailed: "Не удалось загрузить эту запись",
2993
+ recordLoadFailedDescription: "При загрузке произошла ошибка. Проверьте соединение и попробуйте снова.",
2849
2994
  },
2850
2995
  actionDialog: {
2851
2996
  title: "Параметры действия",
@@ -2878,12 +3023,17 @@ const ru = {
2878
3023
  updateFailed: "Не удалось обновить навигацию",
2879
3024
  },
2880
3025
  objectActions: {
2881
- resetPackageSetConfirm: "Этот набор разрешений поставляется с установленным пакетом и не может быть удалён. Удаление сбросит его к исходному состоянию из пакета и отменит ваши настройки в этой среде. Продолжить?",
2882
- resetPackageSetSuccess: "Набор разрешений сброшен к исходному состоянию из пакета",
2883
3026
  deleteSuccess: "{{label}} успешно удалён",
2884
3027
  deleteFailed: "Не удалось удалить {{label}}",
2885
3028
  noRecordId: "ID записи не указан",
2886
3029
  deleteConfirm: "Удалить эту запись?",
3030
+ deleteConfirmTitle: "Удалить {{label}} \"{{name}}\"?",
3031
+ bulkDeleteConfirmTitle: "Удалить {{count}} записей {{label}}?",
3032
+ bulkDeleteConfirmTitle_one: "Удалить {{count}} запись {{label}}?",
3033
+ bulkDeleteConfirmTitle_few: "Удалить {{count}} записи {{label}}?",
3034
+ bulkDeleteConfirmTitle_many: "Удалить {{count}} записей {{label}}?",
3035
+ bulkDeleteConfirmTitle_other: "Удалить {{count}} записи {{label}}?",
3036
+ deleteConfirmButton: "Удалить",
2887
3037
  bulkDeleteSuccess: "{{count}} записей {{label}} удалено",
2888
3038
  bulkDeleteSuccess_one: "Удалена {{count}} запись {{label}}",
2889
3039
  bulkDeleteSuccess_few: "Удалено {{count}} записи {{label}}",
@@ -2921,6 +3071,7 @@ const ru = {
2921
3071
  loading: "Загрузка…",
2922
3072
  failedToLoad: "Не удалось загрузить матрицу: {{message}}",
2923
3073
  needsAcross: "Матричный отчёт требует хотя бы одно поле `groupingsAcross`.",
3074
+ forbiddenMessage: "У вас нет прав на просмотр данных этого отчёта.",
2924
3075
  aggregate: {
2925
3076
  count: "Количество",
2926
3077
  countDistinct: "Уникальные",
@@ -2935,18 +3086,18 @@ const ru = {
2935
3086
  },
2936
3087
  },
2937
3088
  organizations: {
2938
- create: "Создать рабочее пространство",
2939
- mine: "Мои рабочие пространства",
2940
- title: "Рабочие пространства",
2941
- heading: "Ваши рабочие пространства",
2942
- subtitle: "Выберите рабочее пространство, чтобы продолжить, или создайте новое.",
2943
- searchPlaceholder: "Поиск рабочего пространства",
2944
- new: "Новое рабочее пространство",
2945
- current: "Текущее рабочее пространство",
3089
+ create: "Создать организацию",
3090
+ mine: "Мои организации",
3091
+ title: "Организации",
3092
+ heading: "Ваши организации",
3093
+ subtitle: "Выберите организацию, чтобы продолжить, или создайте новую.",
3094
+ searchPlaceholder: "Поиск организации",
3095
+ new: "Новая организация",
3096
+ current: "Текущая организация",
2946
3097
  manage: "Управление",
2947
- emptyTitle: "Пока нет рабочих пространств",
2948
- emptyDescription: "Создайте своё первое рабочее пространство, чтобы начать.",
2949
- noMatches: "Нет рабочих пространств, соответствующих запросу.",
3098
+ emptyTitle: "Пока нет организаций",
3099
+ emptyDescription: "Создайте свою первую организацию, чтобы начать.",
3100
+ noMatches: "Нет организаций, соответствующих запросу.",
2950
3101
  },
2951
3102
  organization: {
2952
3103
  roles: {
@@ -3031,6 +3182,7 @@ const ru = {
3031
3182
  readOnlyNote: "Изменять настройки могут только владельцы.",
3032
3183
  nameLabel: "Название организации",
3033
3184
  slugLabel: "Слаг",
3185
+ slugLockedNote: "У этой организации есть активные окружения, поэтому её слаг нельзя изменить здесь: переименование также переносит их поддомены.",
3034
3186
  logoLabel: "Логотип",
3035
3187
  logoUpload: "Загрузить",
3036
3188
  logoReplace: "Заменить",
@@ -3107,8 +3259,16 @@ const ru = {
3107
3259
  noPendingApprovals: "Нет ожидающих утверждений",
3108
3260
  openApprovalsInbox: "Открыть входящие утверждений",
3109
3261
  badgeTotal: "Всего: {{total}}",
3110
- badgeNotifications: "{{unread}} уведомлений",
3111
- badgeApprovals: "{{approvals}} ожидающих утверждений",
3262
+ badgeNotifications: "{{count}} уведомлений",
3263
+ badgeNotifications_one: "{{count}} уведомление",
3264
+ badgeNotifications_few: "{{count}} уведомления",
3265
+ badgeNotifications_many: "{{count}} уведомлений",
3266
+ badgeNotifications_other: "{{count}} уведомления",
3267
+ badgeApprovals: "{{count}} ожидающих утверждений",
3268
+ badgeApprovals_one: "{{count}} ожидающее утверждение",
3269
+ badgeApprovals_few: "{{count}} ожидающих утверждения",
3270
+ badgeApprovals_many: "{{count}} ожидающих утверждений",
3271
+ badgeApprovals_other: "{{count}} ожидающего утверждения",
3112
3272
  arrivalMany: "Новых сообщений: {{count}}",
3113
3273
  arrivalMany_one: "Новых сообщений: {{count}}",
3114
3274
  arrivalMany_few: "Новых сообщений: {{count}}",
@@ -3157,10 +3317,10 @@ const ru = {
3157
3317
  body: 'Поверхность MCP выключена (OS_MCP_SERVER_ENABLED=false). Попросите оператора включить её снова.',
3158
3318
  },
3159
3319
  url: {
3160
- title: 'MCP-эндпоинт этого окружения',
3320
+ title: 'MCP-эндпоинт этой системы',
3161
3321
  body: 'Любой ИИ-клиент с поддержкой MCP подключается по этому URL. Идентификация — самообслуживание: развертывание само является сервером авторизации OAuth 2.1 — вы входите под своим именем, и каждый вызов выполняется в рамках ваших прав и строковой безопасности.',
3162
3322
  downloadSkill: 'Скачать SKILL.md',
3163
- skillHint: 'Переносимый навык агента: учит любого совместимого агента работать с этим окружением.',
3323
+ skillHint: 'Переносимый навык агента: учит любого совместимого агента работать с этой системой.',
3164
3324
  },
3165
3325
  claude: {
3166
3326
  body: 'Настройки → Коннекторы → Добавить пользовательский коннектор, вставьте этот URL и войдите через браузер.',
@@ -3205,15 +3365,8 @@ const ru = {
3205
3365
  importAction: "Импорт",
3206
3366
  dismiss: "Скрыть",
3207
3367
  },
3208
- cloudOnboarding: {
3209
- hintCreate: "Создайте первое окружение — отдельное рабочее пространство со своим URL, базой данных и тарифом. Разработка ведётся внутри него.",
3210
- hintReady: "Продакшн-окружение готово. Откройте его, чтобы создавать и запускать приложения — всё происходит внутри окружения.",
3211
- createEnvironment: "Создать окружение",
3212
- openProduction: "Открыть продакшн",
3213
- manageEnvironments: "Управление окружениями",
3214
- },
3215
- cloudPlanStatus: {
3216
- current: "Текущий тариф",
3368
+ cloudWorkspaceTimezoneNotice: {
3369
+ seeded: "Часовой пояс окружения был задан по вашему браузеру при его создании: {{zone}}. Его можно изменить в разделе «Настройки → Локализация».",
3217
3370
  },
3218
3371
  ai: {
3219
3372
  nlQuery: {
@@ -3294,8 +3447,8 @@ const ru = {
3294
3447
  rowConversational: "Модель Build / Ask",
3295
3448
  rowStructured: "Структурированный (blueprint / seed)",
3296
3449
  rowReasoning: "Интенсивность рассуждений",
3297
- readFailed: "Не удалось прочитать действующую модель ИИ. В этом окружении может не быть запущен сервис ИИ, либо у вас нет разрешения ai:read.",
3298
- readFailedWithStatus: "Не удалось прочитать действующую модель ИИ (HTTP {{status}}). В этом окружении может не быть запущен сервис ИИ, либо у вас нет разрешения ai:read.",
3450
+ readFailed: "Не удалось прочитать действующую модель ИИ. В этой системе может не быть запущен сервис ИИ, либо у вас нет разрешения ai:read.",
3451
+ readFailedWithStatus: "Не удалось прочитать действующую модель ИИ (HTTP {{status}}). В этой системе может не быть запущен сервис ИИ, либо у вас нет разрешения ai:read.",
3299
3452
  overridesInEffect: "Действующие переопределения: ",
3300
3453
  noOverrides: "нет — используются значения по умолчанию развёрнутого кода.",
3301
3454
  adapter: "Адаптер: ",
@@ -3313,9 +3466,13 @@ const ru = {
3313
3466
  // against). `humanizeToolName` looks each up as
3314
3467
  // `chatbot.tool.<tool_name>` and falls back to its English
3315
3468
  // title-caser for a custom / third-party tool, so a name
3316
- // missing here is degraded, never broken. The `en` values
3317
- // are deliberately EQUAL to what that title-caser produces:
3318
- // adding the key must not silently reword the English UI.
3469
+ // missing here is degraded, never broken. Every value, `en`
3470
+ // included, is a short sentence in the pack's language
3471
+ // saying what the step does (cloud#2927 Target 3, ruled
3472
+ // 「同意」; objectui#12724): never the tool id, and never
3473
+ // the title-caser's output for it, which is how the step
3474
+ // reads for a tool the pack has no entry for.
3475
+ // `toolLabels-locale-parity-7481` holds both.
3319
3476
  // `toolState.*` — the card-header badge + activity-chip vocabulary. ONE
3320
3477
  // set for both surfaces (they used to carry separate
3321
3478
  // tables and disagreed on casing).
@@ -3333,42 +3490,48 @@ const ru = {
3333
3490
  // pin advances, `chatbotToolLabels-locale-parity-7481` starts checking them
3334
3491
  // against the registry instead of against its own hand-held list.
3335
3492
  chatbot: {
3493
+ answer: {
3494
+ showFull: 'Показать ответ полностью',
3495
+ collapse: 'Свернуть',
3496
+ expandTable: 'Развернуть',
3497
+ exitExpandedTable: 'Закрыть',
3498
+ },
3336
3499
  tool: {
3337
- aggregate_data: "Сводка данных",
3338
- get_record: "Получить запись",
3339
- query_data: "Запросить данные",
3340
- query_records: "Запросить записи",
3341
- search_knowledge: "Поиск по базе знаний",
3342
- visualize_data: "Построить график",
3343
- add_field: "Добавить поле",
3344
- apply_blueprint: "Собрать приложение",
3345
- apply_edit: "Применить изменения",
3346
- create_metadata: "Создать метаданные",
3347
- create_object: "Создать объект",
3348
- create_package: "Создать пакет",
3349
- create_seed: "Сгенерировать примеры данных",
3350
- delete_field: "Удалить поле",
3351
- describe_metadata: "Посмотреть метаданные",
3352
- describe_object: "Посмотреть структуру объекта",
3353
- get_active_package: "Получить активный пакет",
3354
- get_authoring_rules: "Читать правила разработки",
3355
- get_metadata_schema: "Получить схему метаданных",
3356
- get_package: "Получить пакет",
3357
- list_metadata: "Список метаданных",
3358
- list_objects: "Список объектов",
3359
- list_packages: "Список пакетов",
3360
- load_tools: "Загрузить инструменты",
3361
- modify_field: "Изменить поле",
3362
- open_record: "Открыть запись",
3363
- propose_blueprint: "Спроектировать приложение",
3364
- set_active_package: "Сменить активный пакет",
3365
- suggest_builder: "Предложить способ сборки",
3366
- test_flow: "Проверить процесс",
3367
- todo_write: "Записать задачи",
3368
- toggle_flow: "Включить или выключить процесс",
3369
- update_metadata: "Обновить метаданные",
3370
- validate_expression: "Проверить выражение",
3371
- verify_build: "Проверить сборку",
3500
+ aggregate_data: "Агрегировать данные",
3501
+ get_record: "Прочитать запись",
3502
+ query_data: "Запросить нужные данные",
3503
+ query_records: "Найти нужные записи",
3504
+ search_knowledge: "Поискать в базе знаний",
3505
+ visualize_data: "Показать данные на графике",
3506
+ add_field: "Добавить поле в объект",
3507
+ apply_blueprint: "Собрать приложение по плану",
3508
+ apply_edit: "Применить это изменение",
3509
+ create_metadata: "Создать элемент метаданных",
3510
+ create_object: "Создать новый объект",
3511
+ create_package: "Создать новый пакет",
3512
+ create_seed: "Сгенерировать примеры данных для объектов",
3513
+ delete_field: "Удалить одно поле",
3514
+ describe_metadata: "Изучить метаданные",
3515
+ describe_object: "Изучить структуру объекта",
3516
+ get_active_package: "Проверить активный пакет",
3517
+ get_authoring_rules: "Прочитать правила разработки",
3518
+ get_metadata_schema: "Изучить формат метаданных",
3519
+ get_package: "Посмотреть сведения о пакете",
3520
+ list_metadata: "Перечислить имеющиеся метаданные",
3521
+ list_objects: "Перечислить имеющиеся объекты",
3522
+ list_packages: "Перечислить имеющиеся пакеты",
3523
+ load_tools: "Загрузить другие инструменты",
3524
+ modify_field: "Изменить одно поле",
3525
+ open_record: "Открыть эту запись",
3526
+ propose_blueprint: "Составить план приложения",
3527
+ set_active_package: "Переключиться на нужный пакет",
3528
+ suggest_builder: "Предложить собрать с помощью ИИ",
3529
+ test_flow: "Пробно запустить процесс",
3530
+ todo_write: "Записать, что проверить позже",
3531
+ toggle_flow: "Включить или отключить процесс",
3532
+ update_metadata: "Обновить элемент метаданных",
3533
+ validate_expression: "Проверить корректность выражения",
3534
+ verify_build: "Сверить результат сборки",
3372
3535
  },
3373
3536
  toolState: {
3374
3537
  agentActivity: "Действия агента",
@@ -3381,6 +3544,17 @@ const ru = {
3381
3544
  denied: "Отклонено",
3382
3545
  failed: "Ошибка выполнения",
3383
3546
  },
3547
+ phase: {
3548
+ build: "Сборка",
3549
+ design: "Проектирование плана",
3550
+ stepCount: "шагов: {{count}}",
3551
+ stepCount_one: "{{count}} шаг",
3552
+ stepCount_few: "{{count}} шага",
3553
+ stepCount_many: "{{count}} шагов",
3554
+ stepCount_other: "{{count}} шага",
3555
+ expand: "Показать шаги",
3556
+ collapse: "Скрыть шаги",
3557
+ },
3384
3558
  plan: {
3385
3559
  countObjects: "объектов: {{count}}",
3386
3560
  countObjects_one: "{{count}} объект",
@@ -3398,10 +3572,17 @@ const ru = {
3398
3572
  countDashboards_many: "{{count}} дашбордов",
3399
3573
  countDashboards_other: "{{count}} дашборда",
3400
3574
  countSeedData: "демоданные",
3575
+ extendTarget: "Добавление в существующее приложение: {{app}}",
3576
+ awaitingConfirm: "Ожидает подтверждения",
3577
+ objectsAndFields: "Объекты и поля",
3578
+ views: "Представления",
3579
+ suggestedField: "предложено",
3580
+ nameField: "Название: {{field}}",
3401
3581
  },
3402
3582
  build: {
3403
3583
  building: "Создание {{app}}…",
3404
3584
  built: "Создание {{app}} завершено",
3585
+ builtAndLive: "Создано и опубликовано · {{app}}",
3405
3586
  appFallback: "вашего приложения",
3406
3587
  addingSampleData: "добавление демоданных",
3407
3588
  group: {
@@ -3412,6 +3593,49 @@ const ru = {
3412
3593
  seed: "Демоданные",
3413
3594
  },
3414
3595
  moreArtifacts: "ещё {{n}}",
3596
+ verifying: "Проверка изменения…",
3597
+ verifyStep: "шаг {{n}}",
3598
+ verified: "Изменение проверено",
3599
+ unknownPhase: "Неизвестный этап сборки",
3600
+ nextStepsLead: "Дальше можно сказать: {{steps}}",
3601
+ nextStepQuote: "«{{step}}»",
3602
+ draftPosture: "Дальнейшие изменения сохраняются как черновики, а публикуете их вы в Studio.",
3603
+ checksPassed: "Проверки пройдены {{passed}}/{{total}}",
3604
+ },
3605
+ changes: {
3606
+ planTitle: "План изменений · изменений: {{count}}",
3607
+ planTitle_one: "План изменений · {{count}} изменение",
3608
+ planTitle_few: "План изменений · {{count}} изменения",
3609
+ planTitle_many: "План изменений · {{count}} изменений",
3610
+ planTitle_other: "План изменений · {{count}} изменения",
3611
+ saveDraft: "Сохранить как черновик",
3612
+ reviewAndPublish: "Проверить изменения и опубликовать",
3613
+ undo: "Отменить",
3614
+ undoWithOthers: "Отменить (других черновиков: {{count}})",
3615
+ undoWithOthers_one: "Отменить (и ещё {{count}} черновик)",
3616
+ undoWithOthers_few: "Отменить (и ещё {{count}} черновика)",
3617
+ undoWithOthers_many: "Отменить (и ещё {{count}} черновиков)",
3618
+ undoWithOthers_other: "Отменить (и ещё {{count}} черновика)",
3619
+ undoConfirm: "Отмена удалит все неопубликованные черновики этого пакета ({{total}}), из них не относятся к этому изменению: {{count}}.",
3620
+ undoConfirm_one: "Отмена удалит все неопубликованные черновики этого пакета ({{total}}), из них {{count}} не относится к этому изменению.",
3621
+ undoConfirm_few: "Отмена удалит все неопубликованные черновики этого пакета ({{total}}), из них {{count}} не относятся к этому изменению.",
3622
+ undoConfirm_many: "Отмена удалит все неопубликованные черновики этого пакета ({{total}}), из них {{count}} не относятся к этому изменению.",
3623
+ undoConfirm_other: "Отмена удалит все неопубликованные черновики этого пакета ({{total}}), из них {{count}} не относятся к этому изменению.",
3624
+ undoConfirmUnknown: "Отмена удалит все неопубликованные черновики этого пакета, а не только это изменение.",
3625
+ undoConfirmAction: "Отменить всё",
3626
+ undoCancel: "Не отменять",
3627
+ undoing: "Отмена…",
3628
+ undone: "Отменено",
3629
+ undoFailed: "Не удалось отменить",
3630
+ kind: {
3631
+ field: "Поле",
3632
+ object: "Объект",
3633
+ view: "Представление",
3634
+ dashboard: "Дашборд",
3635
+ app: "Приложение",
3636
+ seed: "Демоданные",
3637
+ package: "Пакет приложения",
3638
+ },
3415
3639
  },
3416
3640
  },
3417
3641
  chatbotError: {
@@ -3427,10 +3651,13 @@ const ru = {
3427
3651
  buyCredits: "Купить пакет кредитов",
3428
3652
  upgradePlan: "Повысить тариф",
3429
3653
  },
3654
+ planTier: {
3655
+ teamAndUp: "Тариф Team и выше",
3656
+ },
3430
3657
  environment: {
3431
- addEnvironment: "Добавить окружение",
3432
3658
  setUpProduction: "Настройте продакшн-окружение",
3433
3659
  addDevelopment: "Добавить окружение разработки",
3660
+ developmentLocked: "Окружения разработки · {{tier}}",
3434
3661
  // Plan/capacity dialog (EnvironmentEntitlementDialog) — cloud#959.
3435
3662
  entitlement: {
3436
3663
  productionLimitTitle: "У вас уже есть продакшн-окружение",
@@ -3478,7 +3705,7 @@ const ru = {
3478
3705
  },
3479
3706
  unbound: {
3480
3707
  title: "Не подключено",
3481
- body: "Подключите эту среду выполнения к управляющему слою ObjectStack, чтобы просматривать приватные пакеты вашей организации и устанавливать их здесь. Подтверждение — один клик в вашей облачной учётной записи; никакие идентификаторы и учётные данные на этой странице не вводятся.",
3708
+ body: "Эта среда выполнения не подключена к управляющему слою. «Подключить» открывает вашу облачную учётную запись в новом окне, где подключение подтверждается одним кликом; никакие идентификаторы и учётные данные на этой странице не вводятся.",
3482
3709
  connect: "Подключить",
3483
3710
  },
3484
3711
  },
@@ -3491,6 +3718,13 @@ const ru = {
3491
3718
  dismiss: "Закрыть",
3492
3719
  confirmedToast: "«{{set}}» теперь предоставлен: {{anchor}}.",
3493
3720
  dismissedToast: "Предложение по «{{set}}» закрыто.",
3721
+ guestUnsupported: "Здесь предоставить нельзя: наборы позиции Guest не выводятся из принятых предложений.",
3722
+ acceptedState: "«{{set}}» принят для всех вошедших пользователей (позиция Everyone).",
3723
+ notInForceState: "«{{set}}» принят, но ещё не действует: этот запрос не изменил позицию Everyone. Причина указана в журнале сервера.",
3724
+ dismissedState: "«{{set}}» не предоставлен: предложение закрыто или отозвано.",
3725
+ revoke: "Отозвать",
3726
+ revoking: "Отзыв…",
3727
+ revokedToast: "Принятие «{{set}}» отозвано.",
3494
3728
  },
3495
3729
  title: "Маркетплейс приложений",
3496
3730
  subtitle: "Просматривайте одобренные приложения из каталога ObjectStack. Нажмите на приложение, чтобы увидеть подробности и установить его.",
@@ -3504,21 +3738,26 @@ const ru = {
3504
3738
  noMatchFilters: "Нет приложений, соответствующих фильтрам.",
3505
3739
  noDescription: "Описание отсутствует.",
3506
3740
  back: "Назад в маркетплейс",
3507
- installedTitle: "Установленные приложения",
3508
- installedSubtitle: "Пакеты маркетплейса, установленные в ядре этого рантайма.",
3509
- installedEmpty: "Пока нет установленных приложений.",
3510
3741
  browseLink: "Маркетплейс →",
3511
- installedAdditiveNote: "<strong>Примечание:</strong> API ядра только аддитивный — удаление убирает манифест с диска, чтобы пакет не загружался при следующем запуске, но работающее ядро держит приложение зарегистрированным до перезапуска.",
3512
- installedAt: "Установлено {{when}}",
3513
- installedBy: "пользователем {{user}}",
3514
- installedPackageId: "Пакет",
3515
- cachedAs: "Кэшировано как <code>{{path}}</code>",
3742
+ installedAdditiveNote: "Удаление сразу убирает приложение из работающего ядра вместе с его наборами разрешений и их назначениями, а также удаляет кэшированный манифест, чтобы пакет не загружался при следующем запуске. Записи, хранящиеся в его объектах, остаются в базе данных.",
3516
3743
  versionBadge: "v{{version}}",
3517
3744
  installedBadge: "Установлено v{{version}}",
3745
+ // objectui#11645 — an install-local entry this runtime refused to load at
3746
+ // startup (the listing's `notLoaded` marker), read on Installed Apps.
3747
+ notLoaded: {
3748
+ badge: "Не загружен",
3749
+ protocolIncompatible: "Рантайм не загрузил этот пакет: он рассчитан на протокол {{requiredRange}}, который этот рантайм не поддерживает.",
3750
+ otherReason: "Рантайм не загрузил этот пакет ({{code}}).",
3751
+ },
3518
3752
  load: {
3519
3753
  failed: "Не удалось загрузить маркетплейс",
3520
3754
  failedHintConfigured: "Этот рантайм обращается к маркетплейсу через control plane по адресу {{url}}. Убедитесь, что он доступен и достижим отсюда.",
3521
- failedHintSameOrigin: "Этот рантайм сам обслуживает каталог маркетплейса. Убедитесь, что рантайм онлайн.",
3755
+ failedHintSameOrigin: "Каталог маркетплейса доступен через этот рантайм. Убедитесь, что рантайм онлайн и имеет доступ к каталогу.",
3756
+ loading: "Загрузка каталога маркетплейса…",
3757
+ slow: "Всё ещё загружается — каталог маркетплейса медленно отвечает.",
3758
+ retry: "Повторить",
3759
+ unreachable: "Не удалось связаться с каталогом маркетплейса.",
3760
+ answeredError: "Каталог маркетплейса ответил ошибкой (HTTP {{status}}).",
3522
3761
  packageFailed: "Не удалось загрузить пакет",
3523
3762
  notFound: "Не найдено.",
3524
3763
  },
@@ -3564,6 +3803,7 @@ const ru = {
3564
3803
  working: "Обработка…",
3565
3804
  installToCloud: "Установить в облако…",
3566
3805
  installing: "Установка…",
3806
+ updating: "Обновление…",
3567
3807
  uninstall: "Удалить",
3568
3808
  uninstalling: "Удаление…",
3569
3809
  details: "Подробности",
@@ -3581,15 +3821,45 @@ const ru = {
3581
3821
  environmentPlaceholder: "Выбрать среду",
3582
3822
  includeSampleData: "Включить образцы данных",
3583
3823
  noEnvs: "В активной организации нет сред.",
3584
- noPermission: "Нет прав на установку. Только владельцы и администраторы могут устанавливать.",
3824
+ noPermission: "Нет прав на установку. Только владельцы и администраторы организации могут устанавливать — обратитесь к администратору вашей организации.",
3585
3825
  signInFirst: "Сначала войдите в ObjectStack Cloud.",
3586
3826
  success: "Установлено. Откройте среду, чтобы увидеть новое приложение.",
3587
3827
  localSuccess: "v{{version}} установлено. \"{{name}}\" должно появиться в переключателе.",
3828
+ localLoadsAtRestart: "v{{version}} установлено. \"{{name}}\" загрузится при следующем перезапуске среды выполнения и до этого не появится в переключателе.",
3588
3829
  localManifestConflict: "{{message}}\nПримечание: Локальное приложение уже имеет этот manifest_id. Сначала удалите его из objectstack.config.ts.",
3589
3830
  localUnauthorized: "Сначала войдите в этот рантайм.",
3590
3831
  localMarketplaceUnavailable: "OS_CLOUD_URL не настроен.",
3591
3832
  updateTo: "Обновить → v{{version}}",
3592
3833
  installedVersion: "Установлено v{{version}}",
3834
+ deploying: "Развёртывание приложения…",
3835
+ deployed: "Приложение развёрнуто и готово к работе.",
3836
+ openApp: "Открыть {{name}}",
3837
+ deployTimeout: "Установка записана, но эта среда пока не предоставляет приложение. Возможно, развёртывание ещё идёт — проверьте снова чуть позже. Если оно так и не появится, пакет мог не загрузиться, не содержать приложения или требовать разрешение, которого у вас нет.",
3838
+ checkAgain: "Проверить снова",
3839
+ // ADR-0131 D6 — the install modes a package's manifest permits, and
3840
+ // what an unmanaged install answers (MarketplacePackagePage).
3841
+ mode: {
3842
+ label: "Способ установки",
3843
+ managed: "Управляемая",
3844
+ managedHint: "Пакет остаётся источником истины: он регистрируется как код, получает свои обновления, а его элементы здесь не редактируются.",
3845
+ unmanaged: "Неуправляемая копия",
3846
+ unmanagedHint: "Однократно копируется в эту среду выполнения как её собственные метаданные: каждый элемент здесь можно редактировать, а копия не получает обновлений.",
3847
+ required: "Выберите способ установки, чтобы установить этот пакет.",
3848
+ },
3849
+ unmanagedSuccess: "v{{version}} пакета \"{{name}}\" скопирована в эту среду выполнения как её собственные метаданные, в базу {{base}}. Копию можно редактировать, обновлений она не получает.",
3850
+ unmanagedStrippedLocks: "Пакет блокировал эти элементы. Копию можно редактировать, поэтому их блокировки не скопированы:",
3851
+ unmanagedIgnored: "Эта среда выполнения не поддерживает неуправляемую установку, поэтому \"{{name}}\" установлен как управляемый (зарегистрирован как код), а не скопирован. Обновите среду выполнения, затем удалите пакет и установите его снова как неуправляемую копию.",
3852
+ },
3853
+ // objectui#12146 — the install dialog opened as an UPDATE of the copy
3854
+ // this environment holds (MarketplacePackagePage).
3855
+ update: {
3856
+ dialogTitle: "Обновить {{name}}",
3857
+ dialogDescCurrent: "Обновить копию, установленную в этой среде ({{host}}).",
3858
+ dialogDescPicker: "Выберите среду, в которой нужно обновить установленную копию. Требуется вход в ObjectStack Cloud.",
3859
+ majorNotice: "Это обновление основной версии (v{{fromMajor}} → v{{toMajor}}), оно может содержать несовместимые изменения.",
3860
+ releaseNotes: "Прочитать примечания к выпуску v{{version}}",
3861
+ success: "Обновлено до v{{version}}.",
3862
+ deployTimeout: "Обновление записано, но эта среда пока не предоставляет v{{version}}. Возможно, развёртывание ещё идёт — проверьте снова чуть позже.",
3593
3863
  },
3594
3864
  // objectui#3546 — the MarketplacePage "Your organization" strip.
3595
3865
  org: {
@@ -3622,9 +3892,11 @@ const ru = {
3622
3892
  },
3623
3893
  },
3624
3894
  uninstall: {
3625
- confirm: "Удалить {{manifestId}} v{{version}}?\n\nКэшированный манифест будет удалён.",
3626
- successInList: "{{manifestId}} удалён. Перезапустите рантайм для полной выгрузки.",
3627
- successInDetail: "Кэшированный манифест {{manifestId}} удалён.",
3895
+ confirm: "Удалить {{manifestId}} v{{version}}?\n\nПриложение сразу будет убрано из работающего ядра вместе с его наборами разрешений и их назначениями, а кэшированный манифест будет удалён. Записи, хранящиеся в его объектах, остаются в базе данных.",
3896
+ successInList: "{{manifestId}} удалён: приложение убрано из работающего ядра вместе с его наборами разрешений и их назначениями. Записи, хранящиеся в его объектах, остаются в базе данных.",
3897
+ successInDetail: "{{manifestId}} и его кэшированный манифест удалены: приложение убрано из работающего ядра вместе с его наборами разрешений и их назначениями. Записи, хранящиеся в его объектах, остаются в базе данных.",
3898
+ confirmNotLoaded: "Удалить {{manifestId}} v{{version}}?\n\nКэшированный манифест будет удалён. Рантайм не загружал этот пакет, поэтому ничего из него не запущено.",
3899
+ successNotLoaded: "{{manifestId}} удалён. Пакет не был загружен, перезапуск не требуется.",
3628
3900
  },
3629
3901
  accessDenied: {
3630
3902
  title: "Только для администраторов",
@@ -3708,6 +3980,7 @@ const ru = {
3708
3980
  progressEligible_other: 'Доступных согласующих: {{count}}',
3709
3981
  progressBar: 'Ход решения',
3710
3982
  declaredActions: 'Действия',
3983
+ decisionPanelOffRequestPage: 'Панель решения по согласованию работает только на страницах запросов на согласование.',
3711
3984
  attachmentChip: 'Вложение',
3712
3985
  attachmentOpenFailed: 'Не удалось открыть вложение — попробуйте ещё раз',
3713
3986
  approveOneTitle: 'Согласовать «{{title}}»?',
@@ -3775,6 +4048,11 @@ const ru = {
3775
4048
  emptyPending: 'Всё обработано — ничего не ожидает вашего решения.',
3776
4049
  emptyOther: 'Здесь пока пусто.',
3777
4050
  emptyViewAll: 'Все запросы',
4051
+ waitingOnOthers: "{{count}} запроса ожидают других согласующих",
4052
+ waitingOnOthers_one: "{{count}} запрос ожидает других согласующих",
4053
+ waitingOnOthers_few: "{{count}} запроса ожидают других согласующих",
4054
+ waitingOnOthers_many: "{{count}} запросов ожидают других согласующих",
4055
+ waitingOnOthers_other: "{{count}} запроса ожидают других согласующих",
3778
4056
  noMatches: 'Нет совпадений с текущими фильтрами.',
3779
4057
  keyboardHint: 'Клавиши: j/k перемещение · Enter открыть · x выбрать · a согласовать · r отклонить',
3780
4058
  drawerTitle: 'Запрос на согласование',
@@ -3792,12 +4070,12 @@ const ru = {
3792
4070
  overrideActionLabel: '{{action}} (по праву администратора)',
3793
4071
  overrideNotice: 'У вас нет места согласующего на этом шаге. Продолжив, вы воспользуетесь правом администратора: шаг будет немедленно завершён, а все согласующие, ещё не принявшие решение, будут пропущены. Решение будет записано как административное переопределение.',
3794
4072
  overrideNoticeWho: 'У вас нет места согласующего на этом шаге. Продолжив, вы воспользуетесь правом администратора: шаг будет немедленно завершён, а согласующие, ещё не принявшие решение, будут пропущены — {{who}}. Решение будет записано как административное переопределение.',
4073
+ overrideReassignNotice: 'У вас нет места согласующего на этом шаге. Продолжив, вы воспользуетесь правом администратора: шаг перейдёт выбранному вами новому согласующему, а все согласующие, ещё не принявшие решение, будут заменены. Запрос останется в ожидании решения нового согласующего. Передача будет записана как административное переопределение.',
4074
+ overrideReassignNoticeWho: 'У вас нет места согласующего на этом шаге. Продолжив, вы воспользуетесь правом администратора: шаг перейдёт выбранному вами новому согласующему, а согласующие, ещё не принявшие решение, будут заменены — {{who}}. Запрос останется в ожидании решения нового согласующего. Передача будет записана как административное переопределение.',
4075
+ overrideRecallNotice: 'Вы не отправляли этот запрос. Продолжив, вы воспользуетесь правом администратора: запрос будет отозван, согласующие, ещё не принявшие решение, больше не смогут по нему действовать, а запись будет разблокирована.',
4076
+ overrideRecallNoticeWho: 'Вы не отправляли этот запрос. Продолжив, вы воспользуетесь правом администратора: запрос будет отозван, запись будет разблокирована, а согласующие, ещё не принявшие решение, больше не смогут по нему действовать — {{who}}.',
3795
4077
  viaOverrideChip: 'Переопределение администратора',
3796
4078
  viaOverrideHint: 'У исполнителя не было места согласующего на этом шаге — допущен по пути административного переопределения.',
3797
- rawData: 'Исходные данные (JSON)',
3798
- copy: 'Копировать',
3799
- copied: 'Скопировано',
3800
- copyFailed: 'Не удалось скопировать',
3801
4079
  overrideActor: 'Действовать от другого имени (админ)',
3802
4080
  actor: 'Идентичность',
3803
4081
  auto: 'Авто',
@@ -3893,6 +4171,11 @@ const ru = {
3893
4171
  publishing: 'Публикация…',
3894
4172
  exit: 'Выйти из предпросмотра',
3895
4173
  changes: 'Изменения',
4174
+ pendingHere: 'Предпросмотр черновика · {{count}} неопубликованных изменений на этой странице',
4175
+ pendingHere_one: 'Предпросмотр черновика · {{count}} неопубликованное изменение на этой странице',
4176
+ pendingHere_few: 'Предпросмотр черновика · {{count}} неопубликованных изменения на этой странице',
4177
+ pendingHere_many: 'Предпросмотр черновика · {{count}} неопубликованных изменений на этой странице',
4178
+ pendingHere_other: 'Предпросмотр черновика · {{count}} неопубликованного изменения на этой странице',
3896
4179
  },
3897
4180
  changes: {
3898
4181
  title: 'Ожидающие изменения',
@@ -3911,7 +4194,85 @@ const ru = {
3911
4194
  confirmNote_few: 'Публикация атомарно выпускает все {{count}} ожидающих черновика этого пакета.',
3912
4195
  confirmNote_many: 'Публикация атомарно выпускает все {{count}} ожидающих черновиков этого пакета.',
3913
4196
  confirmNote_other: 'Публикация атомарно выпускает {{count}} ожидающего черновика этого пакета.',
4197
+ // objectui#11591 — the package-less sheet: no package to batch, so each
4198
+ // draft publishes by itself and one that fails stays pending.
4199
+ confirmNoteSeparate: 'Публикация выпускает {{count}} ожидающих черновиков по отдельности: черновик, который не удастся опубликовать, останется ожидающим, а остальные всё равно будут опубликованы.',
4200
+ confirmNoteSeparate_one: 'Публикация выпускает {{count}} ожидающий черновик по отдельности: тот, который не удастся опубликовать, останется ожидающим.',
4201
+ confirmNoteSeparate_few: 'Публикация выпускает {{count}} ожидающих черновика по отдельности: черновик, который не удастся опубликовать, останется ожидающим, а остальные всё равно будут опубликованы.',
4202
+ confirmNoteSeparate_many: 'Публикация выпускает {{count}} ожидающих черновиков по отдельности: черновик, который не удастся опубликовать, останется ожидающим, а остальные всё равно будут опубликованы.',
4203
+ confirmNoteSeparate_other: 'Публикация выпускает {{count}} ожидающего черновика по отдельности: черновик, который не удастся опубликовать, останется ожидающим, а остальные всё равно будут опубликованы.',
3914
4204
  publishConfirm: 'Опубликовать всё',
4205
+ summaryItems: '{{count}} элементов',
4206
+ summaryItems_one: '{{count}} элемент',
4207
+ summaryItems_few: '{{count}} элемента',
4208
+ summaryItems_many: '{{count}} элементов',
4209
+ summaryItems_other: '{{count}} элемента',
4210
+ summaryType: '{{type}}: {{n}}',
4211
+ typeCount: {
4212
+ object: 'Объекты: {{count}}',
4213
+ object_one: 'Объект: {{count}}',
4214
+ object_few: 'Объекты: {{count}}',
4215
+ object_many: 'Объекты: {{count}}',
4216
+ object_other: 'Объекты: {{count}}',
4217
+ view: 'Представления: {{count}}',
4218
+ view_one: 'Представление: {{count}}',
4219
+ view_few: 'Представления: {{count}}',
4220
+ view_many: 'Представления: {{count}}',
4221
+ view_other: 'Представления: {{count}}',
4222
+ page: 'Страницы: {{count}}',
4223
+ page_one: 'Страница: {{count}}',
4224
+ page_few: 'Страницы: {{count}}',
4225
+ page_many: 'Страницы: {{count}}',
4226
+ page_other: 'Страницы: {{count}}',
4227
+ dashboard: 'Панели мониторинга: {{count}}',
4228
+ dashboard_one: 'Панель мониторинга: {{count}}',
4229
+ dashboard_few: 'Панели мониторинга: {{count}}',
4230
+ dashboard_many: 'Панели мониторинга: {{count}}',
4231
+ dashboard_other: 'Панели мониторинга: {{count}}',
4232
+ app: 'Приложения: {{count}}',
4233
+ app_one: 'Приложение: {{count}}',
4234
+ app_few: 'Приложения: {{count}}',
4235
+ app_many: 'Приложения: {{count}}',
4236
+ app_other: 'Приложения: {{count}}',
4237
+ action: 'Действия: {{count}}',
4238
+ action_one: 'Действие: {{count}}',
4239
+ action_few: 'Действия: {{count}}',
4240
+ action_many: 'Действия: {{count}}',
4241
+ action_other: 'Действия: {{count}}',
4242
+ report: 'Отчёты: {{count}}',
4243
+ report_one: 'Отчёт: {{count}}',
4244
+ report_few: 'Отчёты: {{count}}',
4245
+ report_many: 'Отчёты: {{count}}',
4246
+ report_other: 'Отчёты: {{count}}',
4247
+ flow: 'Потоки: {{count}}',
4248
+ flow_one: 'Поток: {{count}}',
4249
+ flow_few: 'Потоки: {{count}}',
4250
+ flow_many: 'Потоки: {{count}}',
4251
+ flow_other: 'Потоки: {{count}}',
4252
+ permission: 'Наборы разрешений: {{count}}',
4253
+ permission_one: 'Набор разрешений: {{count}}',
4254
+ permission_few: 'Наборы разрешений: {{count}}',
4255
+ permission_many: 'Наборы разрешений: {{count}}',
4256
+ permission_other: 'Наборы разрешений: {{count}}',
4257
+ agent: 'Агенты: {{count}}',
4258
+ agent_one: 'Агент: {{count}}',
4259
+ agent_few: 'Агенты: {{count}}',
4260
+ agent_many: 'Агенты: {{count}}',
4261
+ agent_other: 'Агенты: {{count}}',
4262
+ email_template: 'Шаблоны писем: {{count}}',
4263
+ email_template_one: 'Шаблон письма: {{count}}',
4264
+ email_template_few: 'Шаблоны писем: {{count}}',
4265
+ email_template_many: 'Шаблоны писем: {{count}}',
4266
+ email_template_other: 'Шаблоны писем: {{count}}',
4267
+ },
4268
+ // objectui#12929 — the unchecked choice under an added object field whose
4269
+ // literal default the batch publish can write into the existing records.
4270
+ backfillOption: 'Заполнить значением по умолчанию ({{count}} существующих записей)',
4271
+ backfillOption_one: 'Заполнить значением по умолчанию ({{count}} существующая запись)',
4272
+ backfillOption_few: 'Заполнить значением по умолчанию ({{count}} существующие записи)',
4273
+ backfillOption_many: 'Заполнить значением по умолчанию ({{count}} существующих записей)',
4274
+ backfillOption_other: 'Заполнить значением по умолчанию ({{count}} существующей записи)',
4275
+ backfillOptionNoCount: 'Заполнить значением по умолчанию',
3915
4276
  // [`7a90afdf9`] Pre-publish security-posture findings, shown next to
3916
4277
  // the confirm button so a refusal the door would issue is read BEFORE
3917
4278
  // the click rather than as a toast after the batch rolled back.
@@ -3995,6 +4356,10 @@ const ru = {
3995
4356
  exists: "Задано",
3996
4357
  notExists: "Не задано",
3997
4358
  },
4359
+ emptyCheckHint: {
4360
+ text: '«{{isEmpty}}» также находит пустой текст; «{{isNull}}» — только отсутствующее значение.',
4361
+ list: '«{{isEmpty}}» также находит пустой список; «{{isNull}}» — только отсутствующее значение.',
4362
+ },
3998
4363
  },
3999
4364
  sortBuilder: {
4000
4365
  sortBy: "Сортировать по",
@@ -4119,6 +4484,8 @@ const ru = {
4119
4484
  setDefaultFailed: "Не удалось установить приложение по умолчанию: {{reason}}",
4120
4485
  appDeleted: "{{name}} удалено",
4121
4486
  deleteFailed: "Не удалось удалить приложение: {{reason}}",
4487
+ nothingToDelete: "Нечего удалять для {{name}}: {{reason}}",
4488
+ alreadyAtDefault: "оно уже соответствует значению по умолчанию из пакета",
4122
4489
  bulkEnabled: "Включено приложений: {{n}}",
4123
4490
  bulkDisabled: "Отключено приложений: {{n}}",
4124
4491
  bulkFailed: "Не удалось для {{n}}: {{details}}",
@@ -4143,6 +4510,7 @@ const ru = {
4143
4510
  toggleLabel: "Активация для {{label}}",
4144
4511
  on: "Вкл.",
4145
4512
  off: "Выкл.",
4513
+ notRunning: "Здесь не выполняется",
4146
4514
  clone: "Клонировать",
4147
4515
  cloneTitle: "Клонировать поток из пакета",
4148
4516
  cloneBody: "Копия сохраняет определение целиком и требует нового машинного имени и метки. Редактируйте копию в Studio.",
@@ -4151,6 +4519,9 @@ const ru = {
4151
4519
  cancel: "Отмена",
4152
4520
  cloneConfirm: "Создать клон",
4153
4521
  cloneCreated: "Поток «{{name}}» создан.",
4522
+ cloneSwitchSourceOff: "Выключить «{{label}}»",
4523
+ cloneSourceOff: "Пакетный поток «{{label}}» выключен.",
4524
+ cloneOpen: "Открыть копию в Studio",
4154
4525
  emptyTitle: "Нет потоков из пакетов",
4155
4526
  emptyBody: "В этой установке ни один установленный пакет не поставляет поток автоматизации. Потоки, которые вы создаёте сами, находятся в Studio.",
4156
4527
  loadFailed: "Не удалось загрузить автоматизацию из пакетов.",
@@ -4158,6 +4529,7 @@ const ru = {
4158
4529
  toggleFailed: "Не удалось изменить активацию.",
4159
4530
  cloneFailedHttp: "Не удалось клонировать этот поток (HTTP {{status}}).",
4160
4531
  cloneFailed: "Не удалось клонировать этот поток.",
4532
+ reasonDetails: "Подробности",
4161
4533
  actionsSubtitle: "Действия, поставляемые установленными пакетами. Отключите действие в этой установке — и оно перестанет выполняться везде, где предлагается. Создать рядом собственное действие по-прежнему можно в Studio.",
4162
4534
  colAction: "Действие",
4163
4535
  colObject: "Объект",
@@ -4168,7 +4540,84 @@ const ru = {
4168
4540
  },
4169
4541
  element: {
4170
4542
  number: {
4171
- noObject: "Объект не указан: задайте object или dataSource.object.",
4543
+ noObject: "Объект не указан: задайте dataSource.object.",
4544
+ sourceUnresolved: "Не удалось определить источник данных этого показателя",
4545
+ },
4546
+ image: {
4547
+ noSource: "Нет источника изображения",
4548
+ },
4549
+ recordPicker: {
4550
+ sourceUnresolved: "Не удалось определить источник данных этого выбора записи",
4551
+ },
4552
+ calendar: {
4553
+ sourceUnresolved: "Не удалось определить источник данных этого календаря",
4554
+ },
4555
+ chart: {
4556
+ sourceUnresolved: "Не удалось определить источник данных этой диаграммы",
4557
+ },
4558
+ pivotTable: {
4559
+ sourceUnresolved: "Не удалось определить источник данных этой сводной таблицы",
4560
+ },
4561
+ detailView: {
4562
+ sourceUnresolved: "Не удалось определить источник данных этого подробного представления",
4563
+ },
4564
+ relatedList: {
4565
+ sourceUnresolved: "Не удалось определить источник данных этого связанного списка",
4566
+ parentUnreadable: "Не удалось прочитать родительскую запись этого связанного списка",
4567
+ },
4568
+ form: {
4569
+ sourceUnresolved: "Не удалось определить источник данных этой формы",
4570
+ },
4571
+ lineItems: {
4572
+ sourceUnresolved: "Не удалось определить источник данных этой панели позиций",
4573
+ },
4574
+ gantt: {
4575
+ sourceUnresolved: "Не удалось определить источник данных этой диаграммы Ганта",
4576
+ },
4577
+ grid: {
4578
+ sourceUnresolved: "Не удалось определить источник данных этой сетки",
4579
+ },
4580
+ board: {
4581
+ sourceUnresolved: "Не удалось определить источник данных этой доски",
4582
+ },
4583
+ listView: {
4584
+ sourceUnresolved: "Не удалось определить источник данных этого представления списка",
4585
+ },
4586
+ map: {
4587
+ sourceUnresolved: "Не удалось определить источник данных этой карты",
4588
+ },
4589
+ timeline: {
4590
+ sourceUnresolved: "Не удалось определить источник данных этой временной шкалы",
4591
+ },
4592
+ component: {
4593
+ sourceUnresolved: "Не удалось определить источник данных этого компонента",
4594
+ noDataSource: "Источник данных не определён",
4595
+ apiRefused: "Источник данных API этого компонента отклонён",
4596
+ apiUnreadable: "Не удалось прочитать источник данных API этого компонента",
4597
+ },
4598
+ metadataViewer: {
4599
+ missingKey: "Для этого представления не задан {{key}}.",
4600
+ loading: "Загрузка {{name}}…",
4601
+ loadFailed: "Не удалось загрузить {{name}}: {{message}}",
4602
+ notFound: "{{name}} не найден.",
4603
+ stateMachine: "Конечный автомат",
4604
+ flow: "Процесс",
4605
+ permission: "Разрешение",
4606
+ noStateMachine: "На {{object}} нет конечного автомата.",
4607
+ noStateMachineNamed: "На {{object}} нет конечного автомата с именем «{{name}}».",
4608
+ lifecycle: "Жизненный цикл {{object}}",
4609
+ field: "поле {{field}}",
4610
+ initial: "начальное",
4611
+ final: "конечное",
4612
+ steps: "Шаги: {{count}}",
4613
+ noSteps: "Нет шагов для отображения.",
4614
+ untitledStep: "(шаг)",
4615
+ hiddenSteps: "Скрыто технических шагов: {{count}} · задайте {{setting}}, чтобы показать все",
4616
+ objectAccess: "Доступ к объектам: {{count}}",
4617
+ noPermissions: "Разрешения на объекты не объявлены.",
4618
+ object: "Объект",
4619
+ unknownType: "Неизвестный тип представления метаданных. Ожидается {{a}}, {{b}} или {{c}}.",
4620
+ unknownTypeNamed: "Неизвестный тип представления метаданных «{{type}}». Ожидается {{a}}, {{b}} или {{c}}.",
4172
4621
  },
4173
4622
  },
4174
4623
  };