@object-ui/i18n 17.6.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.
- package/CHANGELOG.md +5408 -0
- package/README.md +255 -13
- package/dist/LocalizationContext.d.ts +32 -9
- package/dist/LocalizationContext.js +32 -10
- package/dist/builtinAggregateLabels.d.ts +40 -0
- package/dist/builtinAggregateLabels.js +23 -0
- package/dist/currency.d.ts +27 -3
- package/dist/currency.js +28 -4
- package/dist/fallbackInterpolation.d.ts +79 -0
- package/dist/fallbackInterpolation.js +124 -0
- package/dist/i18n.d.ts +27 -1
- package/dist/i18n.js +99 -16
- package/dist/index.d.ts +8 -13
- package/dist/index.js +45 -17
- package/dist/locales/ar.d.ts +1504 -188
- package/dist/locales/ar.js +1711 -281
- package/dist/locales/de.d.ts +1080 -188
- package/dist/locales/de.js +1248 -261
- package/dist/locales/en.d.ts +1141 -249
- package/dist/locales/en.js +1714 -295
- package/dist/locales/es.d.ts +1186 -188
- package/dist/locales/es.js +1350 -255
- package/dist/locales/fr.d.ts +1186 -188
- package/dist/locales/fr.js +1351 -258
- package/dist/locales/index.d.ts +11940 -2033
- package/dist/locales/index.js +48 -9
- package/dist/locales/ja.d.ts +1080 -188
- package/dist/locales/ja.js +1240 -254
- package/dist/locales/ko.d.ts +1080 -188
- package/dist/locales/ko.js +1244 -258
- package/dist/locales/pt.d.ts +1186 -188
- package/dist/locales/pt.js +1350 -255
- package/dist/locales/registry.d.ts +102 -0
- package/dist/locales/registry.js +220 -0
- package/dist/locales/rtl.d.ts +24 -0
- package/dist/locales/rtl.js +26 -0
- package/dist/locales/ru.d.ts +1292 -188
- package/dist/locales/ru.js +1479 -272
- package/dist/locales/zh.d.ts +1144 -252
- package/dist/locales/zh.js +1245 -259
- package/dist/pickLocalized.d.ts +30 -0
- package/dist/pickLocalized.js +39 -0
- package/dist/provider.d.ts +101 -12
- package/dist/provider.js +335 -50
- package/dist/translateFn.d.ts +29 -0
- package/dist/translateFn.js +8 -0
- package/dist/useDisplayLocale.d.ts +11 -0
- package/dist/useDisplayLocale.js +11 -0
- package/dist/useObjectLabel.d.ts +143 -100
- package/dist/useObjectLabel.js +129 -82
- package/dist/useSafeTranslation.js +40 -42
- package/dist/utils/first-day-of-week.d.ts +71 -0
- package/dist/utils/first-day-of-week.js +61 -0
- package/dist/utils/formatting.d.ts +23 -1
- package/dist/utils/formatting.js +34 -5
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.js +1 -0
- package/dist/utils/spec-formatters.d.ts +13 -23
- package/dist/utils/spec-formatters.js +41 -2
- package/dist/utils/spec-translations.d.ts +16 -3
- package/dist/utils/spec-translations.js +52 -13
- package/package.json +12 -6
package/dist/locales/ru.js
CHANGED
|
@@ -13,16 +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
|
|
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_mailboxes: "Управление почтовыми ящиками",
|
|
22
23
|
manage_platform_settings: "Управление настройками платформы",
|
|
23
24
|
setup_access: "Доступ к настройке",
|
|
24
25
|
setup_write: "Запись настроек",
|
|
25
26
|
studio_access: "Доступ к Studio",
|
|
27
|
+
manage_sharing: "Управление общим доступом",
|
|
28
|
+
view_all_audit_log: "Просмотр всего журнала аудита",
|
|
26
29
|
},
|
|
27
30
|
group: {
|
|
28
31
|
platform: 'Платформа',
|
|
@@ -30,32 +33,6 @@ const ru = {
|
|
|
30
33
|
other: 'Другое',
|
|
31
34
|
},
|
|
32
35
|
},
|
|
33
|
-
// objectui#3546 slice six — сводка шести граней авторизации в
|
|
34
|
-
// PermissionFacetLink (только чтение) плюс ссылка в Studio.
|
|
35
|
-
//
|
|
36
|
-
// Четыре счётных значения записаны как «Существительное: {{count}}» — этот
|
|
37
|
-
// приём в паке уже применён 25 раз (lookup.recordCount, notifications.
|
|
38
|
-
// groupCount, approvalsInbox.bulkApproved …) и он верен при ЛЮБОМ числе, так
|
|
39
|
-
// что для категорий few/many, которых в паке нет, базовый ключ даёт
|
|
40
|
-
// правильный русский, а не английский. Поэтому `_one` здесь совпадает с
|
|
41
|
-
// базовым ключом — форма не зависит от числа.
|
|
42
|
-
perm: {
|
|
43
|
-
facet: {
|
|
44
|
-
none: "Нет",
|
|
45
|
-
more: "+{{count}} ещё",
|
|
46
|
-
objects: "Объектов: {{count}}",
|
|
47
|
-
objects_one: "Объектов: {{count}}",
|
|
48
|
-
fields: "Правил для полей: {{count}}",
|
|
49
|
-
fields_one: "Правил для полей: {{count}}",
|
|
50
|
-
rls: "Политик RLS: {{count}}",
|
|
51
|
-
rls_one: "Политик RLS: {{count}}",
|
|
52
|
-
tabs: "Правил для вкладок: {{count}}",
|
|
53
|
-
tabs_one: "Правил для вкладок: {{count}}",
|
|
54
|
-
adminScope: "Делегированное администрирование настроено",
|
|
55
|
-
designInStudio: "Дизайн в Studio →",
|
|
56
|
-
designInStudioHint: "Дизайн в Studio",
|
|
57
|
-
},
|
|
58
|
-
},
|
|
59
36
|
lookup: {
|
|
60
37
|
recentlyUsed: 'Недавние',
|
|
61
38
|
allResults: 'Все результаты',
|
|
@@ -69,7 +46,10 @@ const ru = {
|
|
|
69
46
|
selectFirst: 'Сначала выберите {{fields}}',
|
|
70
47
|
selectRecord: 'Выбрать запись',
|
|
71
48
|
recordCount: 'Записей: {{count}}',
|
|
72
|
-
|
|
49
|
+
recordCount_one: '{{count}} запись',
|
|
50
|
+
recordCount_few: '{{count}} записи',
|
|
51
|
+
recordCount_many: '{{count}} записей',
|
|
52
|
+
recordCount_other: '{{count}} записи',
|
|
73
53
|
pageOf: 'Страница {{current}} из {{total}}',
|
|
74
54
|
filters: 'Фильтры',
|
|
75
55
|
clear: 'Очистить',
|
|
@@ -121,15 +101,32 @@ const ru = {
|
|
|
121
101
|
closeChat: "Закрыть чат",
|
|
122
102
|
closePanel: "Закрыть панель",
|
|
123
103
|
resizeDrawer: "Изменить ширину панели",
|
|
124
|
-
|
|
125
|
-
|
|
104
|
+
// objectui#11445 — a count family: each slot agrees the noun with the
|
|
105
|
+
// number (one 1/21, few 2-4, many 5-20, other a fraction). The base key, a
|
|
106
|
+
// count-invariant form, answers a call made without a count.
|
|
107
|
+
itemCount: "Элементов: {{count}}",
|
|
108
|
+
itemCount_one: "{{count}} элемент",
|
|
109
|
+
itemCount_few: "{{count}} элемента",
|
|
110
|
+
itemCount_many: "{{count}} элементов",
|
|
111
|
+
itemCount_other: "{{count}} элемента",
|
|
126
112
|
toggleSidebar: "Переключить боковую панель",
|
|
113
|
+
breadcrumb: "Навигационная цепочка",
|
|
127
114
|
package: "Пакет",
|
|
128
115
|
done: "Готово",
|
|
129
116
|
editInStudio: "Редактировать в Studio",
|
|
130
117
|
record: "Запись",
|
|
131
118
|
retry: "Повторить",
|
|
132
119
|
printDialogHint: "Открывает диалог печати браузера (это не экспорт в PDF)",
|
|
120
|
+
// The non-grid row ceiling's footnote (objectui#7210). Two keys because
|
|
121
|
+
// there are two conditions: a reported `total` states the fact with BOTH
|
|
122
|
+
// numbers, a missing one cannot name how many. Kept terse deliberately —
|
|
123
|
+
// this copy is eagerly loaded, and since objectui#7399 these bytes are
|
|
124
|
+
// budgeted by the `i18n-locales` chunk, not `framework`. ⛔ That ceiling's
|
|
125
|
+
// headroom is deliberately NOT restated here — it moves on every
|
|
126
|
+
// re-baseline, and the figure that was here went stale.
|
|
127
|
+
// `pnpm check:eager-closure` prints it.
|
|
128
|
+
rowCeilingNote: "Показаны первые {{shown}} из {{total}} записей. Сузьте фильтр.",
|
|
129
|
+
rowCeilingNoteUnknownTotal: "Показаны первые {{shown}} записей. Сузьте фильтр.",
|
|
133
130
|
},
|
|
134
131
|
actions: {
|
|
135
132
|
decisionOutput: {
|
|
@@ -141,6 +138,15 @@ const ru = {
|
|
|
141
138
|
acknowledge: 'Я сохранил(а) это',
|
|
142
139
|
copyAll: 'Копировать всё',
|
|
143
140
|
},
|
|
141
|
+
notAvailableHere: '«{{action}}» недоступно на текущей странице.',
|
|
142
|
+
notAvailableForRecord: 'Недоступно для этой записи',
|
|
143
|
+
completedSuccessfully: 'Действие успешно выполнено',
|
|
144
|
+
failed: 'Действие не выполнено',
|
|
145
|
+
parallelFailed: 'Одно или несколько параллельных действий не выполнены',
|
|
146
|
+
undo: 'Отменить',
|
|
147
|
+
undone: 'Изменение отменено',
|
|
148
|
+
undoneOperation: 'Отменить: {{description}}',
|
|
149
|
+
redoneOperation: 'Повторить: {{description}}',
|
|
144
150
|
},
|
|
145
151
|
validation: {
|
|
146
152
|
required: "Поле {{field}} обязательно для заполнения",
|
|
@@ -158,19 +164,47 @@ const ru = {
|
|
|
158
164
|
},
|
|
159
165
|
form: {
|
|
160
166
|
noPermissionToSave: "У вас нет прав на сохранение этой записи.",
|
|
167
|
+
noPermissionToCreate: "У вас нет прав на создание записей «{{object}}». Поля доступны только для чтения.",
|
|
168
|
+
noPermissionToEdit: "У вас нет прав на редактирование записей «{{object}}». Поля доступны только для чтения.",
|
|
161
169
|
submitFailed: "Не удалось сохранить. Попробуйте ещё раз.",
|
|
170
|
+
uploadInFlight: "Дождитесь завершения загрузки, прежде чем сохранять.",
|
|
171
|
+
clearedOnHide: "Очищено то, что больше не применимо к текущим значениям: {{fields}}",
|
|
172
|
+
visibleWhenFaulted: "Невозможно отправить: не удалось вычислить правило visibleWhen для {{fields}}. Правило нужно исправить, прежде чем эту форму можно будет отправить.",
|
|
162
173
|
discardTitle: "Отменить изменения?",
|
|
163
174
|
discardMessage: "Есть несохранённые изменения. Если закрыть форму сейчас, правки будут потеряны.",
|
|
164
175
|
// objectui#4024 — the create/edit dialog's `sr-only` accessible
|
|
165
176
|
// description, used when the form declares no `description` of its own.
|
|
166
177
|
dialogDescriptionFallback: "Заполните поля формы, затем отправьте или отмените.",
|
|
178
|
+
deniedDescription: "У вас нет прав на редактирование этого поля.",
|
|
179
|
+
serverDefaultHint: "Задаётся автоматически при сохранении.",
|
|
180
|
+
maxFileSize: "Максимальный размер: {{size}}",
|
|
181
|
+
masterDetail: {
|
|
182
|
+
loadingColumns: "Загрузка столбцов…",
|
|
183
|
+
subtotal: "Промежуточный итог",
|
|
184
|
+
tax: "Налог ({{rate}}%)",
|
|
185
|
+
total: "Итого",
|
|
186
|
+
lineItem: "Позиция",
|
|
187
|
+
rowTitle: "{{title}} — строка {{row}}",
|
|
188
|
+
applyRow: "Применить",
|
|
189
|
+
editorDescription: "Введите запись и её позиции, затем сохраните.",
|
|
190
|
+
noChildObject: "Для этой коллекции не настроен дочерний объект: укажите в {{property}} объект, строки которого она выводит.",
|
|
191
|
+
schemaUnavailable: "Не удалось загрузить схему {{object}}, поэтому у этой коллекции нет столбцов для отображения. Убедитесь, что объект существует и доступен для чтения, затем перезагрузите.",
|
|
192
|
+
noRelationshipField: "Не удалось определить, как {{object}} связан с {{parent}}: ни одно поле lookup или master_detail в нём не ссылается на родительский объект. Укажите в {{property}} этой коллекции поле, в котором хранится родительская запись.",
|
|
193
|
+
},
|
|
194
|
+
lineItems: {
|
|
195
|
+
title: "Позиции",
|
|
196
|
+
saveRecordFirst: "Сначала сохраните запись, чтобы добавить позиции.",
|
|
197
|
+
notLoaded: "Позиции этой записи не загружены.",
|
|
198
|
+
loadFailed: "Не удалось загрузить позиции",
|
|
199
|
+
saveFailed: "Не удалось сохранить позиции",
|
|
200
|
+
noChildObject: "Для этой панели не настроен дочерний объект: укажите в {{property}} объект, строки которого она выводит.",
|
|
201
|
+
},
|
|
167
202
|
keepEditing: "Продолжить редактирование",
|
|
168
203
|
discard: "Отменить",
|
|
169
204
|
conflictTitle: "Конфликт сохранения",
|
|
170
205
|
conflictMessage: "Пока вы редактировали, эту запись изменил другой пользователь. Перезапись заменит его изменения вашими.",
|
|
171
206
|
conflictLatestVersion: "Его сохранение: {{time}}",
|
|
172
207
|
conflictOverwrite: "Перезаписать",
|
|
173
|
-
addItem: "Добавить элемент",
|
|
174
208
|
removeItem: "Удалить элемент",
|
|
175
209
|
fieldRequired: "Это поле обязательно",
|
|
176
210
|
invalidFormat: "Неверный формат",
|
|
@@ -188,6 +222,12 @@ const ru = {
|
|
|
188
222
|
createSuccess: "{{object}} создан",
|
|
189
223
|
updateSuccess: "{{object}} обновлён",
|
|
190
224
|
deleteSuccess: "{{object}} удалён",
|
|
225
|
+
created: "Создано",
|
|
226
|
+
saved: "Сохранено",
|
|
227
|
+
savedNamed: "{{title}} сохранён",
|
|
228
|
+
submitted: "Отправлено",
|
|
229
|
+
errorLoading: "Ошибка загрузки формы",
|
|
230
|
+
navigateRefused: "Цель `navigateOnSuccess`, объявленная для этой формы, была отклонена, поэтому переход не выполнен.",
|
|
191
231
|
fullscreen: {
|
|
192
232
|
title: "Изменить текст",
|
|
193
233
|
description: "Измените полное текстовое значение, затем сохраните или отмените изменения.",
|
|
@@ -206,12 +246,20 @@ const ru = {
|
|
|
206
246
|
remove: "Удалить изображение {{index}}",
|
|
207
247
|
enlarge: "Увеличить {{name}}",
|
|
208
248
|
preview: "Предпросмотр изображения",
|
|
249
|
+
cropPreview: "Предпросмотр обрезки изображения",
|
|
209
250
|
previous: "Предыдущее изображение",
|
|
210
251
|
next: "Следующее изображение",
|
|
211
252
|
counter: "{{current}} / {{total}}",
|
|
212
253
|
},
|
|
254
|
+
percent: {
|
|
255
|
+
slider: "Процент",
|
|
256
|
+
},
|
|
213
257
|
relativeDate: {
|
|
214
258
|
overdue: "Просрочено на {{count}} дн.",
|
|
259
|
+
overdue_one: "Просрочено на {{count}} дн.",
|
|
260
|
+
overdue_few: "Просрочено на {{count}} дн.",
|
|
261
|
+
overdue_many: "Просрочено на {{count}} дн.",
|
|
262
|
+
overdue_other: "Просрочено на {{count}} дн.",
|
|
215
263
|
},
|
|
216
264
|
file: {
|
|
217
265
|
dragDropHere: 'Перетащите файлы сюда',
|
|
@@ -228,6 +276,9 @@ const ru = {
|
|
|
228
276
|
remove: 'Удалить {{name}}',
|
|
229
277
|
exceedsMaxSize: '«{{name}}» превышает максимальный размер ({{max}} МБ)',
|
|
230
278
|
uploadFailed: 'Не удалось загрузить «{{name}}»: {{error}}',
|
|
279
|
+
uploadIncomplete: 'Загрузка «{{name}}» не завершена: идентификатор файла не получен, ничего не сохранено',
|
|
280
|
+
restricted: 'Файл с ограниченным доступом',
|
|
281
|
+
restrictedHint: 'У вас нет доступа к сведениям об этом файле',
|
|
231
282
|
},
|
|
232
283
|
richText: {
|
|
233
284
|
format: "Формат: {{format}}",
|
|
@@ -244,6 +295,10 @@ const ru = {
|
|
|
244
295
|
search: "Поиск объектов…",
|
|
245
296
|
empty: "Объекты не найдены",
|
|
246
297
|
},
|
|
298
|
+
registryRef: {
|
|
299
|
+
loadFailed: "Не удалось загрузить список. Имя можно ввести вручную.",
|
|
300
|
+
notFound: "{{name}} (не найдено)",
|
|
301
|
+
},
|
|
247
302
|
recipient: {
|
|
248
303
|
selectTypeFirst: "Сначала выберите тип получателя.",
|
|
249
304
|
loading: "Загрузка…",
|
|
@@ -255,6 +310,9 @@ const ru = {
|
|
|
255
310
|
selectBusinessUnit: "Выберите бизнес-подразделение",
|
|
256
311
|
selectPosition: "Выберите должность",
|
|
257
312
|
selectUnitAndSubordinates: "Выберите бизнес-подразделение",
|
|
313
|
+
selectField: "Выберите поле пользователя",
|
|
314
|
+
noUserFields: "В этом объекте нет полей пользователя",
|
|
315
|
+
fieldNotUserTyped: "{{name}} — не поле пользователя",
|
|
258
316
|
},
|
|
259
317
|
filterCondition: {
|
|
260
318
|
selectObjectFirst: "Сначала выберите объект.",
|
|
@@ -265,6 +323,33 @@ const ru = {
|
|
|
265
323
|
editAsJson: "Редактировать как JSON",
|
|
266
324
|
useVisualBuilder: "Использовать визуальный конструктор",
|
|
267
325
|
},
|
|
326
|
+
object: {
|
|
327
|
+
invalidJson: "Некорректный JSON",
|
|
328
|
+
},
|
|
329
|
+
location: {
|
|
330
|
+
refusedFormat: "Не сохранено: введите пару широта, долгота (например: 30.2741, 120.1551).",
|
|
331
|
+
refusedRange: "Не сохранено: {{detail}}",
|
|
332
|
+
latitude: "широта",
|
|
333
|
+
longitude: "долгота",
|
|
334
|
+
refusedResidueOne: "Не сохранено: {{name}} «{{text}}» — не число. Введите обычные десятичные дроби (например: 30.2741, 120.1551).",
|
|
335
|
+
refusedResidue: "Не сохранено: {{name}} «{{text}}» и {{otherName}} «{{otherText}}» — не числа. Введите обычные десятичные дроби (например: 30.2741, 120.1551).",
|
|
336
|
+
},
|
|
337
|
+
date: {
|
|
338
|
+
impossibleDay: "Сохранённое значение «{{value}}» — несуществующая дата. Выберите дату, чтобы заменить его.",
|
|
339
|
+
},
|
|
340
|
+
dateTime: {
|
|
341
|
+
impossibleDay: "Сохранённое значение «{{value}}» — несуществующая дата. Выберите дату и время, чтобы заменить его.",
|
|
342
|
+
},
|
|
343
|
+
datePicker: {
|
|
344
|
+
today: "Сегодня",
|
|
345
|
+
tomorrow: "Завтра",
|
|
346
|
+
clear: "Очистить дату",
|
|
347
|
+
openCalendar: "Открыть календарь",
|
|
348
|
+
invalid: "Не сохранено: «{{value}}» — не дата. Введите её в формате {{format}} или выберите в календаре.",
|
|
349
|
+
},
|
|
350
|
+
number: {
|
|
351
|
+
badInput: "Не сохранено: текст в этом поле — не число. Введите обычную десятичную дробь (например: {{example}}).",
|
|
352
|
+
},
|
|
268
353
|
tags: {
|
|
269
354
|
placeholder: "Введите и нажмите Enter, чтобы добавить…",
|
|
270
355
|
},
|
|
@@ -276,10 +361,25 @@ const ru = {
|
|
|
276
361
|
postalCode: "Почтовый индекс",
|
|
277
362
|
country: "Страна",
|
|
278
363
|
},
|
|
364
|
+
boolean: {
|
|
365
|
+
offBadge: "{{label}} — Выкл.",
|
|
366
|
+
completed: "Выполнено",
|
|
367
|
+
notCompleted: "Не выполнено",
|
|
368
|
+
},
|
|
279
369
|
textarea: {
|
|
280
370
|
characterCount: "Количество символов: {{count}} из {{max}}",
|
|
281
371
|
charactersRemaining: "Осталось символов: {{count}}",
|
|
282
372
|
},
|
|
373
|
+
grid: {
|
|
374
|
+
addLine: "Добавить строку",
|
|
375
|
+
noItems: "Нет элементов",
|
|
376
|
+
noItemsAddHint: "Пока нет элементов — нажмите «{{label}}», чтобы начать.",
|
|
377
|
+
optionalColumns: "Дополнительные столбцы",
|
|
378
|
+
computed: "Вычисляется",
|
|
379
|
+
openRow: "Открыть строку",
|
|
380
|
+
duplicateRow: "Дублировать строку",
|
|
381
|
+
removeRow: "Удалить строку",
|
|
382
|
+
},
|
|
283
383
|
},
|
|
284
384
|
table: {
|
|
285
385
|
rowsPerPage: "Строк на странице",
|
|
@@ -295,10 +395,15 @@ const ru = {
|
|
|
295
395
|
selectAllRows: "Выбрать все строки",
|
|
296
396
|
expandRow: "Развернуть строку",
|
|
297
397
|
collapseRow: "Свернуть строку",
|
|
398
|
+
rowActions: "Действия со строкой",
|
|
298
399
|
hideColumn: "Скрыть столбец",
|
|
299
400
|
freezeColumn: "Закрепить столбец",
|
|
300
401
|
unfreezeColumn: "Открепить столбец",
|
|
301
402
|
pageInfo: "Страница {{current}} из {{total}}",
|
|
403
|
+
firstPage: "Первая страница",
|
|
404
|
+
previousPage: "Предыдущая страница",
|
|
405
|
+
nextPage: "Следующая страница",
|
|
406
|
+
lastPage: "Последняя страница",
|
|
302
407
|
totalRecords: "Всего {{count}}",
|
|
303
408
|
noResults: "Результатов нет",
|
|
304
409
|
noResultsHint: "Попробуйте изменить фильтры или поисковые запросы.",
|
|
@@ -308,23 +413,53 @@ const ru = {
|
|
|
308
413
|
open: "Открыть",
|
|
309
414
|
search: "Поиск…",
|
|
310
415
|
modified: "{{count}} строк изменено",
|
|
416
|
+
modified_one: "Изменена {{count}} строка",
|
|
417
|
+
modified_few: "Изменено {{count}} строки",
|
|
418
|
+
modified_many: "Изменено {{count}} строк",
|
|
419
|
+
modified_other: "Изменено {{count}} строки",
|
|
420
|
+
saved: "{{count}} строк сохранено",
|
|
421
|
+
saved_one: "Сохранена {{count}} строка",
|
|
422
|
+
saved_few: "Сохранено {{count}} строки",
|
|
423
|
+
saved_many: "Сохранено {{count}} строк",
|
|
424
|
+
saved_other: "Сохранено {{count}} строки",
|
|
311
425
|
saveFailed: 'Не удалось сохранить',
|
|
312
426
|
selected: "{{count}} выбрано",
|
|
427
|
+
selected_one: "Выбрано: {{count}}",
|
|
428
|
+
selected_few: "Выбрано: {{count}}",
|
|
429
|
+
selected_many: "Выбрано: {{count}}",
|
|
430
|
+
selected_other: "Выбрано: {{count}}",
|
|
313
431
|
edit: "Редактировать",
|
|
314
432
|
delete: "Удалить",
|
|
315
433
|
},
|
|
316
434
|
grid: {
|
|
317
435
|
bulkSelected: "Выбрано: {{count}}",
|
|
436
|
+
bulkSelected_one: "Выбрано: {{count}}",
|
|
437
|
+
bulkSelected_few: "Выбрано: {{count}}",
|
|
438
|
+
bulkSelected_many: "Выбрано: {{count}}",
|
|
439
|
+
bulkSelected_other: "Выбрано: {{count}}",
|
|
318
440
|
bulkSelectedAllMatches: "Выбрано: {{count}} (все совпадения)",
|
|
319
441
|
bulkClear: "Снять выделение",
|
|
320
442
|
bulkAllOnPage: "Выбраны все {{count}} на этой странице.",
|
|
443
|
+
bulkAllOnPage_one: "Выбраны все записи на этой странице ({{count}}).",
|
|
444
|
+
bulkAllOnPage_few: "Выбраны все записи на этой странице ({{count}}).",
|
|
445
|
+
bulkAllOnPage_many: "Выбраны все записи на этой странице ({{count}}).",
|
|
446
|
+
bulkAllOnPage_other: "Выбраны все записи на этой странице ({{count}}).",
|
|
321
447
|
bulkSelectAllMatching: "Выбрать все совпадения ({{count}})",
|
|
322
448
|
bulkAllMatchingSelected: "Выбраны все подходящие записи ({{count}}).",
|
|
449
|
+
bulkActions: "Массовые действия",
|
|
323
450
|
bulk: {
|
|
324
451
|
confirmDefault: "Будет применено к записям: {{count}}.",
|
|
452
|
+
confirmDefault_one: "Будет применено к записям: {{count}}.",
|
|
453
|
+
confirmDefault_few: "Будет применено к записям: {{count}}.",
|
|
454
|
+
confirmDefault_many: "Будет применено к записям: {{count}}.",
|
|
455
|
+
confirmDefault_other: "Будет применено к записям: {{count}}.",
|
|
325
456
|
overLimit: "Выбрано ({{count}}) больше лимита действия ({{limit}}). Уменьшите выбор, чтобы продолжить.",
|
|
326
457
|
affectedRecords: "Затрагиваемые записи ({{count}}):",
|
|
327
458
|
skippedIneligible: '{{count}} из выбранных записей не подходят для этого действия и будут пропущены.',
|
|
459
|
+
skippedIneligible_one: '{{count}} из выбранных записей не подходит для этого действия и будет пропущена.',
|
|
460
|
+
skippedIneligible_few: '{{count}} из выбранных записей не подходят для этого действия и будут пропущены.',
|
|
461
|
+
skippedIneligible_many: '{{count}} из выбранных записей не подходят для этого действия и будут пропущены.',
|
|
462
|
+
skippedIneligible_other: '{{count}} из выбранных записей не подходят для этого действия и будут пропущены.',
|
|
328
463
|
rowFallback: "Строка {{index}}",
|
|
329
464
|
andMore: "… и ещё {{count}}",
|
|
330
465
|
processed: "Обработано {{count}} / {{total}}",
|
|
@@ -342,7 +477,6 @@ const ru = {
|
|
|
342
477
|
undo: "Отменить",
|
|
343
478
|
undoing: "Отмена…",
|
|
344
479
|
done: "Готово",
|
|
345
|
-
selectPlaceholder: "Выберите…",
|
|
346
480
|
loading: "Загрузка…",
|
|
347
481
|
},
|
|
348
482
|
actions: "Действия",
|
|
@@ -355,17 +489,27 @@ const ru = {
|
|
|
355
489
|
pullToRefresh: "Потяните для обновления",
|
|
356
490
|
refreshing: "Обновление…",
|
|
357
491
|
openRecord: "Открыть запись",
|
|
492
|
+
recordUnavailable: "{{object}} · запись недоступна",
|
|
358
493
|
rowHeight: "Высота строки: {{mode}}",
|
|
359
494
|
openMenu: "Открыть меню",
|
|
360
495
|
empty: "Пусто",
|
|
361
496
|
yes: "Да",
|
|
362
497
|
no: "Нет",
|
|
363
498
|
systemFields: "Система",
|
|
499
|
+
// objectui#10881 — the grouped grid's two refusals: over a data source
|
|
500
|
+
// that cannot answer the group header query, and over rows a host
|
|
501
|
+
// handed in while declaring them one page of more. `queryGroupHeaders`
|
|
502
|
+
// is the member's name and stays untranslated.
|
|
503
|
+
grouping: {
|
|
504
|
+
needsHeaderQuery: "Это представление сгруппировано, но его источник данных не реализует queryGroupHeaders, поэтому группы невозможно подсчитать. Уберите группировку, чтобы показать записи.",
|
|
505
|
+
needsWholeRows: "Для группировки нужны все записи, но этой таблице передана только одна их страница, поэтому группы невозможно подсчитать. Передайте все записи или позвольте таблице загрузить их из источника данных, который реализует queryGroupHeaders.",
|
|
506
|
+
},
|
|
364
507
|
// objectui#4024 — column-footer aggregate prefixes, keyed by the spec's
|
|
365
508
|
// `ColumnSummary` vocabulary. `pattern` owns the label/value join so this
|
|
366
509
|
// pack controls its own separator and word order.
|
|
367
510
|
summary: {
|
|
368
511
|
pattern: "{{label}}: {{value}}",
|
|
512
|
+
pagePattern: "{{label}} (эта страница): {{value}}",
|
|
369
513
|
count: "Количество",
|
|
370
514
|
countEmpty: "Пустые",
|
|
371
515
|
countFilled: "Заполненные",
|
|
@@ -387,10 +531,16 @@ const ru = {
|
|
|
387
531
|
},
|
|
388
532
|
import: {
|
|
389
533
|
downloadTemplate: "Скачать шаблон",
|
|
390
|
-
downloadTemplateHint: "Получите
|
|
534
|
+
downloadTemplateHint: "Получите файл Excel со столбцами, которые можно импортировать (обязательные поля отмечены *), и инструкцией по заполнению.",
|
|
391
535
|
templateFileName: "{{object}}-import-template",
|
|
536
|
+
templateDownloadFailed: "Не удалось скачать шаблон. Повторите попытку.",
|
|
537
|
+
templateNotPermitted: "У вас нет прав на создание записей этого объекта, поэтому шаблон импорта недоступен.",
|
|
392
538
|
autoMatched: "Сопоставлено автоматически",
|
|
393
539
|
autoMatchedSummary: "Автоматически сопоставлено столбцов: {{count}} — проверьте и скорректируйте ниже.",
|
|
540
|
+
autoMatchedSummary_one: "Автоматически сопоставлено столбцов: {{count}} — проверьте и скорректируйте ниже.",
|
|
541
|
+
autoMatchedSummary_few: "Автоматически сопоставлено столбцов: {{count}} — проверьте и скорректируйте ниже.",
|
|
542
|
+
autoMatchedSummary_many: "Автоматически сопоставлено столбцов: {{count}} — проверьте и скорректируйте ниже.",
|
|
543
|
+
autoMatchedSummary_other: "Автоматически сопоставлено столбцов: {{count}} — проверьте и скорректируйте ниже.",
|
|
394
544
|
confidence: {
|
|
395
545
|
high: "Высокая точность",
|
|
396
546
|
medium: "Средняя точность",
|
|
@@ -403,8 +553,20 @@ const ru = {
|
|
|
403
553
|
cancelImport: "Отменить импорт",
|
|
404
554
|
importCancelled: "Импорт отменён",
|
|
405
555
|
resultsTruncated: "Показаны результаты первых {{count}} строк (из {{total}}).",
|
|
556
|
+
resultsTruncated_one: "Показаны результаты первых строк: {{count}} (из {{total}}).",
|
|
557
|
+
resultsTruncated_few: "Показаны результаты первых строк: {{count}} (из {{total}}).",
|
|
558
|
+
resultsTruncated_many: "Показаны результаты первых строк: {{count}} (из {{total}}).",
|
|
559
|
+
resultsTruncated_other: "Показаны результаты первых строк: {{count}} (из {{total}}).",
|
|
406
560
|
createdCount: "Создано: {{count}}",
|
|
561
|
+
createdCount_one: "Создано: {{count}}",
|
|
562
|
+
createdCount_few: "Создано: {{count}}",
|
|
563
|
+
createdCount_many: "Создано: {{count}}",
|
|
564
|
+
createdCount_other: "Создано: {{count}}",
|
|
407
565
|
updatedCount: "Обновлено: {{count}}",
|
|
566
|
+
updatedCount_one: "Обновлено: {{count}}",
|
|
567
|
+
updatedCount_few: "Обновлено: {{count}}",
|
|
568
|
+
updatedCount_many: "Обновлено: {{count}}",
|
|
569
|
+
updatedCount_other: "Обновлено: {{count}}",
|
|
408
570
|
downloadFailed: "Скачать строки с ошибками",
|
|
409
571
|
options: "Параметры импорта",
|
|
410
572
|
writeMode: "Если строка совпадает с существующей записью",
|
|
@@ -419,9 +581,6 @@ const ru = {
|
|
|
419
581
|
needMatchFields: "Выберите хотя бы одно поле для сопоставления.",
|
|
420
582
|
matchOnlyField: "(только сопоставление)",
|
|
421
583
|
optCreateOptions: "Сохранять неизвестные значения списка",
|
|
422
|
-
optRunAutomations: "Выполнять автоматизации и триггеры",
|
|
423
|
-
optTreatHistorical: "Импортировать как исторические данные",
|
|
424
|
-
optTreatHistoricalHint: "(импортирует завершённые записи как есть — пропускает проверки конечного автомата и сохраняет исходные отметки времени и автора вместо текущих)",
|
|
425
584
|
optSkipBlankKey: "Пропускать строки с пустым значением сопоставления",
|
|
426
585
|
optBackground: "Импортировать в фоновом режиме",
|
|
427
586
|
optBackgroundHint: "(выполняется как отменяемая задача)",
|
|
@@ -436,6 +595,7 @@ const ru = {
|
|
|
436
595
|
invalidBoolean: "«{{value}}» не является допустимым значением true/false",
|
|
437
596
|
invalidNumber: "«{{value}}» не является допустимым числом",
|
|
438
597
|
invalidDate: "«{{value}}» не является допустимой датой",
|
|
598
|
+
invalidTime: "«{{value}}» не является допустимым временем",
|
|
439
599
|
invalidOption: "«{{value}}» не входит в число допустимых вариантов",
|
|
440
600
|
requiredValue: "Это поле обязательно",
|
|
441
601
|
matchAmbiguous: "Соответствует нескольким существующим записям — используйте уникальное значение или идентификатор записи",
|
|
@@ -452,10 +612,19 @@ const ru = {
|
|
|
452
612
|
historyColResult: "Результат",
|
|
453
613
|
historyColTime: "Когда",
|
|
454
614
|
errorCount: "Ошибок: {{count}}",
|
|
615
|
+
errorCount_one: "Ошибок: {{count}}",
|
|
616
|
+
errorCount_few: "Ошибок: {{count}}",
|
|
617
|
+
errorCount_many: "Ошибок: {{count}}",
|
|
618
|
+
errorCount_other: "Ошибок: {{count}}",
|
|
455
619
|
undoImport: "Отменить импорт",
|
|
456
620
|
undoing: "Отмена…",
|
|
457
621
|
undoConfirm: "Отменить этот импорт? Созданные им записи будут удалены, а обновлённые — восстановлены к прежним значениям.",
|
|
458
622
|
reverted: "Отменён",
|
|
623
|
+
undoPartial: "Не удалось отменить {{count}} строк. Повторная отмена затронет только эти строки.",
|
|
624
|
+
undoPartial_one: "Не удалось отменить {{count}} строку. Повторная отмена затронет только эту строку.",
|
|
625
|
+
undoPartial_few: "Не удалось отменить {{count}} строки. Повторная отмена затронет только эти строки.",
|
|
626
|
+
undoPartial_many: "Не удалось отменить {{count}} строк. Повторная отмена затронет только эти строки.",
|
|
627
|
+
undoPartial_other: "Не удалось отменить {{count}} строки. Повторная отмена затронет только эти строки.",
|
|
459
628
|
jobStatus: {
|
|
460
629
|
pending: "Ожидает",
|
|
461
630
|
running: "Выполняется",
|
|
@@ -512,19 +681,37 @@ const ru = {
|
|
|
512
681
|
mapped: "Сопоставлено",
|
|
513
682
|
skipped: "Пропущено",
|
|
514
683
|
rowsWithErrors: "{{count}} строк с ошибками",
|
|
684
|
+
rowsWithErrors_one: "{{count}} строка с ошибками",
|
|
685
|
+
rowsWithErrors_few: "{{count}} строки с ошибками",
|
|
686
|
+
rowsWithErrors_many: "{{count}} строк с ошибками",
|
|
687
|
+
rowsWithErrors_other: "{{count}} строки с ошибками",
|
|
515
688
|
rowsCorrected: "{{count}} строк исправлено",
|
|
689
|
+
rowsCorrected_one: "Исправлена {{count}} строка",
|
|
690
|
+
rowsCorrected_few: "Исправлено {{count}} строки",
|
|
691
|
+
rowsCorrected_many: "Исправлено {{count}} строк",
|
|
692
|
+
rowsCorrected_other: "Исправлено {{count}} строки",
|
|
516
693
|
clickToFix: "— нажмите на выделенную ячейку для редактирования.",
|
|
517
694
|
showingRows: "Отображено {{shown}} из {{total}} строк",
|
|
518
695
|
importing: "Импорт… {{progress}}%",
|
|
519
696
|
importComplete: "Импорт завершён",
|
|
697
|
+
importPartial: "Импорт завершён с ошибками",
|
|
698
|
+
importFailed: "Импорт не выполнен",
|
|
520
699
|
imported: "{{count}} импортировано",
|
|
521
700
|
skippedCount: "{{count}} пропущено",
|
|
522
701
|
moreErrors: "…ещё {{count}} ошибок",
|
|
702
|
+
moreErrors_one: "…ещё {{count}} ошибка",
|
|
703
|
+
moreErrors_few: "…ещё {{count}} ошибки",
|
|
704
|
+
moreErrors_many: "…ещё {{count}} ошибок",
|
|
705
|
+
moreErrors_other: "…ещё {{count}} ошибки",
|
|
523
706
|
cancel: "Отмена",
|
|
524
707
|
back: "Назад",
|
|
525
708
|
next: "Далее",
|
|
526
709
|
close: "Закрыть",
|
|
527
710
|
importNRows: "Импортировать {{count}} строк",
|
|
711
|
+
importNRows_one: "Импортировать {{count}} строку",
|
|
712
|
+
importNRows_few: "Импортировать {{count}} строки",
|
|
713
|
+
importNRows_many: "Импортировать {{count}} строк",
|
|
714
|
+
importNRows_other: "Импортировать {{count}} строки",
|
|
528
715
|
importingProgress: "Импортируется…",
|
|
529
716
|
requiredMark: "*",
|
|
530
717
|
required: "Обязательно",
|
|
@@ -536,17 +723,46 @@ const ru = {
|
|
|
536
723
|
month: "Месяц",
|
|
537
724
|
week: "Неделя",
|
|
538
725
|
day: "День",
|
|
539
|
-
agenda: "Расписание",
|
|
540
726
|
allDay: "Весь день",
|
|
541
|
-
noEvents: "Нет событий",
|
|
542
727
|
newEvent: "Новое событие",
|
|
543
728
|
moreEvents: "+{{count}} ещё",
|
|
729
|
+
unscheduled: "Без даты ({{count}})",
|
|
730
|
+
loading: "Загрузка календаря…",
|
|
731
|
+
loadError: "Ошибка: {{message}}",
|
|
732
|
+
configRequired: "Требуется настройка календаря. Укажите startDateField — единственный обязательный ключ календаря; заголовок события определяется и без titleField.",
|
|
733
|
+
configRequiredHint: "Он относится к блоку calendar представления. У страницы интерфейса нет собственного слота календаря: укажите в её sourceView представление, которое его объявляет.",
|
|
734
|
+
eventDetails: "Сведения о событии",
|
|
735
|
+
pullToRefresh: "Потяните для обновления",
|
|
736
|
+
refreshing: "Обновление…",
|
|
737
|
+
onDate: "{{date}}",
|
|
738
|
+
eventTitle: "Название",
|
|
739
|
+
eventTitlePlaceholder: "О чём это событие?",
|
|
740
|
+
creating: "Создание…",
|
|
741
|
+
titleRequired: "Укажите название",
|
|
742
|
+
a11y: {
|
|
743
|
+
region: "Календарь",
|
|
744
|
+
grid: "Сетка календаря",
|
|
745
|
+
goToToday: "Перейти к сегодняшнему дню",
|
|
746
|
+
previousPeriod: "Предыдущий период",
|
|
747
|
+
nextPeriod: "Следующий период",
|
|
748
|
+
currentDate: "Текущая дата: {{date}}",
|
|
749
|
+
dayCell: "{{date}}, событий: {{count}}",
|
|
750
|
+
dayCell_one: "{{date}}, {{count}} событие",
|
|
751
|
+
dayCell_few: "{{date}}, {{count}} события",
|
|
752
|
+
dayCell_many: "{{date}}, {{count}} событий",
|
|
753
|
+
dayCell_other: "{{date}}, событий: {{count}}",
|
|
754
|
+
resizeEventEnd: "Изменить окончание события",
|
|
755
|
+
resizeEventEndHint: "Перетащите, чтобы изменить дату окончания",
|
|
756
|
+
resizeStart: "Изменить начало",
|
|
757
|
+
resizeEnd: "Изменить окончание",
|
|
758
|
+
},
|
|
544
759
|
},
|
|
545
760
|
list: {
|
|
546
761
|
firstRunTitle: "Здесь пока пусто",
|
|
547
762
|
firstRunMessage: "Создайте первую запись, чтобы начать.",
|
|
548
763
|
noMatches: "Подходящих записей нет",
|
|
549
764
|
noMatchesMessage: "Ни одна запись не соответствует текущим фильтрам или поиску. Измените или сбросьте их.",
|
|
765
|
+
viewFilterNoMatchesMessage: "Ни одна запись не соответствует фильтру этого представления.",
|
|
550
766
|
loadErrorTitle: "Не удалось загрузить записи",
|
|
551
767
|
loadErrorMessage: "При загрузке данных произошла ошибка. Проверьте соединение и попробуйте снова.",
|
|
552
768
|
loadErrorForbiddenTitle: "Нет доступа",
|
|
@@ -582,18 +798,32 @@ const ru = {
|
|
|
582
798
|
},
|
|
583
799
|
refresh: "Обновить",
|
|
584
800
|
loading: "Загрузка записей…",
|
|
585
|
-
|
|
586
|
-
|
|
801
|
+
// objectui#11445 — a count family: each slot agrees the noun with the
|
|
802
|
+
// number (one 1/21, few 2-4, many 5-20, other a fraction). The base key, a
|
|
803
|
+
// count-invariant form, answers a call made without a count.
|
|
804
|
+
recordCount: "Записей: {{count}}",
|
|
805
|
+
recordCount_one: "{{count}} запись",
|
|
806
|
+
recordCount_few: "{{count}} записи",
|
|
807
|
+
recordCount_many: "{{count}} записей",
|
|
808
|
+
recordCount_other: "{{count}} записи",
|
|
587
809
|
addRecord: "Добавить запись",
|
|
810
|
+
// objectui#12703 — the compact list's footer link to the object's list or the block's view.
|
|
811
|
+
viewAll: "Показать все",
|
|
588
812
|
tabs: "Вкладки",
|
|
589
813
|
allRecords: "Все записи",
|
|
590
814
|
search: "Поиск",
|
|
591
815
|
filter: "Фильтр",
|
|
592
816
|
filterRecords: "Фильтр записей",
|
|
817
|
+
filterActive: "Фильтр, активных: {{count}}",
|
|
818
|
+
filterActive_one: "Фильтр, {{count}} активный",
|
|
819
|
+
filterActive_few: "Фильтр, {{count}} активных",
|
|
820
|
+
filterActive_many: "Фильтр, {{count}} активных",
|
|
821
|
+
filterActive_other: "Фильтр, активных: {{count}}",
|
|
593
822
|
sort: "Сортировка",
|
|
594
823
|
sortRecords: "Сортировка записей",
|
|
595
824
|
sortByIdSuffix: "(по ID)",
|
|
596
825
|
sortRelationalHint: "Столбцы, ссылающиеся на другую запись, здесь не показаны: их можно сортировать только по сохранённому ID, а не по имени, которое видно в ячейке. Чтобы сортировать по этому имени, денормализуйте его в этот объект — как сохраняемое поле, которое записывается при изменении источника, — и сортируйте по нему. Не поле-формула: она виртуальна, столбец для неё не хранится, и сервер отказывается сортировать по ней.",
|
|
826
|
+
sortRelationalPicked: "Связанный столбец сортируется по сохранённому ID, а не по отображаемому имени.",
|
|
597
827
|
resetSortToDefault: "Сбросить к сортировке представления",
|
|
598
828
|
group: "Группировка",
|
|
599
829
|
groupBy: "Группировать по",
|
|
@@ -614,14 +844,15 @@ const ru = {
|
|
|
614
844
|
print: "Печать",
|
|
615
845
|
hideFieldsTitle: "Скрыть поля",
|
|
616
846
|
dataLimitReached: "Отображаются первые {{limit}} записей. Возможно, есть ещё данные.",
|
|
617
|
-
|
|
618
|
-
|
|
847
|
+
display: "Отображение",
|
|
848
|
+
layout: "Макет",
|
|
849
|
+
rowNumbers: "Номера строк",
|
|
850
|
+
resetToViewDefault: "Сбросить к настройкам представления",
|
|
619
851
|
addGroup: "Добавить поле группировки",
|
|
620
852
|
collapsedByDefault: "Свёрнуто по умолчанию",
|
|
621
853
|
removeGroup: "Удалить",
|
|
622
854
|
inlineEditShort: "Встроенное редактирование",
|
|
623
855
|
inlineEditLabel: "Редактировать записи в таблице (щёлкните ячейку для редактирования)",
|
|
624
|
-
recordEditingTitle: "Редактирование записей",
|
|
625
856
|
},
|
|
626
857
|
managedByBadge: {
|
|
627
858
|
systemWritable: {
|
|
@@ -652,6 +883,7 @@ const ru = {
|
|
|
652
883
|
},
|
|
653
884
|
kanban: {
|
|
654
885
|
uncategorized: "Без категории",
|
|
886
|
+
loadMore: "Загрузить ещё",
|
|
655
887
|
columns: "колонок",
|
|
656
888
|
addCard: "Добавить карточку",
|
|
657
889
|
addColumn: "Добавить колонку",
|
|
@@ -659,13 +891,28 @@ const ru = {
|
|
|
659
891
|
deleteCard: "Удалить карточку",
|
|
660
892
|
deleteColumn: "Удалить колонку",
|
|
661
893
|
noCards: "Нет карточек",
|
|
894
|
+
columnCards: "Карточки в колонке {{column}}",
|
|
895
|
+
laneCards: "Карточки: {{column}} - {{lane}}",
|
|
662
896
|
cardTitlePlaceholder: "Введите название карточки…",
|
|
663
897
|
requiredFieldsTitle: "Заполните обязательные поля",
|
|
664
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
|
+
},
|
|
665
912
|
},
|
|
666
913
|
timeline: {
|
|
667
914
|
bucket: {
|
|
668
|
-
|
|
915
|
+
earlier: "Ранее",
|
|
669
916
|
today: "Сегодня",
|
|
670
917
|
tomorrow: "Завтра",
|
|
671
918
|
thisWeek: "На этой неделе",
|
|
@@ -680,6 +927,17 @@ const ru = {
|
|
|
680
927
|
},
|
|
681
928
|
gantt: {
|
|
682
929
|
rowLabel: "Элементы",
|
|
930
|
+
unusableRange: {
|
|
931
|
+
malformedDate: "Непригодный диапазон дат гантта — {{path}} равно {{value}}, что не является корректной датой. Все даты гантта должны разбираться: startDate и endDate каждого элемента строки, а также minDate / maxDate, заданные в схеме.",
|
|
932
|
+
malformedRow: "Непригодные строки гантта — {{path}} равно {{value}}, что не является формой строки. Гантт читает items как список строк, каждую строку — как объект с label и собственными items, а items каждой строки — как список полос; null, число, строка или простой объект в любом из этих мест не могут быть отрисованы.",
|
|
933
|
+
inverted: "Непригодный диапазон дат гантта — minDate {{minDate}} позже maxDate {{maxDate}}. Заданные minDate / maxDate имеют приоритет над диапазоном, вычисленным по строкам, поэтому у этой оси нет столбцов и полосу разместить негде; поменяйте оба значения местами.",
|
|
934
|
+
},
|
|
935
|
+
},
|
|
936
|
+
unsupported: {
|
|
937
|
+
objectBoundGantt: "Неподдерживаемый вариант \"gantt\" — временная шкала, привязанная к объекту, отображает ленточные варианты ({{variants}}). Для гантта нужны литеральные строки, каждая со своим вложенным items, поэтому ось гантта (scale) здесь не действует.",
|
|
938
|
+
},
|
|
939
|
+
unconfigured: {
|
|
940
|
+
noDateAxis: "Требуется ось дат временной шкалы — это представление не объявляет ни одного поля даты, а временная шкала, привязанная к объекту, не придумывает его сама. Объявите одно из: {{fields}}. Первое — написание из спецификации, остальные — устаревшие псевдонимы.",
|
|
683
941
|
},
|
|
684
942
|
},
|
|
685
943
|
gantt: {
|
|
@@ -697,6 +955,7 @@ const ru = {
|
|
|
697
955
|
},
|
|
698
956
|
aria: {
|
|
699
957
|
taskList: "Список задач",
|
|
958
|
+
refreshing: "Обновление…",
|
|
700
959
|
},
|
|
701
960
|
tooltip: {
|
|
702
961
|
days: "дн",
|
|
@@ -742,13 +1001,25 @@ const ru = {
|
|
|
742
1001
|
conflict: {
|
|
743
1002
|
title: "Конфликт расписания",
|
|
744
1003
|
body: "Это перемещение противоречит ограничениям зависимостей. Автоматически перепланировать затронутые задачи ({{count}})?",
|
|
1004
|
+
body_one: "Это перемещение противоречит ограничениям зависимостей. Автоматически перепланировать затронутые задачи ({{count}})?",
|
|
1005
|
+
body_few: "Это перемещение противоречит ограничениям зависимостей. Автоматически перепланировать затронутые задачи ({{count}})?",
|
|
1006
|
+
body_many: "Это перемещение противоречит ограничениям зависимостей. Автоматически перепланировать затронутые задачи ({{count}})?",
|
|
1007
|
+
body_other: "Это перемещение противоречит ограничениям зависимостей. Автоматически перепланировать затронутые задачи ({{count}})?",
|
|
745
1008
|
confirm: "Перепланировать автоматически",
|
|
746
1009
|
cancel: "Оставить как есть",
|
|
747
1010
|
},
|
|
748
1011
|
autoScheduleDlg: {
|
|
749
1012
|
title: "Автопланирование",
|
|
750
1013
|
body: "Сдвинуть {{count}} задач(и) на более поздний срок, чтобы соблюсти связи зависимостей?",
|
|
1014
|
+
body_one: "Сдвинуть {{count}} задачу на более поздний срок, чтобы соблюсти связи зависимостей?",
|
|
1015
|
+
body_few: "Сдвинуть {{count}} задачи на более поздний срок, чтобы соблюсти связи зависимостей?",
|
|
1016
|
+
body_many: "Сдвинуть {{count}} задач на более поздний срок, чтобы соблюсти связи зависимостей?",
|
|
1017
|
+
body_other: "Сдвинуть {{count}} задачи на более поздний срок, чтобы соблюсти связи зависимостей?",
|
|
751
1018
|
skipped: "{{count}} заблокированных задач(и) также нарушают связи и были пропущены.",
|
|
1019
|
+
skipped_one: "{{count}} заблокированная задача также нарушает связи и была пропущена.",
|
|
1020
|
+
skipped_few: "{{count}} заблокированные задачи также нарушают связи и были пропущены.",
|
|
1021
|
+
skipped_many: "{{count}} заблокированных задач также нарушают связи и были пропущены.",
|
|
1022
|
+
skipped_other: "{{count}} заблокированной задачи также нарушают связи и были пропущены.",
|
|
752
1023
|
confirm: "Применить",
|
|
753
1024
|
cancel: "Отмена",
|
|
754
1025
|
none: "Все зависимости соблюдены — перепланировать нечего.",
|
|
@@ -827,10 +1098,14 @@ const ru = {
|
|
|
827
1098
|
tabActionsFor: "Действия с представлением {{name}}",
|
|
828
1099
|
readonlyAriaLabel: "Представление только для чтения",
|
|
829
1100
|
readonlyTooltip: "Системное представление — определено в коде, только для чтения.",
|
|
1101
|
+
malformedFilter: "Фильтр этого представления некорректен, поэтому записи не отображаются: условие {{subject}} невозможно применить.",
|
|
1102
|
+
noObject: "Объект не указан: задайте {{property}} или dataSource.object.",
|
|
830
1103
|
},
|
|
831
1104
|
designer: {
|
|
832
1105
|
undo: "Отменить",
|
|
833
1106
|
redo: "Повторить",
|
|
1107
|
+
canvasMinimap: "Миникарта холста",
|
|
1108
|
+
versionHistory: "История версий",
|
|
834
1109
|
},
|
|
835
1110
|
detail: {
|
|
836
1111
|
editInlineHint: "Дважды щёлкните для редактирования",
|
|
@@ -853,8 +1128,14 @@ const ru = {
|
|
|
853
1128
|
addReaction: "Добавить реакцию",
|
|
854
1129
|
pageHeaderActions: "Действия в заголовке страницы",
|
|
855
1130
|
emojiPicker: "Выбор эмодзи",
|
|
856
|
-
|
|
857
|
-
|
|
1131
|
+
// objectui#11445 — a count family: each slot agrees the noun with the
|
|
1132
|
+
// number (one 1/21, few 2-4, many 5-20, other a fraction). The base key, a
|
|
1133
|
+
// count-invariant form, answers a call made without a count.
|
|
1134
|
+
reactionCount: "{{emoji}} Реакций: {{count}}",
|
|
1135
|
+
reactionCount_one: "{{emoji}} {{count}} реакция",
|
|
1136
|
+
reactionCount_few: "{{emoji}} {{count}} реакции",
|
|
1137
|
+
reactionCount_many: "{{emoji}} {{count}} реакций",
|
|
1138
|
+
reactionCount_other: "{{emoji}} {{count}} реакции",
|
|
858
1139
|
recordDetail: "Сведения о записи",
|
|
859
1140
|
recordDetailWithLabel: "Сведения: {{label}}",
|
|
860
1141
|
openAsFullPage: "Открыть на всю страницу",
|
|
@@ -881,7 +1162,6 @@ const ru = {
|
|
|
881
1162
|
viewAll: "Показать все",
|
|
882
1163
|
new: "Создать",
|
|
883
1164
|
add: "Добавить",
|
|
884
|
-
emptyValue: "—",
|
|
885
1165
|
activity: "Активность",
|
|
886
1166
|
editRow: "Редактировать",
|
|
887
1167
|
deleteRow: "Удалить",
|
|
@@ -893,6 +1173,7 @@ const ru = {
|
|
|
893
1173
|
sortBy: "Сортировать по",
|
|
894
1174
|
filterPlaceholder: "Фильтр…",
|
|
895
1175
|
highlightFields: "Ключевые поля",
|
|
1176
|
+
highlightsLabel: "Ключевые поля записи",
|
|
896
1177
|
comments: "Комментарии",
|
|
897
1178
|
searchComments: "Поиск комментариев…",
|
|
898
1179
|
addCommentPlaceholder: "Добавить комментарий… (Ctrl+Enter для отправки)",
|
|
@@ -903,11 +1184,26 @@ const ru = {
|
|
|
903
1184
|
unpin: "Открепить",
|
|
904
1185
|
justNow: "только что",
|
|
905
1186
|
minutesAgo: "{{count}} мин. назад",
|
|
1187
|
+
minutesAgo_one: "{{count}} мин. назад",
|
|
1188
|
+
minutesAgo_few: "{{count}} мин. назад",
|
|
1189
|
+
minutesAgo_many: "{{count}} мин. назад",
|
|
1190
|
+
minutesAgo_other: "{{count}} мин. назад",
|
|
906
1191
|
hoursAgo: "{{count}} ч. назад",
|
|
1192
|
+
hoursAgo_one: "{{count}} ч. назад",
|
|
1193
|
+
hoursAgo_few: "{{count}} ч. назад",
|
|
1194
|
+
hoursAgo_many: "{{count}} ч. назад",
|
|
1195
|
+
hoursAgo_other: "{{count}} ч. назад",
|
|
907
1196
|
daysAgo: "{{count}} дн. назад",
|
|
1197
|
+
daysAgo_one: "{{count}} дн. назад",
|
|
1198
|
+
daysAgo_few: "{{count}} дн. назад",
|
|
1199
|
+
daysAgo_many: "{{count}} дн. назад",
|
|
1200
|
+
daysAgo_other: "{{count}} дн. назад",
|
|
908
1201
|
dropFilesToUpload: "Перетащите файлы сюда или нажмите для загрузки",
|
|
909
1202
|
attachmentCount: "{{count}} вложение",
|
|
910
|
-
|
|
1203
|
+
attachmentCount_one: "{{count}} вложение",
|
|
1204
|
+
attachmentCount_few: "{{count}} вложения",
|
|
1205
|
+
attachmentCount_many: "{{count}} вложений",
|
|
1206
|
+
attachmentCount_other: "{{count}} вложения",
|
|
911
1207
|
removeAttachment: "Удалить вложение",
|
|
912
1208
|
// Record Attachments panel (enable.files, objectstack#4358)
|
|
913
1209
|
attachments: "Вложения",
|
|
@@ -916,6 +1212,7 @@ const ru = {
|
|
|
916
1212
|
noAttachments: "Вложений пока нет. Загрузите файл, чтобы начать.",
|
|
917
1213
|
downloadAttachment: "Скачать",
|
|
918
1214
|
deleteAttachment: "Удалить вложение",
|
|
1215
|
+
deleteAttachmentConfirm: "Вы уверены, что хотите удалить вложение \"{{name}}\"?",
|
|
919
1216
|
attachmentDeleteDenied: "Удалить это вложение может только загрузивший его пользователь или тот, кто может редактировать эту запись.",
|
|
920
1217
|
attachmentParentAccessDenied: "У вас нет доступа для прикрепления файлов к этой записи.",
|
|
921
1218
|
attachmentDownloadDenied: "У вас нет доступа для скачивания этого вложения.",
|
|
@@ -925,11 +1222,6 @@ const ru = {
|
|
|
925
1222
|
attachmentsLoadFailed: "Не удалось загрузить вложения этой записи.",
|
|
926
1223
|
attachmentsApiUnavailable: "Список вложений недоступен для этого объекта.",
|
|
927
1224
|
retryLoadAttachments: "Повторить",
|
|
928
|
-
unifiedDiff: "Единое представление",
|
|
929
|
-
sideBySideDiff: "Параллельное представление",
|
|
930
|
-
noChanges: "Нет изменений",
|
|
931
|
-
previousVersion: "Предыдущая",
|
|
932
|
-
currentVersion: "Текущая",
|
|
933
1225
|
discussion: "Обсуждение",
|
|
934
1226
|
showDiscussion: "Показать обсуждение ({{count}})",
|
|
935
1227
|
hideDiscussion: "Скрыть обсуждение",
|
|
@@ -944,25 +1236,37 @@ const ru = {
|
|
|
944
1236
|
writeComment: "Написать комментарий…",
|
|
945
1237
|
subscribedTooltip: "Подписаны — нажмите для отписки",
|
|
946
1238
|
unsubscribedTooltip: "Подписаться на уведомления",
|
|
947
|
-
firstRecord: "Первая запись (Home)",
|
|
948
|
-
previousRecordKey: "Предыдущая запись (←)",
|
|
949
|
-
nextRecordKey: "Следующая запись (→)",
|
|
950
|
-
lastRecord: "Последняя запись (End)",
|
|
951
1239
|
noRecords: "Нет записей",
|
|
952
|
-
searchWhileNavigating: "Поиск при навигации",
|
|
953
|
-
searchRecords: "Поиск записей…",
|
|
954
1240
|
allActivity: "Вся активность",
|
|
955
1241
|
commentsOnly: "Только комментарии",
|
|
956
1242
|
fieldChangesFilter: "Изменения полей",
|
|
957
1243
|
tasksOnly: "Только задачи",
|
|
958
1244
|
leaveCommentPlaceholder: "Оставить комментарий… (Ctrl+Enter для отправки)",
|
|
959
1245
|
noActivity: "Нет зарегистрированной активности",
|
|
1246
|
+
activityAccessDenied: "У вас нет разрешения на просмотр активности этой записи.",
|
|
1247
|
+
commentsAccessDenied: "У вас нет разрешения на просмотр комментариев к этой записи.",
|
|
1248
|
+
// objectui#7149 — the rest of `ActivityTimeline`. The four chip labels the
|
|
1249
|
+
// `detail.*` pack did not already name, and the `formatFieldChange`
|
|
1250
|
+
// sentences, which are assembled in code and so need interpolation holes.
|
|
1251
|
+
allFilter: 'Все',
|
|
1252
|
+
createsFilter: 'Создания',
|
|
1253
|
+
deletesFilter: 'Удаления',
|
|
1254
|
+
statusChangesFilter: 'Изменения статуса',
|
|
1255
|
+
activityEmptyValue: '(пусто)',
|
|
1256
|
+
activityFieldChanged: 'Изменено поле {{field}} с «{{old}}» на «{{new}}»',
|
|
1257
|
+
activityCreated: 'Создал эту запись',
|
|
1258
|
+
activityDeleted: 'Удалил эту запись',
|
|
1259
|
+
activityStatusChanged: 'Изменил статус на «{{value}}»',
|
|
1260
|
+
activityUpdated: 'Обновил запись',
|
|
960
1261
|
loadMore: "Загрузить ещё",
|
|
961
1262
|
edited: "(изменено)",
|
|
962
1263
|
via: "через {{source}}",
|
|
963
1264
|
viewSource: "Показать источник",
|
|
964
1265
|
replyCount: "{{count}} ответ",
|
|
965
|
-
|
|
1266
|
+
replyCount_one: "{{count}} ответ",
|
|
1267
|
+
replyCount_few: "{{count}} ответа",
|
|
1268
|
+
replyCount_many: "{{count}} ответов",
|
|
1269
|
+
replyCount_other: "{{count}} ответа",
|
|
966
1270
|
replyPlaceholder: "Ответить…",
|
|
967
1271
|
filterActivity: "Фильтр активности",
|
|
968
1272
|
openDiscussion: "Открыть панель обсуждения",
|
|
@@ -974,9 +1278,12 @@ const ru = {
|
|
|
974
1278
|
lockedByApproval: "Заблокировано для согласования",
|
|
975
1279
|
lockedTooltip: "У этой записи есть ожидающий запрос на согласование; редактирование заблокировано",
|
|
976
1280
|
writeStrippedTitle: "Сохранено, но часть полей не применена",
|
|
1281
|
+
writeWarningsTitle: "Сохранено, но есть предупреждения",
|
|
977
1282
|
writeStrippedReadonly: "Поля только для чтения, поэтому не применены: {{fields}}",
|
|
978
1283
|
writeStrippedByState: "Поля недоступны для редактирования в текущем состоянии записи, поэтому не применены: {{fields}}",
|
|
979
1284
|
writeStrippedPrimaryKey: "Идентификатор записи нельзя изменить при сохранении, поэтому поля не применены: {{fields}}",
|
|
1285
|
+
writeStrippedComputed: "Поля вычисляются сервером по формуле, поэтому отправленные значения не применены: {{fields}}",
|
|
1286
|
+
writeStrippedStoredExpression: "Поля вычисляются из записи, поэтому вместо отправленных значений сохранены вычисленные: {{fields}}",
|
|
980
1287
|
writeStrippedUnknownReason: "Не применены сервером: {{fields}}",
|
|
981
1288
|
approvalPendingEditable: "На согласовании · редактирование доступно",
|
|
982
1289
|
approvalPendingTooltip: "У этой записи есть ожидающий запрос на согласование, но этот шаг всё ещё разрешает редактирование",
|
|
@@ -998,6 +1305,13 @@ const ru = {
|
|
|
998
1305
|
pathStageLostUpcoming: '{{stage}}, проигран, не достигнут',
|
|
999
1306
|
pathStageWonUpcoming: '{{stage}}, целевой этап, не достигнут',
|
|
1000
1307
|
linkCopied: "Ссылка скопирована в буфер обмена",
|
|
1308
|
+
commentFailed: "Комментарий не опубликован. Ничего не сохранено — попробуйте ещё раз.",
|
|
1309
|
+
reactionFailed: "Реакция не сохранена. Попробуйте ещё раз.",
|
|
1310
|
+
editComment: "Редактировать комментарий",
|
|
1311
|
+
deleteComment: "Удалить комментарий",
|
|
1312
|
+
deleteCommentConfirm: "Вы уверены, что хотите удалить этот комментарий?",
|
|
1313
|
+
commentEditFailed: "Изменения не сохранены. Комментарий сохраняет прежний текст.",
|
|
1314
|
+
commentDeleteFailed: "Комментарий не удалён. Попробуйте ещё раз.",
|
|
1001
1315
|
linkCopyFailed: "Не удалось скопировать ссылку",
|
|
1002
1316
|
cancel: "Отмена",
|
|
1003
1317
|
cancelEdit: "Отменить изменения",
|
|
@@ -1018,39 +1332,70 @@ const ru = {
|
|
|
1018
1332
|
deleteRowTitle: "Удалить запись",
|
|
1019
1333
|
createdBy: "Создано",
|
|
1020
1334
|
updatedBy: "Обновлено",
|
|
1021
|
-
// objectui#3863 — base key,
|
|
1022
|
-
//
|
|
1023
|
-
//
|
|
1024
|
-
//
|
|
1025
|
-
//
|
|
1026
|
-
// correct for EVERY Russian count. `_one` keeps the agreeing form for 1/21/31/…
|
|
1335
|
+
// objectui#3863 — base key, answering only a call made without a count: since
|
|
1336
|
+
// objectui#11432 every ru category has its own slot — `_one` 1/21/31…, `_few`
|
|
1337
|
+
// 2-4/22-24… and `_many` 0/5-20… (genitive plural after the substantivised
|
|
1338
|
+
// adjective in both), `_other` fractions (genitive singular). The base keeps the
|
|
1339
|
+
// count-invariant «Существительное: {{count}}» form.
|
|
1027
1340
|
showEmptyRelated: "+ Пустых: {{count}}",
|
|
1028
1341
|
showEmptyRelated_one: "+ {{count}} пустое",
|
|
1029
|
-
|
|
1342
|
+
showEmptyRelated_few: "+ {{count}} пустых",
|
|
1343
|
+
showEmptyRelated_many: "+ {{count}} пустых",
|
|
1344
|
+
showEmptyRelated_other: "+ {{count}} пустого",
|
|
1030
1345
|
copyEmail: "Копировать email",
|
|
1031
1346
|
copyPhone: "Копировать телефон",
|
|
1032
1347
|
copyRecordId: "Копировать ID записи",
|
|
1033
1348
|
showEmptyFields: "Показать {{count}} пустых полей",
|
|
1349
|
+
showEmptyFields_one: "Показать {{count}} пустое поле",
|
|
1350
|
+
showEmptyFields_few: "Показать {{count}} пустых поля",
|
|
1351
|
+
showEmptyFields_many: "Показать {{count}} пустых полей",
|
|
1352
|
+
showEmptyFields_other: "Показать {{count}} пустого поля",
|
|
1034
1353
|
hideEmptyFields: "Скрыть пустые поля",
|
|
1035
1354
|
noValue: "Нет значения",
|
|
1355
|
+
unresolvedReference: "Неразрешённая ссылка: {{value}} не удалось сопоставить с пользователем",
|
|
1356
|
+
unresolvedLookupReference: "Неразрешённая ссылка: {{value}} не удалось сопоставить с записью на этом экране",
|
|
1357
|
+
repeaterItemCount: "Элементов: {{count}}",
|
|
1358
|
+
repeaterItemCount_one: "{{count}} элемент",
|
|
1359
|
+
repeaterItemCount_few: "{{count}} элемента",
|
|
1360
|
+
repeaterItemCount_many: "{{count}} элементов",
|
|
1361
|
+
repeaterItemCount_other: "{{count}} элемента",
|
|
1362
|
+
fileCount: "Файлов: {{count}}",
|
|
1363
|
+
fileCount_one: "{{count}} файл",
|
|
1364
|
+
fileCount_few: "{{count}} файла",
|
|
1365
|
+
fileCount_many: "{{count}} файлов",
|
|
1366
|
+
fileCount_other: "{{count}} файла",
|
|
1036
1367
|
},
|
|
1037
1368
|
chart: {
|
|
1038
|
-
noData: "Нет данных для графика",
|
|
1039
1369
|
loading: "Загрузка графика…",
|
|
1370
|
+
refreshing: "Обновление…",
|
|
1040
1371
|
nullCategory: "(Не указано)",
|
|
1041
|
-
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
markersCount: "{{count}} маркеров",
|
|
1046
|
-
invalidCoordinates: "{{count}} запись с отсутствующими или недействительными координатами исключена из карты.",
|
|
1047
|
-
invalidCoordinatesPlural: "{{count}} записей с отсутствующими или недействительными координатами исключены из карты.",
|
|
1372
|
+
scatterOneMeasure: "Точечная диаграмма строит только одну меру. Оставьте один ряд:",
|
|
1373
|
+
unconfigured: {
|
|
1374
|
+
noCategoryAxis: "Требуется ось категорий диаграммы — диаграмма, привязанная к объекту, не придумывает её. Объявите одно из:",
|
|
1375
|
+
},
|
|
1048
1376
|
},
|
|
1049
1377
|
dashboard: {
|
|
1050
|
-
|
|
1378
|
+
// objectui#7063 — the DEFAULT empty state every dashboard widget renders
|
|
1379
|
+
// when its query SUCCEEDED and returned nothing. It replaced the terse
|
|
1380
|
+
// per-widget `noRows` / `noDataAvailable` fragments at the render site;
|
|
1381
|
+
// objectui#7125 deleted those two keys from all ten packs once nothing
|
|
1382
|
+
// read them. The copy here has to read as a state rather than a failure,
|
|
1383
|
+
// which is why it says the widget loaded. `sourceLabel` carries its own
|
|
1384
|
+
// punctuation so the call site concatenates no separator (see
|
|
1385
|
+
// `WidgetEmptyState`).
|
|
1386
|
+
empty: {
|
|
1387
|
+
title: "Данных пока нет",
|
|
1388
|
+
message: "Виджет успешно загружен, но запрос пока не вернул ни одной записи.",
|
|
1389
|
+
sourceLabel: "Источник данных:",
|
|
1390
|
+
},
|
|
1051
1391
|
loading: "Загрузка…",
|
|
1392
|
+
refreshing: "Обновление…",
|
|
1393
|
+
refreshAll: "Обновить все",
|
|
1394
|
+
refreshDashboard: "Обновить дашборд",
|
|
1052
1395
|
pickMeasures: "Выберите меры (значения) для этого виджета набора данных.",
|
|
1053
1396
|
datasetUnsupported: "Этот источник данных не поддерживает запросы к наборам данных.",
|
|
1397
|
+
widgetForbiddenTitle: "Нет доступа",
|
|
1398
|
+
widgetForbiddenMessage: "У вас нет прав на просмотр данных этого виджета.",
|
|
1054
1399
|
details: "Подробности",
|
|
1055
1400
|
exportCsv: "Экспорт в CSV",
|
|
1056
1401
|
openInList: "Открыть в списке",
|
|
@@ -1078,12 +1423,10 @@ const ru = {
|
|
|
1078
1423
|
},
|
|
1079
1424
|
},
|
|
1080
1425
|
addWidget: "Добавить виджет",
|
|
1081
|
-
removeWidget: "Удалить виджет",
|
|
1082
1426
|
editLayout: "Редактировать макет",
|
|
1083
1427
|
saveLayout: "Сохранить макет",
|
|
1084
1428
|
resetLayout: "Сбросить макет",
|
|
1085
1429
|
total: "Итого",
|
|
1086
|
-
noDataAvailable: "Данные недоступны",
|
|
1087
1430
|
noDataSourceFor: "Нет источника данных для",
|
|
1088
1431
|
config: {
|
|
1089
1432
|
breadcrumb: {
|
|
@@ -1205,10 +1548,6 @@ const ru = {
|
|
|
1205
1548
|
appDescription: "Описание",
|
|
1206
1549
|
appIcon: "Значок",
|
|
1207
1550
|
template: "Шаблон",
|
|
1208
|
-
layout: "Макет",
|
|
1209
|
-
layoutSidebar: "Боковая панель",
|
|
1210
|
-
layoutHeader: "Заголовок",
|
|
1211
|
-
layoutEmpty: "Пусто",
|
|
1212
1551
|
selectObjects: "Выбрать объекты",
|
|
1213
1552
|
searchObjects: "Поиск объектов…",
|
|
1214
1553
|
selectAll: "Выбрать все",
|
|
@@ -1217,7 +1556,6 @@ const ru = {
|
|
|
1217
1556
|
addGroup: "Добавить группу",
|
|
1218
1557
|
addUrl: "Добавить URL",
|
|
1219
1558
|
addSeparator: "Добавить разделитель",
|
|
1220
|
-
noNavItems: "Элементов навигации пока нет.",
|
|
1221
1559
|
logoUrl: "Logo URL",
|
|
1222
1560
|
primaryColor: "Основной цвет",
|
|
1223
1561
|
faviconUrl: "Favicon URL",
|
|
@@ -1244,13 +1582,12 @@ const ru = {
|
|
|
1244
1582
|
appearance: "Внешний вид",
|
|
1245
1583
|
rowHeight: "Высота строки",
|
|
1246
1584
|
livePreview: "Предпросмотр в реальном времени",
|
|
1247
|
-
stepBasicDesc: "Имя, заголовок и
|
|
1585
|
+
stepBasicDesc: "Имя, заголовок и значок",
|
|
1248
1586
|
stepObjectsDesc: "Выбрать бизнес-объекты",
|
|
1249
1587
|
stepNavigationDesc: "Построить дерево навигации",
|
|
1250
1588
|
stepBrandingDesc: "Логотип, цвета и фавикон",
|
|
1251
1589
|
noObjectsFound: "Объекты не найдены.",
|
|
1252
1590
|
noNavItemsHint: "Элементов навигации пока нет. Выберите объекты на предыдущем шаге или добавьте вручную.",
|
|
1253
|
-
separator: "Разделитель",
|
|
1254
1591
|
separatorLabel: "— Разделитель —",
|
|
1255
1592
|
newGroup: "Новая группа",
|
|
1256
1593
|
newLink: "Новая ссылка",
|
|
@@ -1284,6 +1621,7 @@ const ru = {
|
|
|
1284
1621
|
navTypeSeparator: "Разделитель",
|
|
1285
1622
|
navTypeAction: "Действие",
|
|
1286
1623
|
navTypeComponent: "Компонент",
|
|
1624
|
+
navTypeDoc: "Документ",
|
|
1287
1625
|
navEditIcon: "Редактировать значок",
|
|
1288
1626
|
navToggleVisible: "Переключить видимость",
|
|
1289
1627
|
navHidden: "Скрыто",
|
|
@@ -1361,11 +1699,8 @@ const ru = {
|
|
|
1361
1699
|
defaultValue: "Значение по умолчанию",
|
|
1362
1700
|
placeholder: "Заполнитель",
|
|
1363
1701
|
referenceTo: "Ссылка на",
|
|
1364
|
-
formula: "Формула",
|
|
1365
1702
|
options: "Параметры",
|
|
1366
1703
|
addOption: "Добавить параметр",
|
|
1367
|
-
validationRules: "Правила валидации",
|
|
1368
|
-
addRule: "Добавить правило",
|
|
1369
1704
|
systemBadge: "Система",
|
|
1370
1705
|
ungrouped: "Общее",
|
|
1371
1706
|
deleteConfirmTitle: "Удалить поле?",
|
|
@@ -1384,16 +1719,35 @@ const ru = {
|
|
|
1384
1719
|
},
|
|
1385
1720
|
},
|
|
1386
1721
|
console: {
|
|
1722
|
+
studio: {
|
|
1723
|
+
title: "Studio",
|
|
1724
|
+
accessRequired: "Чтобы открыть Studio, нужен доступ к Studio.",
|
|
1725
|
+
},
|
|
1387
1726
|
saveAdvisoryTitle: "Сохранено — проверка авторинга выдала рекомендаций: {{count}}",
|
|
1727
|
+
saveAdvisoryTitle_one: "Сохранено — проверка авторинга выдала рекомендаций: {{count}}",
|
|
1728
|
+
saveAdvisoryTitle_few: "Сохранено — проверка авторинга выдала рекомендаций: {{count}}",
|
|
1729
|
+
saveAdvisoryTitle_many: "Сохранено — проверка авторинга выдала рекомендаций: {{count}}",
|
|
1730
|
+
saveAdvisoryTitle_other: "Сохранено — проверка авторинга выдала рекомендаций: {{count}}",
|
|
1731
|
+
publishAdvisoryTitle: "Опубликовано — проверка авторинга выдала рекомендаций: {{count}}",
|
|
1732
|
+
publishAdvisoryTitle_one: "Опубликовано — проверка авторинга выдала рекомендаций: {{count}}",
|
|
1733
|
+
publishAdvisoryTitle_few: "Опубликовано — проверка авторинга выдала рекомендаций: {{count}}",
|
|
1734
|
+
publishAdvisoryTitle_many: "Опубликовано — проверка авторинга выдала рекомендаций: {{count}}",
|
|
1735
|
+
publishAdvisoryTitle_other: "Опубликовано — проверка авторинга выдала рекомендаций: {{count}}",
|
|
1736
|
+
importMappingsUnavailable: "Не удалось загрузить сохранённые сопоставления импорта для {{object}}",
|
|
1737
|
+
importMappingsRefused: "Сервер отклонил этот запрос, поэтому список пуст из-за того, что его не удалось прочитать, а не потому, что ничего не зарегистрировано. Войдите заново или запросите доступ у администратора.",
|
|
1738
|
+
importMappingsUnreadable: "Список пуст из-за того, что его не удалось прочитать, а не потому, что ничего не зарегистрировано. Повторите попытку и сообщите о проблеме, если она повторяется.",
|
|
1739
|
+
savedViewsUnavailable: "Не удалось загрузить сохранённые представления для {{object}}",
|
|
1740
|
+
savedViewsRefused: "Сервер отклонил этот запрос, поэтому список пуст из-за того, что его не удалось прочитать, а не потому, что у этого объекта нет сохранённых представлений. Войдите заново или запросите доступ у администратора.",
|
|
1741
|
+
savedViewsUnreadable: "Список пуст из-за того, что его не удалось прочитать, а не потому, что у этого объекта нет сохранённых представлений. Повторите попытку и сообщите о проблеме, если она повторяется.",
|
|
1388
1742
|
settingsHub: {
|
|
1389
1743
|
title: "Настройки",
|
|
1390
|
-
subtitle: "Настройте
|
|
1744
|
+
subtitle: "Настройте систему, интеграции и флаги функций.",
|
|
1391
1745
|
loadError: "Не удалось загрузить настройки",
|
|
1392
1746
|
empty: "Настройки не зарегистрированы. Плагины могут регистрировать манифесты настроек через SettingsService.",
|
|
1393
1747
|
settingsCount: "Настроек: {{n}}",
|
|
1394
1748
|
beta: "Бета",
|
|
1395
1749
|
categories: {
|
|
1396
|
-
Workspace: "
|
|
1750
|
+
Workspace: "Общие",
|
|
1397
1751
|
Communication: "Коммуникации",
|
|
1398
1752
|
Security: "Безопасность",
|
|
1399
1753
|
Infrastructure: "Инфраструктура",
|
|
@@ -1440,13 +1794,22 @@ const ru = {
|
|
|
1440
1794
|
},
|
|
1441
1795
|
usage: {
|
|
1442
1796
|
title: "Использование ИИ",
|
|
1443
|
-
|
|
1444
|
-
meterAsk: "Вопрос",
|
|
1797
|
+
poolUsed: "Использовано {{percent}}",
|
|
1445
1798
|
statusOk: "Осталось много",
|
|
1446
1799
|
statusLow: "Заканчивается",
|
|
1447
1800
|
statusFull: "Лимит исчерпан",
|
|
1448
1801
|
resetsDaily: "Сбросится сегодня ночью",
|
|
1449
1802
|
resetsMonthly: "Сбросится в следующем цикле",
|
|
1803
|
+
resetsWeeklyDays: "Сброс через {{count}} дней",
|
|
1804
|
+
resetsWeeklyDays_one: "Сброс через {{count}} день",
|
|
1805
|
+
resetsWeeklyDays_few: "Сброс через {{count}} дня",
|
|
1806
|
+
resetsWeeklyDays_many: "Сброс через {{count}} дней",
|
|
1807
|
+
resetsWeeklyDays_other: "Сброс через {{count}} дня",
|
|
1808
|
+
resetsWeeklyHours: "Сброс через {{count}} часов",
|
|
1809
|
+
resetsWeeklyHours_one: "Сброс через {{count}} час",
|
|
1810
|
+
resetsWeeklyHours_few: "Сброс через {{count}} часа",
|
|
1811
|
+
resetsWeeklyHours_many: "Сброс через {{count}} часов",
|
|
1812
|
+
resetsWeeklyHours_other: "Сброс через {{count}} часа",
|
|
1450
1813
|
ctaUpgrade: "Повысьте тариф, чтобы продолжить",
|
|
1451
1814
|
ctaTopUp: "Добавьте кредиты, чтобы продолжить",
|
|
1452
1815
|
ariaLabel: "Использование ИИ: {{status}}",
|
|
@@ -1459,6 +1822,31 @@ const ru = {
|
|
|
1459
1822
|
share: "Поделиться",
|
|
1460
1823
|
shareTitle: "Поделиться этим диалогом",
|
|
1461
1824
|
shareDisabledTitle: "Начните диалог, чтобы включить публикацию",
|
|
1825
|
+
buildDoctor: "Диагностика сборки",
|
|
1826
|
+
buildDoctorTitle: "Диагностика сборки — что на самом деле применено?",
|
|
1827
|
+
buildDoctorDisabledTitle: "Сначала отправьте сообщение",
|
|
1828
|
+
buildDoctorDrawer: {
|
|
1829
|
+
description: 'Что заявил агент и что на самом деле действует. Диагностика только для чтения.',
|
|
1830
|
+
reconciling: 'Сверка…',
|
|
1831
|
+
notAvailable: 'Недоступно — беседа не найдена или у вас нет доступа.',
|
|
1832
|
+
untitled: '(без названия)',
|
|
1833
|
+
summary: 'Ходов: {{turns}} · сообщений: {{messages}} · токенов: {{tokens}} · LLM: {{seconds}} с',
|
|
1834
|
+
allLive: 'Все попытки изменений ({{count}}) действуют — ничего не потерялось.',
|
|
1835
|
+
discrepancies: 'Расхождений: {{count}} — сказанное в чате не совпадает с тем, что действует.',
|
|
1836
|
+
orphanedTitle: 'Предложено, но не применено',
|
|
1837
|
+
orphanedHint: 'Карточку подтверждения, предложенную агентом, не применил ни один последующий ход — изменение незаметно потерялось.',
|
|
1838
|
+
missingTitle: 'Заявлено, но отсутствует',
|
|
1839
|
+
missingHint: 'Результат инструмента сообщил, что изменение применено, но артефакт не действует в sys_metadata.',
|
|
1840
|
+
toolErrorsTitle: 'Ошибки инструментов',
|
|
1841
|
+
toolErrorsHint: 'Вызовы инструментов, вернувшие ошибку во время сборки.',
|
|
1842
|
+
verifyTitle: 'Проверка сборки (verify_build)',
|
|
1843
|
+
yourApp: 'Ваше приложение:',
|
|
1844
|
+
noIssues: 'Проблем: 0',
|
|
1845
|
+
issueCount: 'Проблем: {{count}}',
|
|
1846
|
+
platformNoise: 'Скрыто находок платформы sys_*: {{count}}',
|
|
1847
|
+
pendingActions: 'Ожидающие действия',
|
|
1848
|
+
timeline: 'Хронология ({{count}})',
|
|
1849
|
+
},
|
|
1462
1850
|
newChat: "Создать",
|
|
1463
1851
|
searchChats: "Поиск по чатам…",
|
|
1464
1852
|
noChatsYet: "Чатов пока нет",
|
|
@@ -1481,6 +1869,8 @@ const ru = {
|
|
|
1481
1869
|
liveCanvasUnlisted: "Работающее приложение — {{app}} (скрыто до публикации)",
|
|
1482
1870
|
loadingAgents: "Загрузка агентов…",
|
|
1483
1871
|
askAnything: "Спросите о чём угодно…",
|
|
1872
|
+
askOrChangeApp: "Спросите о данных или попросите меня изменить это приложение…",
|
|
1873
|
+
describeAppToBuild: "Опишите приложение, которое хотите создать, или что изменить…",
|
|
1484
1874
|
emptyTitle: "Начните диалог",
|
|
1485
1875
|
emptyDescription: "Спросите о чём угодно — ассистент видит контекст вашего текущего приложения.",
|
|
1486
1876
|
switchAssistant: "Сменить ассистента",
|
|
@@ -1488,7 +1878,7 @@ const ru = {
|
|
|
1488
1878
|
empty: {
|
|
1489
1879
|
build: {
|
|
1490
1880
|
title: "Создать с помощью ИИ",
|
|
1491
|
-
description: "Опишите приложение
|
|
1881
|
+
description: "Опишите приложение обычными словами — я подготовлю объекты, экраны и демонстрационные данные, а вы проверите и опубликуете.",
|
|
1492
1882
|
},
|
|
1493
1883
|
ask: {
|
|
1494
1884
|
title: "Спросите свои данные",
|
|
@@ -1497,17 +1887,22 @@ const ru = {
|
|
|
1497
1887
|
editApp: {
|
|
1498
1888
|
title: "Редактирование «{{app}}»",
|
|
1499
1889
|
titleGeneric: "Редактировать это приложение",
|
|
1500
|
-
description: "Что нужно изменить? Я изменю это приложение на месте — добавлю поле, объект, представление или
|
|
1890
|
+
description: "Что нужно изменить? Я изменю это приложение на месте — добавлю поле, объект, представление или дашборд либо скорректирую существующее.",
|
|
1501
1891
|
},
|
|
1502
1892
|
},
|
|
1503
1893
|
clearConversation: "Очистить",
|
|
1504
1894
|
sendHint: "чтобы отправить",
|
|
1895
|
+
newlineHint: "для новой строки",
|
|
1505
1896
|
agentActivity: "Активность агента",
|
|
1506
1897
|
toolCompleted: "Завершено",
|
|
1507
1898
|
toolRunning: "Выполняется",
|
|
1508
1899
|
toolAwaitingApproval: "Ожидает подтверждения",
|
|
1509
1900
|
toolFailed: "Ошибка",
|
|
1510
1901
|
toolDetailsHidden: "Входные данные инструментов и необработанные результаты в этом режиме скрыты.",
|
|
1902
|
+
toolDenyReason: "Отклонено оператором в чате",
|
|
1903
|
+
builderHandoffTitle: "Создать в конструкторе",
|
|
1904
|
+
builderHandoffOpen: "Открыть в конструкторе →",
|
|
1905
|
+
builderHandoffSuperseded: "Есть более новый запрос",
|
|
1511
1906
|
copy: "Копировать",
|
|
1512
1907
|
copied: "Скопировано",
|
|
1513
1908
|
regenerate: "Сгенерировать заново",
|
|
@@ -1522,7 +1917,7 @@ const ru = {
|
|
|
1522
1917
|
publishOk: "Опубликовано — объекты активны.",
|
|
1523
1918
|
seedWarn: "Опубликовано, но часть примеров данных загрузить не удалось.",
|
|
1524
1919
|
openBuiltApp: "Открыть приложение",
|
|
1525
|
-
|
|
1920
|
+
viewBuiltAppInStudio: "Открыть в Studio",
|
|
1526
1921
|
previewDraft: "Предпросмотр",
|
|
1527
1922
|
previewApp: "Предпросмотр приложения",
|
|
1528
1923
|
resizeSplit: "Изменить размер чата и предпросмотра",
|
|
@@ -1550,23 +1945,41 @@ const ru = {
|
|
|
1550
1945
|
recentRecords: "Перечисли 5 последних созданных записей.",
|
|
1551
1946
|
recordCounts: "Посчитай количество записей по каждому объекту.",
|
|
1552
1947
|
},
|
|
1948
|
+
// cloud#1984 — these five chips are the maker's own recommendations, so
|
|
1949
|
+
// they may only ask for what ADR-0112 v1 BUILDS: objects, fields, views
|
|
1950
|
+
// (grid/kanban/calendar/gallery), pages, dashboards and sample data. No
|
|
1951
|
+
// wording that promises autonomous behaviour (alert / remind / notify /
|
|
1952
|
+
// automate / status workflow) — v1 has no flows, actions or schedules, and
|
|
1953
|
+
// the model silently degrades such a request into a board or a filtered
|
|
1954
|
+
// view, so the chip would promise an alert and deliver a page. REVERT to
|
|
1955
|
+
// the automation wording when ADR-0112 v2 re-adds flows and actions.
|
|
1553
1956
|
metadataAssistant: {
|
|
1554
|
-
buildCrm: "Создай CRM для продаж — клиенты, контакты и
|
|
1555
|
-
buildApp: "Создай трекер проектов — проекты, задачи с ответственными и сроками, доска по
|
|
1556
|
-
buildFlow: "Спроектируй службу поддержки — заявки с
|
|
1557
|
-
buildInventory: "Создай приложение для склада — товары, остатки, поставщики и
|
|
1558
|
-
buildRecruiting: "Создай трекер кандидатов — кандидаты, открытые вакансии,
|
|
1957
|
+
buildCrm: "Создай CRM для продаж — клиенты, контакты и сделки с полем этапа, а также дашборд с суммой сделок по этапам.",
|
|
1958
|
+
buildApp: "Создай трекер проектов — проекты, задачи с ответственными и сроками, доска по статусам и календарь сроков.",
|
|
1959
|
+
buildFlow: "Спроектируй службу поддержки — заявки с полями приоритета и статуса, доска по статусам и связи с клиентами.",
|
|
1960
|
+
buildInventory: "Создай приложение для склада — товары, остатки, поставщики и представление, отбирающее товары ниже точки заказа.",
|
|
1961
|
+
buildRecruiting: "Создай трекер кандидатов — кандидаты, открытые вакансии, поле этапа собеседования и доска по этапам.",
|
|
1559
1962
|
},
|
|
1560
1963
|
generic: {
|
|
1561
1964
|
help: "Чем ты можешь мне помочь?",
|
|
1562
1965
|
availableObjects: "Перечисли доступные объекты данных.",
|
|
1563
1966
|
recentActivity: "Сделай сводку моей недавней активности.",
|
|
1564
1967
|
},
|
|
1968
|
+
// objectui#7709 — the edit-mode starters, shown when the maker is bound
|
|
1969
|
+
// to an EXISTING app (`?package=`). Same rule as the five above: they
|
|
1970
|
+
// may only ask for what ADR-0112 v1 BUILDS. The fourth chip used to be
|
|
1971
|
+
// `addAutomation` ("an approval, a status flow, or a notification") and
|
|
1972
|
+
// every capability it named is refused by v1 (cloud#1956 / PR #1970), so
|
|
1973
|
+
// it now asks for sample data — `seed` IS on v1's whitelist, and having
|
|
1974
|
+
// no data is what an existing app most often lacks. REVERT: when
|
|
1975
|
+
// ADR-0112 v2 re-adds flows and actions, THIS chip's automation wording
|
|
1976
|
+
// comes back as `addAutomation`; the retired string is pinned for every
|
|
1977
|
+
// pack in `packages/i18n/src/__tests__/makerEditChips-v1-scope-7709.test.ts`.
|
|
1565
1978
|
editApp: {
|
|
1566
1979
|
addField: "Добавь поле в один из объектов.",
|
|
1567
1980
|
addObject: "Добавь новый объект и свяжи его с существующим.",
|
|
1568
1981
|
addDashboard: "Добавь дашборд с ключевыми показателями.",
|
|
1569
|
-
|
|
1982
|
+
addSampleData: "Заполни существующие объекты правдоподобными демонстрационными записями, чтобы приложение можно было показать.",
|
|
1570
1983
|
},
|
|
1571
1984
|
},
|
|
1572
1985
|
changesTitle: "Подтвердите изменения",
|
|
@@ -1631,6 +2044,7 @@ const ru = {
|
|
|
1631
2044
|
collapse: "Свернуть чат",
|
|
1632
2045
|
maximize: "Открыть на всю страницу",
|
|
1633
2046
|
open: "Открыть ассистента",
|
|
2047
|
+
planAwaitingApproval: "Предложенный план ожидает вашего подтверждения",
|
|
1634
2048
|
},
|
|
1635
2049
|
group: {
|
|
1636
2050
|
today: "Сегодня",
|
|
@@ -1641,13 +2055,17 @@ const ru = {
|
|
|
1641
2055
|
},
|
|
1642
2056
|
},
|
|
1643
2057
|
title: "Консоль ObjectStack",
|
|
1644
|
-
initializing: "
|
|
1645
|
-
|
|
2058
|
+
initializing: "Открытие консоли…",
|
|
2059
|
+
skipToContent: "Перейти к содержимому",
|
|
1646
2060
|
breadcrumb: {
|
|
1647
|
-
dashboards: "Панели",
|
|
1648
|
-
pages: "Страницы",
|
|
1649
|
-
reports: "Отчёты",
|
|
1650
2061
|
system: "Система",
|
|
2062
|
+
marketplace: "Маркетплейс",
|
|
2063
|
+
settings: 'Настройки',
|
|
2064
|
+
apps: 'Приложения',
|
|
2065
|
+
profile: 'Профиль',
|
|
2066
|
+
approvals: 'Согласования',
|
|
2067
|
+
aiApprovals: 'Согласования ИИ',
|
|
2068
|
+
auditLog: 'Журнал аудита',
|
|
1651
2069
|
},
|
|
1652
2070
|
// objectui#4024 — the single-namespace settings screen. Its sibling
|
|
1653
2071
|
// `settingsHub` above already resolved through this pack; the view was the
|
|
@@ -1667,17 +2085,35 @@ const ru = {
|
|
|
1667
2085
|
saveChanges: "Сохранить изменения",
|
|
1668
2086
|
unsavedCount: "Несохранённых изменений: {{count}}",
|
|
1669
2087
|
unsavedCount_one: "{{count}} несохранённое изменение",
|
|
1670
|
-
|
|
2088
|
+
unsavedCount_few: "{{count}} несохранённых изменения",
|
|
2089
|
+
unsavedCount_many: "{{count}} несохранённых изменений",
|
|
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}}",
|
|
1671
2096
|
cryptoRefusalTitle: "Эта установка не может шифровать секреты",
|
|
1672
2097
|
cryptoRefusalSubjectSuffix: "объявлен зашифрованным, поэтому ничего не было записано.",
|
|
1673
2098
|
cryptoRefusalNoSubject: "Значение, объявленное зашифрованным, было отклонено, поэтому ничего не было записано.",
|
|
1674
2099
|
cryptoRefusalToast: "Не удалось зашифровать секреты: {{subject}}",
|
|
1675
2100
|
cryptoRefusalToastNoSubject: "Не удалось зашифровать секреты",
|
|
1676
|
-
|
|
1677
|
-
|
|
1678
|
-
|
|
1679
|
-
|
|
1680
|
-
|
|
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}}",
|
|
1681
2117
|
},
|
|
1682
2118
|
error: {
|
|
1683
2119
|
connectionFailed: "Не удаётся подключиться к серверу",
|
|
@@ -1702,27 +2138,28 @@ const ru = {
|
|
|
1702
2138
|
groups: {
|
|
1703
2139
|
general: "Общие",
|
|
1704
2140
|
navigation: "Навигация",
|
|
1705
|
-
dataViews: "Представления данных",
|
|
1706
2141
|
aiChat: "Ассистент ИИ",
|
|
1707
|
-
preferences: "Настройки",
|
|
1708
2142
|
},
|
|
1709
2143
|
openCommandPalette: "Открыть палитру команд",
|
|
1710
2144
|
showShortcuts: "Показать горячие клавиши",
|
|
1711
2145
|
closeDialog: "Закрыть диалог / панель",
|
|
1712
2146
|
toggleSidebar: "Переключить боковую панель",
|
|
1713
|
-
focusSearch: "Фокус на поиске",
|
|
1714
|
-
createRecord: "Создать новую запись",
|
|
1715
|
-
refreshData: "Обновить данные",
|
|
1716
|
-
editRecord: "Редактировать выбранную запись",
|
|
1717
2147
|
newChat: "Новый чат",
|
|
1718
2148
|
toggleChatsList: "Переключить список чатов",
|
|
1719
|
-
|
|
2149
|
+
goHome: "Вернуться на главную",
|
|
2150
|
+
},
|
|
2151
|
+
reportIndex: {
|
|
2152
|
+
title: "Отчёты",
|
|
2153
|
+
emptyTitle: "Нет отчётов",
|
|
2154
|
+
emptyDescription: "В этом приложении нет отчётов, которые вы можете открыть.",
|
|
1720
2155
|
},
|
|
1721
2156
|
commandPalette: {
|
|
1722
2157
|
title: "Палитра команд",
|
|
1723
2158
|
placeholder: "Введите команду или поиск…",
|
|
1724
2159
|
noResults: "Результаты не найдены.",
|
|
1725
2160
|
objects: "Объекты",
|
|
2161
|
+
packages: "Пакеты",
|
|
2162
|
+
flows: "Потоки",
|
|
1726
2163
|
dashboards: "Панели мониторинга",
|
|
1727
2164
|
pages: "Страницы",
|
|
1728
2165
|
reports: "Отчёты",
|
|
@@ -1739,6 +2176,21 @@ const ru = {
|
|
|
1739
2176
|
records: "Записи",
|
|
1740
2177
|
recentRecords: "Недавно просмотренные",
|
|
1741
2178
|
},
|
|
2179
|
+
// objectui#9954 — see the `en` pack for what raises each case.
|
|
2180
|
+
readRate: {
|
|
2181
|
+
ratioTitle: 'Необычный объём чтения в этой системе',
|
|
2182
|
+
ratio: 'На каждую записанную строку читается {{ratio}} строк. Платформа отмечает всё, что выше {{threshold}}. Ничто не ограничивается и не блокируется; это отчёт, чтобы можно было проверить схему чтения.',
|
|
2183
|
+
noWritesTitle: 'Чтение вообще без записи в этой системе',
|
|
2184
|
+
noWrites: 'Строки читаются, но не записывается ни одной, поэтому у скорости чтения нет верхней границы. Это самый серьёзный показатель. Платформа отмечает всё, что выше {{threshold}}. Ничто не ограничивается и не блокируется; это отчёт, чтобы можно было проверить схему чтения.',
|
|
2185
|
+
},
|
|
2186
|
+
// objectui#10439 — see the `en` pack for what raises each case.
|
|
2187
|
+
storageUsage: {
|
|
2188
|
+
warningTitle: 'Хранилище почти заполнено',
|
|
2189
|
+
warning: 'Использовано {{used}} МБ из {{limit}} МБ. Когда хранилище заполнится, загрузка файлов и импорт будут приостановлены.',
|
|
2190
|
+
blockedTitle: 'Хранилище заполнено: загрузка файлов и импорт приостановлены',
|
|
2191
|
+
blocked: 'Использовано {{used}} МБ из {{limit}} МБ. Существующие данные не затронуты; чтение, экспорт и редактирование отдельных записей по-прежнему работают.',
|
|
2192
|
+
upgrade: 'Повысьте тариф, чтобы продолжить',
|
|
2193
|
+
},
|
|
1742
2194
|
errors: {
|
|
1743
2195
|
somethingWentWrong: "Что-то пошло не так",
|
|
1744
2196
|
unexpectedError: "При отображении этого представления произошла непредвиденная ошибка.",
|
|
@@ -1769,22 +2221,31 @@ const ru = {
|
|
|
1769
2221
|
viewNameInvalid: "Используйте строчные латинские буквы, цифры и подчёркивания; начните с буквы или подчёркивания.",
|
|
1770
2222
|
systemViewReadonly: "Системное представление определено в коде — только для чтения.",
|
|
1771
2223
|
cannotEditMetaView: "Это встроенное представление, определённое в коде, — изменить его нельзя.",
|
|
2224
|
+
resetView: "Сбросить представление",
|
|
2225
|
+
resetViewTitle: "Вернуть сортировку, фильтры и ширину столбцов этого представления к его собственным настройкам. Изменятся только ваши настройки.",
|
|
1772
2226
|
cannotDeleteMetaView: "Это встроенное представление, определённое в коде, — удалить его нельзя.",
|
|
1773
2227
|
expandToPage: "Открыть на всю страницу",
|
|
1774
2228
|
objectNotFound: "Объект не найден",
|
|
1775
2229
|
objectNotFoundDescription: "Объект «{{objectName}}» не существует в текущей конфигурации.",
|
|
1776
2230
|
objectNotFoundHint: "Проверьте настройки навигации приложения или выберите другой объект на боковой панели.",
|
|
2231
|
+
objectPackageDisabled: "Объект «{{objectName}}» принадлежит отключённому пакету, поэтому он не предоставляется.",
|
|
1777
2232
|
filterOrNotSavable: "Этот фильтр объединяет условия через ИЛИ, что сохранённое представление пока не может хранить. Он по-прежнему применяется к этому списку — уберите группировку ИЛИ, чтобы сохранить его в представлении.",
|
|
1778
2233
|
filterNestedNotSavable: "Этот фильтр использует вложенные группы условий, которые сохранённое представление не может хранить. Преобразуйте его в один список условий, чтобы сохранить в представлении.",
|
|
1779
2234
|
allRecords: "Все записи",
|
|
1780
2235
|
new: "Создать",
|
|
1781
2236
|
configureView: "Настроить представление",
|
|
1782
|
-
toolbar: "Панель инструментов",
|
|
1783
2237
|
toolbarEnabledCount: "{{count}} из {{total}} включено",
|
|
1784
2238
|
searchFields: "Поиск полей…",
|
|
1785
2239
|
title: "Заголовок",
|
|
1786
2240
|
viewType: "Тип представления",
|
|
1787
|
-
|
|
2241
|
+
// objectui#11445 — a count family: each slot agrees the noun with the
|
|
2242
|
+
// number (one 1/21, few 2-4, many 5-20, other a fraction). The base key, a
|
|
2243
|
+
// count-invariant form, answers a call made without a count.
|
|
2244
|
+
recordCount: "Записей: {{count}}",
|
|
2245
|
+
recordCount_one: "{{count}} запись",
|
|
2246
|
+
recordCount_few: "{{count}} записи",
|
|
2247
|
+
recordCount_many: "{{count}} записей",
|
|
2248
|
+
recordCount_other: "{{count}} записи",
|
|
1788
2249
|
save: "Сохранить",
|
|
1789
2250
|
discard: "Отменить",
|
|
1790
2251
|
createView: "Создать представление",
|
|
@@ -1796,11 +2257,14 @@ const ru = {
|
|
|
1796
2257
|
longitudeField: "Поле долготы",
|
|
1797
2258
|
imageField: "Поле изображения",
|
|
1798
2259
|
selectField: "Выберите поле…",
|
|
1799
|
-
groupBy: "Группировать по",
|
|
1800
2260
|
endDateField: "Поле даты окончания",
|
|
1801
2261
|
import: "Импорт",
|
|
1802
2262
|
importTitle: "Импорт из CSV",
|
|
1803
2263
|
importedToast: "{{count}} строк импортировано.",
|
|
2264
|
+
importedToast_one: "Импортирована {{count}} строка.",
|
|
2265
|
+
importedToast_few: "Импортировано {{count}} строки.",
|
|
2266
|
+
importedToast_many: "Импортировано {{count}} строк.",
|
|
2267
|
+
importedToast_other: "Импортировано {{count}} строки.",
|
|
1804
2268
|
importedWithSkipped: "{{ok}} строк импортировано; {{skipped}} пропущено.",
|
|
1805
2269
|
createViewDesc: "Выберите тип представления и задайте ему имя. Все настройки можно изменить позже.",
|
|
1806
2270
|
cancel: "Отмена",
|
|
@@ -1809,6 +2273,10 @@ const ru = {
|
|
|
1809
2273
|
deleteViewTitle: "Удалить представление",
|
|
1810
2274
|
deleteViewConfirm: "Удалить представление \"{{name}}\"? Это действие нельзя отменить.",
|
|
1811
2275
|
bulkDeleteConfirm: "Удалить {{count}} выбранных записей? Это действие нельзя отменить.",
|
|
2276
|
+
bulkDeleteConfirm_one: "Удалить {{count}} выбранную запись? Это действие нельзя отменить.",
|
|
2277
|
+
bulkDeleteConfirm_few: "Удалить {{count}} выбранные записи? Это действие нельзя отменить.",
|
|
2278
|
+
bulkDeleteConfirm_many: "Удалить {{count}} выбранных записей? Это действие нельзя отменить.",
|
|
2279
|
+
bulkDeleteConfirm_other: "Удалить {{count}} выбранной записи? Это действие нельзя отменить.",
|
|
1812
2280
|
duplicateViewName: "Представление с таким именем уже существует.",
|
|
1813
2281
|
viewTypeGrid: "Таблица",
|
|
1814
2282
|
viewTypeGridDesc: "Таблица записей в стиле электронной таблицы.",
|
|
@@ -1845,14 +2313,22 @@ const ru = {
|
|
|
1845
2313
|
chartTypePie: "Круговая",
|
|
1846
2314
|
chartTypeArea: "Областная",
|
|
1847
2315
|
chartTypeScatter: "Точечная",
|
|
1848
|
-
|
|
1849
|
-
|
|
1850
|
-
|
|
1851
|
-
|
|
2316
|
+
dataset: "Набор данных",
|
|
2317
|
+
datasetHelp: "Диаграмма берёт значения из этого набора данных объекта.",
|
|
2318
|
+
chartMeasure: "Мера",
|
|
2319
|
+
chartMeasureHelp: "Мера набора данных, отображаемая на оси значений.",
|
|
2320
|
+
chartDimension: "Измерение",
|
|
2321
|
+
chartDimensionHelp: "Измерение набора данных, по которому группируются значения (необязательно).",
|
|
2322
|
+
viewTypeUnavailableDataset: "Этот объект не предоставляет набора данных для диаграммы.",
|
|
2323
|
+
noDatasetMeasure: "В этом наборе данных не объявлено ни одной меры для диаграммы.",
|
|
1852
2324
|
ufTabs: "Вкладки",
|
|
1853
2325
|
ufAddField: "+ Добавить поле фильтра…",
|
|
1854
2326
|
ufShowAllRecords: "Показать вкладку \"Все записи\"",
|
|
1855
2327
|
},
|
|
2328
|
+
runtimeDraft: {
|
|
2329
|
+
publishFailed: "Не удалось опубликовать",
|
|
2330
|
+
discardFailed: "Не удалось отменить черновик",
|
|
2331
|
+
},
|
|
1856
2332
|
localeSwitcher: {
|
|
1857
2333
|
label: "Язык",
|
|
1858
2334
|
},
|
|
@@ -1860,14 +2336,22 @@ const ru = {
|
|
|
1860
2336
|
nav: {
|
|
1861
2337
|
pinItem: "Закрепить {{name}}",
|
|
1862
2338
|
unpinItem: "Открепить {{name}}",
|
|
1863
|
-
dragToReorder: "Перетащите для изменения порядка",
|
|
1864
2339
|
favorites: "Избранное",
|
|
2340
|
+
launcherLabel: "Панель приложений",
|
|
2341
|
+
menuLabel: "Навигация приложения",
|
|
2342
|
+
menuEmpty: "В этом приложении нет доступных для открытия элементов навигации.",
|
|
2343
|
+
itemMenu: "Другие действия для {{name}}",
|
|
2344
|
+
openInNewTab: "Открыть в новой вкладке",
|
|
2345
|
+
copyLink: "Копировать ссылку",
|
|
2346
|
+
linkCopied: "Ссылка скопирована в буфер обмена",
|
|
2347
|
+
linkCopyFailed: "Не удалось скопировать ссылку",
|
|
2348
|
+
design: "Дизайн",
|
|
1865
2349
|
},
|
|
1866
2350
|
},
|
|
1867
2351
|
auth: {
|
|
1868
2352
|
setPassword: {
|
|
1869
2353
|
title: "Задать резервный пароль",
|
|
1870
|
-
description: "Вы вошли через единый вход. Задайте локальный пароль, чтобы входить
|
|
2354
|
+
description: "Вы вошли через единый вход. Задайте локальный пароль, чтобы входить напрямую, если SSO станет недоступен.",
|
|
1871
2355
|
email: "Электронная почта",
|
|
1872
2356
|
newPassword: "Новый пароль",
|
|
1873
2357
|
confirmPassword: "Подтвердите пароль",
|
|
@@ -1883,9 +2367,8 @@ const ru = {
|
|
|
1883
2367
|
signingIn: "Выполняется вход…",
|
|
1884
2368
|
ssoHandoff: "Перейти к {{target}}",
|
|
1885
2369
|
devAdminHint: {
|
|
1886
|
-
title: "
|
|
1887
|
-
|
|
1888
|
-
dismiss: "Закрыть",
|
|
2370
|
+
title: "Локальная среда разработки",
|
|
2371
|
+
signIn: "Войти как администратор разработки",
|
|
1889
2372
|
},
|
|
1890
2373
|
title: "Войдите в свой аккаунт",
|
|
1891
2374
|
description: "Введите электронную почту и пароль для продолжения",
|
|
@@ -1915,6 +2398,22 @@ const ru = {
|
|
|
1915
2398
|
resendOtpCountdownText: "Отправить снова через {seconds} с",
|
|
1916
2399
|
usePhoneOtpText: "Войти по коду подтверждения",
|
|
1917
2400
|
usePasswordSignInText: "Войти с паролем",
|
|
2401
|
+
socialButton: "Продолжить через {provider}",
|
|
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
|
+
},
|
|
1918
2417
|
},
|
|
1919
2418
|
register: {
|
|
1920
2419
|
title: "Создать аккаунт",
|
|
@@ -1933,8 +2432,12 @@ const ru = {
|
|
|
1933
2432
|
submittingButton: "Создание аккаунта…",
|
|
1934
2433
|
hasAccountText: "Уже есть аккаунт?",
|
|
1935
2434
|
signInText: "Войти",
|
|
2435
|
+
socialButton: "Зарегистрироваться через {provider}",
|
|
2436
|
+
orText: "или продолжите с электронной почтой",
|
|
1936
2437
|
errors: {
|
|
1937
2438
|
userExists: "Аккаунт с таким email уже существует. Попробуйте войти.",
|
|
2439
|
+
selfRegistrationClosed: "Самостоятельная регистрация в этой системе закрыта. Обратитесь к администратору за приглашением.",
|
|
2440
|
+
emailDomainNotAllowed: "Регистрация с адресами этого домена здесь не разрешена. Используйте email вашей организации или обратитесь к администратору за приглашением.",
|
|
1938
2441
|
},
|
|
1939
2442
|
verifyInbox: {
|
|
1940
2443
|
title: "Проверьте входящие",
|
|
@@ -2010,7 +2513,7 @@ const ru = {
|
|
|
2010
2513
|
checkSpam: "Не получили письмо? Проверьте папку \"Спам\" или обратитесь в поддержку.",
|
|
2011
2514
|
or: "Или",
|
|
2012
2515
|
// objectui#3546 slice three.
|
|
2013
|
-
resendUnavailable: "Возможно, отправка писем не настроена для этой
|
|
2516
|
+
resendUnavailable: "Возможно, отправка писем не настроена для этой системы. Если проблема повторяется, обратитесь в поддержку.",
|
|
2014
2517
|
},
|
|
2015
2518
|
setup: {
|
|
2016
2519
|
welcomeTitle: "Добро пожаловать в ObjectStack",
|
|
@@ -2054,7 +2557,7 @@ const ru = {
|
|
|
2054
2557
|
disabledDescription: "В этой инсталляции авторизация устройств не включена, поэтому это устройство здесь одобрить нельзя.",
|
|
2055
2558
|
},
|
|
2056
2559
|
shell: {
|
|
2057
|
-
tenantHostHint: "Вы входите в
|
|
2560
|
+
tenantHostHint: "Вы входите в эту систему",
|
|
2058
2561
|
},
|
|
2059
2562
|
layout: {
|
|
2060
2563
|
headline: "Создавайте мощные бизнес-приложения быстрее.",
|
|
@@ -2064,6 +2567,7 @@ const ru = {
|
|
|
2064
2567
|
signOut: "Выйти из аккаунта",
|
|
2065
2568
|
password: {
|
|
2066
2569
|
title: "Срок действия пароля истёк",
|
|
2570
|
+
resetTitle: "Необходимо сменить пароль",
|
|
2067
2571
|
fallbackMessage: "Задайте новый пароль, чтобы продолжить.",
|
|
2068
2572
|
current: "Текущий пароль",
|
|
2069
2573
|
next: "Новый пароль",
|
|
@@ -2089,6 +2593,11 @@ const ru = {
|
|
|
2089
2593
|
verifying: "Проверка…",
|
|
2090
2594
|
invalidCode: "Неверный код. Попробуйте ещё раз.",
|
|
2091
2595
|
},
|
|
2596
|
+
impersonation: {
|
|
2597
|
+
passwordTitle: "Пользователь {{user}} должен сменить пароль",
|
|
2598
|
+
mfaTitle: "Пользователь {{user}} должен настроить двухфакторную аутентификацию",
|
|
2599
|
+
body: "Вы работаете от имени {{user}}, и сделать это может только сам пользователь. Прекратите работу от чужого имени, чтобы вернуться в свой аккаунт.",
|
|
2600
|
+
},
|
|
2092
2601
|
},
|
|
2093
2602
|
},
|
|
2094
2603
|
// objectui#3546 slice three — the /oauth/consent screen.
|
|
@@ -2097,12 +2606,17 @@ const ru = {
|
|
|
2097
2606
|
title: "{{appName}} запрашивает доступ к вашему аккаунту",
|
|
2098
2607
|
request: "{{appName}} запрашивает разрешение{{suffix}}.",
|
|
2099
2608
|
unknownApp: "приложение",
|
|
2609
|
+
unidentified: "Не удалось определить это приложение.",
|
|
2610
|
+
clientId: "ID клиента",
|
|
2100
2611
|
willAllow: "Это приложение сможет:",
|
|
2101
2612
|
scope: {
|
|
2102
2613
|
openid: "Подтверждать вашу личность",
|
|
2103
2614
|
profile: "Читать основной профиль (имя, фото)",
|
|
2104
2615
|
email: "Читать ваш адрес электронной почты",
|
|
2105
2616
|
offlineAccess: "Оставаться в системе (обновление доступа)",
|
|
2617
|
+
dataRead: "Читать записи (в пределах ваших собственных прав)",
|
|
2618
|
+
dataWrite: "Создавать, изменять и удалять записи (в пределах ваших собственных прав)",
|
|
2619
|
+
actionsExecute: "Выполнять действия от вашего имени (в пределах ваших собственных прав)",
|
|
2106
2620
|
},
|
|
2107
2621
|
deny: "Отклонить",
|
|
2108
2622
|
authorize: "Разрешить",
|
|
@@ -2133,11 +2647,20 @@ const ru = {
|
|
|
2133
2647
|
role: "Роль",
|
|
2134
2648
|
save: "Сохранить изменения",
|
|
2135
2649
|
},
|
|
2650
|
+
language: {
|
|
2651
|
+
title: "Язык",
|
|
2652
|
+
description: "Язык уведомлений и сообщений, которые отправляются вам. Язык интерфейса выбирается отдельно — в меню с глобусом.",
|
|
2653
|
+
label: "Предпочитаемый язык",
|
|
2654
|
+
systemDefault: "Использовать значение по умолчанию для развёртывания",
|
|
2655
|
+
save: "Сохранить",
|
|
2656
|
+
saved: "Языковые настройки обновлены.",
|
|
2657
|
+
readOnly: "Язык вашей учётной записи настраивает администратор.",
|
|
2658
|
+
},
|
|
2136
2659
|
password: {
|
|
2137
2660
|
changeTitle: "Изменить пароль",
|
|
2138
2661
|
setTitle: "Задать локальный пароль",
|
|
2139
|
-
changeDescription: "Обновите пароль, который вы используете для
|
|
2140
|
-
setDescription: "Вы вошли через единый вход (SSO). Задайте локальный пароль, чтобы также входить
|
|
2662
|
+
changeDescription: "Обновите пароль, который вы используете для входа.",
|
|
2663
|
+
setDescription: "Вы вошли через единый вход (SSO). Задайте локальный пароль, чтобы также входить по электронной почте и паролю.",
|
|
2141
2664
|
current: "Текущий пароль",
|
|
2142
2665
|
new: "Новый пароль",
|
|
2143
2666
|
password: "Пароль",
|
|
@@ -2146,7 +2669,7 @@ const ru = {
|
|
|
2146
2669
|
mismatch: "Пароли не совпадают",
|
|
2147
2670
|
enterCurrent: "Введите текущий пароль",
|
|
2148
2671
|
changed: "Пароль изменён.",
|
|
2149
|
-
localSet: "Локальный пароль задан. Теперь вы можете входить
|
|
2672
|
+
localSet: "Локальный пароль задан. Теперь вы можете входить по электронной почте и паролю.",
|
|
2150
2673
|
changeAction: "Изменить пароль",
|
|
2151
2674
|
setAction: "Задать пароль",
|
|
2152
2675
|
},
|
|
@@ -2161,22 +2684,21 @@ const ru = {
|
|
|
2161
2684
|
unknown: "Произошла непредвиденная ошибка.",
|
|
2162
2685
|
},
|
|
2163
2686
|
workspace: {
|
|
2164
|
-
label: "
|
|
2165
|
-
default: "
|
|
2166
|
-
switch: "Переключить
|
|
2167
|
-
|
|
2168
|
-
|
|
2169
|
-
|
|
2170
|
-
|
|
2171
|
-
nameLabel: "Имя рабочего пространства",
|
|
2687
|
+
label: "Организации",
|
|
2688
|
+
default: "Моя организация",
|
|
2689
|
+
switch: "Переключить организацию",
|
|
2690
|
+
createTitle: "Создать организацию",
|
|
2691
|
+
createDescription: "Организация — это общее место для совместной работы вашей команды.",
|
|
2692
|
+
createButton: "Создать организацию",
|
|
2693
|
+
nameLabel: "Название организации",
|
|
2172
2694
|
namePlaceholder: "например, Acme Inc",
|
|
2173
2695
|
slugLabel: "URL-слаг",
|
|
2174
2696
|
slugHint: "Используется в URL. Только строчные буквы, цифры и дефисы.",
|
|
2175
2697
|
invite: "Пригласить участника",
|
|
2176
2698
|
members: "Участники",
|
|
2177
|
-
settings: "Настройки
|
|
2699
|
+
settings: "Настройки организации",
|
|
2178
2700
|
multiOrgDisabled: "Создание новых организаций отключено в этой среде.",
|
|
2179
|
-
createFailed: 'Не удалось создать
|
|
2701
|
+
createFailed: 'Не удалось создать организацию',
|
|
2180
2702
|
},
|
|
2181
2703
|
help: {
|
|
2182
2704
|
onThisPage: "На этой странице",
|
|
@@ -2184,12 +2706,17 @@ const ru = {
|
|
|
2184
2706
|
appDocs: 'Документация приложения',
|
|
2185
2707
|
allDocs: 'Вся документация',
|
|
2186
2708
|
onlineDocs: 'Онлайн-документация',
|
|
2709
|
+
loadingDocumentation: 'Загрузка документации',
|
|
2710
|
+
about: 'О программе',
|
|
2711
|
+
aboutTitle: 'Об этой консоли',
|
|
2712
|
+
aboutDescription: 'Сборка, из которой скомпилирована эта консоль.',
|
|
2713
|
+
aboutBuild: 'Сборка консоли',
|
|
2714
|
+
aboutBuildUnknown: 'Неизвестная сборка (при сборке этой консоли версия не была задана)',
|
|
2187
2715
|
},
|
|
2188
2716
|
sidebar: {
|
|
2189
2717
|
packageManagement: "Управление пакетами",
|
|
2190
2718
|
searchNavigation: "Поиск по навигации…",
|
|
2191
2719
|
settings: "Настройки",
|
|
2192
|
-
help: "Помощь",
|
|
2193
2720
|
helpTooltip: "Помощь и документация",
|
|
2194
2721
|
activityFeed: "Лента активности",
|
|
2195
2722
|
notifications: "Уведомления",
|
|
@@ -2199,18 +2726,16 @@ const ru = {
|
|
|
2199
2726
|
area: "Область",
|
|
2200
2727
|
scope: "Область",
|
|
2201
2728
|
recent: "Недавние",
|
|
2202
|
-
favorites: "Избранное",
|
|
2203
2729
|
starred: "Отмеченные",
|
|
2204
2730
|
removeFromFavorites: "Убрать {{name}} из избранного",
|
|
2731
|
+
allReports: "Все отчёты",
|
|
2205
2732
|
},
|
|
2206
2733
|
topbar: {
|
|
2207
2734
|
openAssistant: "Открыть ассистента {{name}}",
|
|
2208
2735
|
offline: "Не в сети",
|
|
2209
2736
|
usersOnline: "Пользователи сейчас в сети",
|
|
2210
2737
|
switchView: "Сменить представление",
|
|
2211
|
-
switchObject: "Сменить объект",
|
|
2212
2738
|
connection: {
|
|
2213
|
-
connected: "Подключено",
|
|
2214
2739
|
connecting: "Подключение…",
|
|
2215
2740
|
reconnecting: "Переподключение…",
|
|
2216
2741
|
disconnected: "Отключено",
|
|
@@ -2223,23 +2748,22 @@ const ru = {
|
|
|
2223
2748
|
},
|
|
2224
2749
|
aiAssistant: "ИИ-ассистент",
|
|
2225
2750
|
designInStudio: "Дизайн в Studio",
|
|
2751
|
+
editApp: "Редактировать приложение",
|
|
2226
2752
|
},
|
|
2227
2753
|
home: {
|
|
2228
2754
|
build: {
|
|
2229
2755
|
title: "Создать приложение",
|
|
2230
|
-
|
|
2231
|
-
noCapability: "Создание приложений недоступно в этом рабочем пространстве — для этого нужно разрешение «Управление метаданными», которого нет у вашей учётной записи.",
|
|
2756
|
+
noCapability: "Создание приложений недоступно в этой системе — для этого нужно разрешение «Управление метаданными», которого нет у вашей учётной записи.",
|
|
2232
2757
|
},
|
|
2233
2758
|
template: {
|
|
2234
2759
|
title: "Начать с шаблона",
|
|
2235
|
-
subtitle: "Установите шаблонное приложение из маркетплейса и настройте его под себя.",
|
|
2236
2760
|
marketplaceDisabled: "Для этого рантайма не настроен маркетплейс приложений, поэтому здесь нет шаблонов для установки.",
|
|
2237
2761
|
},
|
|
2238
2762
|
welcomeAdminDescription: "Опишите свой бизнес одним предложением — ИИ создаст объекты, экраны, API и инструменты агента. Либо настройте всё сами через меню слева.",
|
|
2239
2763
|
welcomeAdminDescriptionNoBuild: "Настройте первое приложение через меню «Администрирование» слева. Когда появятся данные, ИИ-ассистент поможет их изучить.",
|
|
2240
2764
|
welcomeAdminDescriptionNoAi: "Настройте первое приложение через меню «Администрирование» слева.",
|
|
2241
2765
|
noAppsTitle: "Приложений пока нет",
|
|
2242
|
-
noAppsDescription: "
|
|
2766
|
+
noAppsDescription: "Система настраивается — приложения, которыми поделится администратор, появятся здесь.",
|
|
2243
2767
|
buildWithAI: "Создать с помощью ИИ",
|
|
2244
2768
|
askAI: "Спросить ИИ",
|
|
2245
2769
|
recoveryReminder: {
|
|
@@ -2248,7 +2772,17 @@ const ru = {
|
|
|
2248
2772
|
dismiss: "Закрыть",
|
|
2249
2773
|
},
|
|
2250
2774
|
pendingDrafts: {
|
|
2251
|
-
|
|
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: ", ",
|
|
2252
2786
|
cta: "Опубликовать",
|
|
2253
2787
|
publishing: "Публикация…",
|
|
2254
2788
|
published: "Опубликовано! Изменения вступили в силу.",
|
|
@@ -2264,20 +2798,24 @@ const ru = {
|
|
|
2264
2798
|
capabilityWarn: "Проверка при создании — несуществующих ссылок на возможности: {{count}}.",
|
|
2265
2799
|
},
|
|
2266
2800
|
title: "Главная",
|
|
2267
|
-
subtitle: "Панель вашего рабочего пространства",
|
|
2268
2801
|
nav: "Главная",
|
|
2269
2802
|
allApps: "Все приложения",
|
|
2270
2803
|
yourApps: "Ваши приложения",
|
|
2271
2804
|
showMoreApps: "Ещё",
|
|
2272
2805
|
showLess: "Свернуть",
|
|
2273
2806
|
continueEmpty: "Открытые вами элементы появятся здесь.",
|
|
2274
|
-
|
|
2275
|
-
|
|
2276
|
-
|
|
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: "Нет непрочитанных уведомлений",
|
|
2277
2817
|
},
|
|
2278
|
-
loading: "
|
|
2279
|
-
recent: "Недавние",
|
|
2280
|
-
starred: "Избранные",
|
|
2818
|
+
loading: "Загрузка…",
|
|
2281
2819
|
welcome: "Добро пожаловать в ObjectUI",
|
|
2282
2820
|
welcomeDescription: "Начните с создания вашего первого приложения или настройки системы.",
|
|
2283
2821
|
createFirstApp: "Создайте первое приложение",
|
|
@@ -2285,12 +2823,10 @@ const ru = {
|
|
|
2285
2823
|
browseMarketplace: "Обзор маркетплейса приложений",
|
|
2286
2824
|
quickActions: {
|
|
2287
2825
|
title: "Быстрые действия",
|
|
2288
|
-
createApp: "Создать приложение",
|
|
2289
|
-
createAppDesc: "Начните с нового приложения",
|
|
2290
2826
|
manageObjects: "Управление объектами",
|
|
2291
2827
|
manageObjectsDesc: "Настройте модели данных",
|
|
2292
2828
|
systemSettings: "Системные настройки",
|
|
2293
|
-
systemSettingsDesc: "Настройте
|
|
2829
|
+
systemSettingsDesc: "Настройте систему",
|
|
2294
2830
|
},
|
|
2295
2831
|
appCard: {
|
|
2296
2832
|
noDescription: "Без описания",
|
|
@@ -2300,20 +2836,31 @@ const ru = {
|
|
|
2300
2836
|
greetingAfternoon: "Добрый день",
|
|
2301
2837
|
greetingEvening: "Добрый вечер",
|
|
2302
2838
|
greetingNight: "Ночная смена",
|
|
2303
|
-
|
|
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}}",
|
|
2304
2852
|
open: "Открыть",
|
|
2305
|
-
stats: {
|
|
2306
|
-
apps: "Приложения",
|
|
2307
|
-
starred: "Отмеченные",
|
|
2308
|
-
recent: "Недавние",
|
|
2309
|
-
},
|
|
2310
2853
|
recentApps: {
|
|
2311
2854
|
title: "Недавно открытые",
|
|
2312
2855
|
itemType: {
|
|
2313
2856
|
object: "Объект",
|
|
2314
2857
|
dashboard: "Панель",
|
|
2315
2858
|
page: "Страница",
|
|
2859
|
+
report: "Отчёт",
|
|
2860
|
+
package: "Пакет",
|
|
2861
|
+
view: "Представление списка",
|
|
2316
2862
|
record: "Запись",
|
|
2863
|
+
metadata: "Метаданные",
|
|
2317
2864
|
},
|
|
2318
2865
|
},
|
|
2319
2866
|
starredApps: {
|
|
@@ -2335,7 +2882,6 @@ const ru = {
|
|
|
2335
2882
|
organizations: "Организации",
|
|
2336
2883
|
roles: "Роли",
|
|
2337
2884
|
configuration: "Конфигурация",
|
|
2338
|
-
createApp: "Создать приложение",
|
|
2339
2885
|
administration: "Администрирование",
|
|
2340
2886
|
datasources: "Источники данных",
|
|
2341
2887
|
documentation: "Документация",
|
|
@@ -2350,16 +2896,23 @@ const ru = {
|
|
|
2350
2896
|
manageAllApps: "Управление приложениями",
|
|
2351
2897
|
systemConsole: "Системная консоль",
|
|
2352
2898
|
noAppsConfigured: "Нет приложений",
|
|
2899
|
+
allApps: "Все приложения",
|
|
2900
|
+
editAppInStudio: "Редактировать {{app}} в Studio",
|
|
2901
|
+
backToHome: "Вернуться на главную",
|
|
2902
|
+
settings: "Настройки",
|
|
2903
|
+
productHome: "Главная {{product}}",
|
|
2353
2904
|
},
|
|
2354
2905
|
activityFeed: {
|
|
2355
2906
|
title: "Последние действия",
|
|
2356
2907
|
filter: "Фильтр",
|
|
2357
2908
|
empty: "Нет действий",
|
|
2909
|
+
accessDenied: "У вас нет разрешения на просмотр активности.",
|
|
2358
2910
|
ariaLabel: "Лента активности",
|
|
2359
2911
|
typeCreate: "Создание",
|
|
2360
2912
|
typeUpdate: "Обновление",
|
|
2361
2913
|
typeDelete: "Удаление",
|
|
2362
2914
|
typeComment: "Комментарий",
|
|
2915
|
+
typeSystem: "Система",
|
|
2363
2916
|
relativeJustNow: "только что",
|
|
2364
2917
|
relativeSecondsAgo: "{{count}} с назад",
|
|
2365
2918
|
relativeMinutesAgo: "{{count}} м назад",
|
|
@@ -2381,8 +2934,18 @@ const ru = {
|
|
|
2381
2934
|
placeholder: "Поиск объектов, панелей, страниц, отчётов…",
|
|
2382
2935
|
inputAriaLabel: "Поиск объектов, панелей, страниц, отчётов",
|
|
2383
2936
|
resultsCount: "{{count}} результат для \"{{query}}\"",
|
|
2384
|
-
|
|
2937
|
+
resultsCount_one: "{{count}} результат по запросу \"{{query}}\"",
|
|
2938
|
+
resultsCount_few: "{{count}} результата по запросу \"{{query}}\"",
|
|
2939
|
+
resultsCount_many: "{{count}} результатов по запросу \"{{query}}\"",
|
|
2940
|
+
resultsCount_other: "{{count}} результата по запросу \"{{query}}\"",
|
|
2941
|
+
// objectui#11445 — a count family: each slot agrees the noun with the
|
|
2942
|
+
// number (one 1/21, few 2-4, many 5-20, other a fraction). The base key, a
|
|
2943
|
+
// count-invariant form, answers a call made without a count.
|
|
2385
2944
|
itemsAvailable: "{{count}} доступно",
|
|
2945
|
+
itemsAvailable_one: "{{count}} доступно",
|
|
2946
|
+
itemsAvailable_few: "{{count}} доступно",
|
|
2947
|
+
itemsAvailable_many: "{{count}} доступно",
|
|
2948
|
+
itemsAvailable_other: "{{count}} доступно",
|
|
2386
2949
|
noResults: "Результатов не найдено",
|
|
2387
2950
|
noResultsHint: "Попробуйте изменить поисковые запросы",
|
|
2388
2951
|
typeObjects: "Объекты",
|
|
@@ -2407,26 +2970,38 @@ const ru = {
|
|
|
2407
2970
|
noAppsConfigured: "Нет приложений",
|
|
2408
2971
|
noAppsConfiguredDescription: "Нет зарегистрированных приложений. Создайте первое приложение или посетите системные настройки.",
|
|
2409
2972
|
appNotAvailable: "Приложение недоступно",
|
|
2410
|
-
appNotAvailableDescription: "Это приложение
|
|
2973
|
+
appNotAvailableDescription: "Это приложение недоступно — повторите попытку через мгновение.",
|
|
2974
|
+
appNotFound: "Не удалось открыть это приложение",
|
|
2975
|
+
appNotFoundDescription: "Сервер не вернул это приложение для вашей учётной записи.",
|
|
2976
|
+
appUnreachable: "Не удалось связаться с сервером",
|
|
2977
|
+
appUnreachableDescription: "Не удалось проверить это приложение. Повторите попытку через мгновение.",
|
|
2411
2978
|
appAccessDenied: "У вас нет доступа к этому приложению",
|
|
2412
2979
|
appAccessDeniedDescription: "Это приложение существует, но у вашей учётной записи нет прав на его открытие. Обратитесь к администратору за доступом.",
|
|
2413
2980
|
appAccessDeniedHome: "На главную",
|
|
2981
|
+
appNothingAvailable: "В {{app}} пока нет ничего доступного для вас",
|
|
2982
|
+
appNothingAvailableDescription: "В этом приложении нет страниц, которые может открыть ваша учётная запись. Обратитесь к администратору за доступом.",
|
|
2983
|
+
appNothingAvailableGrantDescription: "В этом приложении нет страниц, которые может открыть ваша учётная запись. Доступ можно предоставить в разделе настройки.",
|
|
2984
|
+
openSetup: "Открыть настройку",
|
|
2414
2985
|
createFirstApp: "Создать приложение",
|
|
2415
2986
|
systemSettings: "Системные настройки",
|
|
2416
2987
|
back: "Назад",
|
|
2417
2988
|
recordNotFound: "Запись не найдена",
|
|
2418
2989
|
recordNotFoundDescription: "Искомая запись не существует или была удалена.",
|
|
2990
|
+
recordAccessDenied: "Нет доступа к записям «{{object}}»",
|
|
2991
|
+
recordAccessDeniedDescription: "У вас нет прав на просмотр записей этого типа. Обратитесь к администратору, если считаете, что доступ вам нужен.",
|
|
2992
|
+
recordLoadFailed: "Не удалось загрузить эту запись",
|
|
2993
|
+
recordLoadFailedDescription: "При загрузке произошла ошибка. Проверьте соединение и попробуйте снова.",
|
|
2419
2994
|
},
|
|
2420
2995
|
actionDialog: {
|
|
2421
2996
|
title: "Параметры действия",
|
|
2422
2997
|
description: "Введите необходимую информацию для продолжения.",
|
|
2423
2998
|
selectPlaceholder: "Выбрать {{label}}",
|
|
2424
2999
|
requiredError: "{{label}} обязательно",
|
|
3000
|
+
unresolvedParam: 'Этот параметр невозможно показать: поле, на котором он основан, отсутствует в метаданных объекта, поэтому нужный элемент управления нельзя построить. Попросите администратора исправить определение действия.',
|
|
3001
|
+
carryOverHint: 'Переносится без изменений (только чтение)',
|
|
2425
3002
|
cancel: "Отмена",
|
|
2426
3003
|
confirm: "Подтвердить",
|
|
2427
3004
|
uploading: "Загрузка…",
|
|
2428
|
-
defaultActionTitle: "Действие",
|
|
2429
|
-
ok: "ОК",
|
|
2430
3005
|
lookupPlaceholder: "ID записи для {{label}}",
|
|
2431
3006
|
lookupHelpText: "Для этого параметра не настроен объект ссылки, поэтому выбор записи недоступен. Введите ID записи или попросите администратора исправить параметр действия.",
|
|
2432
3007
|
},
|
|
@@ -2435,11 +3010,6 @@ const ru = {
|
|
|
2435
3010
|
confirm: "Продолжить",
|
|
2436
3011
|
cancel: "Отмена",
|
|
2437
3012
|
},
|
|
2438
|
-
rowAction: {
|
|
2439
|
-
openMenu: "Открыть меню",
|
|
2440
|
-
edit: "Редактировать",
|
|
2441
|
-
delete: "Удалить",
|
|
2442
|
-
},
|
|
2443
3013
|
navigationSync: {
|
|
2444
3014
|
addedPage: "Навигация обновлена: страница \"{{name}}\" добавлена",
|
|
2445
3015
|
addedDashboard: "Навигация обновлена: панель \"{{name}}\" добавлена",
|
|
@@ -2453,13 +3023,22 @@ const ru = {
|
|
|
2453
3023
|
updateFailed: "Не удалось обновить навигацию",
|
|
2454
3024
|
},
|
|
2455
3025
|
objectActions: {
|
|
2456
|
-
resetPackageSetConfirm: "Этот набор разрешений поставляется с установленным пакетом и не может быть удалён. Удаление сбросит его к исходному состоянию из пакета и отменит ваши настройки в этой среде. Продолжить?",
|
|
2457
|
-
resetPackageSetSuccess: "Набор разрешений сброшен к исходному состоянию из пакета",
|
|
2458
3026
|
deleteSuccess: "{{label}} успешно удалён",
|
|
2459
3027
|
deleteFailed: "Не удалось удалить {{label}}",
|
|
2460
3028
|
noRecordId: "ID записи не указан",
|
|
2461
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: "Удалить",
|
|
2462
3037
|
bulkDeleteSuccess: "{{count}} записей {{label}} удалено",
|
|
3038
|
+
bulkDeleteSuccess_one: "Удалена {{count}} запись {{label}}",
|
|
3039
|
+
bulkDeleteSuccess_few: "Удалено {{count}} записи {{label}}",
|
|
3040
|
+
bulkDeleteSuccess_many: "Удалено {{count}} записей {{label}}",
|
|
3041
|
+
bulkDeleteSuccess_other: "Удалено {{count}} записи {{label}}",
|
|
2463
3042
|
bulkDeletePartial: "{{succeeded}} удалено, {{failed}} не удалось",
|
|
2464
3043
|
},
|
|
2465
3044
|
objectViewActions: {
|
|
@@ -2471,15 +3050,6 @@ const ru = {
|
|
|
2471
3050
|
exportFailed: "Ошибка экспорта: {{message}}",
|
|
2472
3051
|
forecastSoon: "Прогнозное представление скоро будет",
|
|
2473
3052
|
},
|
|
2474
|
-
recordDetail: {
|
|
2475
|
-
viewersTooltip: "Пользователи, просматривающие эту запись",
|
|
2476
|
-
},
|
|
2477
|
-
cellRender: {
|
|
2478
|
-
empty: "Пусто",
|
|
2479
|
-
yes: "Да",
|
|
2480
|
-
no: "Нет",
|
|
2481
|
-
systemFields: "Система",
|
|
2482
|
-
},
|
|
2483
3053
|
user: {
|
|
2484
3054
|
profile: "Профиль",
|
|
2485
3055
|
settings: "Настройки",
|
|
@@ -2501,6 +3071,7 @@ const ru = {
|
|
|
2501
3071
|
loading: "Загрузка…",
|
|
2502
3072
|
failedToLoad: "Не удалось загрузить матрицу: {{message}}",
|
|
2503
3073
|
needsAcross: "Матричный отчёт требует хотя бы одно поле `groupingsAcross`.",
|
|
3074
|
+
forbiddenMessage: "У вас нет прав на просмотр данных этого отчёта.",
|
|
2504
3075
|
aggregate: {
|
|
2505
3076
|
count: "Количество",
|
|
2506
3077
|
countDistinct: "Уникальные",
|
|
@@ -2515,18 +3086,18 @@ const ru = {
|
|
|
2515
3086
|
},
|
|
2516
3087
|
},
|
|
2517
3088
|
organizations: {
|
|
2518
|
-
create: "Создать
|
|
2519
|
-
mine: "Мои
|
|
2520
|
-
title: "
|
|
2521
|
-
heading: "Ваши
|
|
2522
|
-
subtitle: "Выберите
|
|
2523
|
-
searchPlaceholder: "Поиск
|
|
2524
|
-
new: "
|
|
2525
|
-
current: "
|
|
3089
|
+
create: "Создать организацию",
|
|
3090
|
+
mine: "Мои организации",
|
|
3091
|
+
title: "Организации",
|
|
3092
|
+
heading: "Ваши организации",
|
|
3093
|
+
subtitle: "Выберите организацию, чтобы продолжить, или создайте новую.",
|
|
3094
|
+
searchPlaceholder: "Поиск организации",
|
|
3095
|
+
new: "Новая организация",
|
|
3096
|
+
current: "Текущая организация",
|
|
2526
3097
|
manage: "Управление",
|
|
2527
|
-
emptyTitle: "Пока нет
|
|
2528
|
-
emptyDescription: "Создайте
|
|
2529
|
-
noMatches: "Нет
|
|
3098
|
+
emptyTitle: "Пока нет организаций",
|
|
3099
|
+
emptyDescription: "Создайте свою первую организацию, чтобы начать.",
|
|
3100
|
+
noMatches: "Нет организаций, соответствующих запросу.",
|
|
2530
3101
|
},
|
|
2531
3102
|
organization: {
|
|
2532
3103
|
roles: {
|
|
@@ -2611,6 +3182,7 @@ const ru = {
|
|
|
2611
3182
|
readOnlyNote: "Изменять настройки могут только владельцы.",
|
|
2612
3183
|
nameLabel: "Название организации",
|
|
2613
3184
|
slugLabel: "Слаг",
|
|
3185
|
+
slugLockedNote: "У этой организации есть активные окружения, поэтому её слаг нельзя изменить здесь: переименование также переносит их поддомены.",
|
|
2614
3186
|
logoLabel: "Логотип",
|
|
2615
3187
|
logoUpload: "Загрузить",
|
|
2616
3188
|
logoReplace: "Заменить",
|
|
@@ -2669,18 +3241,49 @@ const ru = {
|
|
|
2669
3241
|
regionLabel: "Уведомления",
|
|
2670
3242
|
groupCount: "Уведомлений: {{count}}",
|
|
2671
3243
|
groupUnread: "Непрочитанных: {{count}}",
|
|
3244
|
+
groupUnread_one: "Непрочитанных: {{count}}",
|
|
3245
|
+
groupUnread_few: "Непрочитанных: {{count}}",
|
|
3246
|
+
groupUnread_many: "Непрочитанных: {{count}}",
|
|
3247
|
+
groupUnread_other: "Непрочитанных: {{count}}",
|
|
2672
3248
|
groupMarkRead: "Отметить прочитанными",
|
|
2673
3249
|
groupMarkReadTitle: "Отметить прочитанными все этого типа",
|
|
2674
3250
|
empty: "Нет уведомлений",
|
|
2675
3251
|
markAllRead: "Отметить все как прочитанные",
|
|
2676
3252
|
viewAll: "Показать все уведомления",
|
|
2677
3253
|
approvalsPending: "{{count}} ожидающих утверждений",
|
|
3254
|
+
approvalsPending_one: "{{count}} ожидающее утверждение",
|
|
3255
|
+
approvalsPending_few: "{{count}} ожидающих утверждения",
|
|
3256
|
+
approvalsPending_many: "{{count}} ожидающих утверждений",
|
|
3257
|
+
approvalsPending_other: "{{count}} ожидающего утверждения",
|
|
2678
3258
|
viewApprovals: "Показать утверждения",
|
|
2679
3259
|
noPendingApprovals: "Нет ожидающих утверждений",
|
|
2680
3260
|
openApprovalsInbox: "Открыть входящие утверждений",
|
|
2681
3261
|
badgeTotal: "Всего: {{total}}",
|
|
2682
|
-
badgeNotifications: "{{
|
|
2683
|
-
|
|
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}} ожидающего утверждения",
|
|
3272
|
+
arrivalMany: "Новых сообщений: {{count}}",
|
|
3273
|
+
arrivalMany_one: "Новых сообщений: {{count}}",
|
|
3274
|
+
arrivalMany_few: "Новых сообщений: {{count}}",
|
|
3275
|
+
arrivalMany_many: "Новых сообщений: {{count}}",
|
|
3276
|
+
arrivalMany_other: "Новых сообщений: {{count}}",
|
|
3277
|
+
arrivalRepeats: "Новых сообщений по этой теме: {{count}}",
|
|
3278
|
+
arrivalRepeats_one: "Новых сообщений по этой теме: {{count}}",
|
|
3279
|
+
arrivalRepeats_few: "Новых сообщений по этой теме: {{count}}",
|
|
3280
|
+
arrivalRepeats_many: "Новых сообщений по этой теме: {{count}}",
|
|
3281
|
+
arrivalRepeats_other: "Новых сообщений по этой теме: {{count}}",
|
|
3282
|
+
arrivalOpen: "Открыть",
|
|
3283
|
+
toastEnabled: "Оповещения в приложении",
|
|
3284
|
+
desktopEnabled: "Уведомления на рабочем столе",
|
|
3285
|
+
desktopBlocked: "Заблокировано. Разрешите уведомления для этого сайта в настройках браузера.",
|
|
3286
|
+
desktopUnsupported: "Этот браузер не поддерживает уведомления на рабочем столе.",
|
|
2684
3287
|
emptyUnread: "Всё прочитано",
|
|
2685
3288
|
filterUnread: "Непрочитанные",
|
|
2686
3289
|
filterAll: "Все",
|
|
@@ -2694,12 +3297,14 @@ const ru = {
|
|
|
2694
3297
|
thankYouTitle: "Спасибо!",
|
|
2695
3298
|
thankYouMessage: "Ваш ответ успешно получен.",
|
|
2696
3299
|
redirecting: "Перенаправление через {{seconds}} с…",
|
|
3300
|
+
redirectPending: "Перенаправление…",
|
|
2697
3301
|
unavailableTitle: "Форма недоступна",
|
|
2698
3302
|
unavailableDescription: "По этому URL нет публичной формы. Убедитесь, что базовое представление имеет анонимный доступ.",
|
|
2699
3303
|
tryDemo: "Попробовать демо",
|
|
2700
3304
|
retry: "Повторить",
|
|
2701
3305
|
loading: "Загрузка формы…",
|
|
2702
3306
|
requiredHint: "* Обязательное поле",
|
|
3307
|
+
requiredFields: "Обязательные поля: {{fields}}",
|
|
2703
3308
|
consentLabelDefault: "Я принимаю политику конфиденциальности и соглашаюсь на обработку моих данных.",
|
|
2704
3309
|
consentLink: "Политика конфиденциальности",
|
|
2705
3310
|
consentRequired: "Пожалуйста, примите политику конфиденциальности.",
|
|
@@ -2712,10 +3317,10 @@ const ru = {
|
|
|
2712
3317
|
body: 'Поверхность MCP выключена (OS_MCP_SERVER_ENABLED=false). Попросите оператора включить её снова.',
|
|
2713
3318
|
},
|
|
2714
3319
|
url: {
|
|
2715
|
-
title: 'MCP-эндпоинт
|
|
3320
|
+
title: 'MCP-эндпоинт этой системы',
|
|
2716
3321
|
body: 'Любой ИИ-клиент с поддержкой MCP подключается по этому URL. Идентификация — самообслуживание: развертывание само является сервером авторизации OAuth 2.1 — вы входите под своим именем, и каждый вызов выполняется в рамках ваших прав и строковой безопасности.',
|
|
2717
3322
|
downloadSkill: 'Скачать SKILL.md',
|
|
2718
|
-
skillHint: 'Переносимый навык агента: учит любого совместимого агента работать с
|
|
3323
|
+
skillHint: 'Переносимый навык агента: учит любого совместимого агента работать с этой системой.',
|
|
2719
3324
|
},
|
|
2720
3325
|
claude: {
|
|
2721
3326
|
body: 'Настройки → Коннекторы → Добавить пользовательский коннектор, вставьте этот URL и войдите через браузер.',
|
|
@@ -2750,18 +3355,89 @@ const ru = {
|
|
|
2750
3355
|
noImportableFields: "У этого объекта нет полей, доступных для импорта.",
|
|
2751
3356
|
schemaReadFailed: "Не удалось прочитать схему объекта.",
|
|
2752
3357
|
imported: "Импортировано строк: {{count}} в {{object}}.",
|
|
3358
|
+
imported_one: "Импортировано строк: {{count}} в {{object}}.",
|
|
3359
|
+
imported_few: "Импортировано строк: {{count}} в {{object}}.",
|
|
3360
|
+
imported_many: "Импортировано строк: {{count}} в {{object}}.",
|
|
3361
|
+
imported_other: "Импортировано строк: {{count}} в {{object}}.",
|
|
2753
3362
|
importFrom: "Импортировать реальные строки из",
|
|
2754
3363
|
into: "в",
|
|
2755
3364
|
opening: "Открытие…",
|
|
2756
3365
|
importAction: "Импорт",
|
|
2757
3366
|
dismiss: "Скрыть",
|
|
2758
3367
|
},
|
|
2759
|
-
|
|
2760
|
-
|
|
2761
|
-
|
|
2762
|
-
|
|
2763
|
-
|
|
2764
|
-
|
|
3368
|
+
cloudWorkspaceTimezoneNotice: {
|
|
3369
|
+
seeded: "Часовой пояс окружения был задан по вашему браузеру при его создании: {{zone}}. Его можно изменить в разделе «Настройки → Локализация».",
|
|
3370
|
+
},
|
|
3371
|
+
ai: {
|
|
3372
|
+
nlQuery: {
|
|
3373
|
+
placeholder: "Задайте вопрос о своих данных…",
|
|
3374
|
+
ask: "Спросить",
|
|
3375
|
+
results: "Результаты",
|
|
3376
|
+
match: "Совпадение: {{percent}}",
|
|
3377
|
+
simulatedSummary: "Результаты по запросу: {{query}}",
|
|
3378
|
+
noResults: "Подходящие записи не найдены",
|
|
3379
|
+
recentQueries: "Недавние запросы",
|
|
3380
|
+
},
|
|
3381
|
+
formAssist: {
|
|
3382
|
+
title: "Предложения ИИ",
|
|
3383
|
+
suggestionCount: "Предложений: {{count}}",
|
|
3384
|
+
suggestionCount_one: "{{count}} предложение",
|
|
3385
|
+
suggestionCount_few: "{{count}} предложения",
|
|
3386
|
+
suggestionCount_many: "{{count}} предложений",
|
|
3387
|
+
suggestionCount_other: "{{count}} предложения",
|
|
3388
|
+
applyAll: "Применить все",
|
|
3389
|
+
confidence: "Уверенность: {{percent}}",
|
|
3390
|
+
appliedCount: "Применено предложений: {{count}}",
|
|
3391
|
+
appliedCount_one: "Применено {{count}} предложение",
|
|
3392
|
+
appliedCount_few: "Применено {{count}} предложения",
|
|
3393
|
+
appliedCount_many: "Применено {{count}} предложений",
|
|
3394
|
+
appliedCount_other: "Применено {{count}} предложения",
|
|
3395
|
+
},
|
|
3396
|
+
recommendations: {
|
|
3397
|
+
title: "Рекомендации",
|
|
3398
|
+
generating: "Формирование рекомендаций…",
|
|
3399
|
+
empty: "Нет доступных рекомендаций",
|
|
3400
|
+
},
|
|
3401
|
+
},
|
|
3402
|
+
aiApprovals: {
|
|
3403
|
+
title: "Согласования ИИ",
|
|
3404
|
+
description: "Действия, предложенные ИИ-агентом: перед выполнением их должен проверить человек.",
|
|
3405
|
+
tabPending: "Ожидают",
|
|
3406
|
+
tabDecided: "Обработанные",
|
|
3407
|
+
tabAll: "Все",
|
|
3408
|
+
statusPending: "Ожидает",
|
|
3409
|
+
statusApproved: "Согласовано",
|
|
3410
|
+
statusExecuted: "Выполнено",
|
|
3411
|
+
statusFailed: "Не выполнено",
|
|
3412
|
+
statusRejected: "Отклонено",
|
|
3413
|
+
colTool: "Инструмент",
|
|
3414
|
+
colAction: "Действие",
|
|
3415
|
+
colObject: "Объект",
|
|
3416
|
+
colStatus: "Статус",
|
|
3417
|
+
colProposed: "Предложено",
|
|
3418
|
+
colDecision: "Решение",
|
|
3419
|
+
emptyTitle: "Нет действий в ожидании",
|
|
3420
|
+
emptyDescription: "Когда ИИ предложит важное действие, оно появится здесь на проверку.",
|
|
3421
|
+
view: "Открыть",
|
|
3422
|
+
approve: "Согласовать",
|
|
3423
|
+
reject: "Отклонить",
|
|
3424
|
+
working: "Выполняется…",
|
|
3425
|
+
approveAndExecute: "Согласовать и выполнить",
|
|
3426
|
+
outcomeApprove: "Согласование {{id}}: {{message}}",
|
|
3427
|
+
outcomeReject: "Отклонение {{id}}: {{message}}",
|
|
3428
|
+
outcomeExecuteFailed: "Действие завершилось ошибкой при выполнении",
|
|
3429
|
+
drawerFallbackTitle: "Действие в ожидании",
|
|
3430
|
+
drawerSubtitle: "Инструмент {{tool}} для объекта {{object}}",
|
|
3431
|
+
fieldProposedBy: "Кто предложил",
|
|
3432
|
+
fieldDecidedBy: "Кто решил",
|
|
3433
|
+
fieldConversation: "Диалог",
|
|
3434
|
+
fieldToolInput: "Входные данные инструмента",
|
|
3435
|
+
fieldResult: "Результат",
|
|
3436
|
+
fieldError: "Ошибка",
|
|
3437
|
+
fieldRejectionReason: "Причина отклонения",
|
|
3438
|
+
rejectTitle: "Отклонить это действие?",
|
|
3439
|
+
rejectBody: "Причина возвращается ИИ, чтобы он скорректировал следующий ответ.",
|
|
3440
|
+
rejectPlaceholder: "Причина (необязательно), например: «Неверный идентификатор записи — сначала уточните у пользователя.»",
|
|
2765
3441
|
},
|
|
2766
3442
|
aiModelStatus: {
|
|
2767
3443
|
summary: "Сборка / вопросы используют {{conversational}} ({{conversationalSource}}); структурированный вывод — {{structured}} ({{structuredSource}}).",
|
|
@@ -2771,8 +3447,8 @@ const ru = {
|
|
|
2771
3447
|
rowConversational: "Модель Build / Ask",
|
|
2772
3448
|
rowStructured: "Структурированный (blueprint / seed)",
|
|
2773
3449
|
rowReasoning: "Интенсивность рассуждений",
|
|
2774
|
-
readFailed: "Не удалось прочитать действующую модель ИИ. В
|
|
2775
|
-
readFailedWithStatus: "Не удалось прочитать действующую модель ИИ (HTTP {{status}}). В
|
|
3450
|
+
readFailed: "Не удалось прочитать действующую модель ИИ. В этой системе может не быть запущен сервис ИИ, либо у вас нет разрешения ai:read.",
|
|
3451
|
+
readFailedWithStatus: "Не удалось прочитать действующую модель ИИ (HTTP {{status}}). В этой системе может не быть запущен сервис ИИ, либо у вас нет разрешения ai:read.",
|
|
2776
3452
|
overridesInEffect: "Действующие переопределения: ",
|
|
2777
3453
|
noOverrides: "нет — используются значения по умолчанию развёрнутого кода.",
|
|
2778
3454
|
adapter: "Адаптер: ",
|
|
@@ -2780,6 +3456,188 @@ const ru = {
|
|
|
2780
3456
|
sourceInherits: "как у build/ask",
|
|
2781
3457
|
sourcePinned: "закреплено через {{source}}",
|
|
2782
3458
|
},
|
|
3459
|
+
// objectui#7254 — the AI copilot's tool cards. Three families, all of them
|
|
3460
|
+
// English-only until this landed while every other string on the same screen
|
|
3461
|
+
// was translated:
|
|
3462
|
+
//
|
|
3463
|
+
// `tool.*` — one entry per PLATFORM-PROVIDED tool name
|
|
3464
|
+
// (@objectstack/spec `PLATFORM_TOOLS_BY_PACKAGE`, the
|
|
3465
|
+
// closed registry those runtimes are conformance-tested
|
|
3466
|
+
// against). `humanizeToolName` looks each up as
|
|
3467
|
+
// `chatbot.tool.<tool_name>` and falls back to its English
|
|
3468
|
+
// title-caser for a custom / third-party tool, so a name
|
|
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.
|
|
3476
|
+
// `toolState.*` — the card-header badge + activity-chip vocabulary. ONE
|
|
3477
|
+
// set for both surfaces (they used to carry separate
|
|
3478
|
+
// tables and disagreed on casing).
|
|
3479
|
+
// `plan.*` — the "N objects · N views · N dashboards" strip. Plural
|
|
3480
|
+
// FAMILIES: one slot per CLDR category the pack's language
|
|
3481
|
+
// selects (objectui#11432), plus the base key for a call
|
|
3482
|
+
// made without a count. `all-locales-key-parity.test.ts`
|
|
3483
|
+
// derives the required slots from `Intl.PluralRules`.
|
|
3484
|
+
//
|
|
3485
|
+
// objectui#7481 — five `tool.*` entries are NEWER than the registry above:
|
|
3486
|
+
// `get_authoring_rules` (cloud#1837), `load_tools`, `open_record`, `test_flow`
|
|
3487
|
+
// and `toggle_flow` are registered by cloud `service-ai-studio` but the pinned
|
|
3488
|
+
// `@objectstack/spec` snapshot does not list them yet. They are kept here on
|
|
3489
|
+
// purpose: a step label the user reads must not wait on a pin bump. When the
|
|
3490
|
+
// pin advances, `chatbotToolLabels-locale-parity-7481` starts checking them
|
|
3491
|
+
// against the registry instead of against its own hand-held list.
|
|
3492
|
+
chatbot: {
|
|
3493
|
+
answer: {
|
|
3494
|
+
showFull: 'Показать ответ полностью',
|
|
3495
|
+
collapse: 'Свернуть',
|
|
3496
|
+
expandTable: 'Развернуть',
|
|
3497
|
+
exitExpandedTable: 'Закрыть',
|
|
3498
|
+
},
|
|
3499
|
+
tool: {
|
|
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: "Сверить результат сборки",
|
|
3535
|
+
},
|
|
3536
|
+
toolState: {
|
|
3537
|
+
agentActivity: "Действия агента",
|
|
3538
|
+
pending: "Ожидание",
|
|
3539
|
+
running: "Выполняется",
|
|
3540
|
+
awaitingApproval: "Ожидает подтверждения",
|
|
3541
|
+
responded: "Отвечено",
|
|
3542
|
+
completed: "Завершено",
|
|
3543
|
+
error: "Ошибка",
|
|
3544
|
+
denied: "Отклонено",
|
|
3545
|
+
failed: "Ошибка выполнения",
|
|
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
|
+
},
|
|
3558
|
+
plan: {
|
|
3559
|
+
countObjects: "объектов: {{count}}",
|
|
3560
|
+
countObjects_one: "{{count}} объект",
|
|
3561
|
+
countObjects_few: "{{count}} объекта",
|
|
3562
|
+
countObjects_many: "{{count}} объектов",
|
|
3563
|
+
countObjects_other: "{{count}} объекта",
|
|
3564
|
+
countViews: "представлений: {{count}}",
|
|
3565
|
+
countViews_one: "{{count}} представление",
|
|
3566
|
+
countViews_few: "{{count}} представления",
|
|
3567
|
+
countViews_many: "{{count}} представлений",
|
|
3568
|
+
countViews_other: "{{count}} представления",
|
|
3569
|
+
countDashboards: "дашбордов: {{count}}",
|
|
3570
|
+
countDashboards_one: "{{count}} дашборд",
|
|
3571
|
+
countDashboards_few: "{{count}} дашборда",
|
|
3572
|
+
countDashboards_many: "{{count}} дашбордов",
|
|
3573
|
+
countDashboards_other: "{{count}} дашборда",
|
|
3574
|
+
countSeedData: "демоданные",
|
|
3575
|
+
extendTarget: "Добавление в существующее приложение: {{app}}",
|
|
3576
|
+
awaitingConfirm: "Ожидает подтверждения",
|
|
3577
|
+
objectsAndFields: "Объекты и поля",
|
|
3578
|
+
views: "Представления",
|
|
3579
|
+
suggestedField: "предложено",
|
|
3580
|
+
nameField: "Название: {{field}}",
|
|
3581
|
+
},
|
|
3582
|
+
build: {
|
|
3583
|
+
building: "Создание {{app}}…",
|
|
3584
|
+
built: "Создание {{app}} завершено",
|
|
3585
|
+
builtAndLive: "Создано и опубликовано · {{app}}",
|
|
3586
|
+
appFallback: "вашего приложения",
|
|
3587
|
+
addingSampleData: "добавление демоданных",
|
|
3588
|
+
group: {
|
|
3589
|
+
object: "Объекты",
|
|
3590
|
+
view: "Представления",
|
|
3591
|
+
dashboard: "Дашборды",
|
|
3592
|
+
app: "Приложение",
|
|
3593
|
+
seed: "Демоданные",
|
|
3594
|
+
},
|
|
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
|
+
},
|
|
3639
|
+
},
|
|
3640
|
+
},
|
|
2783
3641
|
chatbotError: {
|
|
2784
3642
|
title: "Ошибка ответа",
|
|
2785
3643
|
fallbackDetail: "Что-то пошло не так. Попробуйте ещё раз.",
|
|
@@ -2793,10 +3651,13 @@ const ru = {
|
|
|
2793
3651
|
buyCredits: "Купить пакет кредитов",
|
|
2794
3652
|
upgradePlan: "Повысить тариф",
|
|
2795
3653
|
},
|
|
3654
|
+
planTier: {
|
|
3655
|
+
teamAndUp: "Тариф Team и выше",
|
|
3656
|
+
},
|
|
2796
3657
|
environment: {
|
|
2797
|
-
addEnvironment: "Добавить окружение",
|
|
2798
3658
|
setUpProduction: "Настройте продакшн-окружение",
|
|
2799
3659
|
addDevelopment: "Добавить окружение разработки",
|
|
3660
|
+
developmentLocked: "Окружения разработки · {{tier}}",
|
|
2800
3661
|
// Plan/capacity dialog (EnvironmentEntitlementDialog) — cloud#959.
|
|
2801
3662
|
entitlement: {
|
|
2802
3663
|
productionLimitTitle: "У вас уже есть продакшн-окружение",
|
|
@@ -2844,7 +3705,7 @@ const ru = {
|
|
|
2844
3705
|
},
|
|
2845
3706
|
unbound: {
|
|
2846
3707
|
title: "Не подключено",
|
|
2847
|
-
body: "
|
|
3708
|
+
body: "Эта среда выполнения не подключена к управляющему слою. «Подключить» открывает вашу облачную учётную запись в новом окне, где подключение подтверждается одним кликом; никакие идентификаторы и учётные данные на этой странице не вводятся.",
|
|
2848
3709
|
connect: "Подключить",
|
|
2849
3710
|
},
|
|
2850
3711
|
},
|
|
@@ -2857,10 +3718,17 @@ const ru = {
|
|
|
2857
3718
|
dismiss: "Закрыть",
|
|
2858
3719
|
confirmedToast: "«{{set}}» теперь предоставлен: {{anchor}}.",
|
|
2859
3720
|
dismissedToast: "Предложение по «{{set}}» закрыто.",
|
|
3721
|
+
guestUnsupported: "Здесь предоставить нельзя: наборы позиции Guest не выводятся из принятых предложений.",
|
|
3722
|
+
acceptedState: "«{{set}}» принят для всех вошедших пользователей (позиция Everyone).",
|
|
3723
|
+
notInForceState: "«{{set}}» принят, но ещё не действует: этот запрос не изменил позицию Everyone. Причина указана в журнале сервера.",
|
|
3724
|
+
dismissedState: "«{{set}}» не предоставлен: предложение закрыто или отозвано.",
|
|
3725
|
+
revoke: "Отозвать",
|
|
3726
|
+
revoking: "Отзыв…",
|
|
3727
|
+
revokedToast: "Принятие «{{set}}» отозвано.",
|
|
2860
3728
|
},
|
|
2861
3729
|
title: "Маркетплейс приложений",
|
|
2862
3730
|
subtitle: "Просматривайте одобренные приложения из каталога ObjectStack. Нажмите на приложение, чтобы увидеть подробности и установить его.",
|
|
2863
|
-
searchPlaceholder:
|
|
3731
|
+
searchPlaceholder: 'Поиск приложений по имени или ID приложения…',
|
|
2864
3732
|
searchAria: "Поиск в маркетплейсе",
|
|
2865
3733
|
installed: "Установлено",
|
|
2866
3734
|
installedCount: "Установлено ({{count}})",
|
|
@@ -2870,21 +3738,26 @@ const ru = {
|
|
|
2870
3738
|
noMatchFilters: "Нет приложений, соответствующих фильтрам.",
|
|
2871
3739
|
noDescription: "Описание отсутствует.",
|
|
2872
3740
|
back: "Назад в маркетплейс",
|
|
2873
|
-
installedTitle: "Установленные приложения",
|
|
2874
|
-
installedSubtitle: "Пакеты маркетплейса, установленные в ядре этого рантайма.",
|
|
2875
|
-
installedEmpty: "Пока нет установленных приложений.",
|
|
2876
3741
|
browseLink: "Маркетплейс →",
|
|
2877
|
-
installedAdditiveNote: "
|
|
2878
|
-
installedAt: "Установлено {{when}}",
|
|
2879
|
-
installedBy: "пользователем {{user}}",
|
|
2880
|
-
installedPackageId: "Пакет",
|
|
2881
|
-
cachedAs: "Кэшировано как <code>{{path}}</code>",
|
|
3742
|
+
installedAdditiveNote: "Удаление сразу убирает приложение из работающего ядра вместе с его наборами разрешений и их назначениями, а также удаляет кэшированный манифест, чтобы пакет не загружался при следующем запуске. Записи, хранящиеся в его объектах, остаются в базе данных.",
|
|
2882
3743
|
versionBadge: "v{{version}}",
|
|
2883
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
|
+
},
|
|
2884
3752
|
load: {
|
|
2885
3753
|
failed: "Не удалось загрузить маркетплейс",
|
|
2886
3754
|
failedHintConfigured: "Этот рантайм обращается к маркетплейсу через control plane по адресу {{url}}. Убедитесь, что он доступен и достижим отсюда.",
|
|
2887
|
-
failedHintSameOrigin: "
|
|
3755
|
+
failedHintSameOrigin: "Каталог маркетплейса доступен через этот рантайм. Убедитесь, что рантайм онлайн и имеет доступ к каталогу.",
|
|
3756
|
+
loading: "Загрузка каталога маркетплейса…",
|
|
3757
|
+
slow: "Всё ещё загружается — каталог маркетплейса медленно отвечает.",
|
|
3758
|
+
retry: "Повторить",
|
|
3759
|
+
unreachable: "Не удалось связаться с каталогом маркетплейса.",
|
|
3760
|
+
answeredError: "Каталог маркетплейса ответил ошибкой (HTTP {{status}}).",
|
|
2888
3761
|
packageFailed: "Не удалось загрузить пакет",
|
|
2889
3762
|
notFound: "Не найдено.",
|
|
2890
3763
|
},
|
|
@@ -2908,10 +3781,19 @@ const ru = {
|
|
|
2908
3781
|
purgeSampleData: 'Удалить демоданные',
|
|
2909
3782
|
purgeConfirm: 'Удалить все демонстрационные записи, созданные этим пакетом? Записи, добавленные пользователем, НЕ будут затронуты.',
|
|
2910
3783
|
purgeSuccess: 'Удалено демонстрационных записей: {{count}}.',
|
|
3784
|
+
purgeSuccess_one: 'Удалено демонстрационных записей: {{count}}.',
|
|
3785
|
+
purgeSuccess_few: 'Удалено демонстрационных записей: {{count}}.',
|
|
3786
|
+
purgeSuccess_many: 'Удалено демонстрационных записей: {{count}}.',
|
|
3787
|
+
purgeSuccess_other: 'Удалено демонстрационных записей: {{count}}.',
|
|
2911
3788
|
purgeNoData: 'Демонстрационные записи для удаления не найдены.',
|
|
2912
3789
|
reseedQueued: 'Демоданные будут перезагружены при следующем доступе к среде.',
|
|
2913
3790
|
reseedLocalSuccess: 'Демоданные перезагружены: добавлено {{inserted}}, обновлено {{updated}}.',
|
|
2914
3791
|
reseedPartialErrors: '(не удалось записать записей: {{count}})',
|
|
3792
|
+
reseedPartialErrors_one: '(не удалось записать записей: {{count}})',
|
|
3793
|
+
reseedPartialErrors_few: '(не удалось записать записей: {{count}})',
|
|
3794
|
+
reseedPartialErrors_many: '(не удалось записать записей: {{count}})',
|
|
3795
|
+
reseedPartialErrors_other: '(не удалось записать записей: {{count}})',
|
|
3796
|
+
sampleDataKernelUnavailable: 'У этой control plane нет ядра среды, поэтому здесь нельзя перезагрузить или удалить демоданные. Выполните это действие в собственном рантайме среды.',
|
|
2915
3797
|
updateAvailable: 'Доступно обновление',
|
|
2916
3798
|
},
|
|
2917
3799
|
action: {
|
|
@@ -2921,6 +3803,7 @@ const ru = {
|
|
|
2921
3803
|
working: "Обработка…",
|
|
2922
3804
|
installToCloud: "Установить в облако…",
|
|
2923
3805
|
installing: "Установка…",
|
|
3806
|
+
updating: "Обновление…",
|
|
2924
3807
|
uninstall: "Удалить",
|
|
2925
3808
|
uninstalling: "Удаление…",
|
|
2926
3809
|
details: "Подробности",
|
|
@@ -2938,15 +3821,45 @@ const ru = {
|
|
|
2938
3821
|
environmentPlaceholder: "Выбрать среду",
|
|
2939
3822
|
includeSampleData: "Включить образцы данных",
|
|
2940
3823
|
noEnvs: "В активной организации нет сред.",
|
|
2941
|
-
noPermission: "Нет прав на установку. Только владельцы и администраторы могут
|
|
3824
|
+
noPermission: "Нет прав на установку. Только владельцы и администраторы организации могут устанавливать — обратитесь к администратору вашей организации.",
|
|
2942
3825
|
signInFirst: "Сначала войдите в ObjectStack Cloud.",
|
|
2943
3826
|
success: "Установлено. Откройте среду, чтобы увидеть новое приложение.",
|
|
2944
3827
|
localSuccess: "v{{version}} установлено. \"{{name}}\" должно появиться в переключателе.",
|
|
3828
|
+
localLoadsAtRestart: "v{{version}} установлено. \"{{name}}\" загрузится при следующем перезапуске среды выполнения и до этого не появится в переключателе.",
|
|
2945
3829
|
localManifestConflict: "{{message}}\nПримечание: Локальное приложение уже имеет этот manifest_id. Сначала удалите его из objectstack.config.ts.",
|
|
2946
3830
|
localUnauthorized: "Сначала войдите в этот рантайм.",
|
|
2947
3831
|
localMarketplaceUnavailable: "OS_CLOUD_URL не настроен.",
|
|
2948
3832
|
updateTo: "Обновить → v{{version}}",
|
|
2949
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}}. Возможно, развёртывание ещё идёт — проверьте снова чуть позже.",
|
|
2950
3863
|
},
|
|
2951
3864
|
// objectui#3546 — the MarketplacePage "Your organization" strip.
|
|
2952
3865
|
org: {
|
|
@@ -2964,7 +3877,8 @@ const ru = {
|
|
|
2964
3877
|
reviewed: "Проверено и одобрено",
|
|
2965
3878
|
unreviewed: "Ещё не проверено",
|
|
2966
3879
|
signed: "Подписано",
|
|
2967
|
-
grantsIntro: "
|
|
3880
|
+
grantsIntro: "Пакет запрашивает:",
|
|
3881
|
+
notEnforced: "Список записывается при установке и подтверждается заново, если более поздняя версия запросит больше, но среда выполнения пока не ограничивает пакет этим списком.",
|
|
2968
3882
|
services: "Сервисы платформы",
|
|
2969
3883
|
hooks: "Хуки жизненного цикла",
|
|
2970
3884
|
network: "Доступ к сети",
|
|
@@ -2978,9 +3892,11 @@ const ru = {
|
|
|
2978
3892
|
},
|
|
2979
3893
|
},
|
|
2980
3894
|
uninstall: {
|
|
2981
|
-
confirm: "Удалить {{manifestId}} v{{version}}?\n\n
|
|
2982
|
-
successInList: "{{manifestId}}
|
|
2983
|
-
successInDetail: "
|
|
3895
|
+
confirm: "Удалить {{manifestId}} v{{version}}?\n\nПриложение сразу будет убрано из работающего ядра вместе с его наборами разрешений и их назначениями, а кэшированный манифест будет удалён. Записи, хранящиеся в его объектах, остаются в базе данных.",
|
|
3896
|
+
successInList: "{{manifestId}} удалён: приложение убрано из работающего ядра вместе с его наборами разрешений и их назначениями. Записи, хранящиеся в его объектах, остаются в базе данных.",
|
|
3897
|
+
successInDetail: "{{manifestId}} и его кэшированный манифест удалены: приложение убрано из работающего ядра вместе с его наборами разрешений и их назначениями. Записи, хранящиеся в его объектах, остаются в базе данных.",
|
|
3898
|
+
confirmNotLoaded: "Удалить {{manifestId}} v{{version}}?\n\nКэшированный манифест будет удалён. Рантайм не загружал этот пакет, поэтому ничего из него не запущено.",
|
|
3899
|
+
successNotLoaded: "{{manifestId}} удалён. Пакет не был загружен, перезапуск не требуется.",
|
|
2984
3900
|
},
|
|
2985
3901
|
accessDenied: {
|
|
2986
3902
|
title: "Только для администраторов",
|
|
@@ -3003,30 +3919,23 @@ const ru = {
|
|
|
3003
3919
|
storage: "Хранилище",
|
|
3004
3920
|
other: "Другое",
|
|
3005
3921
|
},
|
|
3006
|
-
pricing: {
|
|
3007
|
-
free: "Бесплатно",
|
|
3008
|
-
freemium: "Freemium",
|
|
3009
|
-
paid: "Платно",
|
|
3010
|
-
subscription: "Подписка",
|
|
3011
|
-
"usage-based": "По использованию",
|
|
3012
|
-
"contact-sales": "Связаться с продажами",
|
|
3013
|
-
},
|
|
3014
3922
|
relativeTime: {
|
|
3015
3923
|
today: "сегодня",
|
|
3016
3924
|
daysAgo: "{{count}} д назад",
|
|
3017
3925
|
monthsAgo: "{{count}} мес назад",
|
|
3926
|
+
monthsAgo_one: "{{count}} мес назад",
|
|
3927
|
+
monthsAgo_few: "{{count}} мес назад",
|
|
3928
|
+
monthsAgo_many: "{{count}} мес назад",
|
|
3929
|
+
monthsAgo_other: "{{count}} мес назад",
|
|
3018
3930
|
yearsAgo: "{{count}} лет назад",
|
|
3931
|
+
yearsAgo_one: "{{count}} год назад",
|
|
3932
|
+
yearsAgo_few: "{{count}} года назад",
|
|
3933
|
+
yearsAgo_many: "{{count}} лет назад",
|
|
3934
|
+
yearsAgo_other: "{{count}} года назад",
|
|
3019
3935
|
},
|
|
3020
3936
|
},
|
|
3021
|
-
approvals: {
|
|
3022
|
-
approve: 'Утвердить',
|
|
3023
|
-
reject: 'Отклонить',
|
|
3024
|
-
comment: 'Комментарий (необязательно)',
|
|
3025
|
-
approveSuccess: 'Утверждено',
|
|
3026
|
-
rejectSuccess: 'Отклонено',
|
|
3027
|
-
rejectConfirm: 'Отклонить этот запрос на согласование?',
|
|
3028
|
-
},
|
|
3029
3937
|
approvalsInbox: {
|
|
3938
|
+
recordUnresolvable: 'Эту запись невозможно открыть',
|
|
3030
3939
|
loadMore: 'Загрузить ещё',
|
|
3031
3940
|
loadingMore: 'Загрузка…',
|
|
3032
3941
|
loadedOf: 'Загружено {{loaded}} из {{total}}',
|
|
@@ -3045,6 +3954,10 @@ const ru = {
|
|
|
3045
3954
|
requestInfoSent: 'Возвращено заявителю за дополнениями',
|
|
3046
3955
|
remindBtn: 'Напомнить',
|
|
3047
3956
|
remindSuccess: 'Напоминание отправлено: {{count}}',
|
|
3957
|
+
remindSuccess_one: 'Напоминание отправлено: {{count}}',
|
|
3958
|
+
remindSuccess_few: 'Напоминание отправлено: {{count}}',
|
|
3959
|
+
remindSuccess_many: 'Напоминание отправлено: {{count}}',
|
|
3960
|
+
remindSuccess_other: 'Напоминание отправлено: {{count}}',
|
|
3048
3961
|
remindThrottled: 'Напоминание уже отправлялось недавно — попробуйте позже.',
|
|
3049
3962
|
replyPlaceholder: 'Ответить по этому запросу…',
|
|
3050
3963
|
slaRemaining: 'SLA: осталось {{dur}}',
|
|
@@ -3061,8 +3974,13 @@ const ru = {
|
|
|
3061
3974
|
progressApprovals: 'Согласования — {{got}} из {{need}}',
|
|
3062
3975
|
progressGroups: 'Ход визирования — {{got}} из {{need}} групп',
|
|
3063
3976
|
progressEligible: 'Доступных согласующих: {{count}}',
|
|
3977
|
+
progressEligible_one: 'Доступных согласующих: {{count}}',
|
|
3978
|
+
progressEligible_few: 'Доступных согласующих: {{count}}',
|
|
3979
|
+
progressEligible_many: 'Доступных согласующих: {{count}}',
|
|
3980
|
+
progressEligible_other: 'Доступных согласующих: {{count}}',
|
|
3064
3981
|
progressBar: 'Ход решения',
|
|
3065
3982
|
declaredActions: 'Действия',
|
|
3983
|
+
decisionPanelOffRequestPage: 'Панель решения по согласованию работает только на страницах запросов на согласование.',
|
|
3066
3984
|
attachmentChip: 'Вложение',
|
|
3067
3985
|
attachmentOpenFailed: 'Не удалось открыть вложение — попробуйте ещё раз',
|
|
3068
3986
|
approveOneTitle: 'Согласовать «{{title}}»?',
|
|
@@ -3092,6 +4010,10 @@ const ru = {
|
|
|
3092
4010
|
filterCount: '{{shown}} из {{total}}',
|
|
3093
4011
|
selected: 'выбрано',
|
|
3094
4012
|
actionableCount: '({{count}} доступно)',
|
|
4013
|
+
actionableCount_one: '({{count}} доступно)',
|
|
4014
|
+
actionableCount_few: '({{count}} доступно)',
|
|
4015
|
+
actionableCount_many: '({{count}} доступно)',
|
|
4016
|
+
actionableCount_other: '({{count}} доступно)',
|
|
3095
4017
|
selectAll: 'Выбрать все',
|
|
3096
4018
|
selectRow: 'Выбрать запрос',
|
|
3097
4019
|
colRequest: 'Запрос',
|
|
@@ -3126,6 +4048,11 @@ const ru = {
|
|
|
3126
4048
|
emptyPending: 'Всё обработано — ничего не ожидает вашего решения.',
|
|
3127
4049
|
emptyOther: 'Здесь пока пусто.',
|
|
3128
4050
|
emptyViewAll: 'Все запросы',
|
|
4051
|
+
waitingOnOthers: "{{count}} запроса ожидают других согласующих",
|
|
4052
|
+
waitingOnOthers_one: "{{count}} запрос ожидает других согласующих",
|
|
4053
|
+
waitingOnOthers_few: "{{count}} запроса ожидают других согласующих",
|
|
4054
|
+
waitingOnOthers_many: "{{count}} запросов ожидают других согласующих",
|
|
4055
|
+
waitingOnOthers_other: "{{count}} запроса ожидают других согласующих",
|
|
3129
4056
|
noMatches: 'Нет совпадений с текущими фильтрами.',
|
|
3130
4057
|
keyboardHint: 'Клавиши: j/k перемещение · Enter открыть · x выбрать · a согласовать · r отклонить',
|
|
3131
4058
|
drawerTitle: 'Запрос на согласование',
|
|
@@ -3143,12 +4070,12 @@ const ru = {
|
|
|
3143
4070
|
overrideActionLabel: '{{action}} (по праву администратора)',
|
|
3144
4071
|
overrideNotice: 'У вас нет места согласующего на этом шаге. Продолжив, вы воспользуетесь правом администратора: шаг будет немедленно завершён, а все согласующие, ещё не принявшие решение, будут пропущены. Решение будет записано как административное переопределение.',
|
|
3145
4072
|
overrideNoticeWho: 'У вас нет места согласующего на этом шаге. Продолжив, вы воспользуетесь правом администратора: шаг будет немедленно завершён, а согласующие, ещё не принявшие решение, будут пропущены — {{who}}. Решение будет записано как административное переопределение.',
|
|
4073
|
+
overrideReassignNotice: 'У вас нет места согласующего на этом шаге. Продолжив, вы воспользуетесь правом администратора: шаг перейдёт выбранному вами новому согласующему, а все согласующие, ещё не принявшие решение, будут заменены. Запрос останется в ожидании решения нового согласующего. Передача будет записана как административное переопределение.',
|
|
4074
|
+
overrideReassignNoticeWho: 'У вас нет места согласующего на этом шаге. Продолжив, вы воспользуетесь правом администратора: шаг перейдёт выбранному вами новому согласующему, а согласующие, ещё не принявшие решение, будут заменены — {{who}}. Запрос останется в ожидании решения нового согласующего. Передача будет записана как административное переопределение.',
|
|
4075
|
+
overrideRecallNotice: 'Вы не отправляли этот запрос. Продолжив, вы воспользуетесь правом администратора: запрос будет отозван, согласующие, ещё не принявшие решение, больше не смогут по нему действовать, а запись будет разблокирована.',
|
|
4076
|
+
overrideRecallNoticeWho: 'Вы не отправляли этот запрос. Продолжив, вы воспользуетесь правом администратора: запрос будет отозван, запись будет разблокирована, а согласующие, ещё не принявшие решение, больше не смогут по нему действовать — {{who}}.',
|
|
3146
4077
|
viaOverrideChip: 'Переопределение администратора',
|
|
3147
4078
|
viaOverrideHint: 'У исполнителя не было места согласующего на этом шаге — допущен по пути административного переопределения.',
|
|
3148
|
-
rawData: 'Исходные данные (JSON)',
|
|
3149
|
-
copy: 'Копировать',
|
|
3150
|
-
copied: 'Скопировано',
|
|
3151
|
-
copyFailed: 'Не удалось скопировать',
|
|
3152
4079
|
overrideActor: 'Действовать от другого имени (админ)',
|
|
3153
4080
|
actor: 'Идентичность',
|
|
3154
4081
|
auto: 'Авто',
|
|
@@ -3165,11 +4092,27 @@ const ru = {
|
|
|
3165
4092
|
approveN: 'Согласовать {{count}}',
|
|
3166
4093
|
rejectN: 'Отклонить {{count}}',
|
|
3167
4094
|
bulkApproveTitle: 'Согласовать {{count}} запросов?',
|
|
4095
|
+
bulkApproveTitle_one: 'Согласовать {{count}} запрос?',
|
|
4096
|
+
bulkApproveTitle_few: 'Согласовать {{count}} запроса?',
|
|
4097
|
+
bulkApproveTitle_many: 'Согласовать {{count}} запросов?',
|
|
4098
|
+
bulkApproveTitle_other: 'Согласовать {{count}} запроса?',
|
|
3168
4099
|
bulkApproveBody: 'Каждый запрос согласуется от вашего имени, и поток продолжится по ветке согласования.',
|
|
3169
4100
|
bulkRejectTitle: 'Отклонить {{count}} запросов?',
|
|
4101
|
+
bulkRejectTitle_one: 'Отклонить {{count}} запрос?',
|
|
4102
|
+
bulkRejectTitle_few: 'Отклонить {{count}} запроса?',
|
|
4103
|
+
bulkRejectTitle_many: 'Отклонить {{count}} запросов?',
|
|
4104
|
+
bulkRejectTitle_other: 'Отклонить {{count}} запроса?',
|
|
3170
4105
|
bulkRejectBody: 'Выбранные запросы будут отклонены, заявители получат уведомления.',
|
|
3171
4106
|
bulkApproved: 'Согласовано запросов: {{count}}',
|
|
4107
|
+
bulkApproved_one: 'Согласовано запросов: {{count}}',
|
|
4108
|
+
bulkApproved_few: 'Согласовано запросов: {{count}}',
|
|
4109
|
+
bulkApproved_many: 'Согласовано запросов: {{count}}',
|
|
4110
|
+
bulkApproved_other: 'Согласовано запросов: {{count}}',
|
|
3172
4111
|
bulkRejected: 'Отклонено запросов: {{count}}',
|
|
4112
|
+
bulkRejected_one: 'Отклонено запросов: {{count}}',
|
|
4113
|
+
bulkRejected_few: 'Отклонено запросов: {{count}}',
|
|
4114
|
+
bulkRejected_many: 'Отклонено запросов: {{count}}',
|
|
4115
|
+
bulkRejected_other: 'Отклонено запросов: {{count}}',
|
|
3173
4116
|
bulkPartial: 'Успешно: {{ok}}, с ошибкой: {{fail}}: {{which}}',
|
|
3174
4117
|
rejectOneTitle: 'Отклонить «{{title}}»?',
|
|
3175
4118
|
rejectOneBody: 'Запрос будет отклонён, заявитель получит уведомление.',
|
|
@@ -3194,8 +4137,20 @@ const ru = {
|
|
|
3194
4137
|
alreadyDecided: 'Этот запрос уже обработан. Обновите список.',
|
|
3195
4138
|
justNow: 'только что',
|
|
3196
4139
|
minutesAgo: '{{count}} мин назад',
|
|
4140
|
+
minutesAgo_one: '{{count}} мин назад',
|
|
4141
|
+
minutesAgo_few: '{{count}} мин назад',
|
|
4142
|
+
minutesAgo_many: '{{count}} мин назад',
|
|
4143
|
+
minutesAgo_other: '{{count}} мин назад',
|
|
3197
4144
|
hoursAgo: '{{count}} ч назад',
|
|
4145
|
+
hoursAgo_one: '{{count}} ч назад',
|
|
4146
|
+
hoursAgo_few: '{{count}} ч назад',
|
|
4147
|
+
hoursAgo_many: '{{count}} ч назад',
|
|
4148
|
+
hoursAgo_other: '{{count}} ч назад',
|
|
3198
4149
|
daysAgo: '{{count}} дн назад',
|
|
4150
|
+
daysAgo_one: '{{count}} дн назад',
|
|
4151
|
+
daysAgo_few: '{{count}} дн назад',
|
|
4152
|
+
daysAgo_many: '{{count}} дн назад',
|
|
4153
|
+
daysAgo_other: '{{count}} дн назад',
|
|
3199
4154
|
},
|
|
3200
4155
|
preview: {
|
|
3201
4156
|
empty: {
|
|
@@ -3216,6 +4171,11 @@ const ru = {
|
|
|
3216
4171
|
publishing: 'Публикация…',
|
|
3217
4172
|
exit: 'Выйти из предпросмотра',
|
|
3218
4173
|
changes: 'Изменения',
|
|
4174
|
+
pendingHere: 'Предпросмотр черновика · {{count}} неопубликованных изменений на этой странице',
|
|
4175
|
+
pendingHere_one: 'Предпросмотр черновика · {{count}} неопубликованное изменение на этой странице',
|
|
4176
|
+
pendingHere_few: 'Предпросмотр черновика · {{count}} неопубликованных изменения на этой странице',
|
|
4177
|
+
pendingHere_many: 'Предпросмотр черновика · {{count}} неопубликованных изменений на этой странице',
|
|
4178
|
+
pendingHere_other: 'Предпросмотр черновика · {{count}} неопубликованного изменения на этой странице',
|
|
3219
4179
|
},
|
|
3220
4180
|
changes: {
|
|
3221
4181
|
title: 'Ожидающие изменения',
|
|
@@ -3230,11 +4190,97 @@ const ru = {
|
|
|
3230
4190
|
detailNone: 'Различий не обнаружено — черновик совпадает с опубликованной версией.',
|
|
3231
4191
|
detailChangedKeys: 'Также изменено:',
|
|
3232
4192
|
confirmNote: 'Публикация атомарно выпускает все {{count}} ожидающих черновиков этого пакета.',
|
|
4193
|
+
confirmNote_one: 'Публикация атомарно выпускает {{count}} ожидающий черновик этого пакета.',
|
|
4194
|
+
confirmNote_few: 'Публикация атомарно выпускает все {{count}} ожидающих черновика этого пакета.',
|
|
4195
|
+
confirmNote_many: 'Публикация атомарно выпускает все {{count}} ожидающих черновиков этого пакета.',
|
|
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}} ожидающего черновика по отдельности: черновик, который не удастся опубликовать, останется ожидающим, а остальные всё равно будут опубликованы.',
|
|
3233
4204
|
publishConfirm: 'Опубликовать всё',
|
|
3234
|
-
|
|
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: 'Заполнить значением по умолчанию',
|
|
4276
|
+
// [`7a90afdf9`] Pre-publish security-posture findings, shown next to
|
|
3235
4277
|
// the confirm button so a refusal the door would issue is read BEFORE
|
|
3236
4278
|
// the click rather than as a toast after the batch rolled back.
|
|
3237
4279
|
securityBlockTitle: 'Публикация будет отклонена — {{count}} элемент(ов) требуют решения',
|
|
4280
|
+
securityBlockTitle_one: 'Публикация будет отклонена — {{count}} элемент требует решения',
|
|
4281
|
+
securityBlockTitle_few: 'Публикация будет отклонена — {{count}} элемента требуют решения',
|
|
4282
|
+
securityBlockTitle_many: 'Публикация будет отклонена — {{count}} элементов требуют решения',
|
|
4283
|
+
securityBlockTitle_other: 'Публикация будет отклонена — {{count}} элемента требуют решения',
|
|
3238
4284
|
securityBlockWhere: 'Исправьте это в объекте в разделе «Настройки → Общий доступ к записям» и опубликуйте снова.',
|
|
3239
4285
|
},
|
|
3240
4286
|
// ADR-0045 — the materialized-but-unlisted app banner
|
|
@@ -3259,7 +4305,7 @@ const ru = {
|
|
|
3259
4305
|
revertLabel: 'Изменение отменено',
|
|
3260
4306
|
applyLabel: 'Изменение сборки',
|
|
3261
4307
|
revert: 'отмена',
|
|
3262
|
-
items: '
|
|
4308
|
+
items: 'Элементов: {{count}}',
|
|
3263
4309
|
revertAction: 'Отменить',
|
|
3264
4310
|
reverted: 'Отменено — изменение возвращено.',
|
|
3265
4311
|
revertFailed: 'Не удалось отменить',
|
|
@@ -3288,28 +4334,32 @@ const ru = {
|
|
|
3288
4334
|
rangeEnd: "До",
|
|
3289
4335
|
operators: {
|
|
3290
4336
|
equals: "Равно",
|
|
3291
|
-
|
|
4337
|
+
not_equals: "Не равно",
|
|
3292
4338
|
contains: "Содержит",
|
|
3293
|
-
|
|
3294
|
-
|
|
3295
|
-
|
|
3296
|
-
|
|
3297
|
-
|
|
3298
|
-
|
|
3299
|
-
|
|
3300
|
-
|
|
4339
|
+
icontains: "Содержит (без учёта регистра)",
|
|
4340
|
+
not_contains: "Не содержит",
|
|
4341
|
+
is_empty: "Пусто",
|
|
4342
|
+
is_not_empty: "Не пусто",
|
|
4343
|
+
greater_than: "Больше",
|
|
4344
|
+
less_than: "Меньше",
|
|
4345
|
+
greater_than_or_equal: "Больше или равно",
|
|
4346
|
+
less_than_or_equal: "Меньше или равно",
|
|
3301
4347
|
before: "До",
|
|
3302
4348
|
after: "После",
|
|
3303
4349
|
between: "Между",
|
|
3304
4350
|
in: "В списке",
|
|
3305
|
-
|
|
3306
|
-
|
|
3307
|
-
|
|
3308
|
-
|
|
3309
|
-
|
|
4351
|
+
not_in: "Не в списке",
|
|
4352
|
+
starts_with: "Начинается с",
|
|
4353
|
+
ends_with: "Заканчивается на",
|
|
4354
|
+
is_null: "Равно null",
|
|
4355
|
+
is_not_null: "Не равно null",
|
|
3310
4356
|
exists: "Задано",
|
|
3311
4357
|
notExists: "Не задано",
|
|
3312
4358
|
},
|
|
4359
|
+
emptyCheckHint: {
|
|
4360
|
+
text: '«{{isEmpty}}» также находит пустой текст; «{{isNull}}» — только отсутствующее значение.',
|
|
4361
|
+
list: '«{{isEmpty}}» также находит пустой список; «{{isNull}}» — только отсутствующее значение.',
|
|
4362
|
+
},
|
|
3313
4363
|
},
|
|
3314
4364
|
sortBuilder: {
|
|
3315
4365
|
sortBy: "Сортировать по",
|
|
@@ -3322,7 +4372,10 @@ const ru = {
|
|
|
3322
4372
|
},
|
|
3323
4373
|
collaboration: {
|
|
3324
4374
|
commentCount: "Комментариев: {{count}}",
|
|
3325
|
-
|
|
4375
|
+
commentCount_one: "{{count}} комментарий",
|
|
4376
|
+
commentCount_few: "{{count}} комментария",
|
|
4377
|
+
commentCount_many: "{{count}} комментариев",
|
|
4378
|
+
commentCount_other: "{{count}} комментария",
|
|
3326
4379
|
resolvedSuffix: " · Решено",
|
|
3327
4380
|
sortComments: "Сортировка комментариев",
|
|
3328
4381
|
sortOldest: "Сначала старые",
|
|
@@ -3331,11 +4384,26 @@ const ru = {
|
|
|
3331
4384
|
reopen: "Открыть заново",
|
|
3332
4385
|
justNow: "только что",
|
|
3333
4386
|
minutesAgo: "{{count}} мин назад",
|
|
4387
|
+
minutesAgo_one: "{{count}} мин назад",
|
|
4388
|
+
minutesAgo_few: "{{count}} мин назад",
|
|
4389
|
+
minutesAgo_many: "{{count}} мин назад",
|
|
4390
|
+
minutesAgo_other: "{{count}} мин назад",
|
|
3334
4391
|
hoursAgo: "{{count}} ч назад",
|
|
4392
|
+
hoursAgo_one: "{{count}} ч назад",
|
|
4393
|
+
hoursAgo_few: "{{count}} ч назад",
|
|
4394
|
+
hoursAgo_many: "{{count}} ч назад",
|
|
4395
|
+
hoursAgo_other: "{{count}} ч назад",
|
|
3335
4396
|
daysAgo: "{{count}} д назад",
|
|
4397
|
+
daysAgo_one: "{{count}} д назад",
|
|
4398
|
+
daysAgo_few: "{{count}} д назад",
|
|
4399
|
+
daysAgo_many: "{{count}} д назад",
|
|
4400
|
+
daysAgo_other: "{{count}} д назад",
|
|
3336
4401
|
edited: "(изменено)",
|
|
3337
4402
|
reactionCount: "Реакций: {{count}}",
|
|
3338
|
-
|
|
4403
|
+
reactionCount_one: "{{count}} реакция",
|
|
4404
|
+
reactionCount_few: "{{count}} реакции",
|
|
4405
|
+
reactionCount_many: "{{count}} реакций",
|
|
4406
|
+
reactionCount_other: "{{count}} реакции",
|
|
3339
4407
|
addThumbsUp: "Поставить лайк",
|
|
3340
4408
|
reply: "Ответить",
|
|
3341
4409
|
reactThumbsUp: "Отреагировать лайком",
|
|
@@ -3346,9 +4414,15 @@ const ru = {
|
|
|
3346
4414
|
commentPlaceholder: "Добавьте комментарий… (@ — упоминание)",
|
|
3347
4415
|
send: "Отправить",
|
|
3348
4416
|
presentUserCount: "Присутствует пользователей: {{count}}",
|
|
3349
|
-
|
|
4417
|
+
presentUserCount_one: "Присутствует {{count}} пользователь",
|
|
4418
|
+
presentUserCount_few: "Присутствуют {{count}} пользователя",
|
|
4419
|
+
presentUserCount_many: "Присутствует {{count}} пользователей",
|
|
4420
|
+
presentUserCount_other: "Присутствует {{count}} пользователя",
|
|
3350
4421
|
moreUserCount: "Ещё пользователей: {{count}}",
|
|
3351
|
-
|
|
4422
|
+
moreUserCount_one: "Ещё {{count}} пользователь",
|
|
4423
|
+
moreUserCount_few: "Ещё {{count}} пользователя",
|
|
4424
|
+
moreUserCount_many: "Ещё {{count}} пользователей",
|
|
4425
|
+
moreUserCount_other: "Ещё {{count}} пользователя",
|
|
3352
4426
|
userStatusTitle: "{{name}} ({{status}})",
|
|
3353
4427
|
statusActive: "активен",
|
|
3354
4428
|
statusIdle: "бездействует",
|
|
@@ -3356,6 +4430,11 @@ const ru = {
|
|
|
3356
4430
|
},
|
|
3357
4431
|
wizard: {
|
|
3358
4432
|
missingRequired: "Заполните обязательные поля: {{fields}}",
|
|
4433
|
+
back: "Назад",
|
|
4434
|
+
submitting: "Отправка…",
|
|
4435
|
+
stepFallback: "Шаг {{n}}",
|
|
4436
|
+
progressLabel: "Прогресс",
|
|
4437
|
+
emptyStep: "Для этого шага не настроены поля",
|
|
3359
4438
|
},
|
|
3360
4439
|
flowRunner: {
|
|
3361
4440
|
title: 'Ввод',
|
|
@@ -3405,6 +4484,8 @@ const ru = {
|
|
|
3405
4484
|
setDefaultFailed: "Не удалось установить приложение по умолчанию: {{reason}}",
|
|
3406
4485
|
appDeleted: "{{name}} удалено",
|
|
3407
4486
|
deleteFailed: "Не удалось удалить приложение: {{reason}}",
|
|
4487
|
+
nothingToDelete: "Нечего удалять для {{name}}: {{reason}}",
|
|
4488
|
+
alreadyAtDefault: "оно уже соответствует значению по умолчанию из пакета",
|
|
3408
4489
|
bulkEnabled: "Включено приложений: {{n}}",
|
|
3409
4490
|
bulkDisabled: "Отключено приложений: {{n}}",
|
|
3410
4491
|
bulkFailed: "Не удалось для {{n}}: {{details}}",
|
|
@@ -3413,5 +4494,131 @@ const ru = {
|
|
|
3413
4494
|
bulkOperationFailed: "Массовая операция не выполнена: {{reason}}",
|
|
3414
4495
|
},
|
|
3415
4496
|
},
|
|
4497
|
+
// objectui#6301 — Настройка › Автоматизация из пакетов (ADR-0126 §7.4).
|
|
4498
|
+
// Терминология пакета: `common.package` = Пакет, `flowRunner.completed` =
|
|
4499
|
+
// Поток, кавычки «…». ⛔ Никаких формулировок о происхождении или
|
|
4500
|
+
// расхождении в этой группе (§9).
|
|
4501
|
+
packagedAutomation: {
|
|
4502
|
+
title: "Автоматизация из пакетов",
|
|
4503
|
+
subtitle: "Потоки и действия, поставляемые установленными пакетами. Отключите любой из них в этой установке или клонируйте поток под новым именем, чтобы настроить. Редактирование — в Studio.",
|
|
4504
|
+
refresh: "Обновить",
|
|
4505
|
+
flowsHeading: "Потоки из пакетов",
|
|
4506
|
+
actionsHeading: "Действия из пакетов",
|
|
4507
|
+
colFlow: "Поток",
|
|
4508
|
+
colActivation: "Активация",
|
|
4509
|
+
colActions: "Действия",
|
|
4510
|
+
toggleLabel: "Активация для {{label}}",
|
|
4511
|
+
on: "Вкл.",
|
|
4512
|
+
off: "Выкл.",
|
|
4513
|
+
notRunning: "Здесь не выполняется",
|
|
4514
|
+
clone: "Клонировать",
|
|
4515
|
+
cloneTitle: "Клонировать поток из пакета",
|
|
4516
|
+
cloneBody: "Копия сохраняет определение целиком и требует нового машинного имени и метки. Редактируйте копию в Studio.",
|
|
4517
|
+
cloneName: "Новое машинное имя",
|
|
4518
|
+
cloneLabel: "Новая метка",
|
|
4519
|
+
cancel: "Отмена",
|
|
4520
|
+
cloneConfirm: "Создать клон",
|
|
4521
|
+
cloneCreated: "Поток «{{name}}» создан.",
|
|
4522
|
+
cloneSwitchSourceOff: "Выключить «{{label}}»",
|
|
4523
|
+
cloneSourceOff: "Пакетный поток «{{label}}» выключен.",
|
|
4524
|
+
cloneOpen: "Открыть копию в Studio",
|
|
4525
|
+
emptyTitle: "Нет потоков из пакетов",
|
|
4526
|
+
emptyBody: "В этой установке ни один установленный пакет не поставляет поток автоматизации. Потоки, которые вы создаёте сами, находятся в Studio.",
|
|
4527
|
+
loadFailed: "Не удалось загрузить автоматизацию из пакетов.",
|
|
4528
|
+
toggleFailedHttp: "Не удалось изменить активацию (HTTP {{status}}).",
|
|
4529
|
+
toggleFailed: "Не удалось изменить активацию.",
|
|
4530
|
+
cloneFailedHttp: "Не удалось клонировать этот поток (HTTP {{status}}).",
|
|
4531
|
+
cloneFailed: "Не удалось клонировать этот поток.",
|
|
4532
|
+
reasonDetails: "Подробности",
|
|
4533
|
+
actionsSubtitle: "Действия, поставляемые установленными пакетами. Отключите действие в этой установке — и оно перестанет выполняться везде, где предлагается. Создать рядом собственное действие по-прежнему можно в Studio.",
|
|
4534
|
+
colAction: "Действие",
|
|
4535
|
+
colObject: "Объект",
|
|
4536
|
+
actionToggleLabel: "Активация для {{label}} на {{object}}",
|
|
4537
|
+
actionsEmptyTitle: "Нет действий из пакетов",
|
|
4538
|
+
actionsEmptyBody: "В этой установке ни один установленный пакет не объявляет действие. Действия, которые вы создаёте сами, находятся в Studio.",
|
|
4539
|
+
actionsLoadFailed: "Не удалось загрузить действия из пакетов.",
|
|
4540
|
+
},
|
|
4541
|
+
element: {
|
|
4542
|
+
number: {
|
|
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}}.",
|
|
4621
|
+
},
|
|
4622
|
+
},
|
|
3416
4623
|
};
|
|
3417
4624
|
export default ru;
|