@object-ui/i18n 16.1.0 → 17.2.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 +1197 -0
- package/dist/locales/ar.d.ts +841 -2
- package/dist/locales/ar.js +846 -5
- package/dist/locales/de.d.ts +839 -2
- package/dist/locales/de.js +844 -5
- package/dist/locales/en.d.ts +396 -6
- package/dist/locales/en.js +413 -8
- package/dist/locales/es.d.ts +839 -2
- package/dist/locales/es.js +844 -5
- package/dist/locales/fr.d.ts +841 -2
- package/dist/locales/fr.js +846 -5
- package/dist/locales/index.d.ts +7433 -27
- package/dist/locales/ja.d.ts +839 -2
- package/dist/locales/ja.js +844 -5
- package/dist/locales/ko.d.ts +839 -2
- package/dist/locales/ko.js +844 -5
- package/dist/locales/pt.d.ts +841 -2
- package/dist/locales/pt.js +846 -5
- package/dist/locales/ru.d.ts +841 -2
- package/dist/locales/ru.js +846 -5
- package/dist/locales/zh.d.ts +317 -5
- package/dist/locales/zh.js +319 -5
- package/dist/useObjectLabel.d.ts +24 -12
- package/dist/useObjectLabel.js +71 -45
- package/dist/useSafeTranslation.d.ts +2 -0
- package/dist/useSafeTranslation.js +7 -2
- package/package.json +3 -3
package/dist/locales/ru.js
CHANGED
|
@@ -1,6 +1,15 @@
|
|
|
1
1
|
const ru = {
|
|
2
2
|
// objectui#2600 B5 — capability picker scope group headers (labels come from the sys_capability registry).
|
|
3
3
|
capability: {
|
|
4
|
+
label: {
|
|
5
|
+
manage_users: "Управление пользователями",
|
|
6
|
+
manage_org_users: "Управление пользователями организации",
|
|
7
|
+
manage_metadata: "Управление метаданными",
|
|
8
|
+
manage_platform_settings: "Управление настройками платформы",
|
|
9
|
+
setup_access: "Доступ к настройке",
|
|
10
|
+
setup_write: "Запись настроек",
|
|
11
|
+
studio_access: "Доступ к Studio",
|
|
12
|
+
},
|
|
4
13
|
group: {
|
|
5
14
|
platform: 'Платформа',
|
|
6
15
|
org: 'Организация',
|
|
@@ -74,6 +83,10 @@ const ru = {
|
|
|
74
83
|
package: "Пакет",
|
|
75
84
|
},
|
|
76
85
|
actions: {
|
|
86
|
+
decisionOutput: {
|
|
87
|
+
help: 'Передаётся в поток как результат решения.',
|
|
88
|
+
helpMultiValue: 'Передаётся в поток как результат решения. Несколько значений разделяйте запятыми.',
|
|
89
|
+
},
|
|
77
90
|
resultDialog: {
|
|
78
91
|
defaultTitle: 'Сохраните это значение сейчас',
|
|
79
92
|
acknowledge: 'Я сохранил(а) это',
|
|
@@ -94,6 +107,16 @@ const ru = {
|
|
|
94
107
|
type: "{{field}} должно быть допустимым {{type}}",
|
|
95
108
|
},
|
|
96
109
|
form: {
|
|
110
|
+
noPermissionToSave: "У вас нет прав на сохранение этой записи.",
|
|
111
|
+
submitFailed: "Не удалось сохранить. Попробуйте ещё раз.",
|
|
112
|
+
discardTitle: "Отменить изменения?",
|
|
113
|
+
discardMessage: "Есть несохранённые изменения. Если закрыть форму сейчас, правки будут потеряны.",
|
|
114
|
+
keepEditing: "Продолжить редактирование",
|
|
115
|
+
discard: "Отменить",
|
|
116
|
+
conflictTitle: "Конфликт сохранения",
|
|
117
|
+
conflictMessage: "Пока вы редактировали, эту запись изменил другой пользователь. Перезапись заменит его изменения вашими.",
|
|
118
|
+
conflictLatestVersion: "Его сохранение: {{time}}",
|
|
119
|
+
conflictOverwrite: "Перезаписать",
|
|
97
120
|
addItem: "Добавить элемент",
|
|
98
121
|
removeItem: "Удалить элемент",
|
|
99
122
|
fieldRequired: "Это поле обязательно",
|
|
@@ -104,8 +127,6 @@ const ru = {
|
|
|
104
127
|
stepOf: "Шаг {{current}} из {{total}}",
|
|
105
128
|
createTitle: "Создать {{object}}",
|
|
106
129
|
editTitle: "Редактировать {{object}}",
|
|
107
|
-
createDescription: "Добавить новый {{object}} в базу данных.",
|
|
108
|
-
editDescription: "Обновить данные {{object}}",
|
|
109
130
|
saveRecord: "Сохранить запись",
|
|
110
131
|
create: "Создать",
|
|
111
132
|
update: "Обновить",
|
|
@@ -114,14 +135,70 @@ const ru = {
|
|
|
114
135
|
deleteSuccess: "{{object}} удалён",
|
|
115
136
|
},
|
|
116
137
|
fields: {
|
|
138
|
+
image: {
|
|
139
|
+
upload: "Загрузить изображение",
|
|
140
|
+
addMore: "Добавить ещё изображения",
|
|
141
|
+
uploading: "Загрузка…",
|
|
142
|
+
imageAlt: "Изображение {{index}}",
|
|
143
|
+
crop: "Обрезать изображение {{index}}",
|
|
144
|
+
remove: "Удалить изображение {{index}}",
|
|
145
|
+
enlarge: "Увеличить {{name}}",
|
|
146
|
+
preview: "Предпросмотр изображения",
|
|
147
|
+
previous: "Предыдущее изображение",
|
|
148
|
+
next: "Следующее изображение",
|
|
149
|
+
counter: "{{current}} / {{total}}",
|
|
150
|
+
},
|
|
117
151
|
relativeDate: {
|
|
118
152
|
overdue: "Просрочено на {{count}} дн.",
|
|
119
153
|
},
|
|
154
|
+
file: {
|
|
155
|
+
dragDropHere: 'Перетащите файлы сюда',
|
|
156
|
+
dropFilesHere: 'Отпустите файлы здесь',
|
|
157
|
+
browseHint: 'или нажмите для выбора',
|
|
158
|
+
browseHintCamera: 'или нажмите для выбора • используйте кнопку камеры ниже',
|
|
159
|
+
takePhoto: 'Сделать фото',
|
|
160
|
+
takeSelfie: 'Сделать селфи',
|
|
161
|
+
cameraCapture: 'Съёмка камерой',
|
|
162
|
+
uploading: 'Загрузка…',
|
|
163
|
+
uploadingPct: 'Загрузка… ({{pct}} %)',
|
|
164
|
+
fileFallback: 'Файл',
|
|
165
|
+
upload: 'Загрузить',
|
|
166
|
+
remove: 'Удалить {{name}}',
|
|
167
|
+
exceedsMaxSize: '«{{name}}» превышает максимальный размер ({{max}} МБ)',
|
|
168
|
+
uploadFailed: 'Не удалось загрузить «{{name}}»: {{error}}',
|
|
169
|
+
},
|
|
120
170
|
richText: {
|
|
121
171
|
format: "Формат: {{format}}",
|
|
122
172
|
basicEditorHint: "Редактор форматированного текста (базовый)",
|
|
123
173
|
placeholder: "Введите текст...",
|
|
124
174
|
},
|
|
175
|
+
objectRef: {
|
|
176
|
+
loading: "Загрузка объектов…",
|
|
177
|
+
placeholder: "Выберите объект",
|
|
178
|
+
search: "Поиск объектов…",
|
|
179
|
+
empty: "Объекты не найдены",
|
|
180
|
+
},
|
|
181
|
+
recipient: {
|
|
182
|
+
selectTypeFirst: "Сначала выберите тип получателя.",
|
|
183
|
+
loading: "Загрузка…",
|
|
184
|
+
search: "Поиск…",
|
|
185
|
+
empty: "Совпадений нет",
|
|
186
|
+
select: "Выберите получателя",
|
|
187
|
+
selectUser: "Выберите пользователя",
|
|
188
|
+
selectTeam: "Выберите команду",
|
|
189
|
+
selectBusinessUnit: "Выберите бизнес-подразделение",
|
|
190
|
+
selectPosition: "Выберите должность",
|
|
191
|
+
selectUnitAndSubordinates: "Выберите бизнес-подразделение",
|
|
192
|
+
},
|
|
193
|
+
filterCondition: {
|
|
194
|
+
selectObjectFirst: "Сначала выберите объект.",
|
|
195
|
+
noCriteria: "Условия не заданы — это правило ничего не предоставляет",
|
|
196
|
+
criteriaRequired: "Добавьте хотя бы одно условие. Правило без условий предоставило бы доступ ко всем записям, поэтому его нельзя сохранить.",
|
|
197
|
+
invalidJson: "Некорректный JSON — правило не будет соответствовать ни одной записи, пока это не исправлено.",
|
|
198
|
+
jsonOnly: "Этот критерий можно редактировать только как JSON",
|
|
199
|
+
editAsJson: "Редактировать как JSON",
|
|
200
|
+
useVisualBuilder: "Использовать визуальный конструктор",
|
|
201
|
+
},
|
|
125
202
|
},
|
|
126
203
|
table: {
|
|
127
204
|
rowsPerPage: "Строк на странице",
|
|
@@ -156,6 +233,37 @@ const ru = {
|
|
|
156
233
|
delete: "Удалить",
|
|
157
234
|
},
|
|
158
235
|
grid: {
|
|
236
|
+
bulkSelected: "Выбрано: {{count}}",
|
|
237
|
+
bulkSelectedAllMatches: "Выбрано: {{count}} (все совпадения)",
|
|
238
|
+
bulkClear: "Снять выделение",
|
|
239
|
+
bulkAllOnPage: "Выбраны все {{count}} на этой странице.",
|
|
240
|
+
bulkSelectAllMatching: "Выбрать все совпадения ({{count}})",
|
|
241
|
+
bulkAllMatchingSelected: "Выбраны все подходящие записи ({{count}}).",
|
|
242
|
+
bulk: {
|
|
243
|
+
confirmDefault: "Будет применено к записям: {{count}}.",
|
|
244
|
+
overLimit: "Выбрано ({{count}}) больше лимита действия ({{limit}}). Уменьшите выбор, чтобы продолжить.",
|
|
245
|
+
affectedRecords: "Затрагиваемые записи ({{count}}):",
|
|
246
|
+
skippedIneligible: '{{count}} из выбранных записей не подходят для этого действия и будут пропущены.',
|
|
247
|
+
rowFallback: "Строка {{index}}",
|
|
248
|
+
andMore: "… и ещё {{count}}",
|
|
249
|
+
processed: "Обработано {{count}} / {{total}}",
|
|
250
|
+
processedFailed: " · с ошибкой: {{count}}",
|
|
251
|
+
undonePrefix: "Отменено — ",
|
|
252
|
+
succeeded: "Успешно {{count}} / {{total}}",
|
|
253
|
+
resultFailed: " · Ошибок {{count}}",
|
|
254
|
+
retry: "Повторить",
|
|
255
|
+
downloadErrorCsv: "Скачать CSV с ошибками",
|
|
256
|
+
cancel: "Отмена",
|
|
257
|
+
back: "Назад",
|
|
258
|
+
next: "Далее",
|
|
259
|
+
run: "Выполнить",
|
|
260
|
+
running: "Выполняется…",
|
|
261
|
+
undo: "Отменить",
|
|
262
|
+
undoing: "Отмена…",
|
|
263
|
+
done: "Готово",
|
|
264
|
+
selectPlaceholder: "Выберите…",
|
|
265
|
+
loading: "Загрузка…",
|
|
266
|
+
},
|
|
159
267
|
actions: "Действия",
|
|
160
268
|
edit: "Редактировать",
|
|
161
269
|
delete: "Удалить",
|
|
@@ -181,7 +289,88 @@ const ru = {
|
|
|
181
289
|
densityCycleShortHint: "Нажмите для изменения",
|
|
182
290
|
},
|
|
183
291
|
import: {
|
|
292
|
+
downloadTemplate: "Скачать шаблон",
|
|
293
|
+
downloadTemplateHint: "Получите CSV с нужными столбцами (обязательные поля отмечены *).",
|
|
294
|
+
templateFileName: "{{object}}-import-template",
|
|
295
|
+
autoMatched: "Сопоставлено автоматически",
|
|
296
|
+
autoMatchedSummary: "Автоматически сопоставлено столбцов: {{count}} — проверьте и скорректируйте ниже.",
|
|
297
|
+
confidence: {
|
|
298
|
+
high: "Высокая точность",
|
|
299
|
+
medium: "Средняя точность",
|
|
300
|
+
low: "Низкая точность",
|
|
301
|
+
},
|
|
302
|
+
asyncQueued: "В очереди — подготовка импорта…",
|
|
303
|
+
asyncProcessing: "Импортировано {{processed}} из {{total}} строк… {{progress}} %",
|
|
304
|
+
asyncLargeHint: "Файл большой, поэтому импорт выполнится в фоновом режиме.",
|
|
305
|
+
largeSampleNotice: "Предпросмотр первых {{shown}} из {{total}} строк.",
|
|
306
|
+
cancelImport: "Отменить импорт",
|
|
307
|
+
importCancelled: "Импорт отменён",
|
|
308
|
+
resultsTruncated: "Показаны результаты первых {{count}} строк (из {{total}}).",
|
|
309
|
+
createdCount: "Создано: {{count}}",
|
|
310
|
+
updatedCount: "Обновлено: {{count}}",
|
|
311
|
+
downloadFailed: "Скачать строки с ошибками",
|
|
312
|
+
options: "Параметры импорта",
|
|
313
|
+
writeMode: "Если строка совпадает с существующей записью",
|
|
314
|
+
writeModeOpt: {
|
|
315
|
+
insert: "Всегда создавать новую",
|
|
316
|
+
update: "Обновлять существующую (пропускать без совпадения)",
|
|
317
|
+
upsert: "Обновлять при совпадении, иначе создавать",
|
|
318
|
+
},
|
|
319
|
+
matchFields: "Сопоставлять по",
|
|
320
|
+
matchFieldsPlaceholder: "Выберите поля для сопоставления…",
|
|
321
|
+
matchFieldsHint: "Строки сопоставляются с существующими записями по этим полям.",
|
|
322
|
+
needMatchFields: "Выберите хотя бы одно поле для сопоставления.",
|
|
323
|
+
matchOnlyField: "(только сопоставление)",
|
|
324
|
+
optCreateOptions: "Сохранять неизвестные значения списка",
|
|
325
|
+
optRunAutomations: "Выполнять автоматизации и триггеры",
|
|
326
|
+
optTreatHistorical: "Импортировать как исторические данные",
|
|
327
|
+
optTreatHistoricalHint: "(импортирует завершённые записи как есть — пропускает проверки конечного автомата и сохраняет исходные отметки времени и автора вместо текущих)",
|
|
328
|
+
optSkipBlankKey: "Пропускать строки с пустым значением сопоставления",
|
|
329
|
+
optBackground: "Импортировать в фоновом режиме",
|
|
330
|
+
optBackgroundHint: "(выполняется как отменяемая задача)",
|
|
331
|
+
validate: "Проверить данные",
|
|
332
|
+
validating: "Проверка…",
|
|
333
|
+
validateHint: "Проверить каждую строку на сервере перед импортом.",
|
|
334
|
+
validatePassed: "Все строки ({{ok}}) корректны.",
|
|
335
|
+
validateFailed: "Корректных: {{ok}}, с ошибками: {{errors}}.",
|
|
336
|
+
errorRowPrefix: "Строка {{row}}: ",
|
|
337
|
+
referenceNotFound: "Нет записи, соответствующей «{{value}}»",
|
|
338
|
+
referenceAmbiguous: "«{{value}}» соответствует нескольким записям — используйте уникальное значение или идентификатор записи",
|
|
339
|
+
invalidBoolean: "«{{value}}» не является допустимым значением true/false",
|
|
340
|
+
invalidNumber: "«{{value}}» не является допустимым числом",
|
|
341
|
+
invalidDate: "«{{value}}» не является допустимой датой",
|
|
342
|
+
invalidOption: "«{{value}}» не входит в число допустимых вариантов",
|
|
343
|
+
requiredValue: "Это поле обязательно",
|
|
344
|
+
matchAmbiguous: "Соответствует нескольким существующим записям — используйте уникальное значение или идентификатор записи",
|
|
345
|
+
history: "История",
|
|
346
|
+
historyBack: "Назад к импорту",
|
|
347
|
+
historyDescription: "Недавние импорты для этого объекта.",
|
|
348
|
+
historyHint: "Фоновые задачи импорта, сначала новые.",
|
|
349
|
+
historyRefresh: "Обновить",
|
|
350
|
+
historyLoading: "Загрузка…",
|
|
351
|
+
historyEmpty: "Импортов пока нет.",
|
|
352
|
+
historyUnsupported: "Для этого источника данных история импорта недоступна.",
|
|
353
|
+
historyColStatus: "Статус",
|
|
354
|
+
historyColRows: "Строк",
|
|
355
|
+
historyColResult: "Результат",
|
|
356
|
+
historyColTime: "Когда",
|
|
357
|
+
errorCount: "Ошибок: {{count}}",
|
|
358
|
+
undoImport: "Отменить импорт",
|
|
359
|
+
undoing: "Отмена…",
|
|
360
|
+
undoConfirm: "Отменить этот импорт? Созданные им записи будут удалены, а обновлённые — восстановлены к прежним значениям.",
|
|
361
|
+
reverted: "Отменён",
|
|
362
|
+
jobStatus: {
|
|
363
|
+
pending: "Ожидает",
|
|
364
|
+
running: "Выполняется",
|
|
365
|
+
succeeded: "Успешно",
|
|
366
|
+
failed: "Ошибка",
|
|
367
|
+
cancelled: "Отменено",
|
|
368
|
+
},
|
|
369
|
+
legacyReferenceBlocked: "Импорт заблокирован: {{fields}} — поля связи, которым нужен серверный маршрут импорта для преобразования имён в идентификаторы записей, а это подключение его не поддерживает. Импорт в виде обычного текста повредит данные. Обновите бэкенд/клиент либо снимите сопоставление этих столбцов и импортируйте их отдельно.",
|
|
370
|
+
missingRequiredHint: "Продолжение невозможно — не сопоставлены обязательные поля: {{fields}}. Добавьте соответствующий столбец в файл или вернитесь и загрузите файл, где он есть.",
|
|
371
|
+
legacyFallbackNotice: "Импортировано через режим совместимости: это подключение не поддерживает серверный маршрут импорта, поэтому значения сохранены как текст без приведения типов на сервере. Обновите бэкенд/клиент для полноценного импорта (приведение типов и поиск связей).",
|
|
184
372
|
title: "Импорт {{object}}",
|
|
373
|
+
notAllowed: "Этот объект не открыт для импорта.",
|
|
185
374
|
stepUpload: "Загрузка",
|
|
186
375
|
stepMapping: "Сопоставление",
|
|
187
376
|
stepPreview: "Предпросмотр",
|
|
@@ -257,6 +446,42 @@ const ru = {
|
|
|
257
446
|
moreEvents: "+{{count}} ещё",
|
|
258
447
|
},
|
|
259
448
|
list: {
|
|
449
|
+
firstRunTitle: "Здесь пока пусто",
|
|
450
|
+
firstRunMessage: "Создайте первую запись, чтобы начать.",
|
|
451
|
+
noMatches: "Подходящих записей нет",
|
|
452
|
+
noMatchesMessage: "Ни одна запись не соответствует текущим фильтрам или поиску. Измените или сбросьте их.",
|
|
453
|
+
loadErrorTitle: "Не удалось загрузить записи",
|
|
454
|
+
loadErrorMessage: "При загрузке данных произошла ошибка. Проверьте соединение и попробуйте снова.",
|
|
455
|
+
loadErrorForbiddenTitle: "Нет доступа",
|
|
456
|
+
loadErrorForbiddenMessage: "У вас нет прав на просмотр этих записей. Обратитесь к администратору, если считаете, что доступ вам нужен.",
|
|
457
|
+
loadErrorUnauthorizedTitle: "Требуется вход",
|
|
458
|
+
loadErrorUnauthorizedMessage: "Сессия истекла или вы вышли из системы. Войдите снова, чтобы просмотреть эти записи.",
|
|
459
|
+
loadErrorRejectedTitle: "Запрос этого представления отклонён",
|
|
460
|
+
loadErrorRejectedMessage: "Сервер не смог обработать фильтр или параметры запроса этого представления. Обычно помогает сброс фильтров; если представление сохранено в таком виде, исправить его должен администратор.",
|
|
461
|
+
retry: "Повторить",
|
|
462
|
+
managedBy: {
|
|
463
|
+
system: {
|
|
464
|
+
title: "Здесь пока пусто",
|
|
465
|
+
message: "Записи появляются автоматически при выполнении исходного действия (например, «Отправить на согласование», «Поделиться», «Пригласить»). Запустите одно из них на исходной записи, чтобы создать строку.",
|
|
466
|
+
},
|
|
467
|
+
appendOnly: {
|
|
468
|
+
title: "События не зафиксированы",
|
|
469
|
+
message: "Это неизменяемый журнал аудита. Строки записывает платформа при наступлении событий — историю можно выгрузить, но создавать записи отсюда нельзя.",
|
|
470
|
+
},
|
|
471
|
+
betterAuth: {
|
|
472
|
+
title: "Записей identity нет",
|
|
473
|
+
message: "Эти записи создаёт поставщик аутентификации — при входе, подготовке учётных записей и в процессах безопасности, — а не добавляются здесь вручную.",
|
|
474
|
+
},
|
|
475
|
+
betterAuthUser: {
|
|
476
|
+
title: "Пользователей пока нет",
|
|
477
|
+
message: "Учётные записи создаёт поставщик аутентификации, а не эта страница. Пригласите коллег в организацию — они появятся автоматически при первом входе (JIT-подготовка через SSO). Конечные пользователи приложения добавляются, когда регистрируются в нём сами.",
|
|
478
|
+
},
|
|
479
|
+
betterAuthTeam: {
|
|
480
|
+
title: "Команд пока нет",
|
|
481
|
+
message: "Команды объединяют участников внутри организации. Создайте команду кнопкой «Создать команду» либо они появятся через процессы подготовки организаций и SSO вашего поставщика аутентификации.",
|
|
482
|
+
},
|
|
483
|
+
},
|
|
484
|
+
refresh: "Обновить",
|
|
260
485
|
loading: 'Loading records...',
|
|
261
486
|
recordCount: "{{count}} записей",
|
|
262
487
|
recordCountOne: "{{count}} запись",
|
|
@@ -268,6 +493,8 @@ const ru = {
|
|
|
268
493
|
filterRecords: "Фильтр записей",
|
|
269
494
|
sort: "Сортировка",
|
|
270
495
|
sortRecords: "Сортировка записей",
|
|
496
|
+
sortByIdSuffix: "(по ID)",
|
|
497
|
+
sortRelationalHint: "Столбцы, ссылающиеся на другую запись, здесь не показаны: их можно сортировать только по сохранённому ID, а не по имени, которое видно в ячейке. Чтобы сортировать по этому имени, добавьте поле-формулу с ним.",
|
|
271
498
|
group: "Группировка",
|
|
272
499
|
groupBy: "Группировать по",
|
|
273
500
|
export: "Экспорт",
|
|
@@ -297,6 +524,11 @@ const ru = {
|
|
|
297
524
|
recordEditingTitle: "Редактирование записей",
|
|
298
525
|
},
|
|
299
526
|
managedByBadge: {
|
|
527
|
+
systemWritable: {
|
|
528
|
+
short: "Схема платформы",
|
|
529
|
+
title: "Определено платформой, доступно администратору для записи",
|
|
530
|
+
body: "Схему этого объекта задаёт платформа, но строки вы создаёте и редактируете здесь сами. Кто именно может писать, определяют делегированное администрирование и безопасность на уровне записей, а не этот значок.",
|
|
531
|
+
},
|
|
300
532
|
config: {
|
|
301
533
|
short: "Конфигурация",
|
|
302
534
|
title: "Конфигурация администратора",
|
|
@@ -319,6 +551,7 @@ const ru = {
|
|
|
319
551
|
},
|
|
320
552
|
},
|
|
321
553
|
kanban: {
|
|
554
|
+
uncategorized: "Без категории",
|
|
322
555
|
addCard: "Добавить карточку",
|
|
323
556
|
addColumn: "Добавить колонку",
|
|
324
557
|
moveCard: "Переместить карточку",
|
|
@@ -340,12 +573,92 @@ const ru = {
|
|
|
340
573
|
},
|
|
341
574
|
},
|
|
342
575
|
gantt: {
|
|
576
|
+
viewMode: {
|
|
577
|
+
day: "День",
|
|
578
|
+
week: "Неделя",
|
|
579
|
+
month: "Месяц",
|
|
580
|
+
quarter: "Квартал",
|
|
581
|
+
year: "Год",
|
|
582
|
+
},
|
|
583
|
+
row: {
|
|
584
|
+
expand: "Развернуть",
|
|
585
|
+
collapse: "Свернуть",
|
|
586
|
+
open: "Открыть подробности",
|
|
587
|
+
},
|
|
588
|
+
aria: {
|
|
589
|
+
taskList: "Список задач",
|
|
590
|
+
},
|
|
591
|
+
tooltip: {
|
|
592
|
+
days: "дн",
|
|
593
|
+
},
|
|
594
|
+
menu: {
|
|
595
|
+
view: "Показать подробности",
|
|
596
|
+
edit: "Редактировать на месте",
|
|
597
|
+
delete: "Удалить",
|
|
598
|
+
addPredecessor: "Добавить предшественника…",
|
|
599
|
+
addSuccessor: "Добавить последователя…",
|
|
600
|
+
removeDependency: "Удалить зависимость",
|
|
601
|
+
noCandidates: "Нет доступных задач",
|
|
602
|
+
searchTasks: "Поиск задач…",
|
|
603
|
+
},
|
|
604
|
+
delete: {
|
|
605
|
+
title: "Удалить эту задачу?",
|
|
606
|
+
body: "«{{title}}» будет удалена безвозвратно. Это действие нельзя отменить.",
|
|
607
|
+
cancel: "Отмена",
|
|
608
|
+
confirm: "Удалить",
|
|
609
|
+
deleting: "Удаление…",
|
|
610
|
+
},
|
|
611
|
+
drawer: {
|
|
612
|
+
fallbackTitle: "Подробности задачи",
|
|
613
|
+
},
|
|
614
|
+
linkType: {
|
|
615
|
+
fs: "Окончание → Начало",
|
|
616
|
+
ss: "Начало → Начало",
|
|
617
|
+
ff: "Окончание → Окончание",
|
|
618
|
+
sf: "Начало → Окончание",
|
|
619
|
+
},
|
|
620
|
+
conflict: {
|
|
621
|
+
title: "Конфликт расписания",
|
|
622
|
+
body: "Это перемещение противоречит ограничениям зависимостей. Автоматически перепланировать затронутые задачи ({{count}})?",
|
|
623
|
+
confirm: "Перепланировать автоматически",
|
|
624
|
+
cancel: "Оставить как есть",
|
|
625
|
+
},
|
|
626
|
+
autoScheduleDlg: {
|
|
627
|
+
title: "Автопланирование",
|
|
628
|
+
body: "Сдвинуть {count} задач(и) на более поздний срок, чтобы соблюсти связи зависимостей?",
|
|
629
|
+
skipped: "{count} заблокированных задач(и) также нарушают связи и были пропущены.",
|
|
630
|
+
confirm: "Применить",
|
|
631
|
+
cancel: "Отмена",
|
|
632
|
+
none: "Все зависимости соблюдены — перепланировать нечего.",
|
|
633
|
+
},
|
|
634
|
+
resource: {
|
|
635
|
+
header: "Ресурс",
|
|
636
|
+
peak: "Пик",
|
|
637
|
+
over: "перегружен",
|
|
638
|
+
empty: "Нет задач для распределения.",
|
|
639
|
+
},
|
|
640
|
+
readOnly: "Только чтение",
|
|
641
|
+
readOnlyHint: "Редактирование в этом представлении отключено.",
|
|
642
|
+
lockedHint: "Нет прав на редактирование",
|
|
643
|
+
writeFailed: "Не удалось сохранить — изменение отменено",
|
|
343
644
|
column: {
|
|
344
645
|
taskName: "Название задачи",
|
|
345
646
|
start: "Начало",
|
|
346
647
|
end: "Конец",
|
|
347
648
|
},
|
|
348
649
|
toolbar: {
|
|
650
|
+
thisWeek: "Эта неделя",
|
|
651
|
+
thisMonth: "Этот месяц",
|
|
652
|
+
viewMode: "Детализация шкалы времени",
|
|
653
|
+
enterFullscreen: "Полноэкранный режим",
|
|
654
|
+
exitFullscreen: "Выйти из полноэкранного режима",
|
|
655
|
+
criticalPath: "Выделить критический путь",
|
|
656
|
+
autoSchedule: "Автоматически планировать зависимости",
|
|
657
|
+
exportPng: "Экспортировать в PNG",
|
|
658
|
+
exportPdf: "Экспортировать в PDF",
|
|
659
|
+
saveLayout: "Сохранить компоновку",
|
|
660
|
+
undo: "Отменить",
|
|
661
|
+
redo: "Повторить",
|
|
349
662
|
prevPeriod: "Предыдущий период",
|
|
350
663
|
nextPeriod: "Следующий период",
|
|
351
664
|
zoomIn: "Увеличить",
|
|
@@ -391,6 +704,11 @@ const ru = {
|
|
|
391
704
|
redo: 'Redo',
|
|
392
705
|
},
|
|
393
706
|
detail: {
|
|
707
|
+
editInlineHint: "Дважды щёлкните для редактирования",
|
|
708
|
+
systemActor: "Система",
|
|
709
|
+
unknownUser: "Неизвестно",
|
|
710
|
+
created: "Создано",
|
|
711
|
+
updated: "Обновлено",
|
|
394
712
|
back: "Назад",
|
|
395
713
|
edit: "Редактировать",
|
|
396
714
|
editInline: "Редактировать",
|
|
@@ -451,6 +769,18 @@ const ru = {
|
|
|
451
769
|
attachmentCount: "{{count}} вложение",
|
|
452
770
|
attachmentCountPlural: "{{count}} вложений",
|
|
453
771
|
removeAttachment: "Удалить вложение",
|
|
772
|
+
// Record Attachments panel (enable.files, objectstack#4358)
|
|
773
|
+
attachments: "Вложения",
|
|
774
|
+
uploadAttachment: "Загрузить",
|
|
775
|
+
loadingAttachments: "Загрузка вложений…",
|
|
776
|
+
noAttachments: "Вложений пока нет. Загрузите файл, чтобы начать.",
|
|
777
|
+
downloadAttachment: "Скачать",
|
|
778
|
+
deleteAttachment: "Удалить вложение",
|
|
779
|
+
attachmentDeleteDenied: "Удалить это вложение может только загрузивший его пользователь или тот, кто может редактировать эту запись.",
|
|
780
|
+
attachmentParentAccessDenied: "У вас нет доступа для прикрепления файлов к этой записи.",
|
|
781
|
+
attachmentDownloadDenied: "У вас нет доступа для скачивания этого вложения.",
|
|
782
|
+
attachmentAuthRequired: "Войдите в систему, чтобы скачать это вложение.",
|
|
783
|
+
attachmentPermissionDenied: "У вас нет разрешения на это действие.",
|
|
454
784
|
unifiedDiff: "Единое представление",
|
|
455
785
|
sideBySideDiff: "Параллельное представление",
|
|
456
786
|
noChanges: "Нет изменений",
|
|
@@ -498,9 +828,18 @@ const ru = {
|
|
|
498
828
|
saving: "Сохранение…",
|
|
499
829
|
lockedByApproval: "Заблокировано для согласования",
|
|
500
830
|
lockedTooltip: "У этой записи есть ожидающий запрос на согласование; редактирование заблокировано",
|
|
831
|
+
writeStrippedTitle: "Часть полей не сохранена",
|
|
832
|
+
writeStrippedReadonly: "Поля только для чтения, поэтому не сохранены: {{fields}}",
|
|
833
|
+
writeStrippedByState: "Поля недоступны для редактирования в текущем состоянии записи, поэтому не сохранены: {{fields}}",
|
|
834
|
+
approvalPendingEditable: "На согласовании · редактирование доступно",
|
|
835
|
+
approvalPendingTooltip: "У этой записи есть ожидающий запрос на согласование, но этот шаг всё ещё разрешает редактирование",
|
|
836
|
+
approvalProgress: "Согласования — {{got}} из {{need}}",
|
|
837
|
+
approvalProgressGroups: "Подписи — {{got}} из {{need}} групп",
|
|
838
|
+
approvalProgressLabel: "Ход согласования",
|
|
501
839
|
cancelApproval: "Отменить согласование",
|
|
502
840
|
cancelApprovalInFlight: "Отмена…",
|
|
503
841
|
cancelApprovalTooltip: "Отмените ожидающий запрос на согласование, чтобы разблокировать запись",
|
|
842
|
+
cancelApprovalTooltipUnlocked: "Отменить ожидающий запрос на согласование",
|
|
504
843
|
cancelApprovalFailed: "Не удалось отменить согласование",
|
|
505
844
|
cancelApprovalUnavailable: "Отмена согласований не поддерживается этим источником данных",
|
|
506
845
|
linkCopied: "Ссылка скопирована в буфер обмена",
|
|
@@ -603,6 +942,35 @@ const ru = {
|
|
|
603
942
|
resetZoom: "Сбросить масштаб",
|
|
604
943
|
},
|
|
605
944
|
dashboard: {
|
|
945
|
+
noRows: "Нет строк",
|
|
946
|
+
pickMeasures: "Выберите меры (значения) для этого виджета набора данных.",
|
|
947
|
+
datasetUnsupported: "Этот источник данных не поддерживает запросы к наборам данных.",
|
|
948
|
+
details: "Подробности",
|
|
949
|
+
exportCsv: "Экспорт в CSV",
|
|
950
|
+
openInList: "Открыть в списке",
|
|
951
|
+
filters: {
|
|
952
|
+
label: "Фильтры дашборда",
|
|
953
|
+
dateRange: "Период",
|
|
954
|
+
allTime: "За всё время",
|
|
955
|
+
custom: "Произвольный…",
|
|
956
|
+
all: "Все",
|
|
957
|
+
reset: "Сбросить",
|
|
958
|
+
range: {
|
|
959
|
+
today: "Сегодня",
|
|
960
|
+
yesterday: "Вчера",
|
|
961
|
+
this_week: "Эта неделя",
|
|
962
|
+
last_week: "Прошлая неделя",
|
|
963
|
+
this_month: "Этот месяц",
|
|
964
|
+
last_month: "Прошлый месяц",
|
|
965
|
+
this_quarter: "Этот квартал",
|
|
966
|
+
last_quarter: "Прошлый квартал",
|
|
967
|
+
this_year: "Этот год",
|
|
968
|
+
last_year: "Прошлый год",
|
|
969
|
+
last_7_days: "Последние 7 дней",
|
|
970
|
+
last_30_days: "Последние 30 дней",
|
|
971
|
+
last_90_days: "Последние 90 дней",
|
|
972
|
+
},
|
|
973
|
+
},
|
|
606
974
|
addWidget: "Добавить виджет",
|
|
607
975
|
removeWidget: "Удалить виджет",
|
|
608
976
|
editLayout: "Редактировать макет",
|
|
@@ -730,6 +1098,7 @@ const ru = {
|
|
|
730
1098
|
navTypeGroup: "Группа",
|
|
731
1099
|
navTypeSeparator: "Разделитель",
|
|
732
1100
|
navTypeAction: "Действие",
|
|
1101
|
+
navTypeComponent: "Компонент",
|
|
733
1102
|
navEditIcon: "Редактировать значок",
|
|
734
1103
|
navToggleVisible: "Переключить видимость",
|
|
735
1104
|
navHidden: "Скрыто",
|
|
@@ -831,8 +1200,199 @@ const ru = {
|
|
|
831
1200
|
},
|
|
832
1201
|
},
|
|
833
1202
|
console: {
|
|
1203
|
+
settingsHub: {
|
|
1204
|
+
title: "Настройки",
|
|
1205
|
+
subtitle: "Настройте рабочее пространство, интеграции и флаги функций.",
|
|
1206
|
+
loadError: "Не удалось загрузить настройки",
|
|
1207
|
+
empty: "Настройки не зарегистрированы. Плагины могут регистрировать манифесты настроек через SettingsService.",
|
|
1208
|
+
settingsCount: "Настроек: {{n}}",
|
|
1209
|
+
beta: "Бета",
|
|
1210
|
+
categories: {
|
|
1211
|
+
Workspace: "Рабочее пространство",
|
|
1212
|
+
Communication: "Коммуникации",
|
|
1213
|
+
Security: "Безопасность",
|
|
1214
|
+
Infrastructure: "Инфраструктура",
|
|
1215
|
+
Beta: "Бета",
|
|
1216
|
+
Other: "Прочее",
|
|
1217
|
+
},
|
|
1218
|
+
},
|
|
1219
|
+
objectData: {
|
|
1220
|
+
badge: "Данные",
|
|
1221
|
+
description: "Срез данных, заданный URL — не привязан к сохранённому представлению.",
|
|
1222
|
+
filteredBy: "Фильтр",
|
|
1223
|
+
removeFilter: "Убрать фильтр {{field}}",
|
|
1224
|
+
saveAsView: "Сохранить как представление",
|
|
1225
|
+
noAccessTitle: "Доступ запрещён",
|
|
1226
|
+
noAccess: "У вас нет прав на просмотр этих данных.",
|
|
1227
|
+
},
|
|
1228
|
+
identityImport: {
|
|
1229
|
+
policyTitle: "Настройка входа для импортированных пользователей",
|
|
1230
|
+
policy: {
|
|
1231
|
+
auto: "Автоматически (рекомендуется)",
|
|
1232
|
+
invite: "Отправить приглашения",
|
|
1233
|
+
temporary: "Временные пароли",
|
|
1234
|
+
none: "Без пароля (только учётная запись)",
|
|
1235
|
+
},
|
|
1236
|
+
policyHint: {
|
|
1237
|
+
auto: "Доступным пользователям отправляется приглашение (по почте или SMS); тем, до кого не удалось дозвониться, выдаётся одноразовый пароль, который показывается ОДИН РАЗ на экране результата. Работает как с сервисом почты/SMS, так и без него.",
|
|
1238
|
+
invite: "Каждый созданный пользователь получает письмо для установки пароля (или SMS-приглашение для строк только с телефоном). Требуется настроенный сервис почты/SMS — недоступные строки завершатся ошибкой.",
|
|
1239
|
+
temporary: "Для развёртываний без почты/SMS: каждый созданный пользователь получает одноразовый пароль, который показывается ОДИН РАЗ на экране результата. При первом входе потребуется его сменить.",
|
|
1240
|
+
none: "Пользователи сначала входят по OTP на телефон, магической ссылке или ссылке сброса пароля, а затем задают собственный пароль.",
|
|
1241
|
+
},
|
|
1242
|
+
passwordsNote: "Временные пароли — показываются один раз и нигде не сохраняются. Сохраните их сейчас; каждый пользователь должен сменить свой при первом входе.",
|
|
1243
|
+
passwordsMore: "Остальные записи опущены — воспользуйтесь загрузкой файла.",
|
|
1244
|
+
passwordsDownload: "Скачать CSV",
|
|
1245
|
+
},
|
|
1246
|
+
ai: {
|
|
1247
|
+
usage: {
|
|
1248
|
+
title: "Использование ИИ",
|
|
1249
|
+
meterBuild: "Сборка",
|
|
1250
|
+
meterAsk: "Вопрос",
|
|
1251
|
+
statusOk: "Осталось много",
|
|
1252
|
+
statusLow: "Заканчивается",
|
|
1253
|
+
statusFull: "Лимит исчерпан",
|
|
1254
|
+
resetsDaily: "Сбросится сегодня ночью",
|
|
1255
|
+
resetsMonthly: "Сбросится в следующем цикле",
|
|
1256
|
+
ctaUpgrade: "Повысьте тариф, чтобы продолжить",
|
|
1257
|
+
ctaTopUp: "Добавьте кредиты, чтобы продолжить",
|
|
1258
|
+
ariaLabel: "Использование ИИ: {{status}}",
|
|
1259
|
+
},
|
|
1260
|
+
workspaceTitle: "Рабочее пространство ИИ",
|
|
1261
|
+
workspaceSubtitle: "Задавайте вопросы, изучайте и возвращайтесь к диалогам",
|
|
1262
|
+
openChats: "Открыть чаты",
|
|
1263
|
+
chats: "Чаты",
|
|
1264
|
+
chatsDescription: "Просматривайте диалоги с ИИ и управляйте ими.",
|
|
1265
|
+
share: "Поделиться",
|
|
1266
|
+
shareTitle: "Поделиться этим диалогом",
|
|
1267
|
+
shareDisabledTitle: "Начните диалог, чтобы включить публикацию",
|
|
1268
|
+
newChat: "Создать",
|
|
1269
|
+
searchChats: "Поиск по чатам...",
|
|
1270
|
+
noChatsYet: "Чатов пока нет",
|
|
1271
|
+
noChatsDescription: "Начните новый диалог, и он появится здесь.",
|
|
1272
|
+
noMatchingChats: "Подходящих чатов нет.",
|
|
1273
|
+
newConversation: "Новый диалог",
|
|
1274
|
+
renameConversation: "Переименовать диалог",
|
|
1275
|
+
deleteConversation: "Удалить диалог",
|
|
1276
|
+
saveRename: "Сохранить название",
|
|
1277
|
+
cancelRename: "Отменить переименование",
|
|
1278
|
+
loadingHistory: "Загрузка истории диалога...",
|
|
1279
|
+
conversationReady: "Диалог готов",
|
|
1280
|
+
preparingConversation: "Подготовка нового диалога",
|
|
1281
|
+
offlineDemoMode: "Автономный демонстрационный режим — список агентов недоступен",
|
|
1282
|
+
sendFailedRateLimited: "Вы отправляете сообщения слишком часто. Ваше сообщение сохранено ниже — подождите немного и попробуйте снова.",
|
|
1283
|
+
sendFailedGeneric: "Не удалось отправить сообщение. Оно сохранено ниже — попробуйте ещё раз.",
|
|
1284
|
+
askAgent: "Спросить {{agent}}...",
|
|
1285
|
+
assistant: "Ассистент",
|
|
1286
|
+
liveCanvas: "Живой предпросмотр — {{app}} (черновик)",
|
|
1287
|
+
liveCanvasUnlisted: "Работающее приложение — {{app}} (скрыто до публикации)",
|
|
1288
|
+
loadingAgents: "Загрузка агентов...",
|
|
1289
|
+
askAnything: "Спросите о чём угодно...",
|
|
1290
|
+
emptyTitle: "Начните диалог",
|
|
1291
|
+
emptyDescription: "Спросите о чём угодно — ассистент видит контекст вашего текущего приложения.",
|
|
1292
|
+
switchAssistant: "Сменить ассистента",
|
|
1293
|
+
chooseAgent: "Выберите ассистента…",
|
|
1294
|
+
empty: {
|
|
1295
|
+
build: {
|
|
1296
|
+
title: "Создать с помощью ИИ",
|
|
1297
|
+
description: "Опишите приложение или процесс обычными словами — я подготовлю объекты, экраны и автоматизации, а вы проверите и опубликуете.",
|
|
1298
|
+
},
|
|
1299
|
+
ask: {
|
|
1300
|
+
title: "Спросите свои данные",
|
|
1301
|
+
description: "Задавайте вопросы о записях — количество, списки и сводки по доступным вам данным.",
|
|
1302
|
+
},
|
|
1303
|
+
editApp: {
|
|
1304
|
+
title: "Редактирование «{{app}}»",
|
|
1305
|
+
titleGeneric: "Редактировать это приложение",
|
|
1306
|
+
description: "Что нужно изменить? Я изменю это приложение на месте — добавлю поле, объект, представление или автоматизацию либо скорректирую существующее.",
|
|
1307
|
+
},
|
|
1308
|
+
},
|
|
1309
|
+
clearConversation: "Очистить",
|
|
1310
|
+
sendHint: "чтобы отправить",
|
|
1311
|
+
agentActivity: "Активность агента",
|
|
1312
|
+
toolCompleted: "Завершено",
|
|
1313
|
+
toolRunning: "Выполняется",
|
|
1314
|
+
toolAwaitingApproval: "Ожидает подтверждения",
|
|
1315
|
+
toolFailed: "Ошибка",
|
|
1316
|
+
toolDetailsHidden: "Входные данные инструментов и необработанные результаты в этом режиме скрыты.",
|
|
1317
|
+
copy: "Копировать",
|
|
1318
|
+
copied: "Скопировано",
|
|
1319
|
+
regenerate: "Сгенерировать заново",
|
|
1320
|
+
model: "Модель",
|
|
1321
|
+
submit: "Отправить",
|
|
1322
|
+
uploadFiles: "Загрузить файлы",
|
|
1323
|
+
stopResponse: "Остановить ответ",
|
|
1324
|
+
trace: "трассировка",
|
|
1325
|
+
viewTrace: "Посмотреть трассировку",
|
|
1326
|
+
nextSteps: "Что дальше",
|
|
1327
|
+
publishDrafts: "Опубликовать",
|
|
1328
|
+
publishOk: "Опубликовано — объекты активны.",
|
|
1329
|
+
seedWarn: "Опубликовано, но часть примеров данных загрузить не удалось.",
|
|
1330
|
+
openBuiltApp: "Открыть приложение",
|
|
1331
|
+
designBuiltApp: "Открыть в Studio",
|
|
1332
|
+
previewDraft: "Предпросмотр",
|
|
1333
|
+
previewApp: "Предпросмотр приложения",
|
|
1334
|
+
resizeSplit: "Изменить размер чата и предпросмотра",
|
|
1335
|
+
hideChats: "Скрыть чаты",
|
|
1336
|
+
showChats: "Показать чаты",
|
|
1337
|
+
planTitle: "Предложенный план",
|
|
1338
|
+
planQuestions: "Подтвердите перед сборкой",
|
|
1339
|
+
planAssumptions: "Допущения",
|
|
1340
|
+
planApproveHint: "Ответьте, чтобы утвердить или скорректировать этот план.",
|
|
1341
|
+
planApprove: "Собрать",
|
|
1342
|
+
planAdjust: "Скорректировать",
|
|
1343
|
+
justNow: "только что",
|
|
1344
|
+
minutesAgo: "{{count}} мин назад",
|
|
1345
|
+
hoursAgo: "{{count}} ч назад",
|
|
1346
|
+
daysAgo: "{{count}} дн назад",
|
|
1347
|
+
agentLabels: {
|
|
1348
|
+
ask: "Вопрос",
|
|
1349
|
+
build: "Сборка",
|
|
1350
|
+
dataChat: "Ассистент",
|
|
1351
|
+
metadataAssistant: "Ассистент по метаданным",
|
|
1352
|
+
},
|
|
1353
|
+
suggestions: {
|
|
1354
|
+
dataChat: {
|
|
1355
|
+
userCount: "Сколько пользователей в системе? Перечисли их адреса электронной почты.",
|
|
1356
|
+
recentRecords: "Перечисли 5 последних созданных записей.",
|
|
1357
|
+
recordCounts: "Посчитай количество записей по каждому объекту.",
|
|
1358
|
+
},
|
|
1359
|
+
metadataAssistant: {
|
|
1360
|
+
buildCrm: "Создай CRM для продаж — клиенты, контакты и воронка сделок с итогами по этапам.",
|
|
1361
|
+
buildApp: "Создай трекер проектов — проекты, задачи с ответственными и сроками, доска по статусам.",
|
|
1362
|
+
buildFlow: "Спроектируй службу поддержки — заявки с приоритетом, процесс статусов и связи с клиентами.",
|
|
1363
|
+
buildInventory: "Создай приложение для склада — товары, остатки, поставщики и индикация низких остатков.",
|
|
1364
|
+
buildRecruiting: "Создай трекер кандидатов — кандидаты, открытые вакансии, этапы собеседований и заметки.",
|
|
1365
|
+
},
|
|
1366
|
+
generic: {
|
|
1367
|
+
help: "Чем ты можешь мне помочь?",
|
|
1368
|
+
availableObjects: "Перечисли доступные объекты данных.",
|
|
1369
|
+
recentActivity: "Сделай сводку моей недавней активности.",
|
|
1370
|
+
},
|
|
1371
|
+
editApp: {
|
|
1372
|
+
addField: "Добавь поле в один из объектов.",
|
|
1373
|
+
addObject: "Добавь новый объект и свяжи его с существующим.",
|
|
1374
|
+
addDashboard: "Добавь дашборд с ключевыми показателями.",
|
|
1375
|
+
addAutomation: "Добавь автоматизацию — согласование, процесс статусов или уведомление.",
|
|
1376
|
+
},
|
|
1377
|
+
},
|
|
1378
|
+
changesTitle: "Подтвердите изменения",
|
|
1379
|
+
changesConfirmed: "Подтверждено",
|
|
1380
|
+
changesConfirm: "Подтвердить",
|
|
1381
|
+
changesConfirmHint: "Ответьте, чтобы подтвердить или скорректировать это изменение.",
|
|
1382
|
+
changeVerb: {
|
|
1383
|
+
createObject: "Создать объект",
|
|
1384
|
+
addField: "Добавить поле",
|
|
1385
|
+
modifyField: "Изменить поле",
|
|
1386
|
+
deleteField: "Удалить поле",
|
|
1387
|
+
createMetadata: "Создать",
|
|
1388
|
+
updateMetadata: "Изменить",
|
|
1389
|
+
createSeed: "Сгенерировать примеры данных",
|
|
1390
|
+
createPackage: "Создать пакет приложения",
|
|
1391
|
+
},
|
|
1392
|
+
},
|
|
834
1393
|
title: "Консоль ObjectStack",
|
|
835
1394
|
initializing: "Инициализация приложения...",
|
|
1395
|
+
loadingHint: "Настройка нового окружения может занять некоторое время.",
|
|
836
1396
|
breadcrumb: {
|
|
837
1397
|
dashboards: "Панели",
|
|
838
1398
|
pages: "Страницы",
|
|
@@ -874,6 +1434,7 @@ const ru = {
|
|
|
874
1434
|
toggleDarkMode: "Переключить тёмный режим",
|
|
875
1435
|
},
|
|
876
1436
|
commandPalette: {
|
|
1437
|
+
title: "Палитра команд",
|
|
877
1438
|
placeholder: "Введите команду или поиск...",
|
|
878
1439
|
noResults: "Результаты не найдены.",
|
|
879
1440
|
objects: "Объекты",
|
|
@@ -907,6 +1468,14 @@ const ru = {
|
|
|
907
1468
|
system: "Системная",
|
|
908
1469
|
},
|
|
909
1470
|
objectView: {
|
|
1471
|
+
viewTypeTree: "Дерево",
|
|
1472
|
+
viewTypeTreeDesc: "Выстраивает самоссылающиеся записи в иерархию по родительскому полю.",
|
|
1473
|
+
parentField: "Родительское поле",
|
|
1474
|
+
parentFieldHelp: "Поле, указывающее на родительскую запись (тот же объект) и задающее иерархию. Подходят только самоссылающиеся поля.",
|
|
1475
|
+
viewName: "Название",
|
|
1476
|
+
viewNameHelp: "Машинный ключ (snake_case). Заполняется автоматически из заголовка — при желании измените.",
|
|
1477
|
+
viewNameRequired: "Введите ключ (строчные буквы, цифры, подчёркивание). Для нелатинских заголовков автозаполнение не работает.",
|
|
1478
|
+
viewNameInvalid: "Используйте строчные латинские буквы, цифры и подчёркивания; начните с буквы или подчёркивания.",
|
|
910
1479
|
systemViewReadonly: 'System view defined in code - duplicate to customize.',
|
|
911
1480
|
expandToPage: 'Open as full page',
|
|
912
1481
|
objectNotFound: "Объект не найден",
|
|
@@ -1120,7 +1689,28 @@ const ru = {
|
|
|
1120
1689
|
},
|
|
1121
1690
|
},
|
|
1122
1691
|
auth: {
|
|
1692
|
+
setPassword: {
|
|
1693
|
+
title: "Задать резервный пароль",
|
|
1694
|
+
description: "Вы вошли через единый вход. Задайте локальный пароль, чтобы входить в эту среду напрямую, если SSO станет недоступен.",
|
|
1695
|
+
email: "Электронная почта",
|
|
1696
|
+
newPassword: "Новый пароль",
|
|
1697
|
+
confirmPassword: "Подтвердите пароль",
|
|
1698
|
+
submit: "Задать пароль",
|
|
1699
|
+
submitting: "Сохранение…",
|
|
1700
|
+
success: "Локальный пароль задан",
|
|
1701
|
+
failed: "Не удалось задать пароль",
|
|
1702
|
+
passwordsMismatch: "Пароли не совпадают",
|
|
1703
|
+
noSession: "Срок действия сессии истёк.",
|
|
1704
|
+
backToSignIn: "Войти снова",
|
|
1705
|
+
},
|
|
1123
1706
|
login: {
|
|
1707
|
+
signingIn: "Выполняется вход…",
|
|
1708
|
+
ssoHandoff: "Перейти к {{target}}",
|
|
1709
|
+
devAdminHint: {
|
|
1710
|
+
title: "Среда разработки",
|
|
1711
|
+
body: "Войдите под предустановленным администратором для разработки:",
|
|
1712
|
+
dismiss: "Закрыть",
|
|
1713
|
+
},
|
|
1124
1714
|
title: "Войдите в свой аккаунт",
|
|
1125
1715
|
description: "Введите электронную почту и пароль для продолжения",
|
|
1126
1716
|
emailLabel: "Электронная почта",
|
|
@@ -1133,6 +1723,7 @@ const ru = {
|
|
|
1133
1723
|
noAccountText: "Нет аккаунта?",
|
|
1134
1724
|
signUpText: "Зарегистрироваться",
|
|
1135
1725
|
errors: {
|
|
1726
|
+
oauthCallbackFailed: "Не удалось завершить единый вход — ссылка для входа истекла или уже была использована. Попробуйте ещё раз.",
|
|
1136
1727
|
invalidCredentials: "Неверный email или пароль. Попробуйте ещё раз.",
|
|
1137
1728
|
emailNotVerified: "Пожалуйста, подтвердите email перед входом.",
|
|
1138
1729
|
},
|
|
@@ -1258,6 +1849,40 @@ const ru = {
|
|
|
1258
1849
|
shell: {
|
|
1259
1850
|
tenantHostHint: "Вы входите в это рабочее пространство",
|
|
1260
1851
|
},
|
|
1852
|
+
layout: {
|
|
1853
|
+
headline: "Создавайте мощные бизнес-приложения быстрее.",
|
|
1854
|
+
subhead: "Универсальная платформа для управления корпоративными данными, рабочими процессами и аналитикой.",
|
|
1855
|
+
},
|
|
1856
|
+
remediation: {
|
|
1857
|
+
signOut: "Выйти из аккаунта",
|
|
1858
|
+
password: {
|
|
1859
|
+
title: "Срок действия пароля истёк",
|
|
1860
|
+
fallbackMessage: "Задайте новый пароль, чтобы продолжить.",
|
|
1861
|
+
current: "Текущий пароль",
|
|
1862
|
+
next: "Новый пароль",
|
|
1863
|
+
confirm: "Подтвердите новый пароль",
|
|
1864
|
+
submit: "Изменить пароль и продолжить",
|
|
1865
|
+
submitting: "Обновление…",
|
|
1866
|
+
mismatch: "Новые пароли не совпадают.",
|
|
1867
|
+
failed: "Не удалось изменить пароль.",
|
|
1868
|
+
},
|
|
1869
|
+
mfa: {
|
|
1870
|
+
title: "Настройка двухфакторной аутентификации",
|
|
1871
|
+
fallbackMessage: "Ваша организация требует приложение-аутентификатор для продолжения.",
|
|
1872
|
+
confirmPassword: "Подтвердите пароль",
|
|
1873
|
+
continue: "Продолжить",
|
|
1874
|
+
preparing: "Подготовка…",
|
|
1875
|
+
enrollFailed: "Не удалось начать привязку.",
|
|
1876
|
+
scanTitle: "Отсканируйте в приложении-аутентификаторе",
|
|
1877
|
+
scanBody: "Отсканируйте этот QR-код с помощью Google Authenticator, 1Password, Authy и т. п., затем введите 6-значный код.",
|
|
1878
|
+
backupTitle: "Сохраните резервные коды",
|
|
1879
|
+
backupBody: "Храните их в надёжном месте — каждый код можно использовать один раз, если вы потеряете устройство.",
|
|
1880
|
+
codeLabel: "6-значный код",
|
|
1881
|
+
verify: "Проверить и продолжить",
|
|
1882
|
+
verifying: "Проверка…",
|
|
1883
|
+
invalidCode: "Неверный код. Попробуйте ещё раз.",
|
|
1884
|
+
},
|
|
1885
|
+
},
|
|
1261
1886
|
},
|
|
1262
1887
|
profile: {
|
|
1263
1888
|
title: "Профиль",
|
|
@@ -1322,11 +1947,15 @@ const ru = {
|
|
|
1322
1947
|
settings: "Настройки рабочего пространства",
|
|
1323
1948
|
},
|
|
1324
1949
|
help: {
|
|
1950
|
+
onThisPage: "На этой странице",
|
|
1951
|
+
keyboardShortcuts: "Сочетания клавиш",
|
|
1325
1952
|
appDocs: 'Документация приложения',
|
|
1326
1953
|
allDocs: 'Вся документация',
|
|
1327
1954
|
onlineDocs: 'Онлайн-документация',
|
|
1328
1955
|
},
|
|
1329
1956
|
sidebar: {
|
|
1957
|
+
packageManagement: "Управление пакетами",
|
|
1958
|
+
searchNavigation: "Поиск по навигации...",
|
|
1330
1959
|
settings: "Настройки",
|
|
1331
1960
|
help: "Помощь",
|
|
1332
1961
|
helpTooltip: "Помощь и документация",
|
|
@@ -1343,14 +1972,66 @@ const ru = {
|
|
|
1343
1972
|
removeFromFavorites: "Убрать {{name}} из избранного",
|
|
1344
1973
|
},
|
|
1345
1974
|
topbar: {
|
|
1975
|
+
openAssistant: "Открыть ассистента {{name}}",
|
|
1976
|
+
offline: "Не в сети",
|
|
1977
|
+
usersOnline: "Пользователи сейчас в сети",
|
|
1978
|
+
switchView: "Сменить представление",
|
|
1979
|
+
switchObject: "Сменить объект",
|
|
1980
|
+
connection: {
|
|
1981
|
+
connected: "Подключено",
|
|
1982
|
+
connecting: "Подключение...",
|
|
1983
|
+
reconnecting: "Переподключение...",
|
|
1984
|
+
disconnected: "Отключено",
|
|
1985
|
+
error: "Ошибка подключения",
|
|
1986
|
+
},
|
|
1987
|
+
stage: {
|
|
1988
|
+
preview: "Предварительная версия",
|
|
1989
|
+
beta: "Бета",
|
|
1990
|
+
tooltip: "Платформа в предварительной версии — функции могут измениться.",
|
|
1991
|
+
},
|
|
1346
1992
|
aiAssistant: "ИИ-ассистент",
|
|
1347
1993
|
designInStudio: "Дизайн в Studio",
|
|
1348
1994
|
},
|
|
1349
1995
|
home: {
|
|
1996
|
+
build: {
|
|
1997
|
+
title: "Создать приложение",
|
|
1998
|
+
subtitle: "Начните с нуля — спроектируйте объекты, формы, автоматизации и интерфейсы.",
|
|
1999
|
+
},
|
|
2000
|
+
template: {
|
|
2001
|
+
title: "Начать с шаблона",
|
|
2002
|
+
subtitle: "Установите шаблонное приложение из маркетплейса и настройте его под себя.",
|
|
2003
|
+
},
|
|
2004
|
+
welcomeAdminDescription: "Опишите свой бизнес одним предложением — ИИ создаст объекты, экраны, API и инструменты агента. Либо настройте всё сами через меню слева.",
|
|
2005
|
+
welcomeAdminDescriptionNoBuild: "Настройте первое приложение через меню «Администрирование» слева. Когда появятся данные, ИИ-ассистент поможет их изучить.",
|
|
2006
|
+
welcomeAdminDescriptionNoAi: "Настройте первое приложение через меню «Администрирование» слева.",
|
|
2007
|
+
noAppsTitle: "Приложений пока нет",
|
|
2008
|
+
noAppsDescription: "Ваше рабочее пространство настраивается — приложения, которыми поделится администратор, появятся здесь.",
|
|
2009
|
+
buildWithAI: "Создать с помощью ИИ",
|
|
2010
|
+
askAI: "Спросить ИИ",
|
|
2011
|
+
recoveryReminder: {
|
|
2012
|
+
message: "Задайте резервный пароль, чтобы входить в систему даже когда единый вход недоступен.",
|
|
2013
|
+
cta: "Задать пароль",
|
|
2014
|
+
dismiss: "Закрыть",
|
|
2015
|
+
},
|
|
2016
|
+
pendingDrafts: {
|
|
2017
|
+
message: "У вас {{count}} неопубликованных изменений — опубликуйте их, чтобы они вступили в силу.",
|
|
2018
|
+
cta: "Опубликовать",
|
|
2019
|
+
publishing: "Публикация…",
|
|
2020
|
+
published: "Опубликовано! Изменения вступили в силу.",
|
|
2021
|
+
publishFailed: "Не удалось опубликовать",
|
|
2022
|
+
},
|
|
1350
2023
|
title: "Главная",
|
|
1351
2024
|
subtitle: "Панель вашего рабочего пространства",
|
|
1352
2025
|
nav: "Главная",
|
|
1353
2026
|
allApps: "Все приложения",
|
|
2027
|
+
yourApps: "Ваши приложения",
|
|
2028
|
+
showMoreApps: "Ещё",
|
|
2029
|
+
showLess: "Свернуть",
|
|
2030
|
+
continueEmpty: "Открытые вами элементы появятся здесь.",
|
|
2031
|
+
actionCenter: {
|
|
2032
|
+
title: "Требует вашего внимания",
|
|
2033
|
+
empty: "Всё выполнено",
|
|
2034
|
+
},
|
|
1354
2035
|
loading: "Загрузка рабочего пространства...",
|
|
1355
2036
|
recent: "Недавние",
|
|
1356
2037
|
starred: "Избранные",
|
|
@@ -1402,7 +2083,21 @@ const ru = {
|
|
|
1402
2083
|
},
|
|
1403
2084
|
},
|
|
1404
2085
|
layout: {
|
|
2086
|
+
systemNav: {
|
|
2087
|
+
systemSettings: "Системные настройки",
|
|
2088
|
+
applications: "Приложения",
|
|
2089
|
+
appMarketplace: "Маркетплейс приложений",
|
|
2090
|
+
objectManager: "Менеджер объектов",
|
|
2091
|
+
users: "Пользователи",
|
|
2092
|
+
organizations: "Организации",
|
|
2093
|
+
roles: "Роли",
|
|
2094
|
+
configuration: "Конфигурация",
|
|
2095
|
+
createApp: "Создать приложение",
|
|
2096
|
+
},
|
|
1405
2097
|
appSwitcher: {
|
|
2098
|
+
switchApplication: "Сменить приложение",
|
|
2099
|
+
appsAvailable: "Доступно приложений: {{count}}",
|
|
2100
|
+
editNavigation: "Изменить навигацию",
|
|
1406
2101
|
home: "Главная",
|
|
1407
2102
|
addApp: "Добавить приложение",
|
|
1408
2103
|
editApp: "Редактировать приложение",
|
|
@@ -1495,8 +2190,8 @@ const ru = {
|
|
|
1495
2190
|
uploading: "Загрузка…",
|
|
1496
2191
|
defaultActionTitle: "Действие",
|
|
1497
2192
|
ok: "ОК",
|
|
1498
|
-
lookupPlaceholder: "
|
|
1499
|
-
lookupHelpText: "Введите ID записи
|
|
2193
|
+
lookupPlaceholder: "ID записи для {{label}}",
|
|
2194
|
+
lookupHelpText: "Для этого параметра не настроен объект ссылки, поэтому выбор записи недоступен. Введите ID записи или попросите администратора исправить параметр действия.",
|
|
1500
2195
|
},
|
|
1501
2196
|
actionConfirm: {
|
|
1502
2197
|
title: "Подтвердите действие",
|
|
@@ -1521,6 +2216,8 @@ const ru = {
|
|
|
1521
2216
|
updateFailed: "Не удалось обновить навигацию",
|
|
1522
2217
|
},
|
|
1523
2218
|
objectActions: {
|
|
2219
|
+
resetPackageSetConfirm: "Этот набор разрешений поставляется с установленным пакетом и не может быть удалён. Удаление сбросит его к исходному состоянию из пакета и отменит ваши настройки в этой среде. Продолжить?",
|
|
2220
|
+
resetPackageSetSuccess: "Набор разрешений сброшен к исходному состоянию из пакета",
|
|
1524
2221
|
deleteSuccess: "{{label}} успешно удалён",
|
|
1525
2222
|
deleteFailed: "Не удалось удалить {{label}}",
|
|
1526
2223
|
noRecordId: "ID записи не указан",
|
|
@@ -1685,6 +2382,7 @@ const ru = {
|
|
|
1685
2382
|
},
|
|
1686
2383
|
},
|
|
1687
2384
|
organizations: {
|
|
2385
|
+
create: "Создать рабочее пространство",
|
|
1688
2386
|
mine: "Мои организации",
|
|
1689
2387
|
title: "Организации",
|
|
1690
2388
|
heading: "Ваши организации",
|
|
@@ -1698,6 +2396,11 @@ const ru = {
|
|
|
1698
2396
|
noMatches: "Нет организаций, соответствующих запросу.",
|
|
1699
2397
|
},
|
|
1700
2398
|
notifications: {
|
|
2399
|
+
regionLabel: "Уведомления",
|
|
2400
|
+
groupCount: "Уведомлений: {{count}}",
|
|
2401
|
+
groupUnread: "Непрочитанных: {{count}}",
|
|
2402
|
+
groupMarkRead: "Отметить прочитанными",
|
|
2403
|
+
groupMarkReadTitle: "Отметить прочитанными все этого типа",
|
|
1701
2404
|
empty: "Нет уведомлений",
|
|
1702
2405
|
markAllRead: "Отметить все как прочитанные",
|
|
1703
2406
|
viewAll: "Показать все уведомления",
|
|
@@ -1816,7 +2519,117 @@ const ru = {
|
|
|
1816
2519
|
done: 'Готово — скрыть',
|
|
1817
2520
|
},
|
|
1818
2521
|
},
|
|
2522
|
+
excelImport: {
|
|
2523
|
+
noImportableFields: "У этого объекта нет полей, доступных для импорта.",
|
|
2524
|
+
schemaReadFailed: "Не удалось прочитать схему объекта.",
|
|
2525
|
+
imported: "Импортировано строк: {{count}} в {{object}}.",
|
|
2526
|
+
importFrom: "Импортировать реальные строки из",
|
|
2527
|
+
into: "в",
|
|
2528
|
+
opening: "Открытие…",
|
|
2529
|
+
importAction: "Импорт",
|
|
2530
|
+
dismiss: "Скрыть",
|
|
2531
|
+
},
|
|
2532
|
+
cloudOnboarding: {
|
|
2533
|
+
hintCreate: "Создайте первое окружение — отдельное рабочее пространство со своим URL, базой данных и тарифом. Разработка ведётся внутри него.",
|
|
2534
|
+
hintReady: "Продакшн-окружение готово. Откройте его, чтобы создавать и запускать приложения — всё происходит внутри окружения.",
|
|
2535
|
+
createEnvironment: "Создать окружение",
|
|
2536
|
+
openProduction: "Открыть продакшн",
|
|
2537
|
+
manageEnvironments: "Управление окружениями",
|
|
2538
|
+
},
|
|
2539
|
+
aiModelStatus: {
|
|
2540
|
+
summary: "Сборка / вопросы используют {{conversational}} ({{conversationalSource}}); структурированный вывод — {{structured}} ({{structuredSource}}).",
|
|
2541
|
+
summaryRouting: "Политика маршрутизации: бесплатные тарифы → {{free}}, платные тарифы → {{paid}}.",
|
|
2542
|
+
modelUnknown: "неизвестно",
|
|
2543
|
+
sourceUnknown: "адаптер не сообщил",
|
|
2544
|
+
rowConversational: "Модель Build / Ask",
|
|
2545
|
+
rowStructured: "Структурированный (blueprint / seed)",
|
|
2546
|
+
rowReasoning: "Интенсивность рассуждений",
|
|
2547
|
+
readFailed: "Не удалось прочитать действующую модель ИИ. В этом окружении может не быть запущен сервис ИИ, либо у вас нет разрешения ai:read.",
|
|
2548
|
+
readFailedWithStatus: "Не удалось прочитать действующую модель ИИ (HTTP {{status}}). В этом окружении может не быть запущен сервис ИИ, либо у вас нет разрешения ai:read.",
|
|
2549
|
+
overridesInEffect: "Действующие переопределения: ",
|
|
2550
|
+
noOverrides: "нет — используются значения по умолчанию развёрнутого кода.",
|
|
2551
|
+
adapter: "Адаптер: ",
|
|
2552
|
+
sourceCodeDefault: "значение по умолчанию в коде (без env-переопределения)",
|
|
2553
|
+
sourceInherits: "как у build/ask",
|
|
2554
|
+
sourcePinned: "закреплено через {{source}}",
|
|
2555
|
+
},
|
|
2556
|
+
chatbotError: {
|
|
2557
|
+
title: "Ошибка ответа",
|
|
2558
|
+
fallbackDetail: "Что-то пошло не так. Попробуйте ещё раз.",
|
|
2559
|
+
details: "Подробности",
|
|
2560
|
+
hide: "Скрыть",
|
|
2561
|
+
retry: "Повторить",
|
|
2562
|
+
},
|
|
2563
|
+
chatbotQuota: {
|
|
2564
|
+
title: "Требуется обновление тарифа",
|
|
2565
|
+
fallbackMessage: "Вы исчерпали квоту ИИ.",
|
|
2566
|
+
buyCredits: "Купить пакет кредитов",
|
|
2567
|
+
upgradePlan: "Повысить тариф",
|
|
2568
|
+
},
|
|
2569
|
+
environment: {
|
|
2570
|
+
addEnvironment: "Добавить окружение",
|
|
2571
|
+
setUpProduction: "Настройте продакшн-окружение",
|
|
2572
|
+
addDevelopment: "Добавить окружение разработки",
|
|
2573
|
+
// Plan/capacity dialog (EnvironmentEntitlementDialog) — cloud#959.
|
|
2574
|
+
entitlement: {
|
|
2575
|
+
productionLimitTitle: "У вас уже есть продакшн-окружение",
|
|
2576
|
+
productionLimitBody: "Каждая организация включает ровно одно продакшн-окружение. Создайте отдельную организацию для ещё одного или свяжитесь с нами по поводу условий Enterprise.",
|
|
2577
|
+
planLockedTitle: "Окружения разработки — платная возможность",
|
|
2578
|
+
planLockedBody: "{{plan}} включает одно продакшн-окружение. Перейдите на платный тариф, чтобы добавить окружения разработки: создавайте в разработке, затем публикуйте в продакшн.",
|
|
2579
|
+
limitTitle: "Достигнут лимит окружений разработки",
|
|
2580
|
+
limitBody: "Лимит растёт вместе с числом AI-мест. Добавьте AI-место или заархивируйте неиспользуемое окружение разработки, чтобы освободить место.",
|
|
2581
|
+
limitBodyWithCount: "Используется {{used}} из {{limit}} окружений разработки. Лимит растёт вместе с числом AI-мест — добавьте AI-место или заархивируйте неиспользуемое окружение разработки.",
|
|
2582
|
+
freePlan: "Бесплатный тариф",
|
|
2583
|
+
namedPlan: "Тариф {{plan}}",
|
|
2584
|
+
upgradeCta: "Сменить тариф",
|
|
2585
|
+
contactSalesCta: "Связаться с отделом продаж",
|
|
2586
|
+
},
|
|
2587
|
+
},
|
|
2588
|
+
cloudConnection: {
|
|
2589
|
+
checking: "Проверка подключения…",
|
|
2590
|
+
retry: "Повторить",
|
|
2591
|
+
errors: {
|
|
2592
|
+
expired: "Срок действия запроса истёк до подтверждения. Начните заново.",
|
|
2593
|
+
bindFailed: "Не удалось выполнить привязку.",
|
|
2594
|
+
deviceCodeFailed: "Не удалось запросить код устройства.",
|
|
2595
|
+
},
|
|
2596
|
+
waiting: {
|
|
2597
|
+
popupOpened: "Подтвердите подключение в только что открывшемся окне — эта страница обновится сама.",
|
|
2598
|
+
polling: "Ожидание подтверждения в облачной консоли…",
|
|
2599
|
+
openApproval: "Открыть страницу подтверждения",
|
|
2600
|
+
copy: "Копировать",
|
|
2601
|
+
copied: "Скопировано",
|
|
2602
|
+
codePrefilled: "Код уже подставлен на странице подтверждения.",
|
|
2603
|
+
openItHere: "Окно не появилось? Откройте здесь",
|
|
2604
|
+
cancel: "Отмена",
|
|
2605
|
+
},
|
|
2606
|
+
bound: {
|
|
2607
|
+
title: "Подключено к ObjectStack Cloud",
|
|
2608
|
+
runtime: "Среда выполнения",
|
|
2609
|
+
organization: "Организация",
|
|
2610
|
+
approvedBy: "Подтвердил",
|
|
2611
|
+
runtimeId: "ID среды выполнения",
|
|
2612
|
+
environment: "Окружение",
|
|
2613
|
+
since: "Подключено",
|
|
2614
|
+
privatePackages: "Приватные пакеты вашей организации теперь отображаются в Маркетплейсе в разделе «Ваша организация».",
|
|
2615
|
+
disconnect: "Отключить",
|
|
2616
|
+
},
|
|
2617
|
+
unbound: {
|
|
2618
|
+
title: "Не подключено",
|
|
2619
|
+
body: "Подключите эту среду выполнения к управляющему слою ObjectStack, чтобы просматривать приватные пакеты вашей организации и устанавливать их здесь. Подтверждение — один клик в вашей облачной учётной записи; никакие идентификаторы и учётные данные на этой странице не вводятся.",
|
|
2620
|
+
connect: "Подключить",
|
|
2621
|
+
},
|
|
2622
|
+
},
|
|
1819
2623
|
marketplace: {
|
|
2624
|
+
suggestedBindings: {
|
|
2625
|
+
promptEveryone: "Приложение предлагает предоставить «{{set}}» всем вошедшим пользователям (позиция Everyone).",
|
|
2626
|
+
promptGuest: "Приложение предлагает предоставить «{{set}}» неаутентифицированным посетителям (позиция Guest).",
|
|
2627
|
+
confirm: "Предоставить",
|
|
2628
|
+
confirming: "Предоставление…",
|
|
2629
|
+
dismiss: "Закрыть",
|
|
2630
|
+
confirmedToast: "«{{set}}» теперь предоставлен: {{anchor}}.",
|
|
2631
|
+
dismissedToast: "Предложение по «{{set}}» закрыто.",
|
|
2632
|
+
},
|
|
1820
2633
|
title: "Маркетплейс приложений",
|
|
1821
2634
|
subtitle: "Просматривайте одобренные приложения из каталога ObjectStack. Нажмите на приложение, чтобы увидеть подробности и установить его.",
|
|
1822
2635
|
searchPlaceholder: "Поиск приложений по имени или ID манифеста…",
|
|
@@ -1868,6 +2681,7 @@ const ru = {
|
|
|
1868
2681
|
updateAvailable: 'Доступно обновление',
|
|
1869
2682
|
},
|
|
1870
2683
|
action: {
|
|
2684
|
+
installed: "Установлено",
|
|
1871
2685
|
install: "Установить",
|
|
1872
2686
|
reinstall: "Переустановить",
|
|
1873
2687
|
working: "Обработка…",
|
|
@@ -1938,6 +2752,14 @@ const ru = {
|
|
|
1938
2752
|
yearsAgo: "{{count}} лет назад",
|
|
1939
2753
|
},
|
|
1940
2754
|
},
|
|
2755
|
+
approvals: {
|
|
2756
|
+
approve: 'Утвердить',
|
|
2757
|
+
reject: 'Отклонить',
|
|
2758
|
+
comment: 'Комментарий (необязательно)',
|
|
2759
|
+
approveSuccess: 'Утверждено',
|
|
2760
|
+
rejectSuccess: 'Отклонено',
|
|
2761
|
+
rejectConfirm: 'Отклонить этот запрос на согласование?',
|
|
2762
|
+
},
|
|
1941
2763
|
approvalsInbox: {
|
|
1942
2764
|
loadMore: 'Загрузить ещё',
|
|
1943
2765
|
loadingMore: 'Загрузка…',
|
|
@@ -1962,13 +2784,28 @@ const ru = {
|
|
|
1962
2784
|
slaRemaining: 'SLA: осталось {{dur}}',
|
|
1963
2785
|
slaOverdue: 'SLA просрочен на {{dur}}',
|
|
1964
2786
|
actReassign: 'Передано',
|
|
2787
|
+
reassignFromTo: 'от {{from}} к {{to}}',
|
|
1965
2788
|
actRemind: 'Напоминание',
|
|
1966
2789
|
actRequestInfo: 'Запрошены данные',
|
|
1967
2790
|
actComment: 'Комментарий',
|
|
1968
2791
|
stepProgress: 'Шаги согласования',
|
|
1969
2792
|
prevRequest: 'Назад',
|
|
1970
2793
|
nextRequest: 'Далее',
|
|
1971
|
-
positionOf: '{{index}} из {{total}}',
|
|
2794
|
+
positionOf: 'Запрос {{index}} из {{total}}',
|
|
2795
|
+
progressApprovals: 'Согласования — {{got}} из {{need}}',
|
|
2796
|
+
progressGroups: 'Ход визирования — {{got}} из {{need}} групп',
|
|
2797
|
+
progressEligible: 'Доступных согласующих: {{count}}',
|
|
2798
|
+
progressBar: 'Ход решения',
|
|
2799
|
+
declaredActions: 'Действия',
|
|
2800
|
+
attachmentChip: 'Вложение',
|
|
2801
|
+
attachmentOpenFailed: 'Не удалось открыть вложение — попробуйте ещё раз',
|
|
2802
|
+
approveOneTitle: 'Согласовать «{{title}}»?',
|
|
2803
|
+
approveOneBody: 'Запрос будет согласован от вашего имени. Чтобы добавить комментарий или вложение, откройте запрос.',
|
|
2804
|
+
flowOrigin: 'Инициировано потоком',
|
|
2805
|
+
sortBy: 'Сортировка',
|
|
2806
|
+
sortRecent: 'Сначала новые',
|
|
2807
|
+
sortOldest: 'Сначала старые',
|
|
2808
|
+
sortAmount: 'Сумма (по убыванию)',
|
|
1972
2809
|
quickPhrase1: 'Согласовано — соответствует требованиям.',
|
|
1973
2810
|
quickPhrase2: 'Согласовано с условиями — следите за исполнением.',
|
|
1974
2811
|
quickPhrase3: 'Дополните материалы и отправьте повторно.',
|
|
@@ -2097,6 +2934,10 @@ const ru = {
|
|
|
2097
2934
|
retry: 'Повторить',
|
|
2098
2935
|
},
|
|
2099
2936
|
draftBar: {
|
|
2937
|
+
messageClean: "Предпросмотр черновика — неопубликованных изменений нет; всё здесь уже действует.",
|
|
2938
|
+
sampleDataTitle: "Примеры данных появятся после публикации",
|
|
2939
|
+
sampleDataBody: "Вы просматриваете структуру приложения. Опубликуйте его, чтобы загрузить примеры записей и запустить его.",
|
|
2940
|
+
publishCta: "Опубликовать и посмотреть",
|
|
2100
2941
|
message: 'Предпросмотр черновика — вы видите неопубликованные изменения. Ничего не вступит в силу до публикации.',
|
|
2101
2942
|
publish: 'Опубликовать',
|
|
2102
2943
|
publishing: 'Публикация…',
|