@object-ui/i18n 17.5.0 → 17.7.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 +4954 -0
- package/README.md +234 -13
- 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 +28 -2
- package/dist/i18n.js +99 -17
- package/dist/index.d.ts +17 -23
- package/dist/index.js +51 -27
- package/dist/locales/ar.d.ts +1113 -370
- package/dist/locales/ar.js +1276 -428
- package/dist/locales/de.d.ts +785 -370
- package/dist/locales/de.js +896 -401
- package/dist/locales/en.d.ts +800 -385
- package/dist/locales/en.js +1261 -419
- package/dist/locales/es.d.ts +867 -370
- package/dist/locales/es.js +976 -398
- package/dist/locales/fr.d.ts +867 -370
- package/dist/locales/fr.js +976 -399
- package/dist/locales/index.d.ts +8682 -3761
- package/dist/locales/index.js +68 -29
- package/dist/locales/ja.d.ts +785 -370
- package/dist/locales/ja.js +891 -395
- package/dist/locales/ko.d.ts +785 -370
- package/dist/locales/ko.js +893 -399
- package/dist/locales/pt.d.ts +867 -370
- package/dist/locales/pt.js +975 -397
- 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 +949 -370
- package/dist/locales/ru.js +1093 -419
- package/dist/locales/zh.d.ts +803 -388
- package/dist/locales/zh.js +899 -388
- package/dist/pickLocalized.d.ts +67 -0
- package/dist/pickLocalized.js +114 -0
- package/dist/provider.d.ts +102 -13
- 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 +13 -2
- package/dist/useObjectLabel.d.ts +118 -22
- package/dist/useObjectLabel.js +148 -23
- package/dist/useSafeTranslation.js +41 -43
- package/dist/utils/formatting.d.ts +16 -0
- package/dist/utils/formatting.js +23 -3
- package/dist/utils/index.d.ts +4 -4
- package/dist/utils/index.js +4 -4
- 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
|
@@ -19,10 +19,12 @@ const ru = {
|
|
|
19
19
|
manage_users: "Управление пользователями",
|
|
20
20
|
manage_org_users: "Управление пользователями организации",
|
|
21
21
|
manage_metadata: "Управление метаданными",
|
|
22
|
+
manage_org_presentation: "Управление представлением организации",
|
|
22
23
|
manage_platform_settings: "Управление настройками платформы",
|
|
23
24
|
setup_access: "Доступ к настройке",
|
|
24
25
|
setup_write: "Запись настроек",
|
|
25
26
|
studio_access: "Доступ к Studio",
|
|
27
|
+
manage_sharing: "Управление общим доступом",
|
|
26
28
|
},
|
|
27
29
|
group: {
|
|
28
30
|
platform: 'Платформа',
|
|
@@ -30,27 +32,38 @@ const ru = {
|
|
|
30
32
|
other: 'Другое',
|
|
31
33
|
},
|
|
32
34
|
},
|
|
33
|
-
// objectui#3546 slice six —
|
|
34
|
-
//
|
|
35
|
+
// objectui#3546 slice six — the read-only summary of PermissionFacetLink's six
|
|
36
|
+
// authorization facets, plus the Studio link.
|
|
35
37
|
//
|
|
36
|
-
//
|
|
37
|
-
//
|
|
38
|
-
//
|
|
39
|
-
//
|
|
40
|
-
//
|
|
41
|
-
// базовым ключом — форма не зависит от числа.
|
|
38
|
+
// The four count labels carry one slot per ru CLDR category (objectui#11432):
|
|
39
|
+
// `_one` 1/21/31… (nominative singular), `_few` 2-4/22-24… (genitive singular),
|
|
40
|
+
// `_many` 0/5-20… (genitive plural), `_other` fractions (genitive singular).
|
|
41
|
+
// The base key keeps the count-invariant «Существительное: {{count}}» form for
|
|
42
|
+
// a call made without a count.
|
|
42
43
|
perm: {
|
|
43
44
|
facet: {
|
|
44
45
|
none: "Нет",
|
|
45
46
|
more: "+{{count}} ещё",
|
|
46
47
|
objects: "Объектов: {{count}}",
|
|
47
|
-
objects_one: "
|
|
48
|
+
objects_one: "{{count}} объект",
|
|
49
|
+
objects_few: "{{count}} объекта",
|
|
50
|
+
objects_many: "{{count}} объектов",
|
|
51
|
+
objects_other: "{{count}} объекта",
|
|
48
52
|
fields: "Правил для полей: {{count}}",
|
|
49
|
-
fields_one: "
|
|
53
|
+
fields_one: "{{count}} правило для полей",
|
|
54
|
+
fields_few: "{{count}} правила для полей",
|
|
55
|
+
fields_many: "{{count}} правил для полей",
|
|
56
|
+
fields_other: "{{count}} правила для полей",
|
|
50
57
|
rls: "Политик RLS: {{count}}",
|
|
51
|
-
rls_one: "
|
|
58
|
+
rls_one: "{{count}} политика RLS",
|
|
59
|
+
rls_few: "{{count}} политики RLS",
|
|
60
|
+
rls_many: "{{count}} политик RLS",
|
|
61
|
+
rls_other: "{{count}} политики RLS",
|
|
52
62
|
tabs: "Правил для вкладок: {{count}}",
|
|
53
|
-
tabs_one: "
|
|
63
|
+
tabs_one: "{{count}} правило для вкладок",
|
|
64
|
+
tabs_few: "{{count}} правила для вкладок",
|
|
65
|
+
tabs_many: "{{count}} правил для вкладок",
|
|
66
|
+
tabs_other: "{{count}} правила для вкладок",
|
|
54
67
|
adminScope: "Делегированное администрирование настроено",
|
|
55
68
|
designInStudio: "Дизайн в Studio →",
|
|
56
69
|
designInStudioHint: "Дизайн в Studio",
|
|
@@ -69,7 +82,10 @@ const ru = {
|
|
|
69
82
|
selectFirst: 'Сначала выберите {{fields}}',
|
|
70
83
|
selectRecord: 'Выбрать запись',
|
|
71
84
|
recordCount: 'Записей: {{count}}',
|
|
72
|
-
|
|
85
|
+
recordCount_one: '{{count}} запись',
|
|
86
|
+
recordCount_few: '{{count}} записи',
|
|
87
|
+
recordCount_many: '{{count}} записей',
|
|
88
|
+
recordCount_other: '{{count}} записи',
|
|
73
89
|
pageOf: 'Страница {{current}} из {{total}}',
|
|
74
90
|
filters: 'Фильтры',
|
|
75
91
|
clear: 'Очистить',
|
|
@@ -88,6 +104,7 @@ const ru = {
|
|
|
88
104
|
removeFromFavorites: "Удалить из избранного",
|
|
89
105
|
loading: "Загрузка…",
|
|
90
106
|
save: "Сохранить",
|
|
107
|
+
discard: "Отменить",
|
|
91
108
|
cancel: "Отмена",
|
|
92
109
|
delete: "Удалить",
|
|
93
110
|
edit: "Редактировать",
|
|
@@ -120,8 +137,14 @@ const ru = {
|
|
|
120
137
|
closeChat: "Закрыть чат",
|
|
121
138
|
closePanel: "Закрыть панель",
|
|
122
139
|
resizeDrawer: "Изменить ширину панели",
|
|
123
|
-
|
|
124
|
-
|
|
140
|
+
// objectui#11445 — a count family: each slot agrees the noun with the
|
|
141
|
+
// number (one 1/21, few 2-4, many 5-20, other a fraction). The base key, a
|
|
142
|
+
// count-invariant form, answers a call made without a count.
|
|
143
|
+
itemCount: "Элементов: {{count}}",
|
|
144
|
+
itemCount_one: "{{count}} элемент",
|
|
145
|
+
itemCount_few: "{{count}} элемента",
|
|
146
|
+
itemCount_many: "{{count}} элементов",
|
|
147
|
+
itemCount_other: "{{count}} элемента",
|
|
125
148
|
toggleSidebar: "Переключить боковую панель",
|
|
126
149
|
package: "Пакет",
|
|
127
150
|
done: "Готово",
|
|
@@ -129,6 +152,16 @@ const ru = {
|
|
|
129
152
|
record: "Запись",
|
|
130
153
|
retry: "Повторить",
|
|
131
154
|
printDialogHint: "Открывает диалог печати браузера (это не экспорт в PDF)",
|
|
155
|
+
// The non-grid row ceiling's footnote (objectui#7210). Two keys because
|
|
156
|
+
// there are two conditions: a reported `total` states the fact with BOTH
|
|
157
|
+
// numbers, a missing one cannot name how many. Kept terse deliberately —
|
|
158
|
+
// this copy is eagerly loaded, and since objectui#7399 these bytes are
|
|
159
|
+
// budgeted by the `i18n-locales` chunk, not `framework`. ⛔ That ceiling's
|
|
160
|
+
// headroom is deliberately NOT restated here — it moves on every
|
|
161
|
+
// re-baseline, and the figure that was here went stale.
|
|
162
|
+
// `pnpm check:eager-closure` prints it.
|
|
163
|
+
rowCeilingNote: "Показаны первые {{shown}} из {{total}} записей. Сузьте фильтр.",
|
|
164
|
+
rowCeilingNoteUnknownTotal: "Показаны первые {{shown}} записей. Сузьте фильтр.",
|
|
132
165
|
},
|
|
133
166
|
actions: {
|
|
134
167
|
decisionOutput: {
|
|
@@ -140,6 +173,14 @@ const ru = {
|
|
|
140
173
|
acknowledge: 'Я сохранил(а) это',
|
|
141
174
|
copyAll: 'Копировать всё',
|
|
142
175
|
},
|
|
176
|
+
notAvailableHere: '«{{action}}» недоступно на текущей странице.',
|
|
177
|
+
completedSuccessfully: 'Действие успешно выполнено',
|
|
178
|
+
failed: 'Действие не выполнено',
|
|
179
|
+
parallelFailed: 'Одно или несколько параллельных действий не выполнены',
|
|
180
|
+
undo: 'Отменить',
|
|
181
|
+
undone: 'Изменение отменено',
|
|
182
|
+
undoneOperation: 'Отменить: {{description}}',
|
|
183
|
+
redoneOperation: 'Повторить: {{description}}',
|
|
143
184
|
},
|
|
144
185
|
validation: {
|
|
145
186
|
required: "Поле {{field}} обязательно для заполнения",
|
|
@@ -157,19 +198,45 @@ const ru = {
|
|
|
157
198
|
},
|
|
158
199
|
form: {
|
|
159
200
|
noPermissionToSave: "У вас нет прав на сохранение этой записи.",
|
|
201
|
+
noPermissionToCreate: "У вас нет прав на создание записей «{{object}}». Поля доступны только для чтения.",
|
|
202
|
+
noPermissionToEdit: "У вас нет прав на редактирование записей «{{object}}». Поля доступны только для чтения.",
|
|
160
203
|
submitFailed: "Не удалось сохранить. Попробуйте ещё раз.",
|
|
204
|
+
uploadInFlight: "Дождитесь завершения загрузки, прежде чем сохранять.",
|
|
205
|
+
clearedOnHide: "Очищено то, что больше не применимо к текущим значениям: {{fields}}",
|
|
206
|
+
visibleWhenFaulted: "Невозможно отправить: не удалось вычислить правило visibleWhen для {{fields}}. Правило нужно исправить, прежде чем эту форму можно будет отправить.",
|
|
161
207
|
discardTitle: "Отменить изменения?",
|
|
162
208
|
discardMessage: "Есть несохранённые изменения. Если закрыть форму сейчас, правки будут потеряны.",
|
|
163
209
|
// objectui#4024 — the create/edit dialog's `sr-only` accessible
|
|
164
210
|
// description, used when the form declares no `description` of its own.
|
|
165
211
|
dialogDescriptionFallback: "Заполните поля формы, затем отправьте или отмените.",
|
|
212
|
+
deniedDescription: "У вас нет прав на редактирование этого поля.",
|
|
213
|
+
masterDetail: {
|
|
214
|
+
loadingColumns: "Загрузка столбцов…",
|
|
215
|
+
subtotal: "Промежуточный итог",
|
|
216
|
+
tax: "Налог ({{rate}}%)",
|
|
217
|
+
total: "Итого",
|
|
218
|
+
lineItem: "Позиция",
|
|
219
|
+
rowTitle: "{{title}} — строка {{row}}",
|
|
220
|
+
applyRow: "Применить",
|
|
221
|
+
editorDescription: "Введите запись и её позиции, затем сохраните.",
|
|
222
|
+
noChildObject: "Для этой коллекции не настроен дочерний объект: укажите в {{property}} объект, строки которого она выводит.",
|
|
223
|
+
schemaUnavailable: "Не удалось загрузить схему {{object}}, поэтому у этой коллекции нет столбцов для отображения. Убедитесь, что объект существует и доступен для чтения, затем перезагрузите.",
|
|
224
|
+
noRelationshipField: "Не удалось определить, как {{object}} связан с {{parent}}: ни одно поле lookup или master_detail в нём не ссылается на родительский объект. Укажите в {{property}} этой коллекции поле, в котором хранится родительская запись.",
|
|
225
|
+
},
|
|
226
|
+
lineItems: {
|
|
227
|
+
title: "Позиции",
|
|
228
|
+
saveRecordFirst: "Сначала сохраните запись, чтобы добавить позиции.",
|
|
229
|
+
notLoaded: "Позиции этой записи не загружены.",
|
|
230
|
+
loadFailed: "Не удалось загрузить позиции",
|
|
231
|
+
saveFailed: "Не удалось сохранить позиции",
|
|
232
|
+
noChildObject: "Для этой панели не настроен дочерний объект: укажите в {{property}} объект, строки которого она выводит.",
|
|
233
|
+
},
|
|
166
234
|
keepEditing: "Продолжить редактирование",
|
|
167
235
|
discard: "Отменить",
|
|
168
236
|
conflictTitle: "Конфликт сохранения",
|
|
169
237
|
conflictMessage: "Пока вы редактировали, эту запись изменил другой пользователь. Перезапись заменит его изменения вашими.",
|
|
170
238
|
conflictLatestVersion: "Его сохранение: {{time}}",
|
|
171
239
|
conflictOverwrite: "Перезаписать",
|
|
172
|
-
addItem: "Добавить элемент",
|
|
173
240
|
removeItem: "Удалить элемент",
|
|
174
241
|
fieldRequired: "Это поле обязательно",
|
|
175
242
|
invalidFormat: "Неверный формат",
|
|
@@ -187,6 +254,12 @@ const ru = {
|
|
|
187
254
|
createSuccess: "{{object}} создан",
|
|
188
255
|
updateSuccess: "{{object}} обновлён",
|
|
189
256
|
deleteSuccess: "{{object}} удалён",
|
|
257
|
+
created: "Создано",
|
|
258
|
+
saved: "Сохранено",
|
|
259
|
+
savedNamed: "{{title}} сохранён",
|
|
260
|
+
submitted: "Отправлено",
|
|
261
|
+
errorLoading: "Ошибка загрузки формы",
|
|
262
|
+
navigateRefused: "Цель `navigateOnSuccess`, объявленная для этой формы, была отклонена, поэтому переход не выполнен.",
|
|
190
263
|
fullscreen: {
|
|
191
264
|
title: "Изменить текст",
|
|
192
265
|
description: "Измените полное текстовое значение, затем сохраните или отмените изменения.",
|
|
@@ -211,6 +284,10 @@ const ru = {
|
|
|
211
284
|
},
|
|
212
285
|
relativeDate: {
|
|
213
286
|
overdue: "Просрочено на {{count}} дн.",
|
|
287
|
+
overdue_one: "Просрочено на {{count}} дн.",
|
|
288
|
+
overdue_few: "Просрочено на {{count}} дн.",
|
|
289
|
+
overdue_many: "Просрочено на {{count}} дн.",
|
|
290
|
+
overdue_other: "Просрочено на {{count}} дн.",
|
|
214
291
|
},
|
|
215
292
|
file: {
|
|
216
293
|
dragDropHere: 'Перетащите файлы сюда',
|
|
@@ -227,6 +304,7 @@ const ru = {
|
|
|
227
304
|
remove: 'Удалить {{name}}',
|
|
228
305
|
exceedsMaxSize: '«{{name}}» превышает максимальный размер ({{max}} МБ)',
|
|
229
306
|
uploadFailed: 'Не удалось загрузить «{{name}}»: {{error}}',
|
|
307
|
+
uploadIncomplete: 'Загрузка «{{name}}» не завершена: идентификатор файла не получен, ничего не сохранено',
|
|
230
308
|
},
|
|
231
309
|
richText: {
|
|
232
310
|
format: "Формат: {{format}}",
|
|
@@ -254,6 +332,9 @@ const ru = {
|
|
|
254
332
|
selectBusinessUnit: "Выберите бизнес-подразделение",
|
|
255
333
|
selectPosition: "Выберите должность",
|
|
256
334
|
selectUnitAndSubordinates: "Выберите бизнес-подразделение",
|
|
335
|
+
selectField: "Выберите поле пользователя",
|
|
336
|
+
noUserFields: "В этом объекте нет полей пользователя",
|
|
337
|
+
fieldNotUserTyped: "{{name}} — не поле пользователя",
|
|
257
338
|
},
|
|
258
339
|
filterCondition: {
|
|
259
340
|
selectObjectFirst: "Сначала выберите объект.",
|
|
@@ -264,13 +345,51 @@ const ru = {
|
|
|
264
345
|
editAsJson: "Редактировать как JSON",
|
|
265
346
|
useVisualBuilder: "Использовать визуальный конструктор",
|
|
266
347
|
},
|
|
348
|
+
object: {
|
|
349
|
+
invalidJson: "Некорректный JSON",
|
|
350
|
+
},
|
|
351
|
+
location: {
|
|
352
|
+
refusedFormat: "Не сохранено: введите пару широта, долгота (например: 30.2741, 120.1551).",
|
|
353
|
+
refusedRange: "Не сохранено: {{detail}}",
|
|
354
|
+
latitude: "широта",
|
|
355
|
+
longitude: "долгота",
|
|
356
|
+
refusedResidueOne: "Не сохранено: {{name}} «{{text}}» — не число. Введите обычные десятичные дроби (например: 30.2741, 120.1551).",
|
|
357
|
+
refusedResidue: "Не сохранено: {{name}} «{{text}}» и {{otherName}} «{{otherText}}» — не числа. Введите обычные десятичные дроби (например: 30.2741, 120.1551).",
|
|
358
|
+
},
|
|
359
|
+
date: {
|
|
360
|
+
impossibleDay: "Сохранённое значение «{{value}}» — несуществующая дата. Выберите дату, чтобы заменить его.",
|
|
361
|
+
},
|
|
362
|
+
dateTime: {
|
|
363
|
+
impossibleDay: "Сохранённое значение «{{value}}» — несуществующая дата. Выберите дату и время, чтобы заменить его.",
|
|
364
|
+
},
|
|
365
|
+
number: {
|
|
366
|
+
badInput: "Не сохранено: текст в этом поле — не число. Введите обычную десятичную дробь (например: {{example}}).",
|
|
367
|
+
},
|
|
267
368
|
tags: {
|
|
268
369
|
placeholder: "Введите и нажмите Enter, чтобы добавить…",
|
|
269
370
|
},
|
|
371
|
+
// objectui#4028 — `AddressField`'s five sub-labels.
|
|
372
|
+
address: {
|
|
373
|
+
street: "Улица и дом",
|
|
374
|
+
city: "Город",
|
|
375
|
+
state: "Область / штат",
|
|
376
|
+
postalCode: "Почтовый индекс",
|
|
377
|
+
country: "Страна",
|
|
378
|
+
},
|
|
270
379
|
textarea: {
|
|
271
380
|
characterCount: "Количество символов: {{count}} из {{max}}",
|
|
272
381
|
charactersRemaining: "Осталось символов: {{count}}",
|
|
273
382
|
},
|
|
383
|
+
grid: {
|
|
384
|
+
addLine: "Добавить строку",
|
|
385
|
+
noItems: "Нет элементов",
|
|
386
|
+
noItemsAddHint: "Пока нет элементов — нажмите «{{label}}», чтобы начать.",
|
|
387
|
+
optionalColumns: "Дополнительные столбцы",
|
|
388
|
+
computed: "Вычисляется",
|
|
389
|
+
openRow: "Открыть строку",
|
|
390
|
+
duplicateRow: "Дублировать строку",
|
|
391
|
+
removeRow: "Удалить строку",
|
|
392
|
+
},
|
|
274
393
|
},
|
|
275
394
|
table: {
|
|
276
395
|
rowsPerPage: "Строк на странице",
|
|
@@ -299,23 +418,47 @@ const ru = {
|
|
|
299
418
|
open: "Открыть",
|
|
300
419
|
search: "Поиск…",
|
|
301
420
|
modified: "{{count}} строк изменено",
|
|
421
|
+
modified_one: "Изменена {{count}} строка",
|
|
422
|
+
modified_few: "Изменено {{count}} строки",
|
|
423
|
+
modified_many: "Изменено {{count}} строк",
|
|
424
|
+
modified_other: "Изменено {{count}} строки",
|
|
302
425
|
saveFailed: 'Не удалось сохранить',
|
|
303
426
|
selected: "{{count}} выбрано",
|
|
427
|
+
selected_one: "Выбрано: {{count}}",
|
|
428
|
+
selected_few: "Выбрано: {{count}}",
|
|
429
|
+
selected_many: "Выбрано: {{count}}",
|
|
430
|
+
selected_other: "Выбрано: {{count}}",
|
|
304
431
|
edit: "Редактировать",
|
|
305
432
|
delete: "Удалить",
|
|
306
433
|
},
|
|
307
434
|
grid: {
|
|
308
435
|
bulkSelected: "Выбрано: {{count}}",
|
|
436
|
+
bulkSelected_one: "Выбрано: {{count}}",
|
|
437
|
+
bulkSelected_few: "Выбрано: {{count}}",
|
|
438
|
+
bulkSelected_many: "Выбрано: {{count}}",
|
|
439
|
+
bulkSelected_other: "Выбрано: {{count}}",
|
|
309
440
|
bulkSelectedAllMatches: "Выбрано: {{count}} (все совпадения)",
|
|
310
441
|
bulkClear: "Снять выделение",
|
|
311
442
|
bulkAllOnPage: "Выбраны все {{count}} на этой странице.",
|
|
443
|
+
bulkAllOnPage_one: "Выбраны все записи на этой странице ({{count}}).",
|
|
444
|
+
bulkAllOnPage_few: "Выбраны все записи на этой странице ({{count}}).",
|
|
445
|
+
bulkAllOnPage_many: "Выбраны все записи на этой странице ({{count}}).",
|
|
446
|
+
bulkAllOnPage_other: "Выбраны все записи на этой странице ({{count}}).",
|
|
312
447
|
bulkSelectAllMatching: "Выбрать все совпадения ({{count}})",
|
|
313
448
|
bulkAllMatchingSelected: "Выбраны все подходящие записи ({{count}}).",
|
|
314
449
|
bulk: {
|
|
315
450
|
confirmDefault: "Будет применено к записям: {{count}}.",
|
|
451
|
+
confirmDefault_one: "Будет применено к записям: {{count}}.",
|
|
452
|
+
confirmDefault_few: "Будет применено к записям: {{count}}.",
|
|
453
|
+
confirmDefault_many: "Будет применено к записям: {{count}}.",
|
|
454
|
+
confirmDefault_other: "Будет применено к записям: {{count}}.",
|
|
316
455
|
overLimit: "Выбрано ({{count}}) больше лимита действия ({{limit}}). Уменьшите выбор, чтобы продолжить.",
|
|
317
456
|
affectedRecords: "Затрагиваемые записи ({{count}}):",
|
|
318
457
|
skippedIneligible: '{{count}} из выбранных записей не подходят для этого действия и будут пропущены.',
|
|
458
|
+
skippedIneligible_one: '{{count}} из выбранных записей не подходит для этого действия и будет пропущена.',
|
|
459
|
+
skippedIneligible_few: '{{count}} из выбранных записей не подходят для этого действия и будут пропущены.',
|
|
460
|
+
skippedIneligible_many: '{{count}} из выбранных записей не подходят для этого действия и будут пропущены.',
|
|
461
|
+
skippedIneligible_other: '{{count}} из выбранных записей не подходят для этого действия и будут пропущены.',
|
|
319
462
|
rowFallback: "Строка {{index}}",
|
|
320
463
|
andMore: "… и ещё {{count}}",
|
|
321
464
|
processed: "Обработано {{count}} / {{total}}",
|
|
@@ -333,7 +476,6 @@ const ru = {
|
|
|
333
476
|
undo: "Отменить",
|
|
334
477
|
undoing: "Отмена…",
|
|
335
478
|
done: "Готово",
|
|
336
|
-
selectPlaceholder: "Выберите…",
|
|
337
479
|
loading: "Загрузка…",
|
|
338
480
|
},
|
|
339
481
|
actions: "Действия",
|
|
@@ -352,6 +494,14 @@ const ru = {
|
|
|
352
494
|
yes: "Да",
|
|
353
495
|
no: "Нет",
|
|
354
496
|
systemFields: "Система",
|
|
497
|
+
// objectui#10881 — the grouped grid's two refusals: over a data source
|
|
498
|
+
// that cannot answer the group header query, and over rows a host
|
|
499
|
+
// handed in while declaring them one page of more. `queryGroupHeaders`
|
|
500
|
+
// is the member's name and stays untranslated.
|
|
501
|
+
grouping: {
|
|
502
|
+
needsHeaderQuery: "Это представление сгруппировано, но его источник данных не реализует queryGroupHeaders, поэтому группы невозможно подсчитать. Уберите группировку, чтобы показать записи.",
|
|
503
|
+
needsWholeRows: "Для группировки нужны все записи, но этой таблице передана только одна их страница, поэтому группы невозможно подсчитать. Передайте все записи или позвольте таблице загрузить их из источника данных, который реализует queryGroupHeaders.",
|
|
504
|
+
},
|
|
355
505
|
// objectui#4024 — column-footer aggregate prefixes, keyed by the spec's
|
|
356
506
|
// `ColumnSummary` vocabulary. `pattern` owns the label/value join so this
|
|
357
507
|
// pack controls its own separator and word order.
|
|
@@ -378,10 +528,16 @@ const ru = {
|
|
|
378
528
|
},
|
|
379
529
|
import: {
|
|
380
530
|
downloadTemplate: "Скачать шаблон",
|
|
381
|
-
downloadTemplateHint: "Получите
|
|
531
|
+
downloadTemplateHint: "Получите файл Excel со столбцами, которые можно импортировать (обязательные поля отмечены *), и инструкцией по заполнению.",
|
|
382
532
|
templateFileName: "{{object}}-import-template",
|
|
533
|
+
templateDownloadFailed: "Не удалось скачать шаблон. Повторите попытку.",
|
|
534
|
+
templateNotPermitted: "У вас нет прав на создание записей этого объекта, поэтому шаблон импорта недоступен.",
|
|
383
535
|
autoMatched: "Сопоставлено автоматически",
|
|
384
536
|
autoMatchedSummary: "Автоматически сопоставлено столбцов: {{count}} — проверьте и скорректируйте ниже.",
|
|
537
|
+
autoMatchedSummary_one: "Автоматически сопоставлено столбцов: {{count}} — проверьте и скорректируйте ниже.",
|
|
538
|
+
autoMatchedSummary_few: "Автоматически сопоставлено столбцов: {{count}} — проверьте и скорректируйте ниже.",
|
|
539
|
+
autoMatchedSummary_many: "Автоматически сопоставлено столбцов: {{count}} — проверьте и скорректируйте ниже.",
|
|
540
|
+
autoMatchedSummary_other: "Автоматически сопоставлено столбцов: {{count}} — проверьте и скорректируйте ниже.",
|
|
385
541
|
confidence: {
|
|
386
542
|
high: "Высокая точность",
|
|
387
543
|
medium: "Средняя точность",
|
|
@@ -394,8 +550,20 @@ const ru = {
|
|
|
394
550
|
cancelImport: "Отменить импорт",
|
|
395
551
|
importCancelled: "Импорт отменён",
|
|
396
552
|
resultsTruncated: "Показаны результаты первых {{count}} строк (из {{total}}).",
|
|
553
|
+
resultsTruncated_one: "Показаны результаты первых строк: {{count}} (из {{total}}).",
|
|
554
|
+
resultsTruncated_few: "Показаны результаты первых строк: {{count}} (из {{total}}).",
|
|
555
|
+
resultsTruncated_many: "Показаны результаты первых строк: {{count}} (из {{total}}).",
|
|
556
|
+
resultsTruncated_other: "Показаны результаты первых строк: {{count}} (из {{total}}).",
|
|
397
557
|
createdCount: "Создано: {{count}}",
|
|
558
|
+
createdCount_one: "Создано: {{count}}",
|
|
559
|
+
createdCount_few: "Создано: {{count}}",
|
|
560
|
+
createdCount_many: "Создано: {{count}}",
|
|
561
|
+
createdCount_other: "Создано: {{count}}",
|
|
398
562
|
updatedCount: "Обновлено: {{count}}",
|
|
563
|
+
updatedCount_one: "Обновлено: {{count}}",
|
|
564
|
+
updatedCount_few: "Обновлено: {{count}}",
|
|
565
|
+
updatedCount_many: "Обновлено: {{count}}",
|
|
566
|
+
updatedCount_other: "Обновлено: {{count}}",
|
|
399
567
|
downloadFailed: "Скачать строки с ошибками",
|
|
400
568
|
options: "Параметры импорта",
|
|
401
569
|
writeMode: "Если строка совпадает с существующей записью",
|
|
@@ -443,6 +611,10 @@ const ru = {
|
|
|
443
611
|
historyColResult: "Результат",
|
|
444
612
|
historyColTime: "Когда",
|
|
445
613
|
errorCount: "Ошибок: {{count}}",
|
|
614
|
+
errorCount_one: "Ошибок: {{count}}",
|
|
615
|
+
errorCount_few: "Ошибок: {{count}}",
|
|
616
|
+
errorCount_many: "Ошибок: {{count}}",
|
|
617
|
+
errorCount_other: "Ошибок: {{count}}",
|
|
446
618
|
undoImport: "Отменить импорт",
|
|
447
619
|
undoing: "Отмена…",
|
|
448
620
|
undoConfirm: "Отменить этот импорт? Созданные им записи будут удалены, а обновлённые — восстановлены к прежним значениям.",
|
|
@@ -503,7 +675,15 @@ const ru = {
|
|
|
503
675
|
mapped: "Сопоставлено",
|
|
504
676
|
skipped: "Пропущено",
|
|
505
677
|
rowsWithErrors: "{{count}} строк с ошибками",
|
|
678
|
+
rowsWithErrors_one: "{{count}} строка с ошибками",
|
|
679
|
+
rowsWithErrors_few: "{{count}} строки с ошибками",
|
|
680
|
+
rowsWithErrors_many: "{{count}} строк с ошибками",
|
|
681
|
+
rowsWithErrors_other: "{{count}} строки с ошибками",
|
|
506
682
|
rowsCorrected: "{{count}} строк исправлено",
|
|
683
|
+
rowsCorrected_one: "Исправлена {{count}} строка",
|
|
684
|
+
rowsCorrected_few: "Исправлено {{count}} строки",
|
|
685
|
+
rowsCorrected_many: "Исправлено {{count}} строк",
|
|
686
|
+
rowsCorrected_other: "Исправлено {{count}} строки",
|
|
507
687
|
clickToFix: "— нажмите на выделенную ячейку для редактирования.",
|
|
508
688
|
showingRows: "Отображено {{shown}} из {{total}} строк",
|
|
509
689
|
importing: "Импорт… {{progress}}%",
|
|
@@ -511,11 +691,19 @@ const ru = {
|
|
|
511
691
|
imported: "{{count}} импортировано",
|
|
512
692
|
skippedCount: "{{count}} пропущено",
|
|
513
693
|
moreErrors: "…ещё {{count}} ошибок",
|
|
694
|
+
moreErrors_one: "…ещё {{count}} ошибка",
|
|
695
|
+
moreErrors_few: "…ещё {{count}} ошибки",
|
|
696
|
+
moreErrors_many: "…ещё {{count}} ошибок",
|
|
697
|
+
moreErrors_other: "…ещё {{count}} ошибки",
|
|
514
698
|
cancel: "Отмена",
|
|
515
699
|
back: "Назад",
|
|
516
700
|
next: "Далее",
|
|
517
701
|
close: "Закрыть",
|
|
518
702
|
importNRows: "Импортировать {{count}} строк",
|
|
703
|
+
importNRows_one: "Импортировать {{count}} строку",
|
|
704
|
+
importNRows_few: "Импортировать {{count}} строки",
|
|
705
|
+
importNRows_many: "Импортировать {{count}} строк",
|
|
706
|
+
importNRows_other: "Импортировать {{count}} строки",
|
|
519
707
|
importingProgress: "Импортируется…",
|
|
520
708
|
requiredMark: "*",
|
|
521
709
|
required: "Обязательно",
|
|
@@ -527,11 +715,39 @@ const ru = {
|
|
|
527
715
|
month: "Месяц",
|
|
528
716
|
week: "Неделя",
|
|
529
717
|
day: "День",
|
|
530
|
-
agenda: "Расписание",
|
|
531
718
|
allDay: "Весь день",
|
|
532
|
-
noEvents: "Нет событий",
|
|
533
719
|
newEvent: "Новое событие",
|
|
534
720
|
moreEvents: "+{{count}} ещё",
|
|
721
|
+
unscheduled: "Без даты ({{count}})",
|
|
722
|
+
loading: "Загрузка календаря…",
|
|
723
|
+
loadError: "Ошибка: {{message}}",
|
|
724
|
+
configRequired: "Требуется настройка календаря. Укажите startDateField — единственный обязательный ключ календаря; заголовок события определяется и без titleField.",
|
|
725
|
+
configRequiredHint: "Он относится к блоку calendar представления. У страницы интерфейса нет собственного слота календаря: укажите в её sourceView представление, которое его объявляет.",
|
|
726
|
+
eventDetails: "Сведения о событии",
|
|
727
|
+
pullToRefresh: "Потяните для обновления",
|
|
728
|
+
refreshing: "Обновление…",
|
|
729
|
+
onDate: "{{date}}",
|
|
730
|
+
eventTitle: "Название",
|
|
731
|
+
eventTitlePlaceholder: "О чём это событие?",
|
|
732
|
+
creating: "Создание…",
|
|
733
|
+
titleRequired: "Укажите название",
|
|
734
|
+
a11y: {
|
|
735
|
+
region: "Календарь",
|
|
736
|
+
grid: "Сетка календаря",
|
|
737
|
+
goToToday: "Перейти к сегодняшнему дню",
|
|
738
|
+
previousPeriod: "Предыдущий период",
|
|
739
|
+
nextPeriod: "Следующий период",
|
|
740
|
+
currentDate: "Текущая дата: {{date}}",
|
|
741
|
+
dayCell: "{{date}}, событий: {{count}}",
|
|
742
|
+
dayCell_one: "{{date}}, {{count}} событие",
|
|
743
|
+
dayCell_few: "{{date}}, {{count}} события",
|
|
744
|
+
dayCell_many: "{{date}}, {{count}} событий",
|
|
745
|
+
dayCell_other: "{{date}}, событий: {{count}}",
|
|
746
|
+
resizeEventEnd: "Изменить окончание события",
|
|
747
|
+
resizeEventEndHint: "Перетащите, чтобы изменить дату окончания",
|
|
748
|
+
resizeStart: "Изменить начало",
|
|
749
|
+
resizeEnd: "Изменить окончание",
|
|
750
|
+
},
|
|
535
751
|
},
|
|
536
752
|
list: {
|
|
537
753
|
firstRunTitle: "Здесь пока пусто",
|
|
@@ -573,8 +789,14 @@ const ru = {
|
|
|
573
789
|
},
|
|
574
790
|
refresh: "Обновить",
|
|
575
791
|
loading: "Загрузка записей…",
|
|
576
|
-
|
|
577
|
-
|
|
792
|
+
// objectui#11445 — a count family: each slot agrees the noun with the
|
|
793
|
+
// number (one 1/21, few 2-4, many 5-20, other a fraction). The base key, a
|
|
794
|
+
// count-invariant form, answers a call made without a count.
|
|
795
|
+
recordCount: "Записей: {{count}}",
|
|
796
|
+
recordCount_one: "{{count}} запись",
|
|
797
|
+
recordCount_few: "{{count}} записи",
|
|
798
|
+
recordCount_many: "{{count}} записей",
|
|
799
|
+
recordCount_other: "{{count}} записи",
|
|
578
800
|
addRecord: "Добавить запись",
|
|
579
801
|
tabs: "Вкладки",
|
|
580
802
|
allRecords: "Все записи",
|
|
@@ -606,7 +828,7 @@ const ru = {
|
|
|
606
828
|
hideFieldsTitle: "Скрыть поля",
|
|
607
829
|
dataLimitReached: "Отображаются первые {{limit}} записей. Возможно, есть ещё данные.",
|
|
608
830
|
viewSettings: "Настройки представления",
|
|
609
|
-
viewSettingsHint: "Группировка, цвет, плотность и отображаемые поля.",
|
|
831
|
+
viewSettingsHint: "Группировка, цвет, плотность и отображаемые поля. Применяется ко всем пользователям этого представления.",
|
|
610
832
|
addGroup: "Добавить поле группировки",
|
|
611
833
|
collapsedByDefault: "Свёрнуто по умолчанию",
|
|
612
834
|
removeGroup: "Удалить",
|
|
@@ -671,6 +893,17 @@ const ru = {
|
|
|
671
893
|
},
|
|
672
894
|
gantt: {
|
|
673
895
|
rowLabel: "Элементы",
|
|
896
|
+
unusableRange: {
|
|
897
|
+
malformedDate: "Непригодный диапазон дат гантта — {{path}} равно {{value}}, что не является корректной датой. Все даты гантта должны разбираться: startDate и endDate каждого элемента строки, а также minDate / maxDate, заданные в схеме.",
|
|
898
|
+
malformedRow: "Непригодные строки гантта — {{path}} равно {{value}}, что не является формой строки. Гантт читает items как список строк, каждую строку — как объект с label и собственными items, а items каждой строки — как список полос; null, число, строка или простой объект в любом из этих мест не могут быть отрисованы.",
|
|
899
|
+
inverted: "Непригодный диапазон дат гантта — minDate {{minDate}} позже maxDate {{maxDate}}. Заданные minDate / maxDate имеют приоритет над диапазоном, вычисленным по строкам, поэтому у этой оси нет столбцов и полосу разместить негде; поменяйте оба значения местами.",
|
|
900
|
+
},
|
|
901
|
+
},
|
|
902
|
+
unsupported: {
|
|
903
|
+
objectBoundGantt: "Неподдерживаемый вариант \"gantt\" — временная шкала, привязанная к объекту, отображает ленточные варианты ({{variants}}). Для гантта нужны литеральные строки, каждая со своим вложенным items, поэтому ось гантта (scale) здесь не действует.",
|
|
904
|
+
},
|
|
905
|
+
unconfigured: {
|
|
906
|
+
noDateAxis: "Требуется ось дат временной шкалы — это представление не объявляет ни одного поля даты, а временная шкала, привязанная к объекту, не придумывает его сама. Объявите одно из: {{fields}}. Первое — написание из спецификации, остальные — устаревшие псевдонимы.",
|
|
674
907
|
},
|
|
675
908
|
},
|
|
676
909
|
gantt: {
|
|
@@ -688,6 +921,7 @@ const ru = {
|
|
|
688
921
|
},
|
|
689
922
|
aria: {
|
|
690
923
|
taskList: "Список задач",
|
|
924
|
+
refreshing: "Обновление…",
|
|
691
925
|
},
|
|
692
926
|
tooltip: {
|
|
693
927
|
days: "дн",
|
|
@@ -733,13 +967,25 @@ const ru = {
|
|
|
733
967
|
conflict: {
|
|
734
968
|
title: "Конфликт расписания",
|
|
735
969
|
body: "Это перемещение противоречит ограничениям зависимостей. Автоматически перепланировать затронутые задачи ({{count}})?",
|
|
970
|
+
body_one: "Это перемещение противоречит ограничениям зависимостей. Автоматически перепланировать затронутые задачи ({{count}})?",
|
|
971
|
+
body_few: "Это перемещение противоречит ограничениям зависимостей. Автоматически перепланировать затронутые задачи ({{count}})?",
|
|
972
|
+
body_many: "Это перемещение противоречит ограничениям зависимостей. Автоматически перепланировать затронутые задачи ({{count}})?",
|
|
973
|
+
body_other: "Это перемещение противоречит ограничениям зависимостей. Автоматически перепланировать затронутые задачи ({{count}})?",
|
|
736
974
|
confirm: "Перепланировать автоматически",
|
|
737
975
|
cancel: "Оставить как есть",
|
|
738
976
|
},
|
|
739
977
|
autoScheduleDlg: {
|
|
740
978
|
title: "Автопланирование",
|
|
741
979
|
body: "Сдвинуть {{count}} задач(и) на более поздний срок, чтобы соблюсти связи зависимостей?",
|
|
980
|
+
body_one: "Сдвинуть {{count}} задачу на более поздний срок, чтобы соблюсти связи зависимостей?",
|
|
981
|
+
body_few: "Сдвинуть {{count}} задачи на более поздний срок, чтобы соблюсти связи зависимостей?",
|
|
982
|
+
body_many: "Сдвинуть {{count}} задач на более поздний срок, чтобы соблюсти связи зависимостей?",
|
|
983
|
+
body_other: "Сдвинуть {{count}} задачи на более поздний срок, чтобы соблюсти связи зависимостей?",
|
|
742
984
|
skipped: "{{count}} заблокированных задач(и) также нарушают связи и были пропущены.",
|
|
985
|
+
skipped_one: "{{count}} заблокированная задача также нарушает связи и была пропущена.",
|
|
986
|
+
skipped_few: "{{count}} заблокированные задачи также нарушают связи и были пропущены.",
|
|
987
|
+
skipped_many: "{{count}} заблокированных задач также нарушают связи и были пропущены.",
|
|
988
|
+
skipped_other: "{{count}} заблокированной задачи также нарушают связи и были пропущены.",
|
|
743
989
|
confirm: "Применить",
|
|
744
990
|
cancel: "Отмена",
|
|
745
991
|
none: "Все зависимости соблюдены — перепланировать нечего.",
|
|
@@ -818,6 +1064,7 @@ const ru = {
|
|
|
818
1064
|
tabActionsFor: "Действия с представлением {{name}}",
|
|
819
1065
|
readonlyAriaLabel: "Представление только для чтения",
|
|
820
1066
|
readonlyTooltip: "Системное представление — определено в коде, только для чтения.",
|
|
1067
|
+
malformedFilter: "Фильтр этого представления некорректен, поэтому записи не отображаются: условие {{subject}} невозможно применить.",
|
|
821
1068
|
},
|
|
822
1069
|
designer: {
|
|
823
1070
|
undo: "Отменить",
|
|
@@ -844,8 +1091,14 @@ const ru = {
|
|
|
844
1091
|
addReaction: "Добавить реакцию",
|
|
845
1092
|
pageHeaderActions: "Действия в заголовке страницы",
|
|
846
1093
|
emojiPicker: "Выбор эмодзи",
|
|
847
|
-
|
|
848
|
-
|
|
1094
|
+
// objectui#11445 — a count family: each slot agrees the noun with the
|
|
1095
|
+
// number (one 1/21, few 2-4, many 5-20, other a fraction). The base key, a
|
|
1096
|
+
// count-invariant form, answers a call made without a count.
|
|
1097
|
+
reactionCount: "{{emoji}} Реакций: {{count}}",
|
|
1098
|
+
reactionCount_one: "{{emoji}} {{count}} реакция",
|
|
1099
|
+
reactionCount_few: "{{emoji}} {{count}} реакции",
|
|
1100
|
+
reactionCount_many: "{{emoji}} {{count}} реакций",
|
|
1101
|
+
reactionCount_other: "{{emoji}} {{count}} реакции",
|
|
849
1102
|
recordDetail: "Сведения о записи",
|
|
850
1103
|
recordDetailWithLabel: "Сведения: {{label}}",
|
|
851
1104
|
openAsFullPage: "Открыть на всю страницу",
|
|
@@ -872,7 +1125,6 @@ const ru = {
|
|
|
872
1125
|
viewAll: "Показать все",
|
|
873
1126
|
new: "Создать",
|
|
874
1127
|
add: "Добавить",
|
|
875
|
-
emptyValue: "—",
|
|
876
1128
|
activity: "Активность",
|
|
877
1129
|
editRow: "Редактировать",
|
|
878
1130
|
deleteRow: "Удалить",
|
|
@@ -884,6 +1136,7 @@ const ru = {
|
|
|
884
1136
|
sortBy: "Сортировать по",
|
|
885
1137
|
filterPlaceholder: "Фильтр…",
|
|
886
1138
|
highlightFields: "Ключевые поля",
|
|
1139
|
+
highlightsLabel: "Ключевые поля записи",
|
|
887
1140
|
comments: "Комментарии",
|
|
888
1141
|
searchComments: "Поиск комментариев…",
|
|
889
1142
|
addCommentPlaceholder: "Добавить комментарий… (Ctrl+Enter для отправки)",
|
|
@@ -894,11 +1147,26 @@ const ru = {
|
|
|
894
1147
|
unpin: "Открепить",
|
|
895
1148
|
justNow: "только что",
|
|
896
1149
|
minutesAgo: "{{count}} мин. назад",
|
|
1150
|
+
minutesAgo_one: "{{count}} мин. назад",
|
|
1151
|
+
minutesAgo_few: "{{count}} мин. назад",
|
|
1152
|
+
minutesAgo_many: "{{count}} мин. назад",
|
|
1153
|
+
minutesAgo_other: "{{count}} мин. назад",
|
|
897
1154
|
hoursAgo: "{{count}} ч. назад",
|
|
1155
|
+
hoursAgo_one: "{{count}} ч. назад",
|
|
1156
|
+
hoursAgo_few: "{{count}} ч. назад",
|
|
1157
|
+
hoursAgo_many: "{{count}} ч. назад",
|
|
1158
|
+
hoursAgo_other: "{{count}} ч. назад",
|
|
898
1159
|
daysAgo: "{{count}} дн. назад",
|
|
1160
|
+
daysAgo_one: "{{count}} дн. назад",
|
|
1161
|
+
daysAgo_few: "{{count}} дн. назад",
|
|
1162
|
+
daysAgo_many: "{{count}} дн. назад",
|
|
1163
|
+
daysAgo_other: "{{count}} дн. назад",
|
|
899
1164
|
dropFilesToUpload: "Перетащите файлы сюда или нажмите для загрузки",
|
|
900
1165
|
attachmentCount: "{{count}} вложение",
|
|
901
|
-
|
|
1166
|
+
attachmentCount_one: "{{count}} вложение",
|
|
1167
|
+
attachmentCount_few: "{{count}} вложения",
|
|
1168
|
+
attachmentCount_many: "{{count}} вложений",
|
|
1169
|
+
attachmentCount_other: "{{count}} вложения",
|
|
902
1170
|
removeAttachment: "Удалить вложение",
|
|
903
1171
|
// Record Attachments panel (enable.files, objectstack#4358)
|
|
904
1172
|
attachments: "Вложения",
|
|
@@ -912,11 +1180,10 @@ const ru = {
|
|
|
912
1180
|
attachmentDownloadDenied: "У вас нет доступа для скачивания этого вложения.",
|
|
913
1181
|
attachmentAuthRequired: "Войдите в систему, чтобы скачать это вложение.",
|
|
914
1182
|
attachmentPermissionDenied: "У вас нет разрешения на это действие.",
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
currentVersion: "Текущая",
|
|
1183
|
+
attachmentsAccessDenied: "У вас нет доступа к этим вложениям.",
|
|
1184
|
+
attachmentsLoadFailed: "Не удалось загрузить вложения этой записи.",
|
|
1185
|
+
attachmentsApiUnavailable: "Список вложений недоступен для этого объекта.",
|
|
1186
|
+
retryLoadAttachments: "Повторить",
|
|
920
1187
|
discussion: "Обсуждение",
|
|
921
1188
|
showDiscussion: "Показать обсуждение ({{count}})",
|
|
922
1189
|
hideDiscussion: "Скрыть обсуждение",
|
|
@@ -931,25 +1198,37 @@ const ru = {
|
|
|
931
1198
|
writeComment: "Написать комментарий…",
|
|
932
1199
|
subscribedTooltip: "Подписаны — нажмите для отписки",
|
|
933
1200
|
unsubscribedTooltip: "Подписаться на уведомления",
|
|
934
|
-
firstRecord: "Первая запись (Home)",
|
|
935
|
-
previousRecordKey: "Предыдущая запись (←)",
|
|
936
|
-
nextRecordKey: "Следующая запись (→)",
|
|
937
|
-
lastRecord: "Последняя запись (End)",
|
|
938
1201
|
noRecords: "Нет записей",
|
|
939
|
-
searchWhileNavigating: "Поиск при навигации",
|
|
940
|
-
searchRecords: "Поиск записей…",
|
|
941
1202
|
allActivity: "Вся активность",
|
|
942
1203
|
commentsOnly: "Только комментарии",
|
|
943
1204
|
fieldChangesFilter: "Изменения полей",
|
|
944
1205
|
tasksOnly: "Только задачи",
|
|
945
1206
|
leaveCommentPlaceholder: "Оставить комментарий… (Ctrl+Enter для отправки)",
|
|
946
1207
|
noActivity: "Нет зарегистрированной активности",
|
|
1208
|
+
activityAccessDenied: "У вас нет разрешения на просмотр активности этой записи.",
|
|
1209
|
+
commentsAccessDenied: "У вас нет разрешения на просмотр комментариев к этой записи.",
|
|
1210
|
+
// objectui#7149 — the rest of `ActivityTimeline`. The four chip labels the
|
|
1211
|
+
// `detail.*` pack did not already name, and the `formatFieldChange`
|
|
1212
|
+
// sentences, which are assembled in code and so need interpolation holes.
|
|
1213
|
+
allFilter: 'Все',
|
|
1214
|
+
createsFilter: 'Создания',
|
|
1215
|
+
deletesFilter: 'Удаления',
|
|
1216
|
+
statusChangesFilter: 'Изменения статуса',
|
|
1217
|
+
activityEmptyValue: '(пусто)',
|
|
1218
|
+
activityFieldChanged: 'Изменено поле {{field}} с «{{old}}» на «{{new}}»',
|
|
1219
|
+
activityCreated: 'Создал эту запись',
|
|
1220
|
+
activityDeleted: 'Удалил эту запись',
|
|
1221
|
+
activityStatusChanged: 'Изменил статус на «{{value}}»',
|
|
1222
|
+
activityUpdated: 'Обновил запись',
|
|
947
1223
|
loadMore: "Загрузить ещё",
|
|
948
1224
|
edited: "(изменено)",
|
|
949
1225
|
via: "через {{source}}",
|
|
950
1226
|
viewSource: "Показать источник",
|
|
951
1227
|
replyCount: "{{count}} ответ",
|
|
952
|
-
|
|
1228
|
+
replyCount_one: "{{count}} ответ",
|
|
1229
|
+
replyCount_few: "{{count}} ответа",
|
|
1230
|
+
replyCount_many: "{{count}} ответов",
|
|
1231
|
+
replyCount_other: "{{count}} ответа",
|
|
953
1232
|
replyPlaceholder: "Ответить…",
|
|
954
1233
|
filterActivity: "Фильтр активности",
|
|
955
1234
|
openDiscussion: "Открыть панель обсуждения",
|
|
@@ -963,6 +1242,9 @@ const ru = {
|
|
|
963
1242
|
writeStrippedTitle: "Сохранено, но часть полей не применена",
|
|
964
1243
|
writeStrippedReadonly: "Поля только для чтения, поэтому не применены: {{fields}}",
|
|
965
1244
|
writeStrippedByState: "Поля недоступны для редактирования в текущем состоянии записи, поэтому не применены: {{fields}}",
|
|
1245
|
+
writeStrippedPrimaryKey: "Идентификатор записи нельзя изменить при сохранении, поэтому поля не применены: {{fields}}",
|
|
1246
|
+
writeStrippedComputed: "Поля вычисляются сервером по формуле, поэтому отправленные значения не применены: {{fields}}",
|
|
1247
|
+
writeStrippedUnknownReason: "Не применены сервером: {{fields}}",
|
|
966
1248
|
approvalPendingEditable: "На согласовании · редактирование доступно",
|
|
967
1249
|
approvalPendingTooltip: "У этой записи есть ожидающий запрос на согласование, но этот шаг всё ещё разрешает редактирование",
|
|
968
1250
|
approvalProgress: "Согласования — {{got}} из {{need}}",
|
|
@@ -975,7 +1257,16 @@ const ru = {
|
|
|
975
1257
|
cancelApprovalTooltipUnlocked: "Отменить ожидающий запрос на согласование",
|
|
976
1258
|
cancelApprovalFailed: "Не удалось отменить согласование",
|
|
977
1259
|
cancelApprovalUnavailable: "Отмена согласований не поддерживается этим источником данных",
|
|
1260
|
+
pathLabel: 'Путь записи',
|
|
1261
|
+
pathStageCompleted: '{{stage}}, завершён',
|
|
1262
|
+
pathStageCurrent: '{{stage}}, текущий этап',
|
|
1263
|
+
pathStageUpcoming: '{{stage}}, предстоит',
|
|
1264
|
+
pathStageLostCurrent: '{{stage}}, проигран, текущий этап',
|
|
1265
|
+
pathStageLostUpcoming: '{{stage}}, проигран, не достигнут',
|
|
1266
|
+
pathStageWonUpcoming: '{{stage}}, целевой этап, не достигнут',
|
|
978
1267
|
linkCopied: "Ссылка скопирована в буфер обмена",
|
|
1268
|
+
commentFailed: "Комментарий не опубликован. Ничего не сохранено — попробуйте ещё раз.",
|
|
1269
|
+
reactionFailed: "Реакция не сохранена. Попробуйте ещё раз.",
|
|
979
1270
|
linkCopyFailed: "Не удалось скопировать ссылку",
|
|
980
1271
|
cancel: "Отмена",
|
|
981
1272
|
cancelEdit: "Отменить изменения",
|
|
@@ -996,99 +1287,70 @@ const ru = {
|
|
|
996
1287
|
deleteRowTitle: "Удалить запись",
|
|
997
1288
|
createdBy: "Создано",
|
|
998
1289
|
updatedBy: "Обновлено",
|
|
999
|
-
// objectui#3863 — base key,
|
|
1000
|
-
//
|
|
1001
|
-
//
|
|
1002
|
-
//
|
|
1003
|
-
//
|
|
1004
|
-
// correct for EVERY Russian count. `_one` keeps the agreeing form for 1/21/31/…
|
|
1290
|
+
// objectui#3863 — base key, answering only a call made without a count: since
|
|
1291
|
+
// objectui#11432 every ru category has its own slot — `_one` 1/21/31…, `_few`
|
|
1292
|
+
// 2-4/22-24… and `_many` 0/5-20… (genitive plural after the substantivised
|
|
1293
|
+
// adjective in both), `_other` fractions (genitive singular). The base keeps the
|
|
1294
|
+
// count-invariant «Существительное: {{count}}» form.
|
|
1005
1295
|
showEmptyRelated: "+ Пустых: {{count}}",
|
|
1006
1296
|
showEmptyRelated_one: "+ {{count}} пустое",
|
|
1007
|
-
|
|
1297
|
+
showEmptyRelated_few: "+ {{count}} пустых",
|
|
1298
|
+
showEmptyRelated_many: "+ {{count}} пустых",
|
|
1299
|
+
showEmptyRelated_other: "+ {{count}} пустого",
|
|
1008
1300
|
copyEmail: "Копировать email",
|
|
1009
1301
|
copyPhone: "Копировать телефон",
|
|
1010
1302
|
copyRecordId: "Копировать ID записи",
|
|
1011
1303
|
showEmptyFields: "Показать {{count}} пустых полей",
|
|
1304
|
+
showEmptyFields_one: "Показать {{count}} пустое поле",
|
|
1305
|
+
showEmptyFields_few: "Показать {{count}} пустых поля",
|
|
1306
|
+
showEmptyFields_many: "Показать {{count}} пустых полей",
|
|
1307
|
+
showEmptyFields_other: "Показать {{count}} пустого поля",
|
|
1012
1308
|
hideEmptyFields: "Скрыть пустые поля",
|
|
1013
1309
|
noValue: "Нет значения",
|
|
1310
|
+
unresolvedReference: "Неразрешённая ссылка: {{value}} не удалось сопоставить с пользователем",
|
|
1311
|
+
unresolvedLookupReference: "Неразрешённая ссылка: {{value}} не удалось сопоставить с записью на этом экране",
|
|
1312
|
+
repeaterItemCount: "Элементов: {{count}}",
|
|
1313
|
+
repeaterItemCount_one: "{{count}} элемент",
|
|
1314
|
+
repeaterItemCount_few: "{{count}} элемента",
|
|
1315
|
+
repeaterItemCount_many: "{{count}} элементов",
|
|
1316
|
+
repeaterItemCount_other: "{{count}} элемента",
|
|
1317
|
+
fileCount: "Файлов: {{count}}",
|
|
1318
|
+
fileCount_one: "{{count}} файл",
|
|
1319
|
+
fileCount_few: "{{count}} файла",
|
|
1320
|
+
fileCount_many: "{{count}} файлов",
|
|
1321
|
+
fileCount_other: "{{count}} файла",
|
|
1014
1322
|
},
|
|
1015
1323
|
chart: {
|
|
1016
|
-
noData: "Нет данных для графика",
|
|
1017
1324
|
loading: "Загрузка графика…",
|
|
1325
|
+
refreshing: "Обновление…",
|
|
1018
1326
|
nullCategory: "(Не указано)",
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
markersCount: "{{count}} маркеров",
|
|
1024
|
-
invalidCoordinates: "{{count}} запись с отсутствующими или недействительными координатами исключена из карты.",
|
|
1025
|
-
invalidCoordinatesPlural: "{{count}} записей с отсутствующими или недействительными координатами исключены из карты.",
|
|
1026
|
-
},
|
|
1027
|
-
workflow: {
|
|
1028
|
-
draft: "Черновик",
|
|
1029
|
-
active: "Активный",
|
|
1030
|
-
paused: "Приостановлен",
|
|
1031
|
-
completed: "Завершён",
|
|
1032
|
-
cancelled: "Отменён",
|
|
1033
|
-
save: "Сохранить",
|
|
1034
|
-
publish: "Опубликовать",
|
|
1035
|
-
addNode: "Добавить узел",
|
|
1036
|
-
workflowFlow: "Рабочий процесс",
|
|
1037
|
-
properties: "Свойства",
|
|
1038
|
-
connections: "Соединения",
|
|
1039
|
-
quickConnect: "Быстрое соединение",
|
|
1040
|
-
fromPlaceholder: "От…",
|
|
1041
|
-
toPlaceholder: "К…",
|
|
1042
|
-
connect: "Соединить",
|
|
1043
|
-
label: "Метка",
|
|
1044
|
-
type: "Тип",
|
|
1045
|
-
description: "Описание",
|
|
1046
|
-
assignee: "Ответственный",
|
|
1047
|
-
assigneeType: "Тип ответственного",
|
|
1048
|
-
user: "Пользователь",
|
|
1049
|
-
role: "Роль",
|
|
1050
|
-
group: "Группа",
|
|
1051
|
-
expression: "Выражение",
|
|
1052
|
-
timeoutMinutes: "Тайм-аут (минуты)",
|
|
1053
|
-
selectNodeToEdit: "Выберите узел для редактирования его свойств",
|
|
1054
|
-
workflowTitle: "Название рабочего процесса",
|
|
1055
|
-
newWorkflow: "Новый рабочий процесс",
|
|
1056
|
-
outConnections: "{{count}} выходов",
|
|
1057
|
-
start: "Начало",
|
|
1058
|
-
end: "Конец",
|
|
1059
|
-
task: "Задача",
|
|
1060
|
-
userTask: "Задача пользователя",
|
|
1061
|
-
serviceTask: "Сервисная задача",
|
|
1062
|
-
scriptTask: "Скриптовая задача",
|
|
1063
|
-
approval: "Одобрение",
|
|
1064
|
-
condition: "Условие",
|
|
1065
|
-
parallelGateway: "Параллельный шлюз",
|
|
1066
|
-
joinGateway: "Шлюз объединения",
|
|
1067
|
-
boundaryEvent: "Граничное событие",
|
|
1068
|
-
delay: "Задержка",
|
|
1069
|
-
notification: "Уведомление",
|
|
1070
|
-
webhook: "Webhook",
|
|
1071
|
-
allowConcurrency: "Разрешить (параллельное выполнение)",
|
|
1072
|
-
forbidConcurrency: "Запретить (пропустить новые)",
|
|
1073
|
-
replaceConcurrency: "Заменить (отменить текущие)",
|
|
1074
|
-
queueConcurrency: "Очередь (выполнить после текущего)",
|
|
1075
|
-
conditionEvent: "Условие",
|
|
1076
|
-
manualEvent: "Ручной",
|
|
1077
|
-
webhookEvent: "Webhook",
|
|
1078
|
-
timerEvent: "Таймер",
|
|
1079
|
-
signalEvent: "Сигнал",
|
|
1080
|
-
versionHistory: "История версий",
|
|
1081
|
-
importBpmn: "Импорт BPMN",
|
|
1082
|
-
exportBpmn: "Экспорт BPMN",
|
|
1083
|
-
undo: "Отменить",
|
|
1084
|
-
redo: "Повторить",
|
|
1085
|
-
resetZoom: "Сбросить масштаб",
|
|
1327
|
+
scatterOneMeasure: "Точечная диаграмма строит только одну меру. Оставьте один ряд:",
|
|
1328
|
+
unconfigured: {
|
|
1329
|
+
noCategoryAxis: "Требуется ось категорий диаграммы — диаграмма, привязанная к объекту, не придумывает её. Объявите одно из:",
|
|
1330
|
+
},
|
|
1086
1331
|
},
|
|
1087
1332
|
dashboard: {
|
|
1088
|
-
|
|
1333
|
+
// objectui#7063 — the DEFAULT empty state every dashboard widget renders
|
|
1334
|
+
// when its query SUCCEEDED and returned nothing. It replaced the terse
|
|
1335
|
+
// per-widget `noRows` / `noDataAvailable` fragments at the render site;
|
|
1336
|
+
// objectui#7125 deleted those two keys from all ten packs once nothing
|
|
1337
|
+
// read them. The copy here has to read as a state rather than a failure,
|
|
1338
|
+
// which is why it says the widget loaded. `sourceLabel` carries its own
|
|
1339
|
+
// punctuation so the call site concatenates no separator (see
|
|
1340
|
+
// `WidgetEmptyState`).
|
|
1341
|
+
empty: {
|
|
1342
|
+
title: "Данных пока нет",
|
|
1343
|
+
message: "Виджет успешно загружен, но запрос пока не вернул ни одной записи.",
|
|
1344
|
+
sourceLabel: "Источник данных:",
|
|
1345
|
+
},
|
|
1089
1346
|
loading: "Загрузка…",
|
|
1347
|
+
refreshing: "Обновление…",
|
|
1348
|
+
refreshAll: "Обновить все",
|
|
1349
|
+
refreshDashboard: "Обновить дашборд",
|
|
1090
1350
|
pickMeasures: "Выберите меры (значения) для этого виджета набора данных.",
|
|
1091
1351
|
datasetUnsupported: "Этот источник данных не поддерживает запросы к наборам данных.",
|
|
1352
|
+
widgetForbiddenTitle: "Нет доступа",
|
|
1353
|
+
widgetForbiddenMessage: "У вас нет прав на просмотр данных этого виджета.",
|
|
1092
1354
|
details: "Подробности",
|
|
1093
1355
|
exportCsv: "Экспорт в CSV",
|
|
1094
1356
|
openInList: "Открыть в списке",
|
|
@@ -1116,13 +1378,110 @@ const ru = {
|
|
|
1116
1378
|
},
|
|
1117
1379
|
},
|
|
1118
1380
|
addWidget: "Добавить виджет",
|
|
1119
|
-
removeWidget: "Удалить виджет",
|
|
1120
1381
|
editLayout: "Редактировать макет",
|
|
1121
1382
|
saveLayout: "Сохранить макет",
|
|
1122
1383
|
resetLayout: "Сбросить макет",
|
|
1123
1384
|
total: "Итого",
|
|
1124
|
-
noDataAvailable: "Данные недоступны",
|
|
1125
1385
|
noDataSourceFor: "Нет источника данных для",
|
|
1386
|
+
config: {
|
|
1387
|
+
breadcrumb: {
|
|
1388
|
+
dashboard: "Дашборд",
|
|
1389
|
+
configuration: "Конфигурация",
|
|
1390
|
+
widget: "Виджет",
|
|
1391
|
+
chart: "Диаграмма",
|
|
1392
|
+
table: "Таблица",
|
|
1393
|
+
pivotTable: "Сводная таблица",
|
|
1394
|
+
},
|
|
1395
|
+
section: {
|
|
1396
|
+
general: "Основные",
|
|
1397
|
+
layout: "Макет",
|
|
1398
|
+
data: "Данные",
|
|
1399
|
+
dataBinding: "Привязка данных",
|
|
1400
|
+
appearance: "Внешний вид",
|
|
1401
|
+
},
|
|
1402
|
+
field: {
|
|
1403
|
+
title: "Заголовок",
|
|
1404
|
+
description: "Описание",
|
|
1405
|
+
columns: "Столбцы",
|
|
1406
|
+
gap: "Отступ",
|
|
1407
|
+
rowHeight: "Высота строки (px)",
|
|
1408
|
+
autoRefresh: "Автообновление",
|
|
1409
|
+
showDescription: "Показать описание",
|
|
1410
|
+
theme: "Тема",
|
|
1411
|
+
widgetType: "Тип виджета",
|
|
1412
|
+
colorVariant: "Вариант цвета",
|
|
1413
|
+
dataset: "Набор данных",
|
|
1414
|
+
dimensions: "Измерения",
|
|
1415
|
+
values: "Значения",
|
|
1416
|
+
width: "Ширина (столбцы)",
|
|
1417
|
+
height: "Высота (строки)",
|
|
1418
|
+
},
|
|
1419
|
+
placeholder: {
|
|
1420
|
+
dashboardTitle: "Заголовок дашборда",
|
|
1421
|
+
dashboardDescription: "Краткое описание под заголовком",
|
|
1422
|
+
widgetTitle: "Заголовок виджета",
|
|
1423
|
+
widgetDescription: "Описание виджета",
|
|
1424
|
+
datasetName: "Имя набора данных",
|
|
1425
|
+
selectDataset: "Выберите набор данных…",
|
|
1426
|
+
searchDatasets: "Поиск наборов данных…",
|
|
1427
|
+
addDimension: "Добавить измерение…",
|
|
1428
|
+
addMeasure: "Добавить меру…",
|
|
1429
|
+
searchMembers: "Поиск…",
|
|
1430
|
+
},
|
|
1431
|
+
empty: {
|
|
1432
|
+
datasets: "Наборы данных не найдены.",
|
|
1433
|
+
dimensions: "Измерения не выбраны.",
|
|
1434
|
+
measures: "Меры не выбраны.",
|
|
1435
|
+
nothingToAdd: "Больше нечего добавить.",
|
|
1436
|
+
},
|
|
1437
|
+
help: {
|
|
1438
|
+
dataset: "Набор данных семантического слоя, к которому привязан этот виджет (ADR-0021).",
|
|
1439
|
+
dimensions: "Группировать/разделять значения по этим измерениям набора данных.",
|
|
1440
|
+
dimensionsPivot: "Поля группировки/разделения. Последнее измерение разворачивается по столбцам.",
|
|
1441
|
+
values: "Меры из набора данных для отображения (хотя бы одна).",
|
|
1442
|
+
},
|
|
1443
|
+
action: {
|
|
1444
|
+
add: "Добавить",
|
|
1445
|
+
remove: "Удалить {{name}}",
|
|
1446
|
+
},
|
|
1447
|
+
refresh: {
|
|
1448
|
+
off: "Выкл.",
|
|
1449
|
+
every30s: "Каждые 30 с",
|
|
1450
|
+
every1m: "Каждую 1 мин",
|
|
1451
|
+
every5m: "Каждые 5 мин",
|
|
1452
|
+
every15m: "Каждые 15 мин",
|
|
1453
|
+
every30m: "Каждые 30 мин",
|
|
1454
|
+
every1h: "Каждый 1 час",
|
|
1455
|
+
},
|
|
1456
|
+
themeOption: {
|
|
1457
|
+
light: "Светлая",
|
|
1458
|
+
dark: "Тёмная",
|
|
1459
|
+
auto: "Авто",
|
|
1460
|
+
},
|
|
1461
|
+
widgetType: {
|
|
1462
|
+
metric: "Метрика",
|
|
1463
|
+
bar: "Столбчатая диаграмма",
|
|
1464
|
+
horizontalBar: "Горизонтальная гистограмма",
|
|
1465
|
+
line: "Линейная диаграмма",
|
|
1466
|
+
pie: "Круговая диаграмма",
|
|
1467
|
+
donut: "Кольцевая диаграмма",
|
|
1468
|
+
area: "Диаграмма с областями",
|
|
1469
|
+
scatter: "Точечная диаграмма",
|
|
1470
|
+
funnel: "Воронка",
|
|
1471
|
+
table: "Таблица",
|
|
1472
|
+
pivot: "Сводная таблица",
|
|
1473
|
+
},
|
|
1474
|
+
color: {
|
|
1475
|
+
default: "По умолчанию",
|
|
1476
|
+
blue: "Синий",
|
|
1477
|
+
teal: "Бирюзовый",
|
|
1478
|
+
orange: "Оранжевый",
|
|
1479
|
+
purple: "Фиолетовый",
|
|
1480
|
+
success: "Успех",
|
|
1481
|
+
warning: "Предупреждение",
|
|
1482
|
+
danger: "Опасность",
|
|
1483
|
+
},
|
|
1484
|
+
},
|
|
1126
1485
|
trend: {
|
|
1127
1486
|
vsLastQuarter: "пред. квартал",
|
|
1128
1487
|
vsLastMonth: "пред. месяц",
|
|
@@ -1132,24 +1491,6 @@ const ru = {
|
|
|
1132
1491
|
vsPreviousPeriod: "пред. период",
|
|
1133
1492
|
},
|
|
1134
1493
|
},
|
|
1135
|
-
configPanel: {
|
|
1136
|
-
save: "Сохранить",
|
|
1137
|
-
discard: "Отменить",
|
|
1138
|
-
close: "Закрыть",
|
|
1139
|
-
layout: "Макет",
|
|
1140
|
-
columns: "Столбцы",
|
|
1141
|
-
gap: "Отступ",
|
|
1142
|
-
rowHeight: "Высота строки",
|
|
1143
|
-
data: "Данные",
|
|
1144
|
-
refreshInterval: "Интервал обновления",
|
|
1145
|
-
appearance: "Внешний вид",
|
|
1146
|
-
title: "Заголовок",
|
|
1147
|
-
showDescription: "Показать описание",
|
|
1148
|
-
theme: "Тема",
|
|
1149
|
-
configuration: "Конфигурация",
|
|
1150
|
-
general: "Основные",
|
|
1151
|
-
advanced: "Дополнительно",
|
|
1152
|
-
},
|
|
1153
1494
|
appDesigner: {
|
|
1154
1495
|
createApp: "Создать приложение",
|
|
1155
1496
|
editApp: "Редактировать приложение",
|
|
@@ -1162,10 +1503,6 @@ const ru = {
|
|
|
1162
1503
|
appDescription: "Описание",
|
|
1163
1504
|
appIcon: "Значок",
|
|
1164
1505
|
template: "Шаблон",
|
|
1165
|
-
layout: "Макет",
|
|
1166
|
-
layoutSidebar: "Боковая панель",
|
|
1167
|
-
layoutHeader: "Заголовок",
|
|
1168
|
-
layoutEmpty: "Пусто",
|
|
1169
1506
|
selectObjects: "Выбрать объекты",
|
|
1170
1507
|
searchObjects: "Поиск объектов…",
|
|
1171
1508
|
selectAll: "Выбрать все",
|
|
@@ -1174,7 +1511,6 @@ const ru = {
|
|
|
1174
1511
|
addGroup: "Добавить группу",
|
|
1175
1512
|
addUrl: "Добавить URL",
|
|
1176
1513
|
addSeparator: "Добавить разделитель",
|
|
1177
|
-
noNavItems: "Элементов навигации пока нет.",
|
|
1178
1514
|
logoUrl: "Logo URL",
|
|
1179
1515
|
primaryColor: "Основной цвет",
|
|
1180
1516
|
faviconUrl: "Favicon URL",
|
|
@@ -1200,16 +1536,13 @@ const ru = {
|
|
|
1200
1536
|
showSort: "Показать сортировку",
|
|
1201
1537
|
appearance: "Внешний вид",
|
|
1202
1538
|
rowHeight: "Высота строки",
|
|
1203
|
-
stripedRows: "Чередующиеся строки",
|
|
1204
|
-
bordered: "С рамкой",
|
|
1205
1539
|
livePreview: "Предпросмотр в реальном времени",
|
|
1206
|
-
stepBasicDesc: "Имя, заголовок и
|
|
1540
|
+
stepBasicDesc: "Имя, заголовок и значок",
|
|
1207
1541
|
stepObjectsDesc: "Выбрать бизнес-объекты",
|
|
1208
1542
|
stepNavigationDesc: "Построить дерево навигации",
|
|
1209
1543
|
stepBrandingDesc: "Логотип, цвета и фавикон",
|
|
1210
1544
|
noObjectsFound: "Объекты не найдены.",
|
|
1211
1545
|
noNavItemsHint: "Элементов навигации пока нет. Выберите объекты на предыдущем шаге или добавьте вручную.",
|
|
1212
|
-
separator: "Разделитель",
|
|
1213
1546
|
separatorLabel: "— Разделитель —",
|
|
1214
1547
|
newGroup: "Новая группа",
|
|
1215
1548
|
newLink: "Новая ссылка",
|
|
@@ -1243,6 +1576,7 @@ const ru = {
|
|
|
1243
1576
|
navTypeSeparator: "Разделитель",
|
|
1244
1577
|
navTypeAction: "Действие",
|
|
1245
1578
|
navTypeComponent: "Компонент",
|
|
1579
|
+
navTypeDoc: "Документ",
|
|
1246
1580
|
navEditIcon: "Редактировать значок",
|
|
1247
1581
|
navToggleVisible: "Переключить видимость",
|
|
1248
1582
|
navHidden: "Скрыто",
|
|
@@ -1315,17 +1649,13 @@ const ru = {
|
|
|
1315
1649
|
unique: "Уникальное",
|
|
1316
1650
|
readOnly: "Только чтение",
|
|
1317
1651
|
hidden: "Скрытое",
|
|
1318
|
-
indexed: "Индексированное",
|
|
1319
1652
|
externalId: "Внешний ID",
|
|
1320
1653
|
trackHistory: "Отслеживать историю",
|
|
1321
1654
|
defaultValue: "Значение по умолчанию",
|
|
1322
1655
|
placeholder: "Заполнитель",
|
|
1323
1656
|
referenceTo: "Ссылка на",
|
|
1324
|
-
formula: "Формула",
|
|
1325
1657
|
options: "Параметры",
|
|
1326
1658
|
addOption: "Добавить параметр",
|
|
1327
|
-
validationRules: "Правила валидации",
|
|
1328
|
-
addRule: "Добавить правило",
|
|
1329
1659
|
systemBadge: "Система",
|
|
1330
1660
|
ungrouped: "Общее",
|
|
1331
1661
|
deleteConfirmTitle: "Удалить поле?",
|
|
@@ -1344,7 +1674,25 @@ const ru = {
|
|
|
1344
1674
|
},
|
|
1345
1675
|
},
|
|
1346
1676
|
console: {
|
|
1677
|
+
studio: {
|
|
1678
|
+
backToHome: "На главную",
|
|
1679
|
+
},
|
|
1347
1680
|
saveAdvisoryTitle: "Сохранено — проверка авторинга выдала рекомендаций: {{count}}",
|
|
1681
|
+
saveAdvisoryTitle_one: "Сохранено — проверка авторинга выдала рекомендаций: {{count}}",
|
|
1682
|
+
saveAdvisoryTitle_few: "Сохранено — проверка авторинга выдала рекомендаций: {{count}}",
|
|
1683
|
+
saveAdvisoryTitle_many: "Сохранено — проверка авторинга выдала рекомендаций: {{count}}",
|
|
1684
|
+
saveAdvisoryTitle_other: "Сохранено — проверка авторинга выдала рекомендаций: {{count}}",
|
|
1685
|
+
publishAdvisoryTitle: "Опубликовано — проверка авторинга выдала рекомендаций: {{count}}",
|
|
1686
|
+
publishAdvisoryTitle_one: "Опубликовано — проверка авторинга выдала рекомендаций: {{count}}",
|
|
1687
|
+
publishAdvisoryTitle_few: "Опубликовано — проверка авторинга выдала рекомендаций: {{count}}",
|
|
1688
|
+
publishAdvisoryTitle_many: "Опубликовано — проверка авторинга выдала рекомендаций: {{count}}",
|
|
1689
|
+
publishAdvisoryTitle_other: "Опубликовано — проверка авторинга выдала рекомендаций: {{count}}",
|
|
1690
|
+
importMappingsUnavailable: "Не удалось загрузить сохранённые сопоставления импорта для {{object}}",
|
|
1691
|
+
importMappingsRefused: "Сервер отклонил этот запрос, поэтому список пуст из-за того, что его не удалось прочитать, а не потому, что ничего не зарегистрировано. Войдите заново или запросите доступ у администратора.",
|
|
1692
|
+
importMappingsUnreadable: "Список пуст из-за того, что его не удалось прочитать, а не потому, что ничего не зарегистрировано. Повторите попытку и сообщите о проблеме, если она повторяется.",
|
|
1693
|
+
savedViewsUnavailable: "Не удалось загрузить сохранённые представления для {{object}}",
|
|
1694
|
+
savedViewsRefused: "Сервер отклонил этот запрос, поэтому список пуст из-за того, что его не удалось прочитать, а не потому, что у этого объекта нет сохранённых представлений. Войдите заново или запросите доступ у администратора.",
|
|
1695
|
+
savedViewsUnreadable: "Список пуст из-за того, что его не удалось прочитать, а не потому, что у этого объекта нет сохранённых представлений. Повторите попытку и сообщите о проблеме, если она повторяется.",
|
|
1348
1696
|
settingsHub: {
|
|
1349
1697
|
title: "Настройки",
|
|
1350
1698
|
subtitle: "Настройте рабочее пространство, интеграции и флаги функций.",
|
|
@@ -1389,6 +1737,15 @@ const ru = {
|
|
|
1389
1737
|
passwordsDownload: "Скачать CSV",
|
|
1390
1738
|
},
|
|
1391
1739
|
ai: {
|
|
1740
|
+
pendingDrafts: {
|
|
1741
|
+
// Число вынесено в конец («…: {{count}}») — так этот пак пишет
|
|
1742
|
+
// количества, как в home.pendingDrafts.publishedVerified.
|
|
1743
|
+
count: "Ещё не опубликовано изменений: {{count}} — пользователи их не видят.",
|
|
1744
|
+
publish: "Опубликовать",
|
|
1745
|
+
published: "Все ожидающие изменения вступили в силу.",
|
|
1746
|
+
failed: "Не удалось опубликовать.",
|
|
1747
|
+
publishedWithFindings: "Опубликовано, но проверки среды выполнения выявили проблемы: {{detail}}",
|
|
1748
|
+
},
|
|
1392
1749
|
usage: {
|
|
1393
1750
|
title: "Использование ИИ",
|
|
1394
1751
|
meterBuild: "Сборка",
|
|
@@ -1398,9 +1755,20 @@ const ru = {
|
|
|
1398
1755
|
statusFull: "Лимит исчерпан",
|
|
1399
1756
|
resetsDaily: "Сбросится сегодня ночью",
|
|
1400
1757
|
resetsMonthly: "Сбросится в следующем цикле",
|
|
1758
|
+
resetsWeeklyDays: "Сброс через {{count}} дней",
|
|
1759
|
+
resetsWeeklyDays_one: "Сброс через {{count}} день",
|
|
1760
|
+
resetsWeeklyDays_few: "Сброс через {{count}} дня",
|
|
1761
|
+
resetsWeeklyDays_many: "Сброс через {{count}} дней",
|
|
1762
|
+
resetsWeeklyDays_other: "Сброс через {{count}} дня",
|
|
1763
|
+
resetsWeeklyHours: "Сброс через {{count}} часов",
|
|
1764
|
+
resetsWeeklyHours_one: "Сброс через {{count}} час",
|
|
1765
|
+
resetsWeeklyHours_few: "Сброс через {{count}} часа",
|
|
1766
|
+
resetsWeeklyHours_many: "Сброс через {{count}} часов",
|
|
1767
|
+
resetsWeeklyHours_other: "Сброс через {{count}} часа",
|
|
1401
1768
|
ctaUpgrade: "Повысьте тариф, чтобы продолжить",
|
|
1402
1769
|
ctaTopUp: "Добавьте кредиты, чтобы продолжить",
|
|
1403
1770
|
ariaLabel: "Использование ИИ: {{status}}",
|
|
1771
|
+
breakdownTitle: "Использовано на данный момент",
|
|
1404
1772
|
},
|
|
1405
1773
|
workspaceTitle: "Рабочее пространство ИИ",
|
|
1406
1774
|
workspaceSubtitle: "Задавайте вопросы, изучайте и возвращайтесь к диалогам",
|
|
@@ -1410,6 +1778,31 @@ const ru = {
|
|
|
1410
1778
|
share: "Поделиться",
|
|
1411
1779
|
shareTitle: "Поделиться этим диалогом",
|
|
1412
1780
|
shareDisabledTitle: "Начните диалог, чтобы включить публикацию",
|
|
1781
|
+
buildDoctor: "Диагностика сборки",
|
|
1782
|
+
buildDoctorTitle: "Диагностика сборки — что на самом деле применено?",
|
|
1783
|
+
buildDoctorDisabledTitle: "Сначала отправьте сообщение",
|
|
1784
|
+
buildDoctorDrawer: {
|
|
1785
|
+
description: 'Что заявил агент и что на самом деле действует. Диагностика только для чтения.',
|
|
1786
|
+
reconciling: 'Сверка…',
|
|
1787
|
+
notAvailable: 'Недоступно — беседа не найдена или у вас нет доступа.',
|
|
1788
|
+
untitled: '(без названия)',
|
|
1789
|
+
summary: 'Ходов: {{turns}} · сообщений: {{messages}} · токенов: {{tokens}} · LLM: {{seconds}} с',
|
|
1790
|
+
allLive: 'Все попытки изменений ({{count}}) действуют — ничего не потерялось.',
|
|
1791
|
+
discrepancies: 'Расхождений: {{count}} — сказанное в чате не совпадает с тем, что действует.',
|
|
1792
|
+
orphanedTitle: 'Предложено, но не применено',
|
|
1793
|
+
orphanedHint: 'Карточку подтверждения, предложенную агентом, не применил ни один последующий ход — изменение незаметно потерялось.',
|
|
1794
|
+
missingTitle: 'Заявлено, но отсутствует',
|
|
1795
|
+
missingHint: 'Результат инструмента сообщил, что изменение применено, но артефакт не действует в sys_metadata.',
|
|
1796
|
+
toolErrorsTitle: 'Ошибки инструментов',
|
|
1797
|
+
toolErrorsHint: 'Вызовы инструментов, вернувшие ошибку во время сборки.',
|
|
1798
|
+
verifyTitle: 'Проверка сборки (verify_build)',
|
|
1799
|
+
yourApp: 'Ваше приложение:',
|
|
1800
|
+
noIssues: 'Проблем: 0',
|
|
1801
|
+
issueCount: 'Проблем: {{count}}',
|
|
1802
|
+
platformNoise: 'Скрыто находок платформы sys_*: {{count}}',
|
|
1803
|
+
pendingActions: 'Ожидающие действия',
|
|
1804
|
+
timeline: 'Хронология ({{count}})',
|
|
1805
|
+
},
|
|
1413
1806
|
newChat: "Создать",
|
|
1414
1807
|
searchChats: "Поиск по чатам…",
|
|
1415
1808
|
noChatsYet: "Чатов пока нет",
|
|
@@ -1439,7 +1832,7 @@ const ru = {
|
|
|
1439
1832
|
empty: {
|
|
1440
1833
|
build: {
|
|
1441
1834
|
title: "Создать с помощью ИИ",
|
|
1442
|
-
description: "Опишите приложение
|
|
1835
|
+
description: "Опишите приложение обычными словами — я подготовлю объекты, экраны и демонстрационные данные, а вы проверите и опубликуете.",
|
|
1443
1836
|
},
|
|
1444
1837
|
ask: {
|
|
1445
1838
|
title: "Спросите свои данные",
|
|
@@ -1448,7 +1841,7 @@ const ru = {
|
|
|
1448
1841
|
editApp: {
|
|
1449
1842
|
title: "Редактирование «{{app}}»",
|
|
1450
1843
|
titleGeneric: "Редактировать это приложение",
|
|
1451
|
-
description: "Что нужно изменить? Я изменю это приложение на месте — добавлю поле, объект, представление или
|
|
1844
|
+
description: "Что нужно изменить? Я изменю это приложение на месте — добавлю поле, объект, представление или дашборд либо скорректирую существующее.",
|
|
1452
1845
|
},
|
|
1453
1846
|
},
|
|
1454
1847
|
clearConversation: "Очистить",
|
|
@@ -1501,29 +1894,52 @@ const ru = {
|
|
|
1501
1894
|
recentRecords: "Перечисли 5 последних созданных записей.",
|
|
1502
1895
|
recordCounts: "Посчитай количество записей по каждому объекту.",
|
|
1503
1896
|
},
|
|
1897
|
+
// cloud#1984 — these five chips are the maker's own recommendations, so
|
|
1898
|
+
// they may only ask for what ADR-0112 v1 BUILDS: objects, fields, views
|
|
1899
|
+
// (grid/kanban/calendar/gallery), pages, dashboards and sample data. No
|
|
1900
|
+
// wording that promises autonomous behaviour (alert / remind / notify /
|
|
1901
|
+
// automate / status workflow) — v1 has no flows, actions or schedules, and
|
|
1902
|
+
// the model silently degrades such a request into a board or a filtered
|
|
1903
|
+
// view, so the chip would promise an alert and deliver a page. REVERT to
|
|
1904
|
+
// the automation wording when ADR-0112 v2 re-adds flows and actions.
|
|
1504
1905
|
metadataAssistant: {
|
|
1505
|
-
buildCrm: "Создай CRM для продаж — клиенты, контакты и
|
|
1506
|
-
buildApp: "Создай трекер проектов — проекты, задачи с ответственными и сроками, доска по
|
|
1507
|
-
buildFlow: "Спроектируй службу поддержки — заявки с
|
|
1508
|
-
buildInventory: "Создай приложение для склада — товары, остатки, поставщики и
|
|
1509
|
-
buildRecruiting: "Создай трекер кандидатов — кандидаты, открытые вакансии,
|
|
1906
|
+
buildCrm: "Создай CRM для продаж — клиенты, контакты и сделки с полем этапа, а также дашборд с суммой сделок по этапам.",
|
|
1907
|
+
buildApp: "Создай трекер проектов — проекты, задачи с ответственными и сроками, доска по статусам и календарь сроков.",
|
|
1908
|
+
buildFlow: "Спроектируй службу поддержки — заявки с полями приоритета и статуса, доска по статусам и связи с клиентами.",
|
|
1909
|
+
buildInventory: "Создай приложение для склада — товары, остатки, поставщики и представление, отбирающее товары ниже точки заказа.",
|
|
1910
|
+
buildRecruiting: "Создай трекер кандидатов — кандидаты, открытые вакансии, поле этапа собеседования и доска по этапам.",
|
|
1510
1911
|
},
|
|
1511
1912
|
generic: {
|
|
1512
1913
|
help: "Чем ты можешь мне помочь?",
|
|
1513
1914
|
availableObjects: "Перечисли доступные объекты данных.",
|
|
1514
1915
|
recentActivity: "Сделай сводку моей недавней активности.",
|
|
1515
1916
|
},
|
|
1917
|
+
// objectui#7709 — the edit-mode starters, shown when the maker is bound
|
|
1918
|
+
// to an EXISTING app (`?package=`). Same rule as the five above: they
|
|
1919
|
+
// may only ask for what ADR-0112 v1 BUILDS. The fourth chip used to be
|
|
1920
|
+
// `addAutomation` ("an approval, a status flow, or a notification") and
|
|
1921
|
+
// every capability it named is refused by v1 (cloud#1956 / PR #1970), so
|
|
1922
|
+
// it now asks for sample data — `seed` IS on v1's whitelist, and having
|
|
1923
|
+
// no data is what an existing app most often lacks. REVERT: when
|
|
1924
|
+
// ADR-0112 v2 re-adds flows and actions, THIS chip's automation wording
|
|
1925
|
+
// comes back as `addAutomation`; the retired string is pinned for every
|
|
1926
|
+
// pack in `packages/i18n/src/__tests__/makerEditChips-v1-scope-7709.test.ts`.
|
|
1516
1927
|
editApp: {
|
|
1517
1928
|
addField: "Добавь поле в один из объектов.",
|
|
1518
1929
|
addObject: "Добавь новый объект и свяжи его с существующим.",
|
|
1519
1930
|
addDashboard: "Добавь дашборд с ключевыми показателями.",
|
|
1520
|
-
|
|
1931
|
+
addSampleData: "Заполни существующие объекты правдоподобными демонстрационными записями, чтобы приложение можно было показать.",
|
|
1521
1932
|
},
|
|
1522
1933
|
},
|
|
1523
1934
|
changesTitle: "Подтвердите изменения",
|
|
1524
1935
|
changesConfirmed: "Подтверждено",
|
|
1525
1936
|
changesConfirm: "Подтвердить",
|
|
1526
1937
|
changesConfirmHint: "Ответьте, чтобы подтвердить или скорректировать это изменение.",
|
|
1938
|
+
changesApplying: "Применение…",
|
|
1939
|
+
changesApplied: "Применено",
|
|
1940
|
+
changesDrafted: "Сохранено как черновик",
|
|
1941
|
+
changesFailed: "Не применено",
|
|
1942
|
+
discussing: "Обсуждается: {{target}}",
|
|
1527
1943
|
changeVerb: {
|
|
1528
1944
|
createObject: "Создать объект",
|
|
1529
1945
|
addField: "Добавить поле",
|
|
@@ -1594,6 +2010,13 @@ const ru = {
|
|
|
1594
2010
|
pages: "Страницы",
|
|
1595
2011
|
reports: "Отчёты",
|
|
1596
2012
|
system: "Система",
|
|
2013
|
+
marketplace: "Маркетплейс",
|
|
2014
|
+
settings: 'Настройки',
|
|
2015
|
+
apps: 'Приложения',
|
|
2016
|
+
profile: 'Профиль',
|
|
2017
|
+
approvals: 'Согласования',
|
|
2018
|
+
aiApprovals: 'Согласования ИИ',
|
|
2019
|
+
auditLog: 'Журнал аудита',
|
|
1597
2020
|
},
|
|
1598
2021
|
// objectui#4024 — the single-namespace settings screen. Its sibling
|
|
1599
2022
|
// `settingsHub` above already resolved through this pack; the view was the
|
|
@@ -1613,7 +2036,9 @@ const ru = {
|
|
|
1613
2036
|
saveChanges: "Сохранить изменения",
|
|
1614
2037
|
unsavedCount: "Несохранённых изменений: {{count}}",
|
|
1615
2038
|
unsavedCount_one: "{{count}} несохранённое изменение",
|
|
1616
|
-
|
|
2039
|
+
unsavedCount_few: "{{count}} несохранённых изменения",
|
|
2040
|
+
unsavedCount_many: "{{count}} несохранённых изменений",
|
|
2041
|
+
unsavedCount_other: "{{count}} несохранённого изменения",
|
|
1617
2042
|
cryptoRefusalTitle: "Эта установка не может шифровать секреты",
|
|
1618
2043
|
cryptoRefusalSubjectSuffix: "объявлен зашифрованным, поэтому ничего не было записано.",
|
|
1619
2044
|
cryptoRefusalNoSubject: "Значение, объявленное зашифрованным, было отклонено, поэтому ничего не было записано.",
|
|
@@ -1685,6 +2110,21 @@ const ru = {
|
|
|
1685
2110
|
records: "Записи",
|
|
1686
2111
|
recentRecords: "Недавно просмотренные",
|
|
1687
2112
|
},
|
|
2113
|
+
// objectui#9954 — see the `en` pack for what raises each case.
|
|
2114
|
+
readRate: {
|
|
2115
|
+
ratioTitle: 'Необычный объём чтения в этой среде',
|
|
2116
|
+
ratio: 'На каждую записанную строку читается {{ratio}} строк. Платформа отмечает всё, что выше {{threshold}}. Ничто не ограничивается и не блокируется; это отчёт, чтобы можно было проверить схему чтения.',
|
|
2117
|
+
noWritesTitle: 'Чтение вообще без записи в этой среде',
|
|
2118
|
+
noWrites: 'Строки читаются, но не записывается ни одной, поэтому у скорости чтения нет верхней границы. Это самый серьёзный показатель. Платформа отмечает всё, что выше {{threshold}}. Ничто не ограничивается и не блокируется; это отчёт, чтобы можно было проверить схему чтения.',
|
|
2119
|
+
},
|
|
2120
|
+
// objectui#10439 — see the `en` pack for what raises each case.
|
|
2121
|
+
storageUsage: {
|
|
2122
|
+
warningTitle: 'Хранилище почти заполнено',
|
|
2123
|
+
warning: 'Использовано {{used}} МБ из {{limit}} МБ. Когда хранилище заполнится, загрузка файлов и импорт будут приостановлены.',
|
|
2124
|
+
blockedTitle: 'Хранилище заполнено: загрузка файлов и импорт приостановлены',
|
|
2125
|
+
blocked: 'Использовано {{used}} МБ из {{limit}} МБ. Существующие данные не затронуты; чтение, экспорт и редактирование отдельных записей по-прежнему работают.',
|
|
2126
|
+
upgrade: 'Повысьте тариф, чтобы продолжить',
|
|
2127
|
+
},
|
|
1688
2128
|
errors: {
|
|
1689
2129
|
somethingWentWrong: "Что-то пошло не так",
|
|
1690
2130
|
unexpectedError: "При отображении этого представления произошла непредвиденная ошибка.",
|
|
@@ -1715,6 +2155,7 @@ const ru = {
|
|
|
1715
2155
|
viewNameInvalid: "Используйте строчные латинские буквы, цифры и подчёркивания; начните с буквы или подчёркивания.",
|
|
1716
2156
|
systemViewReadonly: "Системное представление определено в коде — только для чтения.",
|
|
1717
2157
|
cannotEditMetaView: "Это встроенное представление, определённое в коде, — изменить его нельзя.",
|
|
2158
|
+
viewConfigPermissionDenied: "Настройки представления применяются ко всем пользователям этого представления, поэтому их изменение требует разрешения «Управление метаданными». Обратитесь к администратору, чтобы внести это изменение.",
|
|
1718
2159
|
cannotDeleteMetaView: "Это встроенное представление, определённое в коде, — удалить его нельзя.",
|
|
1719
2160
|
expandToPage: "Открыть на всю страницу",
|
|
1720
2161
|
objectNotFound: "Объект не найден",
|
|
@@ -1723,101 +2164,40 @@ const ru = {
|
|
|
1723
2164
|
filterOrNotSavable: "Этот фильтр объединяет условия через ИЛИ, что сохранённое представление пока не может хранить. Он по-прежнему применяется к этому списку — уберите группировку ИЛИ, чтобы сохранить его в представлении.",
|
|
1724
2165
|
filterNestedNotSavable: "Этот фильтр использует вложенные группы условий, которые сохранённое представление не может хранить. Преобразуйте его в один список условий, чтобы сохранить в представлении.",
|
|
1725
2166
|
allRecords: "Все записи",
|
|
1726
|
-
exitDesignMode: "Выйти из режима дизайна",
|
|
1727
|
-
enterDesignMode: "Войти в режим дизайна",
|
|
1728
|
-
metadataInspector: "Инспектор метаданных",
|
|
1729
|
-
editView: "Редактировать представление",
|
|
1730
|
-
addView: "Добавить представление",
|
|
1731
|
-
designTools: "Инструменты дизайна",
|
|
1732
2167
|
new: "Создать",
|
|
1733
2168
|
configureView: "Настроить представление",
|
|
1734
|
-
closePanel: "Закрыть панель",
|
|
1735
|
-
page: "Страница",
|
|
1736
|
-
pageConfigHint: "Панель инструментов, навигация и настройки оболочки представления",
|
|
1737
|
-
listConfigHint: "Отрисовка данных, столбцы и внешний вид для этого типа списка",
|
|
1738
|
-
general: "Общие",
|
|
1739
|
-
generalHint: "Название, описание и тип представления",
|
|
1740
|
-
toolbar: "Панель инструментов",
|
|
1741
|
-
toolbarHint: "Поиск, фильтр, сортировка, группировка и переключение плотности",
|
|
1742
2169
|
toolbarEnabledCount: "{{count}} из {{total}} включено",
|
|
1743
|
-
navigationSection: "Навигация",
|
|
1744
|
-
navigationHint: "Поведение при нажатии на строку и настройки детального представления",
|
|
1745
|
-
records: "Записи",
|
|
1746
|
-
recordsHint: "Режим выбора, добавление записи и встроенное редактирование",
|
|
1747
|
-
exportPrint: "Экспорт и печать",
|
|
1748
|
-
exportPrintHint: "Форматы экспорта, печать и отображение количества записей",
|
|
1749
|
-
showAllFields: "Показать все",
|
|
1750
|
-
hideAllFields: "Скрыть все",
|
|
1751
2170
|
searchFields: "Поиск полей…",
|
|
1752
2171
|
title: "Заголовок",
|
|
1753
|
-
description: "Описание",
|
|
1754
|
-
data: "Данные",
|
|
1755
|
-
source: "Источник",
|
|
1756
|
-
columns: "Столбцы",
|
|
1757
|
-
filterBy: "Фильтр по",
|
|
1758
|
-
sortBy: "Сортировка по",
|
|
1759
|
-
appearance: "Внешний вид",
|
|
1760
|
-
showDescription: "Показать описание",
|
|
1761
2172
|
viewType: "Тип представления",
|
|
1762
|
-
|
|
1763
|
-
|
|
1764
|
-
|
|
1765
|
-
|
|
1766
|
-
|
|
1767
|
-
|
|
1768
|
-
|
|
1769
|
-
|
|
1770
|
-
userActions: "Действия пользователя",
|
|
1771
|
-
addRecordViaForm: "Добавить записи через форму",
|
|
1772
|
-
advanced: "Расширенные",
|
|
1773
|
-
allowExport: "Разрешить экспорт",
|
|
1774
|
-
recordCount: "{{count}} записей",
|
|
1775
|
-
noDescription: "Нет описания",
|
|
1776
|
-
none: "Нет",
|
|
1777
|
-
columnsConfigured: "{{count}} столбцов",
|
|
2173
|
+
// objectui#11445 — a count family: each slot agrees the noun with the
|
|
2174
|
+
// number (one 1/21, few 2-4, many 5-20, other a fraction). The base key, a
|
|
2175
|
+
// count-invariant form, answers a call made without a count.
|
|
2176
|
+
recordCount: "Записей: {{count}}",
|
|
2177
|
+
recordCount_one: "{{count}} запись",
|
|
2178
|
+
recordCount_few: "{{count}} записи",
|
|
2179
|
+
recordCount_many: "{{count}} записей",
|
|
2180
|
+
recordCount_other: "{{count}} записи",
|
|
1778
2181
|
save: "Сохранить",
|
|
1779
2182
|
discard: "Отменить",
|
|
1780
2183
|
createView: "Создать представление",
|
|
1781
2184
|
newView: "Новое представление",
|
|
1782
|
-
typeOptions: "Параметры типа",
|
|
1783
2185
|
groupByField: "Поле группировки",
|
|
1784
2186
|
startDateField: "Поле даты начала",
|
|
1785
2187
|
titleField: "Поле заголовка",
|
|
1786
2188
|
latitudeField: "Поле широты",
|
|
1787
2189
|
longitudeField: "Поле долготы",
|
|
1788
2190
|
imageField: "Поле изображения",
|
|
1789
|
-
dateField: "Поле даты",
|
|
1790
2191
|
selectField: "Выберите поле…",
|
|
1791
|
-
gridOptionsHint: "Представление таблицы использует столбцы, настроенные выше.",
|
|
1792
|
-
groupBy: "Группировать по",
|
|
1793
|
-
prefixField: "Поле префикса",
|
|
1794
|
-
fields: "Поля",
|
|
1795
|
-
fieldsVisible: "{{count}} видимых",
|
|
1796
|
-
sortsCount: "{{count}} сортировок",
|
|
1797
|
-
filtersCount: "{{count}} фильтров",
|
|
1798
2192
|
endDateField: "Поле даты окончания",
|
|
1799
|
-
color: "Цвет",
|
|
1800
|
-
fieldTextColor: "Цвет текста поля",
|
|
1801
|
-
rowHeight: "Высота строки",
|
|
1802
|
-
wrapHeaders: "Перенос заголовков",
|
|
1803
|
-
showFieldDescriptions: "Показать описания полей",
|
|
1804
|
-
collapseAllByDefault: "Свернуть всё по умолчанию",
|
|
1805
|
-
striped: "Полосатые строки",
|
|
1806
|
-
bordered: "Ячейки с границами",
|
|
1807
|
-
inlineEdit: "Редактировать записи встроенно",
|
|
1808
|
-
addDeleteRecordsInline: "Добавлять/удалять записи встроенно",
|
|
1809
|
-
clickIntoRecordDetails: "Нажмите для просмотра деталей записи",
|
|
1810
|
-
navigationMode: "Режим навигации",
|
|
1811
|
-
navigationWidth: "Ширина навигации",
|
|
1812
|
-
navigationWidthHint: "Доступно для режимов навигации: выдвижная панель, модальное окно и разделённый вид",
|
|
1813
|
-
openNewTab: "Открыть в новой вкладке",
|
|
1814
|
-
openNewTabHint: "Доступно для режимов навигации: страница и новое окно",
|
|
1815
2193
|
import: "Импорт",
|
|
1816
2194
|
importTitle: "Импорт из CSV",
|
|
1817
2195
|
importedToast: "{{count}} строк импортировано.",
|
|
2196
|
+
importedToast_one: "Импортирована {{count}} строка.",
|
|
2197
|
+
importedToast_few: "Импортировано {{count}} строки.",
|
|
2198
|
+
importedToast_many: "Импортировано {{count}} строк.",
|
|
2199
|
+
importedToast_other: "Импортировано {{count}} строки.",
|
|
1818
2200
|
importedWithSkipped: "{{ok}} строк импортировано; {{skipped}} пропущено.",
|
|
1819
|
-
showAdvancedSettings: "Показать расширенные настройки",
|
|
1820
|
-
showFewerSettings: "Меньше настроек",
|
|
1821
2201
|
createViewDesc: "Выберите тип представления и задайте ему имя. Все настройки можно изменить позже.",
|
|
1822
2202
|
cancel: "Отмена",
|
|
1823
2203
|
create: "Создать",
|
|
@@ -1825,6 +2205,10 @@ const ru = {
|
|
|
1825
2205
|
deleteViewTitle: "Удалить представление",
|
|
1826
2206
|
deleteViewConfirm: "Удалить представление \"{{name}}\"? Это действие нельзя отменить.",
|
|
1827
2207
|
bulkDeleteConfirm: "Удалить {{count}} выбранных записей? Это действие нельзя отменить.",
|
|
2208
|
+
bulkDeleteConfirm_one: "Удалить {{count}} выбранную запись? Это действие нельзя отменить.",
|
|
2209
|
+
bulkDeleteConfirm_few: "Удалить {{count}} выбранные записи? Это действие нельзя отменить.",
|
|
2210
|
+
bulkDeleteConfirm_many: "Удалить {{count}} выбранных записей? Это действие нельзя отменить.",
|
|
2211
|
+
bulkDeleteConfirm_other: "Удалить {{count}} выбранной записи? Это действие нельзя отменить.",
|
|
1828
2212
|
duplicateViewName: "Представление с таким именем уже существует.",
|
|
1829
2213
|
viewTypeGrid: "Таблица",
|
|
1830
2214
|
viewTypeGridDesc: "Таблица записей в стиле электронной таблицы.",
|
|
@@ -1861,62 +2245,17 @@ const ru = {
|
|
|
1861
2245
|
chartTypePie: "Круговая",
|
|
1862
2246
|
chartTypeArea: "Областная",
|
|
1863
2247
|
chartTypeScatter: "Точечная",
|
|
1864
|
-
|
|
1865
|
-
|
|
1866
|
-
|
|
1867
|
-
|
|
1868
|
-
|
|
1869
|
-
|
|
1870
|
-
|
|
1871
|
-
|
|
1872
|
-
pageSize: "Размер страницы",
|
|
1873
|
-
pageSizeOptions: "Варианты размера страницы",
|
|
1874
|
-
exportFormats: "Форматы экспорта",
|
|
1875
|
-
exportMaxRecords: "Макс. записей",
|
|
1876
|
-
exportIncludeHeaders: "Включить заголовки",
|
|
1877
|
-
exportFileNamePrefix: "Префикс имени файла",
|
|
1878
|
-
searchableFields: "Поля для поиска",
|
|
1879
|
-
filterableFields: "Поля для фильтрации",
|
|
1880
|
-
resizableColumns: "Изменяемые столбцы",
|
|
1881
|
-
densityCompact: "Компактный",
|
|
1882
|
-
densityComfortable: "Обычный",
|
|
1883
|
-
densitySpacious: "Просторный",
|
|
1884
|
-
densityMode: "Режим плотности",
|
|
1885
|
-
hiddenFields: "Скрытые поля",
|
|
1886
|
-
rowActions: "Действия строки",
|
|
1887
|
-
bulkActions: "Массовые действия",
|
|
1888
|
-
sharing: "Общий доступ",
|
|
1889
|
-
sharingEnabled: "Общий доступ включён",
|
|
1890
|
-
sharingVisibility: "Видимость",
|
|
1891
|
-
addRecordEnabled: "Добавление записей включено",
|
|
1892
|
-
addRecordPosition: "Позиция",
|
|
1893
|
-
addRecordMode: "Режим",
|
|
1894
|
-
addRecordFormView: "Представление формы",
|
|
1895
|
-
conditionalFormatting: "Условное форматирование",
|
|
1896
|
-
addRule: "Добавить правило",
|
|
1897
|
-
quickFilters: "Быстрые фильтры",
|
|
1898
|
-
addQuickFilter: "Добавить быстрый фильтр",
|
|
1899
|
-
ufElements: "Элементы",
|
|
1900
|
-
ufDropdown: "Выпадающий список",
|
|
2248
|
+
dataset: "Набор данных",
|
|
2249
|
+
datasetHelp: "Диаграмма берёт значения из этого набора данных объекта.",
|
|
2250
|
+
chartMeasure: "Мера",
|
|
2251
|
+
chartMeasureHelp: "Мера набора данных, отображаемая на оси значений.",
|
|
2252
|
+
chartDimension: "Измерение",
|
|
2253
|
+
chartDimensionHelp: "Измерение набора данных, по которому группируются значения (необязательно).",
|
|
2254
|
+
viewTypeUnavailableDataset: "Этот объект не предоставляет набора данных для диаграммы.",
|
|
2255
|
+
noDatasetMeasure: "В этом наборе данных не объявлено ни одной меры для диаграммы.",
|
|
1901
2256
|
ufTabs: "Вкладки",
|
|
1902
|
-
ufToggle: "Переключатель",
|
|
1903
2257
|
ufAddField: "+ Добавить поле фильтра…",
|
|
1904
|
-
ufNoFields: "Поля недоступны",
|
|
1905
|
-
ufAddTab: "+ Добавить вкладку",
|
|
1906
|
-
ufTabLabel: "Метка",
|
|
1907
2258
|
ufShowAllRecords: "Показать вкладку \"Все записи\"",
|
|
1908
|
-
ufAllowAddTab: "Разрешить добавление вкладок",
|
|
1909
|
-
showRecordCount: "Показать количество записей",
|
|
1910
|
-
allowPrinting: "Разрешить печать",
|
|
1911
|
-
virtualScroll: "Виртуальная прокрутка",
|
|
1912
|
-
emptyStateTitle: "Заголовок пустого состояния",
|
|
1913
|
-
emptyStateMessage: "Сообщение пустого состояния",
|
|
1914
|
-
emptyStateIcon: "Значок пустого состояния",
|
|
1915
|
-
ariaLabel: "Метка ARIA",
|
|
1916
|
-
ariaDescribedBy: "Описано ARIA",
|
|
1917
|
-
ariaLive: "ARIA Live",
|
|
1918
|
-
accessibility: "Доступность",
|
|
1919
|
-
viewTabs: "Вкладки представлений",
|
|
1920
2259
|
},
|
|
1921
2260
|
localeSwitcher: {
|
|
1922
2261
|
label: "Язык",
|
|
@@ -1927,6 +2266,9 @@ const ru = {
|
|
|
1927
2266
|
unpinItem: "Открепить {{name}}",
|
|
1928
2267
|
dragToReorder: "Перетащите для изменения порядка",
|
|
1929
2268
|
favorites: "Избранное",
|
|
2269
|
+
launcherLabel: "Панель приложений",
|
|
2270
|
+
menuLabel: "Навигация приложения",
|
|
2271
|
+
menuEmpty: "В этом приложении нет доступных для открытия элементов навигации.",
|
|
1930
2272
|
},
|
|
1931
2273
|
},
|
|
1932
2274
|
auth: {
|
|
@@ -1980,6 +2322,8 @@ const ru = {
|
|
|
1980
2322
|
resendOtpCountdownText: "Отправить снова через {seconds} с",
|
|
1981
2323
|
usePhoneOtpText: "Войти по коду подтверждения",
|
|
1982
2324
|
usePasswordSignInText: "Войти с паролем",
|
|
2325
|
+
socialButton: "Продолжить через {provider}",
|
|
2326
|
+
orText: "или продолжите с электронной почтой",
|
|
1983
2327
|
},
|
|
1984
2328
|
register: {
|
|
1985
2329
|
title: "Создать аккаунт",
|
|
@@ -1998,8 +2342,12 @@ const ru = {
|
|
|
1998
2342
|
submittingButton: "Создание аккаунта…",
|
|
1999
2343
|
hasAccountText: "Уже есть аккаунт?",
|
|
2000
2344
|
signInText: "Войти",
|
|
2345
|
+
socialButton: "Зарегистрироваться через {provider}",
|
|
2346
|
+
orText: "или продолжите с электронной почтой",
|
|
2001
2347
|
errors: {
|
|
2002
2348
|
userExists: "Аккаунт с таким email уже существует. Попробуйте войти.",
|
|
2349
|
+
selfRegistrationClosed: "Самостоятельная регистрация в этой среде закрыта. Обратитесь к администратору за приглашением.",
|
|
2350
|
+
emailDomainNotAllowed: "Регистрация с адресами этого домена здесь не разрешена. Используйте email вашей организации или обратитесь к администратору за приглашением.",
|
|
2003
2351
|
},
|
|
2004
2352
|
verifyInbox: {
|
|
2005
2353
|
title: "Проверьте входящие",
|
|
@@ -2018,7 +2366,7 @@ const ru = {
|
|
|
2018
2366
|
submitButton: "Отправить ссылку для сброса",
|
|
2019
2367
|
submittingButton: "Отправка…",
|
|
2020
2368
|
successTitle: "Проверьте почту",
|
|
2021
|
-
successDescription: "Мы отправили ссылку для сброса пароля на {
|
|
2369
|
+
successDescription: "Мы отправили ссылку для сброса пароля на {email}. Пожалуйста, проверьте свою почту.",
|
|
2022
2370
|
backToSignInText: "Вернуться к входу",
|
|
2023
2371
|
rememberPasswordText: "Помните свой пароль?",
|
|
2024
2372
|
signInText: "Войти",
|
|
@@ -2198,6 +2546,15 @@ const ru = {
|
|
|
2198
2546
|
role: "Роль",
|
|
2199
2547
|
save: "Сохранить изменения",
|
|
2200
2548
|
},
|
|
2549
|
+
language: {
|
|
2550
|
+
title: "Язык",
|
|
2551
|
+
description: "Язык уведомлений и сообщений, которые отправляются вам. Язык интерфейса выбирается отдельно — в меню с глобусом.",
|
|
2552
|
+
label: "Предпочитаемый язык",
|
|
2553
|
+
systemDefault: "Использовать значение по умолчанию для развёртывания",
|
|
2554
|
+
save: "Сохранить",
|
|
2555
|
+
saved: "Языковые настройки обновлены.",
|
|
2556
|
+
readOnly: "Язык вашей учётной записи настраивает администратор.",
|
|
2557
|
+
},
|
|
2201
2558
|
password: {
|
|
2202
2559
|
changeTitle: "Изменить пароль",
|
|
2203
2560
|
setTitle: "Задать локальный пароль",
|
|
@@ -2229,7 +2586,6 @@ const ru = {
|
|
|
2229
2586
|
label: "Рабочие пространства",
|
|
2230
2587
|
default: "Моё рабочее пространство",
|
|
2231
2588
|
switch: "Переключить рабочее пространство",
|
|
2232
|
-
create: "Создать рабочее пространство",
|
|
2233
2589
|
createTitle: "Создать рабочее пространство",
|
|
2234
2590
|
createDescription: "Рабочее пространство — это общее место для совместной работы вашей команды.",
|
|
2235
2591
|
createButton: "Создать рабочее пространство",
|
|
@@ -2254,7 +2610,6 @@ const ru = {
|
|
|
2254
2610
|
packageManagement: "Управление пакетами",
|
|
2255
2611
|
searchNavigation: "Поиск по навигации…",
|
|
2256
2612
|
settings: "Настройки",
|
|
2257
|
-
help: "Помощь",
|
|
2258
2613
|
helpTooltip: "Помощь и документация",
|
|
2259
2614
|
activityFeed: "Лента активности",
|
|
2260
2615
|
notifications: "Уведомления",
|
|
@@ -2293,10 +2648,12 @@ const ru = {
|
|
|
2293
2648
|
build: {
|
|
2294
2649
|
title: "Создать приложение",
|
|
2295
2650
|
subtitle: "Начните с нуля — спроектируйте объекты, формы, автоматизации и интерфейсы.",
|
|
2651
|
+
noCapability: "Создание приложений недоступно в этом рабочем пространстве — для этого нужно разрешение «Управление метаданными», которого нет у вашей учётной записи.",
|
|
2296
2652
|
},
|
|
2297
2653
|
template: {
|
|
2298
2654
|
title: "Начать с шаблона",
|
|
2299
2655
|
subtitle: "Установите шаблонное приложение из маркетплейса и настройте его под себя.",
|
|
2656
|
+
marketplaceDisabled: "Для этого рантайма не настроен маркетплейс приложений, поэтому здесь нет шаблонов для установки.",
|
|
2300
2657
|
},
|
|
2301
2658
|
welcomeAdminDescription: "Опишите свой бизнес одним предложением — ИИ создаст объекты, экраны, API и инструменты агента. Либо настройте всё сами через меню слева.",
|
|
2302
2659
|
welcomeAdminDescriptionNoBuild: "Настройте первое приложение через меню «Администрирование» слева. Когда появятся данные, ИИ-ассистент поможет их изучить.",
|
|
@@ -2312,6 +2669,10 @@ const ru = {
|
|
|
2312
2669
|
},
|
|
2313
2670
|
pendingDrafts: {
|
|
2314
2671
|
message: "У вас {{count}} неопубликованных изменений — опубликуйте их, чтобы они вступили в силу.",
|
|
2672
|
+
message_one: "У вас {{count}} неопубликованное изменение — опубликуйте его, чтобы оно вступило в силу.",
|
|
2673
|
+
message_few: "У вас {{count}} неопубликованных изменения — опубликуйте их, чтобы они вступили в силу.",
|
|
2674
|
+
message_many: "У вас {{count}} неопубликованных изменений — опубликуйте их, чтобы они вступили в силу.",
|
|
2675
|
+
message_other: "У вас {{count}} неопубликованного изменения — опубликуйте их, чтобы они вступили в силу.",
|
|
2315
2676
|
cta: "Опубликовать",
|
|
2316
2677
|
publishing: "Публикация…",
|
|
2317
2678
|
published: "Опубликовано! Изменения вступили в силу.",
|
|
@@ -2327,7 +2688,6 @@ const ru = {
|
|
|
2327
2688
|
capabilityWarn: "Проверка при создании — несуществующих ссылок на возможности: {{count}}.",
|
|
2328
2689
|
},
|
|
2329
2690
|
title: "Главная",
|
|
2330
|
-
subtitle: "Панель вашего рабочего пространства",
|
|
2331
2691
|
nav: "Главная",
|
|
2332
2692
|
allApps: "Все приложения",
|
|
2333
2693
|
yourApps: "Ваши приложения",
|
|
@@ -2339,8 +2699,6 @@ const ru = {
|
|
|
2339
2699
|
empty: "Всё выполнено",
|
|
2340
2700
|
},
|
|
2341
2701
|
loading: "Загрузка рабочего пространства…",
|
|
2342
|
-
recent: "Недавние",
|
|
2343
|
-
starred: "Избранные",
|
|
2344
2702
|
welcome: "Добро пожаловать в ObjectUI",
|
|
2345
2703
|
welcomeDescription: "Начните с создания вашего первого приложения или настройки системы.",
|
|
2346
2704
|
createFirstApp: "Создайте первое приложение",
|
|
@@ -2348,8 +2706,6 @@ const ru = {
|
|
|
2348
2706
|
browseMarketplace: "Обзор маркетплейса приложений",
|
|
2349
2707
|
quickActions: {
|
|
2350
2708
|
title: "Быстрые действия",
|
|
2351
|
-
createApp: "Создать приложение",
|
|
2352
|
-
createAppDesc: "Начните с нового приложения",
|
|
2353
2709
|
manageObjects: "Управление объектами",
|
|
2354
2710
|
manageObjectsDesc: "Настройте модели данных",
|
|
2355
2711
|
systemSettings: "Системные настройки",
|
|
@@ -2365,18 +2721,15 @@ const ru = {
|
|
|
2365
2721
|
greetingNight: "Ночная смена",
|
|
2366
2722
|
heroTagline: "Продолжите с того места, где остановились, или откройте что-то новое.",
|
|
2367
2723
|
open: "Открыть",
|
|
2368
|
-
stats: {
|
|
2369
|
-
apps: "Приложения",
|
|
2370
|
-
starred: "Отмеченные",
|
|
2371
|
-
recent: "Недавние",
|
|
2372
|
-
},
|
|
2373
2724
|
recentApps: {
|
|
2374
2725
|
title: "Недавно открытые",
|
|
2375
2726
|
itemType: {
|
|
2376
2727
|
object: "Объект",
|
|
2377
2728
|
dashboard: "Панель",
|
|
2378
2729
|
page: "Страница",
|
|
2730
|
+
report: "Отчёт",
|
|
2379
2731
|
record: "Запись",
|
|
2732
|
+
metadata: "Метаданные",
|
|
2380
2733
|
},
|
|
2381
2734
|
},
|
|
2382
2735
|
starredApps: {
|
|
@@ -2398,7 +2751,6 @@ const ru = {
|
|
|
2398
2751
|
organizations: "Организации",
|
|
2399
2752
|
roles: "Роли",
|
|
2400
2753
|
configuration: "Конфигурация",
|
|
2401
|
-
createApp: "Создать приложение",
|
|
2402
2754
|
administration: "Администрирование",
|
|
2403
2755
|
datasources: "Источники данных",
|
|
2404
2756
|
documentation: "Документация",
|
|
@@ -2423,6 +2775,7 @@ const ru = {
|
|
|
2423
2775
|
typeUpdate: "Обновление",
|
|
2424
2776
|
typeDelete: "Удаление",
|
|
2425
2777
|
typeComment: "Комментарий",
|
|
2778
|
+
typeSystem: "Система",
|
|
2426
2779
|
relativeJustNow: "только что",
|
|
2427
2780
|
relativeSecondsAgo: "{{count}} с назад",
|
|
2428
2781
|
relativeMinutesAgo: "{{count}} м назад",
|
|
@@ -2444,8 +2797,18 @@ const ru = {
|
|
|
2444
2797
|
placeholder: "Поиск объектов, панелей, страниц, отчётов…",
|
|
2445
2798
|
inputAriaLabel: "Поиск объектов, панелей, страниц, отчётов",
|
|
2446
2799
|
resultsCount: "{{count}} результат для \"{{query}}\"",
|
|
2447
|
-
|
|
2800
|
+
resultsCount_one: "{{count}} результат по запросу \"{{query}}\"",
|
|
2801
|
+
resultsCount_few: "{{count}} результата по запросу \"{{query}}\"",
|
|
2802
|
+
resultsCount_many: "{{count}} результатов по запросу \"{{query}}\"",
|
|
2803
|
+
resultsCount_other: "{{count}} результата по запросу \"{{query}}\"",
|
|
2804
|
+
// objectui#11445 — a count family: each slot agrees the noun with the
|
|
2805
|
+
// number (one 1/21, few 2-4, many 5-20, other a fraction). The base key, a
|
|
2806
|
+
// count-invariant form, answers a call made without a count.
|
|
2448
2807
|
itemsAvailable: "{{count}} доступно",
|
|
2808
|
+
itemsAvailable_one: "{{count}} доступно",
|
|
2809
|
+
itemsAvailable_few: "{{count}} доступно",
|
|
2810
|
+
itemsAvailable_many: "{{count}} доступно",
|
|
2811
|
+
itemsAvailable_other: "{{count}} доступно",
|
|
2449
2812
|
noResults: "Результатов не найдено",
|
|
2450
2813
|
noResultsHint: "Попробуйте изменить поисковые запросы",
|
|
2451
2814
|
typeObjects: "Объекты",
|
|
@@ -2470,7 +2833,11 @@ const ru = {
|
|
|
2470
2833
|
noAppsConfigured: "Нет приложений",
|
|
2471
2834
|
noAppsConfiguredDescription: "Нет зарегистрированных приложений. Создайте первое приложение или посетите системные настройки.",
|
|
2472
2835
|
appNotAvailable: "Приложение недоступно",
|
|
2473
|
-
appNotAvailableDescription: "Это приложение
|
|
2836
|
+
appNotAvailableDescription: "Это приложение недоступно — повторите попытку через мгновение.",
|
|
2837
|
+
appNotFound: "Не удалось открыть это приложение",
|
|
2838
|
+
appNotFoundDescription: "Сервер не вернул это приложение для вашей учётной записи.",
|
|
2839
|
+
appUnreachable: "Не удалось связаться с сервером",
|
|
2840
|
+
appUnreachableDescription: "Не удалось проверить это приложение. Повторите попытку через мгновение.",
|
|
2474
2841
|
appAccessDenied: "У вас нет доступа к этому приложению",
|
|
2475
2842
|
appAccessDeniedDescription: "Это приложение существует, но у вашей учётной записи нет прав на его открытие. Обратитесь к администратору за доступом.",
|
|
2476
2843
|
appAccessDeniedHome: "На главную",
|
|
@@ -2480,31 +2847,16 @@ const ru = {
|
|
|
2480
2847
|
recordNotFound: "Запись не найдена",
|
|
2481
2848
|
recordNotFoundDescription: "Искомая запись не существует или была удалена.",
|
|
2482
2849
|
},
|
|
2483
|
-
renderer: {
|
|
2484
|
-
noPageSchema: "Схема страницы не указана",
|
|
2485
|
-
noFormSchema: "Схема формы не указана",
|
|
2486
|
-
noDashboardSchema: "Схема панели не указана",
|
|
2487
|
-
pageRendering: "Рендеринг страницы: {{name}}",
|
|
2488
|
-
dashboardRendering: "Рендеринг панели: {{name}}",
|
|
2489
|
-
formRenderingMode: "Форма в режиме {{mode}}",
|
|
2490
|
-
formRenderingFor: "для записи {{id}}",
|
|
2491
|
-
createRecord: "Создать запись",
|
|
2492
|
-
editRecord: "Редактировать запись",
|
|
2493
|
-
page: "Страница",
|
|
2494
|
-
dashboard: "Панель",
|
|
2495
|
-
save: "Сохранить",
|
|
2496
|
-
cancel: "Отмена",
|
|
2497
|
-
},
|
|
2498
2850
|
actionDialog: {
|
|
2499
2851
|
title: "Параметры действия",
|
|
2500
2852
|
description: "Введите необходимую информацию для продолжения.",
|
|
2501
2853
|
selectPlaceholder: "Выбрать {{label}}",
|
|
2502
2854
|
requiredError: "{{label}} обязательно",
|
|
2855
|
+
unresolvedParam: 'Этот параметр невозможно показать: поле, на котором он основан, отсутствует в метаданных объекта, поэтому нужный элемент управления нельзя построить. Попросите администратора исправить определение действия.',
|
|
2856
|
+
carryOverHint: 'Переносится без изменений (только чтение)',
|
|
2503
2857
|
cancel: "Отмена",
|
|
2504
2858
|
confirm: "Подтвердить",
|
|
2505
2859
|
uploading: "Загрузка…",
|
|
2506
|
-
defaultActionTitle: "Действие",
|
|
2507
|
-
ok: "ОК",
|
|
2508
2860
|
lookupPlaceholder: "ID записи для {{label}}",
|
|
2509
2861
|
lookupHelpText: "Для этого параметра не настроен объект ссылки, поэтому выбор записи недоступен. Введите ID записи или попросите администратора исправить параметр действия.",
|
|
2510
2862
|
},
|
|
@@ -2513,11 +2865,6 @@ const ru = {
|
|
|
2513
2865
|
confirm: "Продолжить",
|
|
2514
2866
|
cancel: "Отмена",
|
|
2515
2867
|
},
|
|
2516
|
-
rowAction: {
|
|
2517
|
-
openMenu: "Открыть меню",
|
|
2518
|
-
edit: "Редактировать",
|
|
2519
|
-
delete: "Удалить",
|
|
2520
|
-
},
|
|
2521
2868
|
navigationSync: {
|
|
2522
2869
|
addedPage: "Навигация обновлена: страница \"{{name}}\" добавлена",
|
|
2523
2870
|
addedDashboard: "Навигация обновлена: панель \"{{name}}\" добавлена",
|
|
@@ -2538,6 +2885,10 @@ const ru = {
|
|
|
2538
2885
|
noRecordId: "ID записи не указан",
|
|
2539
2886
|
deleteConfirm: "Удалить эту запись?",
|
|
2540
2887
|
bulkDeleteSuccess: "{{count}} записей {{label}} удалено",
|
|
2888
|
+
bulkDeleteSuccess_one: "Удалена {{count}} запись {{label}}",
|
|
2889
|
+
bulkDeleteSuccess_few: "Удалено {{count}} записи {{label}}",
|
|
2890
|
+
bulkDeleteSuccess_many: "Удалено {{count}} записей {{label}}",
|
|
2891
|
+
bulkDeleteSuccess_other: "Удалено {{count}} записи {{label}}",
|
|
2541
2892
|
bulkDeletePartial: "{{succeeded}} удалено, {{failed}} не удалось",
|
|
2542
2893
|
},
|
|
2543
2894
|
objectViewActions: {
|
|
@@ -2549,15 +2900,6 @@ const ru = {
|
|
|
2549
2900
|
exportFailed: "Ошибка экспорта: {{message}}",
|
|
2550
2901
|
forecastSoon: "Прогнозное представление скоро будет",
|
|
2551
2902
|
},
|
|
2552
|
-
recordDetail: {
|
|
2553
|
-
viewersTooltip: "Пользователи, просматривающие эту запись",
|
|
2554
|
-
},
|
|
2555
|
-
cellRender: {
|
|
2556
|
-
empty: "Пусто",
|
|
2557
|
-
yes: "Да",
|
|
2558
|
-
no: "Нет",
|
|
2559
|
-
systemFields: "Система",
|
|
2560
|
-
},
|
|
2561
2903
|
user: {
|
|
2562
2904
|
profile: "Профиль",
|
|
2563
2905
|
settings: "Настройки",
|
|
@@ -2594,17 +2936,17 @@ const ru = {
|
|
|
2594
2936
|
},
|
|
2595
2937
|
organizations: {
|
|
2596
2938
|
create: "Создать рабочее пространство",
|
|
2597
|
-
mine: "Мои
|
|
2598
|
-
title: "
|
|
2599
|
-
heading: "Ваши
|
|
2600
|
-
subtitle: "Выберите
|
|
2601
|
-
searchPlaceholder: "Поиск
|
|
2602
|
-
new: "
|
|
2603
|
-
current: "
|
|
2939
|
+
mine: "Мои рабочие пространства",
|
|
2940
|
+
title: "Рабочие пространства",
|
|
2941
|
+
heading: "Ваши рабочие пространства",
|
|
2942
|
+
subtitle: "Выберите рабочее пространство, чтобы продолжить, или создайте новое.",
|
|
2943
|
+
searchPlaceholder: "Поиск рабочего пространства",
|
|
2944
|
+
new: "Новое рабочее пространство",
|
|
2945
|
+
current: "Текущее рабочее пространство",
|
|
2604
2946
|
manage: "Управление",
|
|
2605
|
-
emptyTitle: "Пока нет
|
|
2606
|
-
emptyDescription: "Создайте
|
|
2607
|
-
noMatches: "Нет
|
|
2947
|
+
emptyTitle: "Пока нет рабочих пространств",
|
|
2948
|
+
emptyDescription: "Создайте своё первое рабочее пространство, чтобы начать.",
|
|
2949
|
+
noMatches: "Нет рабочих пространств, соответствующих запросу.",
|
|
2608
2950
|
},
|
|
2609
2951
|
organization: {
|
|
2610
2952
|
roles: {
|
|
@@ -2733,6 +3075,9 @@ const ru = {
|
|
|
2733
3075
|
declined: "Приглашение отклонено",
|
|
2734
3076
|
declineFailed: "Не удалось отклонить приглашение",
|
|
2735
3077
|
},
|
|
3078
|
+
current: {
|
|
3079
|
+
label: "Текущая организация",
|
|
3080
|
+
},
|
|
2736
3081
|
switcher: {
|
|
2737
3082
|
label: "Переключить организацию",
|
|
2738
3083
|
groupLabel: "Рабочая организация",
|
|
@@ -2744,18 +3089,41 @@ const ru = {
|
|
|
2744
3089
|
regionLabel: "Уведомления",
|
|
2745
3090
|
groupCount: "Уведомлений: {{count}}",
|
|
2746
3091
|
groupUnread: "Непрочитанных: {{count}}",
|
|
3092
|
+
groupUnread_one: "Непрочитанных: {{count}}",
|
|
3093
|
+
groupUnread_few: "Непрочитанных: {{count}}",
|
|
3094
|
+
groupUnread_many: "Непрочитанных: {{count}}",
|
|
3095
|
+
groupUnread_other: "Непрочитанных: {{count}}",
|
|
2747
3096
|
groupMarkRead: "Отметить прочитанными",
|
|
2748
3097
|
groupMarkReadTitle: "Отметить прочитанными все этого типа",
|
|
2749
3098
|
empty: "Нет уведомлений",
|
|
2750
3099
|
markAllRead: "Отметить все как прочитанные",
|
|
2751
3100
|
viewAll: "Показать все уведомления",
|
|
2752
3101
|
approvalsPending: "{{count}} ожидающих утверждений",
|
|
3102
|
+
approvalsPending_one: "{{count}} ожидающее утверждение",
|
|
3103
|
+
approvalsPending_few: "{{count}} ожидающих утверждения",
|
|
3104
|
+
approvalsPending_many: "{{count}} ожидающих утверждений",
|
|
3105
|
+
approvalsPending_other: "{{count}} ожидающего утверждения",
|
|
2753
3106
|
viewApprovals: "Показать утверждения",
|
|
2754
3107
|
noPendingApprovals: "Нет ожидающих утверждений",
|
|
2755
3108
|
openApprovalsInbox: "Открыть входящие утверждений",
|
|
2756
3109
|
badgeTotal: "Всего: {{total}}",
|
|
2757
3110
|
badgeNotifications: "{{unread}} уведомлений",
|
|
2758
3111
|
badgeApprovals: "{{approvals}} ожидающих утверждений",
|
|
3112
|
+
arrivalMany: "Новых сообщений: {{count}}",
|
|
3113
|
+
arrivalMany_one: "Новых сообщений: {{count}}",
|
|
3114
|
+
arrivalMany_few: "Новых сообщений: {{count}}",
|
|
3115
|
+
arrivalMany_many: "Новых сообщений: {{count}}",
|
|
3116
|
+
arrivalMany_other: "Новых сообщений: {{count}}",
|
|
3117
|
+
arrivalRepeats: "Новых сообщений по этой теме: {{count}}",
|
|
3118
|
+
arrivalRepeats_one: "Новых сообщений по этой теме: {{count}}",
|
|
3119
|
+
arrivalRepeats_few: "Новых сообщений по этой теме: {{count}}",
|
|
3120
|
+
arrivalRepeats_many: "Новых сообщений по этой теме: {{count}}",
|
|
3121
|
+
arrivalRepeats_other: "Новых сообщений по этой теме: {{count}}",
|
|
3122
|
+
arrivalOpen: "Открыть",
|
|
3123
|
+
toastEnabled: "Оповещения в приложении",
|
|
3124
|
+
desktopEnabled: "Уведомления на рабочем столе",
|
|
3125
|
+
desktopBlocked: "Заблокировано. Разрешите уведомления для этого сайта в настройках браузера.",
|
|
3126
|
+
desktopUnsupported: "Этот браузер не поддерживает уведомления на рабочем столе.",
|
|
2759
3127
|
emptyUnread: "Всё прочитано",
|
|
2760
3128
|
filterUnread: "Непрочитанные",
|
|
2761
3129
|
filterAll: "Все",
|
|
@@ -2769,63 +3137,19 @@ const ru = {
|
|
|
2769
3137
|
thankYouTitle: "Спасибо!",
|
|
2770
3138
|
thankYouMessage: "Ваш ответ успешно получен.",
|
|
2771
3139
|
redirecting: "Перенаправление через {{seconds}} с…",
|
|
3140
|
+
redirectPending: "Перенаправление…",
|
|
2772
3141
|
unavailableTitle: "Форма недоступна",
|
|
2773
3142
|
unavailableDescription: "По этому URL нет публичной формы. Убедитесь, что базовое представление имеет анонимный доступ.",
|
|
2774
3143
|
tryDemo: "Попробовать демо",
|
|
2775
3144
|
retry: "Повторить",
|
|
2776
3145
|
loading: "Загрузка формы…",
|
|
2777
3146
|
requiredHint: "* Обязательное поле",
|
|
3147
|
+
requiredFields: "Обязательные поля: {{fields}}",
|
|
2778
3148
|
consentLabelDefault: "Я принимаю политику конфиденциальности и соглашаюсь на обработку моих данных.",
|
|
2779
3149
|
consentLink: "Политика конфиденциальности",
|
|
2780
3150
|
consentRequired: "Пожалуйста, примите политику конфиденциальности.",
|
|
2781
3151
|
rateLimited: "Проверьте ответы перед отправкой.",
|
|
2782
3152
|
redirectBlocked: "Ответ принят, но URL перенаправления заблокирован по соображениям безопасности.",
|
|
2783
|
-
demo: {
|
|
2784
|
-
contactTitle: "Связаться с нами",
|
|
2785
|
-
contactDescription: "Расскажите о вашем проекте, и наш менеджер свяжется с вами в течение рабочего дня.",
|
|
2786
|
-
supportTitle: "Отправить запрос в поддержку",
|
|
2787
|
-
supportDescription: "Опишите проблему — наша команда ответит в течение рабочего дня.",
|
|
2788
|
-
thankYouSalesTitle: "Спасибо — мы получили ваше сообщение!",
|
|
2789
|
-
thankYouSalesMessage: "Наш менеджер свяжется с вами в течение рабочего дня.",
|
|
2790
|
-
thankYouSupportTitle: "Готово — ваш запрос в очереди.",
|
|
2791
|
-
thankYouSupportMessage: "Инженер поддержки скоро свяжется с вами. Сохраните эту страницу, если у вас есть скриншоты.",
|
|
2792
|
-
field: {
|
|
2793
|
-
firstName: "Имя",
|
|
2794
|
-
lastName: "Фамилия",
|
|
2795
|
-
email: "Рабочий email",
|
|
2796
|
-
phone: "Телефон",
|
|
2797
|
-
jobTitle: "Должность",
|
|
2798
|
-
company: "Компания",
|
|
2799
|
-
website: "Сайт",
|
|
2800
|
-
industry: "Отрасль",
|
|
2801
|
-
companySize: "Размер компании",
|
|
2802
|
-
howCanWeHelp: "Как мы можем помочь?",
|
|
2803
|
-
subject: "Тема",
|
|
2804
|
-
description: "Описание",
|
|
2805
|
-
issueType: "Тип проблемы",
|
|
2806
|
-
priority: "Приоритет",
|
|
2807
|
-
},
|
|
2808
|
-
industry: {
|
|
2809
|
-
technology: "Технологии",
|
|
2810
|
-
software: "Программное обеспечение / SaaS",
|
|
2811
|
-
finance: "Финансы",
|
|
2812
|
-
healthcare: "Здравоохранение",
|
|
2813
|
-
retail: "Розница",
|
|
2814
|
-
other: "Другое",
|
|
2815
|
-
},
|
|
2816
|
-
issueType: {
|
|
2817
|
-
question: "Вопрос",
|
|
2818
|
-
problem: "Проблема",
|
|
2819
|
-
bug: "Ошибка",
|
|
2820
|
-
feature_request: "Пожелание",
|
|
2821
|
-
},
|
|
2822
|
-
priority: {
|
|
2823
|
-
low: "Низкий",
|
|
2824
|
-
medium: "Средний",
|
|
2825
|
-
high: "Высокий",
|
|
2826
|
-
critical: "Критический",
|
|
2827
|
-
},
|
|
2828
|
-
},
|
|
2829
3153
|
},
|
|
2830
3154
|
connectAgent: {
|
|
2831
3155
|
disabled: {
|
|
@@ -2871,6 +3195,10 @@ const ru = {
|
|
|
2871
3195
|
noImportableFields: "У этого объекта нет полей, доступных для импорта.",
|
|
2872
3196
|
schemaReadFailed: "Не удалось прочитать схему объекта.",
|
|
2873
3197
|
imported: "Импортировано строк: {{count}} в {{object}}.",
|
|
3198
|
+
imported_one: "Импортировано строк: {{count}} в {{object}}.",
|
|
3199
|
+
imported_few: "Импортировано строк: {{count}} в {{object}}.",
|
|
3200
|
+
imported_many: "Импортировано строк: {{count}} в {{object}}.",
|
|
3201
|
+
imported_other: "Импортировано строк: {{count}} в {{object}}.",
|
|
2874
3202
|
importFrom: "Импортировать реальные строки из",
|
|
2875
3203
|
into: "в",
|
|
2876
3204
|
opening: "Открытие…",
|
|
@@ -2884,6 +3212,80 @@ const ru = {
|
|
|
2884
3212
|
openProduction: "Открыть продакшн",
|
|
2885
3213
|
manageEnvironments: "Управление окружениями",
|
|
2886
3214
|
},
|
|
3215
|
+
cloudPlanStatus: {
|
|
3216
|
+
current: "Текущий тариф",
|
|
3217
|
+
},
|
|
3218
|
+
ai: {
|
|
3219
|
+
nlQuery: {
|
|
3220
|
+
placeholder: "Задайте вопрос о своих данных…",
|
|
3221
|
+
ask: "Спросить",
|
|
3222
|
+
results: "Результаты",
|
|
3223
|
+
match: "Совпадение: {{percent}}",
|
|
3224
|
+
simulatedSummary: "Результаты по запросу: {{query}}",
|
|
3225
|
+
noResults: "Подходящие записи не найдены",
|
|
3226
|
+
recentQueries: "Недавние запросы",
|
|
3227
|
+
},
|
|
3228
|
+
formAssist: {
|
|
3229
|
+
title: "Предложения ИИ",
|
|
3230
|
+
suggestionCount: "Предложений: {{count}}",
|
|
3231
|
+
suggestionCount_one: "{{count}} предложение",
|
|
3232
|
+
suggestionCount_few: "{{count}} предложения",
|
|
3233
|
+
suggestionCount_many: "{{count}} предложений",
|
|
3234
|
+
suggestionCount_other: "{{count}} предложения",
|
|
3235
|
+
applyAll: "Применить все",
|
|
3236
|
+
confidence: "Уверенность: {{percent}}",
|
|
3237
|
+
appliedCount: "Применено предложений: {{count}}",
|
|
3238
|
+
appliedCount_one: "Применено {{count}} предложение",
|
|
3239
|
+
appliedCount_few: "Применено {{count}} предложения",
|
|
3240
|
+
appliedCount_many: "Применено {{count}} предложений",
|
|
3241
|
+
appliedCount_other: "Применено {{count}} предложения",
|
|
3242
|
+
},
|
|
3243
|
+
recommendations: {
|
|
3244
|
+
title: "Рекомендации",
|
|
3245
|
+
generating: "Формирование рекомендаций…",
|
|
3246
|
+
empty: "Нет доступных рекомендаций",
|
|
3247
|
+
},
|
|
3248
|
+
},
|
|
3249
|
+
aiApprovals: {
|
|
3250
|
+
title: "Согласования ИИ",
|
|
3251
|
+
description: "Действия, предложенные ИИ-агентом: перед выполнением их должен проверить человек.",
|
|
3252
|
+
tabPending: "Ожидают",
|
|
3253
|
+
tabDecided: "Обработанные",
|
|
3254
|
+
tabAll: "Все",
|
|
3255
|
+
statusPending: "Ожидает",
|
|
3256
|
+
statusApproved: "Согласовано",
|
|
3257
|
+
statusExecuted: "Выполнено",
|
|
3258
|
+
statusFailed: "Не выполнено",
|
|
3259
|
+
statusRejected: "Отклонено",
|
|
3260
|
+
colTool: "Инструмент",
|
|
3261
|
+
colAction: "Действие",
|
|
3262
|
+
colObject: "Объект",
|
|
3263
|
+
colStatus: "Статус",
|
|
3264
|
+
colProposed: "Предложено",
|
|
3265
|
+
colDecision: "Решение",
|
|
3266
|
+
emptyTitle: "Нет действий в ожидании",
|
|
3267
|
+
emptyDescription: "Когда ИИ предложит важное действие, оно появится здесь на проверку.",
|
|
3268
|
+
view: "Открыть",
|
|
3269
|
+
approve: "Согласовать",
|
|
3270
|
+
reject: "Отклонить",
|
|
3271
|
+
working: "Выполняется…",
|
|
3272
|
+
approveAndExecute: "Согласовать и выполнить",
|
|
3273
|
+
outcomeApprove: "Согласование {{id}}: {{message}}",
|
|
3274
|
+
outcomeReject: "Отклонение {{id}}: {{message}}",
|
|
3275
|
+
outcomeExecuteFailed: "Действие завершилось ошибкой при выполнении",
|
|
3276
|
+
drawerFallbackTitle: "Действие в ожидании",
|
|
3277
|
+
drawerSubtitle: "Инструмент {{tool}} для объекта {{object}}",
|
|
3278
|
+
fieldProposedBy: "Кто предложил",
|
|
3279
|
+
fieldDecidedBy: "Кто решил",
|
|
3280
|
+
fieldConversation: "Диалог",
|
|
3281
|
+
fieldToolInput: "Входные данные инструмента",
|
|
3282
|
+
fieldResult: "Результат",
|
|
3283
|
+
fieldError: "Ошибка",
|
|
3284
|
+
fieldRejectionReason: "Причина отклонения",
|
|
3285
|
+
rejectTitle: "Отклонить это действие?",
|
|
3286
|
+
rejectBody: "Причина возвращается ИИ, чтобы он скорректировал следующий ответ.",
|
|
3287
|
+
rejectPlaceholder: "Причина (необязательно), например: «Неверный идентификатор записи — сначала уточните у пользователя.»",
|
|
3288
|
+
},
|
|
2887
3289
|
aiModelStatus: {
|
|
2888
3290
|
summary: "Сборка / вопросы используют {{conversational}} ({{conversationalSource}}); структурированный вывод — {{structured}} ({{structuredSource}}).",
|
|
2889
3291
|
summaryRouting: "Политика маршрутизации: бесплатные тарифы → {{free}}, платные тарифы → {{paid}}.",
|
|
@@ -2901,6 +3303,117 @@ const ru = {
|
|
|
2901
3303
|
sourceInherits: "как у build/ask",
|
|
2902
3304
|
sourcePinned: "закреплено через {{source}}",
|
|
2903
3305
|
},
|
|
3306
|
+
// objectui#7254 — the AI copilot's tool cards. Three families, all of them
|
|
3307
|
+
// English-only until this landed while every other string on the same screen
|
|
3308
|
+
// was translated:
|
|
3309
|
+
//
|
|
3310
|
+
// `tool.*` — one entry per PLATFORM-PROVIDED tool name
|
|
3311
|
+
// (@objectstack/spec `PLATFORM_TOOLS_BY_PACKAGE`, the
|
|
3312
|
+
// closed registry those runtimes are conformance-tested
|
|
3313
|
+
// against). `humanizeToolName` looks each up as
|
|
3314
|
+
// `chatbot.tool.<tool_name>` and falls back to its English
|
|
3315
|
+
// title-caser for a custom / third-party tool, so a name
|
|
3316
|
+
// missing here is degraded, never broken. The `en` values
|
|
3317
|
+
// are deliberately EQUAL to what that title-caser produces:
|
|
3318
|
+
// adding the key must not silently reword the English UI.
|
|
3319
|
+
// `toolState.*` — the card-header badge + activity-chip vocabulary. ONE
|
|
3320
|
+
// set for both surfaces (they used to carry separate
|
|
3321
|
+
// tables and disagreed on casing).
|
|
3322
|
+
// `plan.*` — the "N objects · N views · N dashboards" strip. Plural
|
|
3323
|
+
// FAMILIES: one slot per CLDR category the pack's language
|
|
3324
|
+
// selects (objectui#11432), plus the base key for a call
|
|
3325
|
+
// made without a count. `all-locales-key-parity.test.ts`
|
|
3326
|
+
// derives the required slots from `Intl.PluralRules`.
|
|
3327
|
+
//
|
|
3328
|
+
// objectui#7481 — five `tool.*` entries are NEWER than the registry above:
|
|
3329
|
+
// `get_authoring_rules` (cloud#1837), `load_tools`, `open_record`, `test_flow`
|
|
3330
|
+
// and `toggle_flow` are registered by cloud `service-ai-studio` but the pinned
|
|
3331
|
+
// `@objectstack/spec` snapshot does not list them yet. They are kept here on
|
|
3332
|
+
// purpose: a step label the user reads must not wait on a pin bump. When the
|
|
3333
|
+
// pin advances, `chatbotToolLabels-locale-parity-7481` starts checking them
|
|
3334
|
+
// against the registry instead of against its own hand-held list.
|
|
3335
|
+
chatbot: {
|
|
3336
|
+
tool: {
|
|
3337
|
+
aggregate_data: "Сводка данных",
|
|
3338
|
+
get_record: "Получить запись",
|
|
3339
|
+
query_data: "Запросить данные",
|
|
3340
|
+
query_records: "Запросить записи",
|
|
3341
|
+
search_knowledge: "Поиск по базе знаний",
|
|
3342
|
+
visualize_data: "Построить график",
|
|
3343
|
+
add_field: "Добавить поле",
|
|
3344
|
+
apply_blueprint: "Собрать приложение",
|
|
3345
|
+
apply_edit: "Применить изменения",
|
|
3346
|
+
create_metadata: "Создать метаданные",
|
|
3347
|
+
create_object: "Создать объект",
|
|
3348
|
+
create_package: "Создать пакет",
|
|
3349
|
+
create_seed: "Сгенерировать примеры данных",
|
|
3350
|
+
delete_field: "Удалить поле",
|
|
3351
|
+
describe_metadata: "Посмотреть метаданные",
|
|
3352
|
+
describe_object: "Посмотреть структуру объекта",
|
|
3353
|
+
get_active_package: "Получить активный пакет",
|
|
3354
|
+
get_authoring_rules: "Читать правила разработки",
|
|
3355
|
+
get_metadata_schema: "Получить схему метаданных",
|
|
3356
|
+
get_package: "Получить пакет",
|
|
3357
|
+
list_metadata: "Список метаданных",
|
|
3358
|
+
list_objects: "Список объектов",
|
|
3359
|
+
list_packages: "Список пакетов",
|
|
3360
|
+
load_tools: "Загрузить инструменты",
|
|
3361
|
+
modify_field: "Изменить поле",
|
|
3362
|
+
open_record: "Открыть запись",
|
|
3363
|
+
propose_blueprint: "Спроектировать приложение",
|
|
3364
|
+
set_active_package: "Сменить активный пакет",
|
|
3365
|
+
suggest_builder: "Предложить способ сборки",
|
|
3366
|
+
test_flow: "Проверить процесс",
|
|
3367
|
+
todo_write: "Записать задачи",
|
|
3368
|
+
toggle_flow: "Включить или выключить процесс",
|
|
3369
|
+
update_metadata: "Обновить метаданные",
|
|
3370
|
+
validate_expression: "Проверить выражение",
|
|
3371
|
+
verify_build: "Проверить сборку",
|
|
3372
|
+
},
|
|
3373
|
+
toolState: {
|
|
3374
|
+
agentActivity: "Действия агента",
|
|
3375
|
+
pending: "Ожидание",
|
|
3376
|
+
running: "Выполняется",
|
|
3377
|
+
awaitingApproval: "Ожидает подтверждения",
|
|
3378
|
+
responded: "Отвечено",
|
|
3379
|
+
completed: "Завершено",
|
|
3380
|
+
error: "Ошибка",
|
|
3381
|
+
denied: "Отклонено",
|
|
3382
|
+
failed: "Ошибка выполнения",
|
|
3383
|
+
},
|
|
3384
|
+
plan: {
|
|
3385
|
+
countObjects: "объектов: {{count}}",
|
|
3386
|
+
countObjects_one: "{{count}} объект",
|
|
3387
|
+
countObjects_few: "{{count}} объекта",
|
|
3388
|
+
countObjects_many: "{{count}} объектов",
|
|
3389
|
+
countObjects_other: "{{count}} объекта",
|
|
3390
|
+
countViews: "представлений: {{count}}",
|
|
3391
|
+
countViews_one: "{{count}} представление",
|
|
3392
|
+
countViews_few: "{{count}} представления",
|
|
3393
|
+
countViews_many: "{{count}} представлений",
|
|
3394
|
+
countViews_other: "{{count}} представления",
|
|
3395
|
+
countDashboards: "дашбордов: {{count}}",
|
|
3396
|
+
countDashboards_one: "{{count}} дашборд",
|
|
3397
|
+
countDashboards_few: "{{count}} дашборда",
|
|
3398
|
+
countDashboards_many: "{{count}} дашбордов",
|
|
3399
|
+
countDashboards_other: "{{count}} дашборда",
|
|
3400
|
+
countSeedData: "демоданные",
|
|
3401
|
+
},
|
|
3402
|
+
build: {
|
|
3403
|
+
building: "Создание {{app}}…",
|
|
3404
|
+
built: "Создание {{app}} завершено",
|
|
3405
|
+
appFallback: "вашего приложения",
|
|
3406
|
+
addingSampleData: "добавление демоданных",
|
|
3407
|
+
group: {
|
|
3408
|
+
object: "Объекты",
|
|
3409
|
+
view: "Представления",
|
|
3410
|
+
dashboard: "Дашборды",
|
|
3411
|
+
app: "Приложение",
|
|
3412
|
+
seed: "Демоданные",
|
|
3413
|
+
},
|
|
3414
|
+
moreArtifacts: "ещё {{n}}",
|
|
3415
|
+
},
|
|
3416
|
+
},
|
|
2904
3417
|
chatbotError: {
|
|
2905
3418
|
title: "Ошибка ответа",
|
|
2906
3419
|
fallbackDetail: "Что-то пошло не так. Попробуйте ещё раз.",
|
|
@@ -2938,6 +3451,7 @@ const ru = {
|
|
|
2938
3451
|
retry: "Повторить",
|
|
2939
3452
|
errors: {
|
|
2940
3453
|
expired: "Срок действия запроса истёк до подтверждения. Начните заново.",
|
|
3454
|
+
accessDenied: "Запрос на подключение отклонён. Начните заново.",
|
|
2941
3455
|
bindFailed: "Не удалось выполнить привязку.",
|
|
2942
3456
|
deviceCodeFailed: "Не удалось запросить код устройства.",
|
|
2943
3457
|
},
|
|
@@ -2980,7 +3494,7 @@ const ru = {
|
|
|
2980
3494
|
},
|
|
2981
3495
|
title: "Маркетплейс приложений",
|
|
2982
3496
|
subtitle: "Просматривайте одобренные приложения из каталога ObjectStack. Нажмите на приложение, чтобы увидеть подробности и установить его.",
|
|
2983
|
-
searchPlaceholder:
|
|
3497
|
+
searchPlaceholder: 'Поиск приложений по имени или ID приложения…',
|
|
2984
3498
|
searchAria: "Поиск в маркетплейсе",
|
|
2985
3499
|
installed: "Установлено",
|
|
2986
3500
|
installedCount: "Установлено ({{count}})",
|
|
@@ -3003,10 +3517,16 @@ const ru = {
|
|
|
3003
3517
|
installedBadge: "Установлено v{{version}}",
|
|
3004
3518
|
load: {
|
|
3005
3519
|
failed: "Не удалось загрузить маркетплейс",
|
|
3006
|
-
|
|
3520
|
+
failedHintConfigured: "Этот рантайм обращается к маркетплейсу через control plane по адресу {{url}}. Убедитесь, что он доступен и достижим отсюда.",
|
|
3521
|
+
failedHintSameOrigin: "Этот рантайм сам обслуживает каталог маркетплейса. Убедитесь, что рантайм онлайн.",
|
|
3007
3522
|
packageFailed: "Не удалось загрузить пакет",
|
|
3008
3523
|
notFound: "Не найдено.",
|
|
3009
3524
|
},
|
|
3525
|
+
disabled: {
|
|
3526
|
+
title: "Маркетплейс приложений отключён",
|
|
3527
|
+
description: "Для этого рантайма не настроен маркетплейс, поэтому здесь нечего просматривать или устанавливать.",
|
|
3528
|
+
hint: "Это ожидаемое состояние, когда рантайм запущен с <code>OS_CLOUD_URL=off</code> (или <code>none</code>, <code>local</code>, <code>disabled</code>). Чтобы включить маркетплейс, укажите в <code>OS_CLOUD_URL</code> адрес control plane и перезапустите рантайм.",
|
|
3529
|
+
},
|
|
3010
3530
|
detail: {
|
|
3011
3531
|
homepage: "Сайт",
|
|
3012
3532
|
installedV: "Установлено · v{{version}}",
|
|
@@ -3022,10 +3542,19 @@ const ru = {
|
|
|
3022
3542
|
purgeSampleData: 'Удалить демоданные',
|
|
3023
3543
|
purgeConfirm: 'Удалить все демонстрационные записи, созданные этим пакетом? Записи, добавленные пользователем, НЕ будут затронуты.',
|
|
3024
3544
|
purgeSuccess: 'Удалено демонстрационных записей: {{count}}.',
|
|
3545
|
+
purgeSuccess_one: 'Удалено демонстрационных записей: {{count}}.',
|
|
3546
|
+
purgeSuccess_few: 'Удалено демонстрационных записей: {{count}}.',
|
|
3547
|
+
purgeSuccess_many: 'Удалено демонстрационных записей: {{count}}.',
|
|
3548
|
+
purgeSuccess_other: 'Удалено демонстрационных записей: {{count}}.',
|
|
3025
3549
|
purgeNoData: 'Демонстрационные записи для удаления не найдены.',
|
|
3026
3550
|
reseedQueued: 'Демоданные будут перезагружены при следующем доступе к среде.',
|
|
3027
3551
|
reseedLocalSuccess: 'Демоданные перезагружены: добавлено {{inserted}}, обновлено {{updated}}.',
|
|
3028
3552
|
reseedPartialErrors: '(не удалось записать записей: {{count}})',
|
|
3553
|
+
reseedPartialErrors_one: '(не удалось записать записей: {{count}})',
|
|
3554
|
+
reseedPartialErrors_few: '(не удалось записать записей: {{count}})',
|
|
3555
|
+
reseedPartialErrors_many: '(не удалось записать записей: {{count}})',
|
|
3556
|
+
reseedPartialErrors_other: '(не удалось записать записей: {{count}})',
|
|
3557
|
+
sampleDataKernelUnavailable: 'У этой control plane нет ядра среды, поэтому здесь нельзя перезагрузить или удалить демоданные. Выполните это действие в собственном рантайме среды.',
|
|
3029
3558
|
updateAvailable: 'Доступно обновление',
|
|
3030
3559
|
},
|
|
3031
3560
|
action: {
|
|
@@ -3078,7 +3607,8 @@ const ru = {
|
|
|
3078
3607
|
reviewed: "Проверено и одобрено",
|
|
3079
3608
|
unreviewed: "Ещё не проверено",
|
|
3080
3609
|
signed: "Подписано",
|
|
3081
|
-
grantsIntro: "
|
|
3610
|
+
grantsIntro: "Пакет запрашивает:",
|
|
3611
|
+
notEnforced: "Список записывается при установке и подтверждается заново, если более поздняя версия запросит больше, но среда выполнения пока не ограничивает пакет этим списком.",
|
|
3082
3612
|
services: "Сервисы платформы",
|
|
3083
3613
|
hooks: "Хуки жизненного цикла",
|
|
3084
3614
|
network: "Доступ к сети",
|
|
@@ -3117,30 +3647,23 @@ const ru = {
|
|
|
3117
3647
|
storage: "Хранилище",
|
|
3118
3648
|
other: "Другое",
|
|
3119
3649
|
},
|
|
3120
|
-
pricing: {
|
|
3121
|
-
free: "Бесплатно",
|
|
3122
|
-
freemium: "Freemium",
|
|
3123
|
-
paid: "Платно",
|
|
3124
|
-
subscription: "Подписка",
|
|
3125
|
-
"usage-based": "По использованию",
|
|
3126
|
-
"contact-sales": "Связаться с продажами",
|
|
3127
|
-
},
|
|
3128
3650
|
relativeTime: {
|
|
3129
3651
|
today: "сегодня",
|
|
3130
3652
|
daysAgo: "{{count}} д назад",
|
|
3131
3653
|
monthsAgo: "{{count}} мес назад",
|
|
3654
|
+
monthsAgo_one: "{{count}} мес назад",
|
|
3655
|
+
monthsAgo_few: "{{count}} мес назад",
|
|
3656
|
+
monthsAgo_many: "{{count}} мес назад",
|
|
3657
|
+
monthsAgo_other: "{{count}} мес назад",
|
|
3132
3658
|
yearsAgo: "{{count}} лет назад",
|
|
3659
|
+
yearsAgo_one: "{{count}} год назад",
|
|
3660
|
+
yearsAgo_few: "{{count}} года назад",
|
|
3661
|
+
yearsAgo_many: "{{count}} лет назад",
|
|
3662
|
+
yearsAgo_other: "{{count}} года назад",
|
|
3133
3663
|
},
|
|
3134
3664
|
},
|
|
3135
|
-
approvals: {
|
|
3136
|
-
approve: 'Утвердить',
|
|
3137
|
-
reject: 'Отклонить',
|
|
3138
|
-
comment: 'Комментарий (необязательно)',
|
|
3139
|
-
approveSuccess: 'Утверждено',
|
|
3140
|
-
rejectSuccess: 'Отклонено',
|
|
3141
|
-
rejectConfirm: 'Отклонить этот запрос на согласование?',
|
|
3142
|
-
},
|
|
3143
3665
|
approvalsInbox: {
|
|
3666
|
+
recordUnresolvable: 'Эту запись невозможно открыть',
|
|
3144
3667
|
loadMore: 'Загрузить ещё',
|
|
3145
3668
|
loadingMore: 'Загрузка…',
|
|
3146
3669
|
loadedOf: 'Загружено {{loaded}} из {{total}}',
|
|
@@ -3159,6 +3682,10 @@ const ru = {
|
|
|
3159
3682
|
requestInfoSent: 'Возвращено заявителю за дополнениями',
|
|
3160
3683
|
remindBtn: 'Напомнить',
|
|
3161
3684
|
remindSuccess: 'Напоминание отправлено: {{count}}',
|
|
3685
|
+
remindSuccess_one: 'Напоминание отправлено: {{count}}',
|
|
3686
|
+
remindSuccess_few: 'Напоминание отправлено: {{count}}',
|
|
3687
|
+
remindSuccess_many: 'Напоминание отправлено: {{count}}',
|
|
3688
|
+
remindSuccess_other: 'Напоминание отправлено: {{count}}',
|
|
3162
3689
|
remindThrottled: 'Напоминание уже отправлялось недавно — попробуйте позже.',
|
|
3163
3690
|
replyPlaceholder: 'Ответить по этому запросу…',
|
|
3164
3691
|
slaRemaining: 'SLA: осталось {{dur}}',
|
|
@@ -3175,6 +3702,10 @@ const ru = {
|
|
|
3175
3702
|
progressApprovals: 'Согласования — {{got}} из {{need}}',
|
|
3176
3703
|
progressGroups: 'Ход визирования — {{got}} из {{need}} групп',
|
|
3177
3704
|
progressEligible: 'Доступных согласующих: {{count}}',
|
|
3705
|
+
progressEligible_one: 'Доступных согласующих: {{count}}',
|
|
3706
|
+
progressEligible_few: 'Доступных согласующих: {{count}}',
|
|
3707
|
+
progressEligible_many: 'Доступных согласующих: {{count}}',
|
|
3708
|
+
progressEligible_other: 'Доступных согласующих: {{count}}',
|
|
3178
3709
|
progressBar: 'Ход решения',
|
|
3179
3710
|
declaredActions: 'Действия',
|
|
3180
3711
|
attachmentChip: 'Вложение',
|
|
@@ -3206,6 +3737,10 @@ const ru = {
|
|
|
3206
3737
|
filterCount: '{{shown}} из {{total}}',
|
|
3207
3738
|
selected: 'выбрано',
|
|
3208
3739
|
actionableCount: '({{count}} доступно)',
|
|
3740
|
+
actionableCount_one: '({{count}} доступно)',
|
|
3741
|
+
actionableCount_few: '({{count}} доступно)',
|
|
3742
|
+
actionableCount_many: '({{count}} доступно)',
|
|
3743
|
+
actionableCount_other: '({{count}} доступно)',
|
|
3209
3744
|
selectAll: 'Выбрать все',
|
|
3210
3745
|
selectRow: 'Выбрать запрос',
|
|
3211
3746
|
colRequest: 'Запрос',
|
|
@@ -3246,12 +3781,19 @@ const ru = {
|
|
|
3246
3781
|
submittedAgo: 'Отправлен {{when}}',
|
|
3247
3782
|
completedAt: 'Завершён {{when}}',
|
|
3248
3783
|
waitingOn: 'Ожидает решения',
|
|
3784
|
+
approverNameSeparator: ', ',
|
|
3785
|
+
approverUnstaffed: '{{seat}} (сейчас не занята)',
|
|
3249
3786
|
history: 'История',
|
|
3250
3787
|
noActions: 'Действий пока нет.',
|
|
3251
3788
|
actSubmit: 'Отправлен',
|
|
3252
3789
|
actApprove: 'Согласован',
|
|
3253
3790
|
actReject: 'Отклонён',
|
|
3254
3791
|
actRecall: 'Отозван',
|
|
3792
|
+
overrideActionLabel: '{{action}} (по праву администратора)',
|
|
3793
|
+
overrideNotice: 'У вас нет места согласующего на этом шаге. Продолжив, вы воспользуетесь правом администратора: шаг будет немедленно завершён, а все согласующие, ещё не принявшие решение, будут пропущены. Решение будет записано как административное переопределение.',
|
|
3794
|
+
overrideNoticeWho: 'У вас нет места согласующего на этом шаге. Продолжив, вы воспользуетесь правом администратора: шаг будет немедленно завершён, а согласующие, ещё не принявшие решение, будут пропущены — {{who}}. Решение будет записано как административное переопределение.',
|
|
3795
|
+
viaOverrideChip: 'Переопределение администратора',
|
|
3796
|
+
viaOverrideHint: 'У исполнителя не было места согласующего на этом шаге — допущен по пути административного переопределения.',
|
|
3255
3797
|
rawData: 'Исходные данные (JSON)',
|
|
3256
3798
|
copy: 'Копировать',
|
|
3257
3799
|
copied: 'Скопировано',
|
|
@@ -3272,11 +3814,27 @@ const ru = {
|
|
|
3272
3814
|
approveN: 'Согласовать {{count}}',
|
|
3273
3815
|
rejectN: 'Отклонить {{count}}',
|
|
3274
3816
|
bulkApproveTitle: 'Согласовать {{count}} запросов?',
|
|
3817
|
+
bulkApproveTitle_one: 'Согласовать {{count}} запрос?',
|
|
3818
|
+
bulkApproveTitle_few: 'Согласовать {{count}} запроса?',
|
|
3819
|
+
bulkApproveTitle_many: 'Согласовать {{count}} запросов?',
|
|
3820
|
+
bulkApproveTitle_other: 'Согласовать {{count}} запроса?',
|
|
3275
3821
|
bulkApproveBody: 'Каждый запрос согласуется от вашего имени, и поток продолжится по ветке согласования.',
|
|
3276
3822
|
bulkRejectTitle: 'Отклонить {{count}} запросов?',
|
|
3823
|
+
bulkRejectTitle_one: 'Отклонить {{count}} запрос?',
|
|
3824
|
+
bulkRejectTitle_few: 'Отклонить {{count}} запроса?',
|
|
3825
|
+
bulkRejectTitle_many: 'Отклонить {{count}} запросов?',
|
|
3826
|
+
bulkRejectTitle_other: 'Отклонить {{count}} запроса?',
|
|
3277
3827
|
bulkRejectBody: 'Выбранные запросы будут отклонены, заявители получат уведомления.',
|
|
3278
3828
|
bulkApproved: 'Согласовано запросов: {{count}}',
|
|
3829
|
+
bulkApproved_one: 'Согласовано запросов: {{count}}',
|
|
3830
|
+
bulkApproved_few: 'Согласовано запросов: {{count}}',
|
|
3831
|
+
bulkApproved_many: 'Согласовано запросов: {{count}}',
|
|
3832
|
+
bulkApproved_other: 'Согласовано запросов: {{count}}',
|
|
3279
3833
|
bulkRejected: 'Отклонено запросов: {{count}}',
|
|
3834
|
+
bulkRejected_one: 'Отклонено запросов: {{count}}',
|
|
3835
|
+
bulkRejected_few: 'Отклонено запросов: {{count}}',
|
|
3836
|
+
bulkRejected_many: 'Отклонено запросов: {{count}}',
|
|
3837
|
+
bulkRejected_other: 'Отклонено запросов: {{count}}',
|
|
3280
3838
|
bulkPartial: 'Успешно: {{ok}}, с ошибкой: {{fail}}: {{which}}',
|
|
3281
3839
|
rejectOneTitle: 'Отклонить «{{title}}»?',
|
|
3282
3840
|
rejectOneBody: 'Запрос будет отклонён, заявитель получит уведомление.',
|
|
@@ -3301,8 +3859,20 @@ const ru = {
|
|
|
3301
3859
|
alreadyDecided: 'Этот запрос уже обработан. Обновите список.',
|
|
3302
3860
|
justNow: 'только что',
|
|
3303
3861
|
minutesAgo: '{{count}} мин назад',
|
|
3862
|
+
minutesAgo_one: '{{count}} мин назад',
|
|
3863
|
+
minutesAgo_few: '{{count}} мин назад',
|
|
3864
|
+
minutesAgo_many: '{{count}} мин назад',
|
|
3865
|
+
minutesAgo_other: '{{count}} мин назад',
|
|
3304
3866
|
hoursAgo: '{{count}} ч назад',
|
|
3867
|
+
hoursAgo_one: '{{count}} ч назад',
|
|
3868
|
+
hoursAgo_few: '{{count}} ч назад',
|
|
3869
|
+
hoursAgo_many: '{{count}} ч назад',
|
|
3870
|
+
hoursAgo_other: '{{count}} ч назад',
|
|
3305
3871
|
daysAgo: '{{count}} дн назад',
|
|
3872
|
+
daysAgo_one: '{{count}} дн назад',
|
|
3873
|
+
daysAgo_few: '{{count}} дн назад',
|
|
3874
|
+
daysAgo_many: '{{count}} дн назад',
|
|
3875
|
+
daysAgo_other: '{{count}} дн назад',
|
|
3306
3876
|
},
|
|
3307
3877
|
preview: {
|
|
3308
3878
|
empty: {
|
|
@@ -3337,7 +3907,20 @@ const ru = {
|
|
|
3337
3907
|
detailNone: 'Различий не обнаружено — черновик совпадает с опубликованной версией.',
|
|
3338
3908
|
detailChangedKeys: 'Также изменено:',
|
|
3339
3909
|
confirmNote: 'Публикация атомарно выпускает все {{count}} ожидающих черновиков этого пакета.',
|
|
3910
|
+
confirmNote_one: 'Публикация атомарно выпускает {{count}} ожидающий черновик этого пакета.',
|
|
3911
|
+
confirmNote_few: 'Публикация атомарно выпускает все {{count}} ожидающих черновика этого пакета.',
|
|
3912
|
+
confirmNote_many: 'Публикация атомарно выпускает все {{count}} ожидающих черновиков этого пакета.',
|
|
3913
|
+
confirmNote_other: 'Публикация атомарно выпускает {{count}} ожидающего черновика этого пакета.',
|
|
3340
3914
|
publishConfirm: 'Опубликовать всё',
|
|
3915
|
+
// [`7a90afdf9`] Pre-publish security-posture findings, shown next to
|
|
3916
|
+
// the confirm button so a refusal the door would issue is read BEFORE
|
|
3917
|
+
// the click rather than as a toast after the batch rolled back.
|
|
3918
|
+
securityBlockTitle: 'Публикация будет отклонена — {{count}} элемент(ов) требуют решения',
|
|
3919
|
+
securityBlockTitle_one: 'Публикация будет отклонена — {{count}} элемент требует решения',
|
|
3920
|
+
securityBlockTitle_few: 'Публикация будет отклонена — {{count}} элемента требуют решения',
|
|
3921
|
+
securityBlockTitle_many: 'Публикация будет отклонена — {{count}} элементов требуют решения',
|
|
3922
|
+
securityBlockTitle_other: 'Публикация будет отклонена — {{count}} элемента требуют решения',
|
|
3923
|
+
securityBlockWhere: 'Исправьте это в объекте в разделе «Настройки → Общий доступ к записям» и опубликуйте снова.',
|
|
3341
3924
|
},
|
|
3342
3925
|
// ADR-0045 — the materialized-but-unlisted app banner
|
|
3343
3926
|
// (UnpublishedAppBar.tsx), sibling of draftBar above.
|
|
@@ -3361,7 +3944,7 @@ const ru = {
|
|
|
3361
3944
|
revertLabel: 'Изменение отменено',
|
|
3362
3945
|
applyLabel: 'Изменение сборки',
|
|
3363
3946
|
revert: 'отмена',
|
|
3364
|
-
items: '
|
|
3947
|
+
items: 'Элементов: {{count}}',
|
|
3365
3948
|
revertAction: 'Отменить',
|
|
3366
3949
|
reverted: 'Отменено — изменение возвращено.',
|
|
3367
3950
|
revertFailed: 'Не удалось отменить',
|
|
@@ -3384,22 +3967,33 @@ const ru = {
|
|
|
3384
3967
|
noResults: "Нет результатов",
|
|
3385
3968
|
searchField: "Поиск {{label}}…",
|
|
3386
3969
|
enterId: "Введите ID {{label}}",
|
|
3970
|
+
addValue: "Введите значение и нажмите Enter",
|
|
3971
|
+
removeValue: "Удалить {{value}}",
|
|
3972
|
+
rangeStart: "От",
|
|
3973
|
+
rangeEnd: "До",
|
|
3387
3974
|
operators: {
|
|
3388
3975
|
equals: "Равно",
|
|
3389
|
-
|
|
3976
|
+
not_equals: "Не равно",
|
|
3390
3977
|
contains: "Содержит",
|
|
3391
|
-
|
|
3392
|
-
|
|
3393
|
-
|
|
3394
|
-
|
|
3395
|
-
|
|
3396
|
-
|
|
3397
|
-
|
|
3978
|
+
icontains: "Содержит (без учёта регистра)",
|
|
3979
|
+
not_contains: "Не содержит",
|
|
3980
|
+
is_empty: "Пусто",
|
|
3981
|
+
is_not_empty: "Не пусто",
|
|
3982
|
+
greater_than: "Больше",
|
|
3983
|
+
less_than: "Меньше",
|
|
3984
|
+
greater_than_or_equal: "Больше или равно",
|
|
3985
|
+
less_than_or_equal: "Меньше или равно",
|
|
3398
3986
|
before: "До",
|
|
3399
3987
|
after: "После",
|
|
3400
3988
|
between: "Между",
|
|
3401
3989
|
in: "В списке",
|
|
3402
|
-
|
|
3990
|
+
not_in: "Не в списке",
|
|
3991
|
+
starts_with: "Начинается с",
|
|
3992
|
+
ends_with: "Заканчивается на",
|
|
3993
|
+
is_null: "Равно null",
|
|
3994
|
+
is_not_null: "Не равно null",
|
|
3995
|
+
exists: "Задано",
|
|
3996
|
+
notExists: "Не задано",
|
|
3403
3997
|
},
|
|
3404
3998
|
},
|
|
3405
3999
|
sortBuilder: {
|
|
@@ -3413,7 +4007,10 @@ const ru = {
|
|
|
3413
4007
|
},
|
|
3414
4008
|
collaboration: {
|
|
3415
4009
|
commentCount: "Комментариев: {{count}}",
|
|
3416
|
-
|
|
4010
|
+
commentCount_one: "{{count}} комментарий",
|
|
4011
|
+
commentCount_few: "{{count}} комментария",
|
|
4012
|
+
commentCount_many: "{{count}} комментариев",
|
|
4013
|
+
commentCount_other: "{{count}} комментария",
|
|
3417
4014
|
resolvedSuffix: " · Решено",
|
|
3418
4015
|
sortComments: "Сортировка комментариев",
|
|
3419
4016
|
sortOldest: "Сначала старые",
|
|
@@ -3422,11 +4019,26 @@ const ru = {
|
|
|
3422
4019
|
reopen: "Открыть заново",
|
|
3423
4020
|
justNow: "только что",
|
|
3424
4021
|
minutesAgo: "{{count}} мин назад",
|
|
4022
|
+
minutesAgo_one: "{{count}} мин назад",
|
|
4023
|
+
minutesAgo_few: "{{count}} мин назад",
|
|
4024
|
+
minutesAgo_many: "{{count}} мин назад",
|
|
4025
|
+
minutesAgo_other: "{{count}} мин назад",
|
|
3425
4026
|
hoursAgo: "{{count}} ч назад",
|
|
4027
|
+
hoursAgo_one: "{{count}} ч назад",
|
|
4028
|
+
hoursAgo_few: "{{count}} ч назад",
|
|
4029
|
+
hoursAgo_many: "{{count}} ч назад",
|
|
4030
|
+
hoursAgo_other: "{{count}} ч назад",
|
|
3426
4031
|
daysAgo: "{{count}} д назад",
|
|
4032
|
+
daysAgo_one: "{{count}} д назад",
|
|
4033
|
+
daysAgo_few: "{{count}} д назад",
|
|
4034
|
+
daysAgo_many: "{{count}} д назад",
|
|
4035
|
+
daysAgo_other: "{{count}} д назад",
|
|
3427
4036
|
edited: "(изменено)",
|
|
3428
4037
|
reactionCount: "Реакций: {{count}}",
|
|
3429
|
-
|
|
4038
|
+
reactionCount_one: "{{count}} реакция",
|
|
4039
|
+
reactionCount_few: "{{count}} реакции",
|
|
4040
|
+
reactionCount_many: "{{count}} реакций",
|
|
4041
|
+
reactionCount_other: "{{count}} реакции",
|
|
3430
4042
|
addThumbsUp: "Поставить лайк",
|
|
3431
4043
|
reply: "Ответить",
|
|
3432
4044
|
reactThumbsUp: "Отреагировать лайком",
|
|
@@ -3437,9 +4049,15 @@ const ru = {
|
|
|
3437
4049
|
commentPlaceholder: "Добавьте комментарий… (@ — упоминание)",
|
|
3438
4050
|
send: "Отправить",
|
|
3439
4051
|
presentUserCount: "Присутствует пользователей: {{count}}",
|
|
3440
|
-
|
|
4052
|
+
presentUserCount_one: "Присутствует {{count}} пользователь",
|
|
4053
|
+
presentUserCount_few: "Присутствуют {{count}} пользователя",
|
|
4054
|
+
presentUserCount_many: "Присутствует {{count}} пользователей",
|
|
4055
|
+
presentUserCount_other: "Присутствует {{count}} пользователя",
|
|
3441
4056
|
moreUserCount: "Ещё пользователей: {{count}}",
|
|
3442
|
-
|
|
4057
|
+
moreUserCount_one: "Ещё {{count}} пользователь",
|
|
4058
|
+
moreUserCount_few: "Ещё {{count}} пользователя",
|
|
4059
|
+
moreUserCount_many: "Ещё {{count}} пользователей",
|
|
4060
|
+
moreUserCount_other: "Ещё {{count}} пользователя",
|
|
3443
4061
|
userStatusTitle: "{{name}} ({{status}})",
|
|
3444
4062
|
statusActive: "активен",
|
|
3445
4063
|
statusIdle: "бездействует",
|
|
@@ -3447,6 +4065,18 @@ const ru = {
|
|
|
3447
4065
|
},
|
|
3448
4066
|
wizard: {
|
|
3449
4067
|
missingRequired: "Заполните обязательные поля: {{fields}}",
|
|
4068
|
+
back: "Назад",
|
|
4069
|
+
submitting: "Отправка…",
|
|
4070
|
+
stepFallback: "Шаг {{n}}",
|
|
4071
|
+
progressLabel: "Прогресс",
|
|
4072
|
+
emptyStep: "Для этого шага не настроены поля",
|
|
4073
|
+
},
|
|
4074
|
+
flowRunner: {
|
|
4075
|
+
title: 'Ввод',
|
|
4076
|
+
submitting: 'Отправка…',
|
|
4077
|
+
saveAndContinue: 'Сохранить и продолжить',
|
|
4078
|
+
nextStep: 'Сохранено — следующий шаг',
|
|
4079
|
+
completed: 'Поток «{{flow}}» завершён',
|
|
3450
4080
|
},
|
|
3451
4081
|
appManagement: {
|
|
3452
4082
|
title: "Приложения",
|
|
@@ -3497,5 +4127,49 @@ const ru = {
|
|
|
3497
4127
|
bulkOperationFailed: "Массовая операция не выполнена: {{reason}}",
|
|
3498
4128
|
},
|
|
3499
4129
|
},
|
|
4130
|
+
// objectui#6301 — Настройка › Автоматизация из пакетов (ADR-0126 §7.4).
|
|
4131
|
+
// Терминология пакета: `common.package` = Пакет, `flowRunner.completed` =
|
|
4132
|
+
// Поток, кавычки «…». ⛔ Никаких формулировок о происхождении или
|
|
4133
|
+
// расхождении в этой группе (§9).
|
|
4134
|
+
packagedAutomation: {
|
|
4135
|
+
title: "Автоматизация из пакетов",
|
|
4136
|
+
subtitle: "Потоки и действия, поставляемые установленными пакетами. Отключите любой из них в этой установке или клонируйте поток под новым именем, чтобы настроить. Редактирование — в Studio.",
|
|
4137
|
+
refresh: "Обновить",
|
|
4138
|
+
flowsHeading: "Потоки из пакетов",
|
|
4139
|
+
actionsHeading: "Действия из пакетов",
|
|
4140
|
+
colFlow: "Поток",
|
|
4141
|
+
colActivation: "Активация",
|
|
4142
|
+
colActions: "Действия",
|
|
4143
|
+
toggleLabel: "Активация для {{label}}",
|
|
4144
|
+
on: "Вкл.",
|
|
4145
|
+
off: "Выкл.",
|
|
4146
|
+
clone: "Клонировать",
|
|
4147
|
+
cloneTitle: "Клонировать поток из пакета",
|
|
4148
|
+
cloneBody: "Копия сохраняет определение целиком и требует нового машинного имени и метки. Редактируйте копию в Studio.",
|
|
4149
|
+
cloneName: "Новое машинное имя",
|
|
4150
|
+
cloneLabel: "Новая метка",
|
|
4151
|
+
cancel: "Отмена",
|
|
4152
|
+
cloneConfirm: "Создать клон",
|
|
4153
|
+
cloneCreated: "Поток «{{name}}» создан.",
|
|
4154
|
+
emptyTitle: "Нет потоков из пакетов",
|
|
4155
|
+
emptyBody: "В этой установке ни один установленный пакет не поставляет поток автоматизации. Потоки, которые вы создаёте сами, находятся в Studio.",
|
|
4156
|
+
loadFailed: "Не удалось загрузить автоматизацию из пакетов.",
|
|
4157
|
+
toggleFailedHttp: "Не удалось изменить активацию (HTTP {{status}}).",
|
|
4158
|
+
toggleFailed: "Не удалось изменить активацию.",
|
|
4159
|
+
cloneFailedHttp: "Не удалось клонировать этот поток (HTTP {{status}}).",
|
|
4160
|
+
cloneFailed: "Не удалось клонировать этот поток.",
|
|
4161
|
+
actionsSubtitle: "Действия, поставляемые установленными пакетами. Отключите действие в этой установке — и оно перестанет выполняться везде, где предлагается. Создать рядом собственное действие по-прежнему можно в Studio.",
|
|
4162
|
+
colAction: "Действие",
|
|
4163
|
+
colObject: "Объект",
|
|
4164
|
+
actionToggleLabel: "Активация для {{label}} на {{object}}",
|
|
4165
|
+
actionsEmptyTitle: "Нет действий из пакетов",
|
|
4166
|
+
actionsEmptyBody: "В этой установке ни один установленный пакет не объявляет действие. Действия, которые вы создаёте сами, находятся в Studio.",
|
|
4167
|
+
actionsLoadFailed: "Не удалось загрузить действия из пакетов.",
|
|
4168
|
+
},
|
|
4169
|
+
element: {
|
|
4170
|
+
number: {
|
|
4171
|
+
noObject: "Объект не указан: задайте object или dataSource.object.",
|
|
4172
|
+
},
|
|
4173
|
+
},
|
|
3500
4174
|
};
|
|
3501
4175
|
export default ru;
|