@object-ui/i18n 16.0.0 → 17.1.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 +1270 -0
- package/dist/locales/ar.d.ts +827 -2
- package/dist/locales/ar.js +833 -7
- package/dist/locales/de.d.ts +825 -2
- package/dist/locales/de.js +831 -7
- package/dist/locales/en.d.ts +404 -17
- package/dist/locales/en.js +419 -19
- package/dist/locales/es.d.ts +825 -2
- package/dist/locales/es.js +831 -7
- package/dist/locales/fr.d.ts +827 -2
- package/dist/locales/fr.js +833 -7
- package/dist/locales/index.d.ts +7378 -90
- package/dist/locales/ja.d.ts +825 -2
- package/dist/locales/ja.js +831 -7
- package/dist/locales/ko.d.ts +825 -2
- package/dist/locales/ko.js +831 -7
- package/dist/locales/pt.d.ts +827 -2
- package/dist/locales/pt.js +833 -7
- package/dist/locales/ru.d.ts +827 -2
- package/dist/locales/ru.js +833 -7
- package/dist/locales/zh.d.ts +327 -18
- package/dist/locales/zh.js +329 -18
- package/dist/useObjectLabel.d.ts +240 -12
- package/dist/useObjectLabel.js +109 -44
- 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,9 +83,14 @@ const ru = {
|
|
|
74
83
|
package: "Пакет",
|
|
75
84
|
},
|
|
76
85
|
actions: {
|
|
86
|
+
decisionOutput: {
|
|
87
|
+
help: 'Передаётся в поток как результат решения.',
|
|
88
|
+
helpMultiValue: 'Передаётся в поток как результат решения. Несколько значений разделяйте запятыми.',
|
|
89
|
+
},
|
|
77
90
|
resultDialog: {
|
|
78
|
-
defaultTitle: '
|
|
79
|
-
acknowledge: '
|
|
91
|
+
defaultTitle: 'Сохраните это значение сейчас',
|
|
92
|
+
acknowledge: 'Я сохранил(а) это',
|
|
93
|
+
copyAll: 'Копировать всё',
|
|
80
94
|
},
|
|
81
95
|
},
|
|
82
96
|
validation: {
|
|
@@ -93,6 +107,16 @@ const ru = {
|
|
|
93
107
|
type: "{{field}} должно быть допустимым {{type}}",
|
|
94
108
|
},
|
|
95
109
|
form: {
|
|
110
|
+
noPermissionToSave: "У вас нет прав на сохранение этой записи.",
|
|
111
|
+
submitFailed: "Не удалось сохранить. Попробуйте ещё раз.",
|
|
112
|
+
discardTitle: "Отменить изменения?",
|
|
113
|
+
discardMessage: "Есть несохранённые изменения. Если закрыть форму сейчас, правки будут потеряны.",
|
|
114
|
+
keepEditing: "Продолжить редактирование",
|
|
115
|
+
discard: "Отменить",
|
|
116
|
+
conflictTitle: "Конфликт сохранения",
|
|
117
|
+
conflictMessage: "Пока вы редактировали, эту запись изменил другой пользователь. Перезапись заменит его изменения вашими.",
|
|
118
|
+
conflictLatestVersion: "Его сохранение: {{time}}",
|
|
119
|
+
conflictOverwrite: "Перезаписать",
|
|
96
120
|
addItem: "Добавить элемент",
|
|
97
121
|
removeItem: "Удалить элемент",
|
|
98
122
|
fieldRequired: "Это поле обязательно",
|
|
@@ -103,8 +127,6 @@ const ru = {
|
|
|
103
127
|
stepOf: "Шаг {{current}} из {{total}}",
|
|
104
128
|
createTitle: "Создать {{object}}",
|
|
105
129
|
editTitle: "Редактировать {{object}}",
|
|
106
|
-
createDescription: "Добавить новый {{object}} в базу данных.",
|
|
107
|
-
editDescription: "Обновить данные {{object}}",
|
|
108
130
|
saveRecord: "Сохранить запись",
|
|
109
131
|
create: "Создать",
|
|
110
132
|
update: "Обновить",
|
|
@@ -113,14 +135,70 @@ const ru = {
|
|
|
113
135
|
deleteSuccess: "{{object}} удалён",
|
|
114
136
|
},
|
|
115
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
|
+
},
|
|
116
151
|
relativeDate: {
|
|
117
152
|
overdue: "Просрочено на {{count}} дн.",
|
|
118
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
|
+
},
|
|
119
170
|
richText: {
|
|
120
171
|
format: "Формат: {{format}}",
|
|
121
172
|
basicEditorHint: "Редактор форматированного текста (базовый)",
|
|
122
173
|
placeholder: "Введите текст...",
|
|
123
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
|
+
},
|
|
124
202
|
},
|
|
125
203
|
table: {
|
|
126
204
|
rowsPerPage: "Строк на странице",
|
|
@@ -155,6 +233,37 @@ const ru = {
|
|
|
155
233
|
delete: "Удалить",
|
|
156
234
|
},
|
|
157
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
|
+
},
|
|
158
267
|
actions: "Действия",
|
|
159
268
|
edit: "Редактировать",
|
|
160
269
|
delete: "Удалить",
|
|
@@ -180,7 +289,88 @@ const ru = {
|
|
|
180
289
|
densityCycleShortHint: "Нажмите для изменения",
|
|
181
290
|
},
|
|
182
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: "Импортировано через режим совместимости: это подключение не поддерживает серверный маршрут импорта, поэтому значения сохранены как текст без приведения типов на сервере. Обновите бэкенд/клиент для полноценного импорта (приведение типов и поиск связей).",
|
|
183
372
|
title: "Импорт {{object}}",
|
|
373
|
+
notAllowed: "Этот объект не открыт для импорта.",
|
|
184
374
|
stepUpload: "Загрузка",
|
|
185
375
|
stepMapping: "Сопоставление",
|
|
186
376
|
stepPreview: "Предпросмотр",
|
|
@@ -256,6 +446,42 @@ const ru = {
|
|
|
256
446
|
moreEvents: "+{{count}} ещё",
|
|
257
447
|
},
|
|
258
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: "Обновить",
|
|
259
485
|
loading: 'Loading records...',
|
|
260
486
|
recordCount: "{{count}} записей",
|
|
261
487
|
recordCountOne: "{{count}} запись",
|
|
@@ -267,6 +493,8 @@ const ru = {
|
|
|
267
493
|
filterRecords: "Фильтр записей",
|
|
268
494
|
sort: "Сортировка",
|
|
269
495
|
sortRecords: "Сортировка записей",
|
|
496
|
+
sortByIdSuffix: "(по ID)",
|
|
497
|
+
sortRelationalHint: "Столбцы, ссылающиеся на другую запись, здесь не показаны: их можно сортировать только по сохранённому ID, а не по имени, которое видно в ячейке. Чтобы сортировать по этому имени, добавьте поле-формулу с ним.",
|
|
270
498
|
group: "Группировка",
|
|
271
499
|
groupBy: "Группировать по",
|
|
272
500
|
export: "Экспорт",
|
|
@@ -296,6 +524,11 @@ const ru = {
|
|
|
296
524
|
recordEditingTitle: "Редактирование записей",
|
|
297
525
|
},
|
|
298
526
|
managedByBadge: {
|
|
527
|
+
systemWritable: {
|
|
528
|
+
short: "Схема платформы",
|
|
529
|
+
title: "Определено платформой, доступно администратору для записи",
|
|
530
|
+
body: "Схему этого объекта задаёт платформа, но строки вы создаёте и редактируете здесь сами. Кто именно может писать, определяют делегированное администрирование и безопасность на уровне записей, а не этот значок.",
|
|
531
|
+
},
|
|
299
532
|
config: {
|
|
300
533
|
short: "Конфигурация",
|
|
301
534
|
title: "Конфигурация администратора",
|
|
@@ -318,6 +551,7 @@ const ru = {
|
|
|
318
551
|
},
|
|
319
552
|
},
|
|
320
553
|
kanban: {
|
|
554
|
+
uncategorized: "Без категории",
|
|
321
555
|
addCard: "Добавить карточку",
|
|
322
556
|
addColumn: "Добавить колонку",
|
|
323
557
|
moveCard: "Переместить карточку",
|
|
@@ -339,12 +573,92 @@ const ru = {
|
|
|
339
573
|
},
|
|
340
574
|
},
|
|
341
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: "Не удалось сохранить — изменение отменено",
|
|
342
644
|
column: {
|
|
343
645
|
taskName: "Название задачи",
|
|
344
646
|
start: "Начало",
|
|
345
647
|
end: "Конец",
|
|
346
648
|
},
|
|
347
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: "Повторить",
|
|
348
662
|
prevPeriod: "Предыдущий период",
|
|
349
663
|
nextPeriod: "Следующий период",
|
|
350
664
|
zoomIn: "Увеличить",
|
|
@@ -390,6 +704,11 @@ const ru = {
|
|
|
390
704
|
redo: 'Redo',
|
|
391
705
|
},
|
|
392
706
|
detail: {
|
|
707
|
+
editInlineHint: "Дважды щёлкните для редактирования",
|
|
708
|
+
systemActor: "Система",
|
|
709
|
+
unknownUser: "Неизвестно",
|
|
710
|
+
created: "Создано",
|
|
711
|
+
updated: "Обновлено",
|
|
393
712
|
back: "Назад",
|
|
394
713
|
edit: "Редактировать",
|
|
395
714
|
editInline: "Редактировать",
|
|
@@ -450,6 +769,18 @@ const ru = {
|
|
|
450
769
|
attachmentCount: "{{count}} вложение",
|
|
451
770
|
attachmentCountPlural: "{{count}} вложений",
|
|
452
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: "У вас нет разрешения на это действие.",
|
|
453
784
|
unifiedDiff: "Единое представление",
|
|
454
785
|
sideBySideDiff: "Параллельное представление",
|
|
455
786
|
noChanges: "Нет изменений",
|
|
@@ -497,9 +828,15 @@ const ru = {
|
|
|
497
828
|
saving: "Сохранение…",
|
|
498
829
|
lockedByApproval: "Заблокировано для согласования",
|
|
499
830
|
lockedTooltip: "У этой записи есть ожидающий запрос на согласование; редактирование заблокировано",
|
|
831
|
+
writeStrippedTitle: "Часть полей не сохранена",
|
|
832
|
+
writeStrippedReadonly: "Поля только для чтения, поэтому не сохранены: {{fields}}",
|
|
833
|
+
writeStrippedByState: "Поля недоступны для редактирования в текущем состоянии записи, поэтому не сохранены: {{fields}}",
|
|
834
|
+
approvalPendingEditable: "На согласовании · редактирование доступно",
|
|
835
|
+
approvalPendingTooltip: "У этой записи есть ожидающий запрос на согласование, но этот шаг всё ещё разрешает редактирование",
|
|
500
836
|
cancelApproval: "Отменить согласование",
|
|
501
837
|
cancelApprovalInFlight: "Отмена…",
|
|
502
838
|
cancelApprovalTooltip: "Отмените ожидающий запрос на согласование, чтобы разблокировать запись",
|
|
839
|
+
cancelApprovalTooltipUnlocked: "Отменить ожидающий запрос на согласование",
|
|
503
840
|
cancelApprovalFailed: "Не удалось отменить согласование",
|
|
504
841
|
cancelApprovalUnavailable: "Отмена согласований не поддерживается этим источником данных",
|
|
505
842
|
linkCopied: "Ссылка скопирована в буфер обмена",
|
|
@@ -602,6 +939,35 @@ const ru = {
|
|
|
602
939
|
resetZoom: "Сбросить масштаб",
|
|
603
940
|
},
|
|
604
941
|
dashboard: {
|
|
942
|
+
noRows: "Нет строк",
|
|
943
|
+
pickMeasures: "Выберите меры (значения) для этого виджета набора данных.",
|
|
944
|
+
datasetUnsupported: "Этот источник данных не поддерживает запросы к наборам данных.",
|
|
945
|
+
details: "Подробности",
|
|
946
|
+
exportCsv: "Экспорт в CSV",
|
|
947
|
+
openInList: "Открыть в списке",
|
|
948
|
+
filters: {
|
|
949
|
+
label: "Фильтры дашборда",
|
|
950
|
+
dateRange: "Период",
|
|
951
|
+
allTime: "За всё время",
|
|
952
|
+
custom: "Произвольный…",
|
|
953
|
+
all: "Все",
|
|
954
|
+
reset: "Сбросить",
|
|
955
|
+
range: {
|
|
956
|
+
today: "Сегодня",
|
|
957
|
+
yesterday: "Вчера",
|
|
958
|
+
this_week: "Эта неделя",
|
|
959
|
+
last_week: "Прошлая неделя",
|
|
960
|
+
this_month: "Этот месяц",
|
|
961
|
+
last_month: "Прошлый месяц",
|
|
962
|
+
this_quarter: "Этот квартал",
|
|
963
|
+
last_quarter: "Прошлый квартал",
|
|
964
|
+
this_year: "Этот год",
|
|
965
|
+
last_year: "Прошлый год",
|
|
966
|
+
last_7_days: "Последние 7 дней",
|
|
967
|
+
last_30_days: "Последние 30 дней",
|
|
968
|
+
last_90_days: "Последние 90 дней",
|
|
969
|
+
},
|
|
970
|
+
},
|
|
605
971
|
addWidget: "Добавить виджет",
|
|
606
972
|
removeWidget: "Удалить виджет",
|
|
607
973
|
editLayout: "Редактировать макет",
|
|
@@ -729,6 +1095,7 @@ const ru = {
|
|
|
729
1095
|
navTypeGroup: "Группа",
|
|
730
1096
|
navTypeSeparator: "Разделитель",
|
|
731
1097
|
navTypeAction: "Действие",
|
|
1098
|
+
navTypeComponent: "Компонент",
|
|
732
1099
|
navEditIcon: "Редактировать значок",
|
|
733
1100
|
navToggleVisible: "Переключить видимость",
|
|
734
1101
|
navHidden: "Скрыто",
|
|
@@ -830,8 +1197,199 @@ const ru = {
|
|
|
830
1197
|
},
|
|
831
1198
|
},
|
|
832
1199
|
console: {
|
|
1200
|
+
settingsHub: {
|
|
1201
|
+
title: "Настройки",
|
|
1202
|
+
subtitle: "Настройте рабочее пространство, интеграции и флаги функций.",
|
|
1203
|
+
loadError: "Не удалось загрузить настройки",
|
|
1204
|
+
empty: "Настройки не зарегистрированы. Плагины могут регистрировать манифесты настроек через SettingsService.",
|
|
1205
|
+
settingsCount: "Настроек: {{n}}",
|
|
1206
|
+
beta: "Бета",
|
|
1207
|
+
categories: {
|
|
1208
|
+
Workspace: "Рабочее пространство",
|
|
1209
|
+
Communication: "Коммуникации",
|
|
1210
|
+
Security: "Безопасность",
|
|
1211
|
+
Infrastructure: "Инфраструктура",
|
|
1212
|
+
Beta: "Бета",
|
|
1213
|
+
Other: "Прочее",
|
|
1214
|
+
},
|
|
1215
|
+
},
|
|
1216
|
+
objectData: {
|
|
1217
|
+
badge: "Данные",
|
|
1218
|
+
description: "Срез данных, заданный URL — не привязан к сохранённому представлению.",
|
|
1219
|
+
filteredBy: "Фильтр",
|
|
1220
|
+
removeFilter: "Убрать фильтр {{field}}",
|
|
1221
|
+
saveAsView: "Сохранить как представление",
|
|
1222
|
+
noAccessTitle: "Доступ запрещён",
|
|
1223
|
+
noAccess: "У вас нет прав на просмотр этих данных.",
|
|
1224
|
+
},
|
|
1225
|
+
identityImport: {
|
|
1226
|
+
policyTitle: "Настройка входа для импортированных пользователей",
|
|
1227
|
+
policy: {
|
|
1228
|
+
auto: "Автоматически (рекомендуется)",
|
|
1229
|
+
invite: "Отправить приглашения",
|
|
1230
|
+
temporary: "Временные пароли",
|
|
1231
|
+
none: "Без пароля (только учётная запись)",
|
|
1232
|
+
},
|
|
1233
|
+
policyHint: {
|
|
1234
|
+
auto: "Доступным пользователям отправляется приглашение (по почте или SMS); тем, до кого не удалось дозвониться, выдаётся одноразовый пароль, который показывается ОДИН РАЗ на экране результата. Работает как с сервисом почты/SMS, так и без него.",
|
|
1235
|
+
invite: "Каждый созданный пользователь получает письмо для установки пароля (или SMS-приглашение для строк только с телефоном). Требуется настроенный сервис почты/SMS — недоступные строки завершатся ошибкой.",
|
|
1236
|
+
temporary: "Для развёртываний без почты/SMS: каждый созданный пользователь получает одноразовый пароль, который показывается ОДИН РАЗ на экране результата. При первом входе потребуется его сменить.",
|
|
1237
|
+
none: "Пользователи сначала входят по OTP на телефон, магической ссылке или ссылке сброса пароля, а затем задают собственный пароль.",
|
|
1238
|
+
},
|
|
1239
|
+
passwordsNote: "Временные пароли — показываются один раз и нигде не сохраняются. Сохраните их сейчас; каждый пользователь должен сменить свой при первом входе.",
|
|
1240
|
+
passwordsMore: "Остальные записи опущены — воспользуйтесь загрузкой файла.",
|
|
1241
|
+
passwordsDownload: "Скачать CSV",
|
|
1242
|
+
},
|
|
1243
|
+
ai: {
|
|
1244
|
+
usage: {
|
|
1245
|
+
title: "Использование ИИ",
|
|
1246
|
+
meterBuild: "Сборка",
|
|
1247
|
+
meterAsk: "Вопрос",
|
|
1248
|
+
statusOk: "Осталось много",
|
|
1249
|
+
statusLow: "Заканчивается",
|
|
1250
|
+
statusFull: "Лимит исчерпан",
|
|
1251
|
+
resetsDaily: "Сбросится сегодня ночью",
|
|
1252
|
+
resetsMonthly: "Сбросится в следующем цикле",
|
|
1253
|
+
ctaUpgrade: "Повысьте тариф, чтобы продолжить",
|
|
1254
|
+
ctaTopUp: "Добавьте кредиты, чтобы продолжить",
|
|
1255
|
+
ariaLabel: "Использование ИИ: {{status}}",
|
|
1256
|
+
},
|
|
1257
|
+
workspaceTitle: "Рабочее пространство ИИ",
|
|
1258
|
+
workspaceSubtitle: "Задавайте вопросы, изучайте и возвращайтесь к диалогам",
|
|
1259
|
+
openChats: "Открыть чаты",
|
|
1260
|
+
chats: "Чаты",
|
|
1261
|
+
chatsDescription: "Просматривайте диалоги с ИИ и управляйте ими.",
|
|
1262
|
+
share: "Поделиться",
|
|
1263
|
+
shareTitle: "Поделиться этим диалогом",
|
|
1264
|
+
shareDisabledTitle: "Начните диалог, чтобы включить публикацию",
|
|
1265
|
+
newChat: "Создать",
|
|
1266
|
+
searchChats: "Поиск по чатам...",
|
|
1267
|
+
noChatsYet: "Чатов пока нет",
|
|
1268
|
+
noChatsDescription: "Начните новый диалог, и он появится здесь.",
|
|
1269
|
+
noMatchingChats: "Подходящих чатов нет.",
|
|
1270
|
+
newConversation: "Новый диалог",
|
|
1271
|
+
renameConversation: "Переименовать диалог",
|
|
1272
|
+
deleteConversation: "Удалить диалог",
|
|
1273
|
+
saveRename: "Сохранить название",
|
|
1274
|
+
cancelRename: "Отменить переименование",
|
|
1275
|
+
loadingHistory: "Загрузка истории диалога...",
|
|
1276
|
+
conversationReady: "Диалог готов",
|
|
1277
|
+
preparingConversation: "Подготовка нового диалога",
|
|
1278
|
+
offlineDemoMode: "Автономный демонстрационный режим — список агентов недоступен",
|
|
1279
|
+
sendFailedRateLimited: "Вы отправляете сообщения слишком часто. Ваше сообщение сохранено ниже — подождите немного и попробуйте снова.",
|
|
1280
|
+
sendFailedGeneric: "Не удалось отправить сообщение. Оно сохранено ниже — попробуйте ещё раз.",
|
|
1281
|
+
askAgent: "Спросить {{agent}}...",
|
|
1282
|
+
assistant: "Ассистент",
|
|
1283
|
+
liveCanvas: "Живой предпросмотр — {{app}} (черновик)",
|
|
1284
|
+
liveCanvasUnlisted: "Работающее приложение — {{app}} (скрыто до публикации)",
|
|
1285
|
+
loadingAgents: "Загрузка агентов...",
|
|
1286
|
+
askAnything: "Спросите о чём угодно...",
|
|
1287
|
+
emptyTitle: "Начните диалог",
|
|
1288
|
+
emptyDescription: "Спросите о чём угодно — ассистент видит контекст вашего текущего приложения.",
|
|
1289
|
+
switchAssistant: "Сменить ассистента",
|
|
1290
|
+
chooseAgent: "Выберите ассистента…",
|
|
1291
|
+
empty: {
|
|
1292
|
+
build: {
|
|
1293
|
+
title: "Создать с помощью ИИ",
|
|
1294
|
+
description: "Опишите приложение или процесс обычными словами — я подготовлю объекты, экраны и автоматизации, а вы проверите и опубликуете.",
|
|
1295
|
+
},
|
|
1296
|
+
ask: {
|
|
1297
|
+
title: "Спросите свои данные",
|
|
1298
|
+
description: "Задавайте вопросы о записях — количество, списки и сводки по доступным вам данным.",
|
|
1299
|
+
},
|
|
1300
|
+
editApp: {
|
|
1301
|
+
title: "Редактирование «{{app}}»",
|
|
1302
|
+
titleGeneric: "Редактировать это приложение",
|
|
1303
|
+
description: "Что нужно изменить? Я изменю это приложение на месте — добавлю поле, объект, представление или автоматизацию либо скорректирую существующее.",
|
|
1304
|
+
},
|
|
1305
|
+
},
|
|
1306
|
+
clearConversation: "Очистить",
|
|
1307
|
+
sendHint: "чтобы отправить",
|
|
1308
|
+
agentActivity: "Активность агента",
|
|
1309
|
+
toolCompleted: "Завершено",
|
|
1310
|
+
toolRunning: "Выполняется",
|
|
1311
|
+
toolAwaitingApproval: "Ожидает подтверждения",
|
|
1312
|
+
toolFailed: "Ошибка",
|
|
1313
|
+
toolDetailsHidden: "Входные данные инструментов и необработанные результаты в этом режиме скрыты.",
|
|
1314
|
+
copy: "Копировать",
|
|
1315
|
+
copied: "Скопировано",
|
|
1316
|
+
regenerate: "Сгенерировать заново",
|
|
1317
|
+
model: "Модель",
|
|
1318
|
+
submit: "Отправить",
|
|
1319
|
+
uploadFiles: "Загрузить файлы",
|
|
1320
|
+
stopResponse: "Остановить ответ",
|
|
1321
|
+
trace: "трассировка",
|
|
1322
|
+
viewTrace: "Посмотреть трассировку",
|
|
1323
|
+
nextSteps: "Что дальше",
|
|
1324
|
+
publishDrafts: "Опубликовать",
|
|
1325
|
+
publishOk: "Опубликовано — объекты активны.",
|
|
1326
|
+
seedWarn: "Опубликовано, но часть примеров данных загрузить не удалось.",
|
|
1327
|
+
openBuiltApp: "Открыть приложение",
|
|
1328
|
+
designBuiltApp: "Открыть в Studio",
|
|
1329
|
+
previewDraft: "Предпросмотр",
|
|
1330
|
+
previewApp: "Предпросмотр приложения",
|
|
1331
|
+
resizeSplit: "Изменить размер чата и предпросмотра",
|
|
1332
|
+
hideChats: "Скрыть чаты",
|
|
1333
|
+
showChats: "Показать чаты",
|
|
1334
|
+
planTitle: "Предложенный план",
|
|
1335
|
+
planQuestions: "Подтвердите перед сборкой",
|
|
1336
|
+
planAssumptions: "Допущения",
|
|
1337
|
+
planApproveHint: "Ответьте, чтобы утвердить или скорректировать этот план.",
|
|
1338
|
+
planApprove: "Собрать",
|
|
1339
|
+
planAdjust: "Скорректировать",
|
|
1340
|
+
justNow: "только что",
|
|
1341
|
+
minutesAgo: "{{count}} мин назад",
|
|
1342
|
+
hoursAgo: "{{count}} ч назад",
|
|
1343
|
+
daysAgo: "{{count}} дн назад",
|
|
1344
|
+
agentLabels: {
|
|
1345
|
+
ask: "Вопрос",
|
|
1346
|
+
build: "Сборка",
|
|
1347
|
+
dataChat: "Ассистент",
|
|
1348
|
+
metadataAssistant: "Ассистент по метаданным",
|
|
1349
|
+
},
|
|
1350
|
+
suggestions: {
|
|
1351
|
+
dataChat: {
|
|
1352
|
+
userCount: "Сколько пользователей в системе? Перечисли их адреса электронной почты.",
|
|
1353
|
+
recentRecords: "Перечисли 5 последних созданных записей.",
|
|
1354
|
+
recordCounts: "Посчитай количество записей по каждому объекту.",
|
|
1355
|
+
},
|
|
1356
|
+
metadataAssistant: {
|
|
1357
|
+
buildCrm: "Создай CRM для продаж — клиенты, контакты и воронка сделок с итогами по этапам.",
|
|
1358
|
+
buildApp: "Создай трекер проектов — проекты, задачи с ответственными и сроками, доска по статусам.",
|
|
1359
|
+
buildFlow: "Спроектируй службу поддержки — заявки с приоритетом, процесс статусов и связи с клиентами.",
|
|
1360
|
+
buildInventory: "Создай приложение для склада — товары, остатки, поставщики и индикация низких остатков.",
|
|
1361
|
+
buildRecruiting: "Создай трекер кандидатов — кандидаты, открытые вакансии, этапы собеседований и заметки.",
|
|
1362
|
+
},
|
|
1363
|
+
generic: {
|
|
1364
|
+
help: "Чем ты можешь мне помочь?",
|
|
1365
|
+
availableObjects: "Перечисли доступные объекты данных.",
|
|
1366
|
+
recentActivity: "Сделай сводку моей недавней активности.",
|
|
1367
|
+
},
|
|
1368
|
+
editApp: {
|
|
1369
|
+
addField: "Добавь поле в один из объектов.",
|
|
1370
|
+
addObject: "Добавь новый объект и свяжи его с существующим.",
|
|
1371
|
+
addDashboard: "Добавь дашборд с ключевыми показателями.",
|
|
1372
|
+
addAutomation: "Добавь автоматизацию — согласование, процесс статусов или уведомление.",
|
|
1373
|
+
},
|
|
1374
|
+
},
|
|
1375
|
+
changesTitle: "Подтвердите изменения",
|
|
1376
|
+
changesConfirmed: "Подтверждено",
|
|
1377
|
+
changesConfirm: "Подтвердить",
|
|
1378
|
+
changesConfirmHint: "Ответьте, чтобы подтвердить или скорректировать это изменение.",
|
|
1379
|
+
changeVerb: {
|
|
1380
|
+
createObject: "Создать объект",
|
|
1381
|
+
addField: "Добавить поле",
|
|
1382
|
+
modifyField: "Изменить поле",
|
|
1383
|
+
deleteField: "Удалить поле",
|
|
1384
|
+
createMetadata: "Создать",
|
|
1385
|
+
updateMetadata: "Изменить",
|
|
1386
|
+
createSeed: "Сгенерировать примеры данных",
|
|
1387
|
+
createPackage: "Создать пакет приложения",
|
|
1388
|
+
},
|
|
1389
|
+
},
|
|
833
1390
|
title: "Консоль ObjectStack",
|
|
834
1391
|
initializing: "Инициализация приложения...",
|
|
1392
|
+
loadingHint: "Настройка нового окружения может занять некоторое время.",
|
|
835
1393
|
breadcrumb: {
|
|
836
1394
|
dashboards: "Панели",
|
|
837
1395
|
pages: "Страницы",
|
|
@@ -873,6 +1431,7 @@ const ru = {
|
|
|
873
1431
|
toggleDarkMode: "Переключить тёмный режим",
|
|
874
1432
|
},
|
|
875
1433
|
commandPalette: {
|
|
1434
|
+
title: "Палитра команд",
|
|
876
1435
|
placeholder: "Введите команду или поиск...",
|
|
877
1436
|
noResults: "Результаты не найдены.",
|
|
878
1437
|
objects: "Объекты",
|
|
@@ -906,6 +1465,14 @@ const ru = {
|
|
|
906
1465
|
system: "Системная",
|
|
907
1466
|
},
|
|
908
1467
|
objectView: {
|
|
1468
|
+
viewTypeTree: "Дерево",
|
|
1469
|
+
viewTypeTreeDesc: "Выстраивает самоссылающиеся записи в иерархию по родительскому полю.",
|
|
1470
|
+
parentField: "Родительское поле",
|
|
1471
|
+
parentFieldHelp: "Поле, указывающее на родительскую запись (тот же объект) и задающее иерархию. Подходят только самоссылающиеся поля.",
|
|
1472
|
+
viewName: "Название",
|
|
1473
|
+
viewNameHelp: "Машинный ключ (snake_case). Заполняется автоматически из заголовка — при желании измените.",
|
|
1474
|
+
viewNameRequired: "Введите ключ (строчные буквы, цифры, подчёркивание). Для нелатинских заголовков автозаполнение не работает.",
|
|
1475
|
+
viewNameInvalid: "Используйте строчные латинские буквы, цифры и подчёркивания; начните с буквы или подчёркивания.",
|
|
909
1476
|
systemViewReadonly: 'System view defined in code - duplicate to customize.',
|
|
910
1477
|
expandToPage: 'Open as full page',
|
|
911
1478
|
objectNotFound: "Объект не найден",
|
|
@@ -1119,7 +1686,28 @@ const ru = {
|
|
|
1119
1686
|
},
|
|
1120
1687
|
},
|
|
1121
1688
|
auth: {
|
|
1689
|
+
setPassword: {
|
|
1690
|
+
title: "Задать резервный пароль",
|
|
1691
|
+
description: "Вы вошли через единый вход. Задайте локальный пароль, чтобы входить в эту среду напрямую, если SSO станет недоступен.",
|
|
1692
|
+
email: "Электронная почта",
|
|
1693
|
+
newPassword: "Новый пароль",
|
|
1694
|
+
confirmPassword: "Подтвердите пароль",
|
|
1695
|
+
submit: "Задать пароль",
|
|
1696
|
+
submitting: "Сохранение…",
|
|
1697
|
+
success: "Локальный пароль задан",
|
|
1698
|
+
failed: "Не удалось задать пароль",
|
|
1699
|
+
passwordsMismatch: "Пароли не совпадают",
|
|
1700
|
+
noSession: "Срок действия сессии истёк.",
|
|
1701
|
+
backToSignIn: "Войти снова",
|
|
1702
|
+
},
|
|
1122
1703
|
login: {
|
|
1704
|
+
signingIn: "Выполняется вход…",
|
|
1705
|
+
ssoHandoff: "Перейти к {{target}}",
|
|
1706
|
+
devAdminHint: {
|
|
1707
|
+
title: "Среда разработки",
|
|
1708
|
+
body: "Войдите под предустановленным администратором для разработки:",
|
|
1709
|
+
dismiss: "Закрыть",
|
|
1710
|
+
},
|
|
1123
1711
|
title: "Войдите в свой аккаунт",
|
|
1124
1712
|
description: "Введите электронную почту и пароль для продолжения",
|
|
1125
1713
|
emailLabel: "Электронная почта",
|
|
@@ -1132,6 +1720,7 @@ const ru = {
|
|
|
1132
1720
|
noAccountText: "Нет аккаунта?",
|
|
1133
1721
|
signUpText: "Зарегистрироваться",
|
|
1134
1722
|
errors: {
|
|
1723
|
+
oauthCallbackFailed: "Не удалось завершить единый вход — ссылка для входа истекла или уже была использована. Попробуйте ещё раз.",
|
|
1135
1724
|
invalidCredentials: "Неверный email или пароль. Попробуйте ещё раз.",
|
|
1136
1725
|
emailNotVerified: "Пожалуйста, подтвердите email перед входом.",
|
|
1137
1726
|
},
|
|
@@ -1257,6 +1846,40 @@ const ru = {
|
|
|
1257
1846
|
shell: {
|
|
1258
1847
|
tenantHostHint: "Вы входите в это рабочее пространство",
|
|
1259
1848
|
},
|
|
1849
|
+
layout: {
|
|
1850
|
+
headline: "Создавайте мощные бизнес-приложения быстрее.",
|
|
1851
|
+
subhead: "Универсальная платформа для управления корпоративными данными, рабочими процессами и аналитикой.",
|
|
1852
|
+
},
|
|
1853
|
+
remediation: {
|
|
1854
|
+
signOut: "Выйти из аккаунта",
|
|
1855
|
+
password: {
|
|
1856
|
+
title: "Срок действия пароля истёк",
|
|
1857
|
+
fallbackMessage: "Задайте новый пароль, чтобы продолжить.",
|
|
1858
|
+
current: "Текущий пароль",
|
|
1859
|
+
next: "Новый пароль",
|
|
1860
|
+
confirm: "Подтвердите новый пароль",
|
|
1861
|
+
submit: "Изменить пароль и продолжить",
|
|
1862
|
+
submitting: "Обновление…",
|
|
1863
|
+
mismatch: "Новые пароли не совпадают.",
|
|
1864
|
+
failed: "Не удалось изменить пароль.",
|
|
1865
|
+
},
|
|
1866
|
+
mfa: {
|
|
1867
|
+
title: "Настройка двухфакторной аутентификации",
|
|
1868
|
+
fallbackMessage: "Ваша организация требует приложение-аутентификатор для продолжения.",
|
|
1869
|
+
confirmPassword: "Подтвердите пароль",
|
|
1870
|
+
continue: "Продолжить",
|
|
1871
|
+
preparing: "Подготовка…",
|
|
1872
|
+
enrollFailed: "Не удалось начать привязку.",
|
|
1873
|
+
scanTitle: "Отсканируйте в приложении-аутентификаторе",
|
|
1874
|
+
scanBody: "Отсканируйте этот QR-код с помощью Google Authenticator, 1Password, Authy и т. п., затем введите 6-значный код.",
|
|
1875
|
+
backupTitle: "Сохраните резервные коды",
|
|
1876
|
+
backupBody: "Храните их в надёжном месте — каждый код можно использовать один раз, если вы потеряете устройство.",
|
|
1877
|
+
codeLabel: "6-значный код",
|
|
1878
|
+
verify: "Проверить и продолжить",
|
|
1879
|
+
verifying: "Проверка…",
|
|
1880
|
+
invalidCode: "Неверный код. Попробуйте ещё раз.",
|
|
1881
|
+
},
|
|
1882
|
+
},
|
|
1260
1883
|
},
|
|
1261
1884
|
profile: {
|
|
1262
1885
|
title: "Профиль",
|
|
@@ -1321,11 +1944,15 @@ const ru = {
|
|
|
1321
1944
|
settings: "Настройки рабочего пространства",
|
|
1322
1945
|
},
|
|
1323
1946
|
help: {
|
|
1947
|
+
onThisPage: "На этой странице",
|
|
1948
|
+
keyboardShortcuts: "Сочетания клавиш",
|
|
1324
1949
|
appDocs: 'Документация приложения',
|
|
1325
1950
|
allDocs: 'Вся документация',
|
|
1326
1951
|
onlineDocs: 'Онлайн-документация',
|
|
1327
1952
|
},
|
|
1328
1953
|
sidebar: {
|
|
1954
|
+
packageManagement: "Управление пакетами",
|
|
1955
|
+
searchNavigation: "Поиск по навигации...",
|
|
1329
1956
|
settings: "Настройки",
|
|
1330
1957
|
help: "Помощь",
|
|
1331
1958
|
helpTooltip: "Помощь и документация",
|
|
@@ -1342,14 +1969,66 @@ const ru = {
|
|
|
1342
1969
|
removeFromFavorites: "Убрать {{name}} из избранного",
|
|
1343
1970
|
},
|
|
1344
1971
|
topbar: {
|
|
1972
|
+
openAssistant: "Открыть ассистента {{name}}",
|
|
1973
|
+
offline: "Не в сети",
|
|
1974
|
+
usersOnline: "Пользователи сейчас в сети",
|
|
1975
|
+
switchView: "Сменить представление",
|
|
1976
|
+
switchObject: "Сменить объект",
|
|
1977
|
+
connection: {
|
|
1978
|
+
connected: "Подключено",
|
|
1979
|
+
connecting: "Подключение...",
|
|
1980
|
+
reconnecting: "Переподключение...",
|
|
1981
|
+
disconnected: "Отключено",
|
|
1982
|
+
error: "Ошибка подключения",
|
|
1983
|
+
},
|
|
1984
|
+
stage: {
|
|
1985
|
+
preview: "Предварительная версия",
|
|
1986
|
+
beta: "Бета",
|
|
1987
|
+
tooltip: "Платформа в предварительной версии — функции могут измениться.",
|
|
1988
|
+
},
|
|
1345
1989
|
aiAssistant: "ИИ-ассистент",
|
|
1346
1990
|
designInStudio: "Дизайн в Studio",
|
|
1347
1991
|
},
|
|
1348
1992
|
home: {
|
|
1993
|
+
build: {
|
|
1994
|
+
title: "Создать приложение",
|
|
1995
|
+
subtitle: "Начните с нуля — спроектируйте объекты, формы, автоматизации и интерфейсы.",
|
|
1996
|
+
},
|
|
1997
|
+
template: {
|
|
1998
|
+
title: "Начать с шаблона",
|
|
1999
|
+
subtitle: "Установите шаблонное приложение из маркетплейса и настройте его под себя.",
|
|
2000
|
+
},
|
|
2001
|
+
welcomeAdminDescription: "Опишите свой бизнес одним предложением — ИИ создаст объекты, экраны, API и инструменты агента. Либо настройте всё сами через меню слева.",
|
|
2002
|
+
welcomeAdminDescriptionNoBuild: "Настройте первое приложение через меню «Администрирование» слева. Когда появятся данные, ИИ-ассистент поможет их изучить.",
|
|
2003
|
+
welcomeAdminDescriptionNoAi: "Настройте первое приложение через меню «Администрирование» слева.",
|
|
2004
|
+
noAppsTitle: "Приложений пока нет",
|
|
2005
|
+
noAppsDescription: "Ваше рабочее пространство настраивается — приложения, которыми поделится администратор, появятся здесь.",
|
|
2006
|
+
buildWithAI: "Создать с помощью ИИ",
|
|
2007
|
+
askAI: "Спросить ИИ",
|
|
2008
|
+
recoveryReminder: {
|
|
2009
|
+
message: "Задайте резервный пароль, чтобы входить в систему даже когда единый вход недоступен.",
|
|
2010
|
+
cta: "Задать пароль",
|
|
2011
|
+
dismiss: "Закрыть",
|
|
2012
|
+
},
|
|
2013
|
+
pendingDrafts: {
|
|
2014
|
+
message: "У вас {{count}} неопубликованных изменений — опубликуйте их, чтобы они вступили в силу.",
|
|
2015
|
+
cta: "Опубликовать",
|
|
2016
|
+
publishing: "Публикация…",
|
|
2017
|
+
published: "Опубликовано! Изменения вступили в силу.",
|
|
2018
|
+
publishFailed: "Не удалось опубликовать",
|
|
2019
|
+
},
|
|
1349
2020
|
title: "Главная",
|
|
1350
2021
|
subtitle: "Панель вашего рабочего пространства",
|
|
1351
2022
|
nav: "Главная",
|
|
1352
2023
|
allApps: "Все приложения",
|
|
2024
|
+
yourApps: "Ваши приложения",
|
|
2025
|
+
showMoreApps: "Ещё",
|
|
2026
|
+
showLess: "Свернуть",
|
|
2027
|
+
continueEmpty: "Открытые вами элементы появятся здесь.",
|
|
2028
|
+
actionCenter: {
|
|
2029
|
+
title: "Требует вашего внимания",
|
|
2030
|
+
empty: "Всё выполнено",
|
|
2031
|
+
},
|
|
1353
2032
|
loading: "Загрузка рабочего пространства...",
|
|
1354
2033
|
recent: "Недавние",
|
|
1355
2034
|
starred: "Избранные",
|
|
@@ -1401,7 +2080,21 @@ const ru = {
|
|
|
1401
2080
|
},
|
|
1402
2081
|
},
|
|
1403
2082
|
layout: {
|
|
2083
|
+
systemNav: {
|
|
2084
|
+
systemSettings: "Системные настройки",
|
|
2085
|
+
applications: "Приложения",
|
|
2086
|
+
appMarketplace: "Маркетплейс приложений",
|
|
2087
|
+
objectManager: "Менеджер объектов",
|
|
2088
|
+
users: "Пользователи",
|
|
2089
|
+
organizations: "Организации",
|
|
2090
|
+
roles: "Роли",
|
|
2091
|
+
configuration: "Конфигурация",
|
|
2092
|
+
createApp: "Создать приложение",
|
|
2093
|
+
},
|
|
1404
2094
|
appSwitcher: {
|
|
2095
|
+
switchApplication: "Сменить приложение",
|
|
2096
|
+
appsAvailable: "Доступно приложений: {{count}}",
|
|
2097
|
+
editNavigation: "Изменить навигацию",
|
|
1405
2098
|
home: "Главная",
|
|
1406
2099
|
addApp: "Добавить приложение",
|
|
1407
2100
|
editApp: "Редактировать приложение",
|
|
@@ -1491,10 +2184,11 @@ const ru = {
|
|
|
1491
2184
|
requiredError: "{{label}} обязательно",
|
|
1492
2185
|
cancel: "Отмена",
|
|
1493
2186
|
confirm: "Подтвердить",
|
|
2187
|
+
uploading: "Загрузка…",
|
|
1494
2188
|
defaultActionTitle: "Действие",
|
|
1495
2189
|
ok: "ОК",
|
|
1496
|
-
lookupPlaceholder: "
|
|
1497
|
-
lookupHelpText: "Введите ID записи
|
|
2190
|
+
lookupPlaceholder: "ID записи для {{label}}",
|
|
2191
|
+
lookupHelpText: "Для этого параметра не настроен объект ссылки, поэтому выбор записи недоступен. Введите ID записи или попросите администратора исправить параметр действия.",
|
|
1498
2192
|
},
|
|
1499
2193
|
actionConfirm: {
|
|
1500
2194
|
title: "Подтвердите действие",
|
|
@@ -1519,6 +2213,8 @@ const ru = {
|
|
|
1519
2213
|
updateFailed: "Не удалось обновить навигацию",
|
|
1520
2214
|
},
|
|
1521
2215
|
objectActions: {
|
|
2216
|
+
resetPackageSetConfirm: "Этот набор разрешений поставляется с установленным пакетом и не может быть удалён. Удаление сбросит его к исходному состоянию из пакета и отменит ваши настройки в этой среде. Продолжить?",
|
|
2217
|
+
resetPackageSetSuccess: "Набор разрешений сброшен к исходному состоянию из пакета",
|
|
1522
2218
|
deleteSuccess: "{{label}} успешно удалён",
|
|
1523
2219
|
deleteFailed: "Не удалось удалить {{label}}",
|
|
1524
2220
|
noRecordId: "ID записи не указан",
|
|
@@ -1683,6 +2379,7 @@ const ru = {
|
|
|
1683
2379
|
},
|
|
1684
2380
|
},
|
|
1685
2381
|
organizations: {
|
|
2382
|
+
create: "Создать рабочее пространство",
|
|
1686
2383
|
mine: "Мои организации",
|
|
1687
2384
|
title: "Организации",
|
|
1688
2385
|
heading: "Ваши организации",
|
|
@@ -1696,6 +2393,11 @@ const ru = {
|
|
|
1696
2393
|
noMatches: "Нет организаций, соответствующих запросу.",
|
|
1697
2394
|
},
|
|
1698
2395
|
notifications: {
|
|
2396
|
+
regionLabel: "Уведомления",
|
|
2397
|
+
groupCount: "Уведомлений: {{count}}",
|
|
2398
|
+
groupUnread: "Непрочитанных: {{count}}",
|
|
2399
|
+
groupMarkRead: "Отметить прочитанными",
|
|
2400
|
+
groupMarkReadTitle: "Отметить прочитанными все этого типа",
|
|
1699
2401
|
empty: "Нет уведомлений",
|
|
1700
2402
|
markAllRead: "Отметить все как прочитанные",
|
|
1701
2403
|
viewAll: "Показать все уведомления",
|
|
@@ -1814,7 +2516,103 @@ const ru = {
|
|
|
1814
2516
|
done: 'Готово — скрыть',
|
|
1815
2517
|
},
|
|
1816
2518
|
},
|
|
2519
|
+
excelImport: {
|
|
2520
|
+
noImportableFields: "У этого объекта нет полей, доступных для импорта.",
|
|
2521
|
+
schemaReadFailed: "Не удалось прочитать схему объекта.",
|
|
2522
|
+
imported: "Импортировано строк: {{count}} в {{object}}.",
|
|
2523
|
+
importFrom: "Импортировать реальные строки из",
|
|
2524
|
+
into: "в",
|
|
2525
|
+
opening: "Открытие…",
|
|
2526
|
+
importAction: "Импорт",
|
|
2527
|
+
dismiss: "Скрыть",
|
|
2528
|
+
},
|
|
2529
|
+
cloudOnboarding: {
|
|
2530
|
+
hintCreate: "Создайте первое окружение — отдельное рабочее пространство со своим URL, базой данных и тарифом. Разработка ведётся внутри него.",
|
|
2531
|
+
hintReady: "Продакшн-окружение готово. Откройте его, чтобы создавать и запускать приложения — всё происходит внутри окружения.",
|
|
2532
|
+
createEnvironment: "Создать окружение",
|
|
2533
|
+
openProduction: "Открыть продакшн",
|
|
2534
|
+
manageEnvironments: "Управление окружениями",
|
|
2535
|
+
},
|
|
2536
|
+
aiModelStatus: {
|
|
2537
|
+
summary: "Сборка / вопросы используют {{conversational}} ({{conversationalSource}}); структурированный вывод — {{structured}} ({{structuredSource}}).",
|
|
2538
|
+
summaryRouting: "Политика маршрутизации: бесплатные тарифы → {{free}}, платные тарифы → {{paid}}.",
|
|
2539
|
+
modelUnknown: "неизвестно",
|
|
2540
|
+
sourceUnknown: "адаптер не сообщил",
|
|
2541
|
+
rowConversational: "Модель Build / Ask",
|
|
2542
|
+
rowStructured: "Структурированный (blueprint / seed)",
|
|
2543
|
+
rowReasoning: "Интенсивность рассуждений",
|
|
2544
|
+
readFailed: "Не удалось прочитать действующую модель ИИ. В этом окружении может не быть запущен сервис ИИ, либо у вас нет разрешения ai:read.",
|
|
2545
|
+
readFailedWithStatus: "Не удалось прочитать действующую модель ИИ (HTTP {{status}}). В этом окружении может не быть запущен сервис ИИ, либо у вас нет разрешения ai:read.",
|
|
2546
|
+
overridesInEffect: "Действующие переопределения: ",
|
|
2547
|
+
noOverrides: "нет — используются значения по умолчанию развёрнутого кода.",
|
|
2548
|
+
adapter: "Адаптер: ",
|
|
2549
|
+
sourceCodeDefault: "значение по умолчанию в коде (без env-переопределения)",
|
|
2550
|
+
sourceInherits: "как у build/ask",
|
|
2551
|
+
sourcePinned: "закреплено через {{source}}",
|
|
2552
|
+
},
|
|
2553
|
+
chatbotError: {
|
|
2554
|
+
title: "Ошибка ответа",
|
|
2555
|
+
fallbackDetail: "Что-то пошло не так. Попробуйте ещё раз.",
|
|
2556
|
+
details: "Подробности",
|
|
2557
|
+
hide: "Скрыть",
|
|
2558
|
+
retry: "Повторить",
|
|
2559
|
+
},
|
|
2560
|
+
chatbotQuota: {
|
|
2561
|
+
title: "Требуется обновление тарифа",
|
|
2562
|
+
fallbackMessage: "Вы исчерпали квоту ИИ.",
|
|
2563
|
+
buyCredits: "Купить пакет кредитов",
|
|
2564
|
+
upgradePlan: "Повысить тариф",
|
|
2565
|
+
},
|
|
2566
|
+
environment: {
|
|
2567
|
+
addEnvironment: "Добавить окружение",
|
|
2568
|
+
setUpProduction: "Настройте продакшн-окружение",
|
|
2569
|
+
addDevelopment: "Добавить окружение разработки",
|
|
2570
|
+
},
|
|
2571
|
+
cloudConnection: {
|
|
2572
|
+
checking: "Проверка подключения…",
|
|
2573
|
+
retry: "Повторить",
|
|
2574
|
+
errors: {
|
|
2575
|
+
expired: "Срок действия запроса истёк до подтверждения. Начните заново.",
|
|
2576
|
+
bindFailed: "Не удалось выполнить привязку.",
|
|
2577
|
+
deviceCodeFailed: "Не удалось запросить код устройства.",
|
|
2578
|
+
},
|
|
2579
|
+
waiting: {
|
|
2580
|
+
popupOpened: "Подтвердите подключение в только что открывшемся окне — эта страница обновится сама.",
|
|
2581
|
+
polling: "Ожидание подтверждения в облачной консоли…",
|
|
2582
|
+
openApproval: "Открыть страницу подтверждения",
|
|
2583
|
+
copy: "Копировать",
|
|
2584
|
+
copied: "Скопировано",
|
|
2585
|
+
codePrefilled: "Код уже подставлен на странице подтверждения.",
|
|
2586
|
+
openItHere: "Окно не появилось? Откройте здесь",
|
|
2587
|
+
cancel: "Отмена",
|
|
2588
|
+
},
|
|
2589
|
+
bound: {
|
|
2590
|
+
title: "Подключено к ObjectStack Cloud",
|
|
2591
|
+
runtime: "Среда выполнения",
|
|
2592
|
+
organization: "Организация",
|
|
2593
|
+
approvedBy: "Подтвердил",
|
|
2594
|
+
runtimeId: "ID среды выполнения",
|
|
2595
|
+
environment: "Окружение",
|
|
2596
|
+
since: "Подключено",
|
|
2597
|
+
privatePackages: "Приватные пакеты вашей организации теперь отображаются в Маркетплейсе в разделе «Ваша организация».",
|
|
2598
|
+
disconnect: "Отключить",
|
|
2599
|
+
},
|
|
2600
|
+
unbound: {
|
|
2601
|
+
title: "Не подключено",
|
|
2602
|
+
body: "Подключите эту среду выполнения к управляющему слою ObjectStack, чтобы просматривать приватные пакеты вашей организации и устанавливать их здесь. Подтверждение — один клик в вашей облачной учётной записи; никакие идентификаторы и учётные данные на этой странице не вводятся.",
|
|
2603
|
+
connect: "Подключить",
|
|
2604
|
+
},
|
|
2605
|
+
},
|
|
1817
2606
|
marketplace: {
|
|
2607
|
+
suggestedBindings: {
|
|
2608
|
+
promptEveryone: "Приложение предлагает предоставить «{{set}}» всем вошедшим пользователям (позиция Everyone).",
|
|
2609
|
+
promptGuest: "Приложение предлагает предоставить «{{set}}» неаутентифицированным посетителям (позиция Guest).",
|
|
2610
|
+
confirm: "Предоставить",
|
|
2611
|
+
confirming: "Предоставление…",
|
|
2612
|
+
dismiss: "Закрыть",
|
|
2613
|
+
confirmedToast: "«{{set}}» теперь предоставлен: {{anchor}}.",
|
|
2614
|
+
dismissedToast: "Предложение по «{{set}}» закрыто.",
|
|
2615
|
+
},
|
|
1818
2616
|
title: "Маркетплейс приложений",
|
|
1819
2617
|
subtitle: "Просматривайте одобренные приложения из каталога ObjectStack. Нажмите на приложение, чтобы увидеть подробности и установить его.",
|
|
1820
2618
|
searchPlaceholder: "Поиск приложений по имени или ID манифеста…",
|
|
@@ -1866,6 +2664,7 @@ const ru = {
|
|
|
1866
2664
|
updateAvailable: 'Доступно обновление',
|
|
1867
2665
|
},
|
|
1868
2666
|
action: {
|
|
2667
|
+
installed: "Установлено",
|
|
1869
2668
|
install: "Установить",
|
|
1870
2669
|
reinstall: "Переустановить",
|
|
1871
2670
|
working: "Обработка…",
|
|
@@ -1936,6 +2735,14 @@ const ru = {
|
|
|
1936
2735
|
yearsAgo: "{{count}} лет назад",
|
|
1937
2736
|
},
|
|
1938
2737
|
},
|
|
2738
|
+
approvals: {
|
|
2739
|
+
approve: 'Утвердить',
|
|
2740
|
+
reject: 'Отклонить',
|
|
2741
|
+
comment: 'Комментарий (необязательно)',
|
|
2742
|
+
approveSuccess: 'Утверждено',
|
|
2743
|
+
rejectSuccess: 'Отклонено',
|
|
2744
|
+
rejectConfirm: 'Отклонить этот запрос на согласование?',
|
|
2745
|
+
},
|
|
1939
2746
|
approvalsInbox: {
|
|
1940
2747
|
loadMore: 'Загрузить ещё',
|
|
1941
2748
|
loadingMore: 'Загрузка…',
|
|
@@ -1960,13 +2767,28 @@ const ru = {
|
|
|
1960
2767
|
slaRemaining: 'SLA: осталось {{dur}}',
|
|
1961
2768
|
slaOverdue: 'SLA просрочен на {{dur}}',
|
|
1962
2769
|
actReassign: 'Передано',
|
|
2770
|
+
reassignFromTo: 'от {{from}} к {{to}}',
|
|
1963
2771
|
actRemind: 'Напоминание',
|
|
1964
2772
|
actRequestInfo: 'Запрошены данные',
|
|
1965
2773
|
actComment: 'Комментарий',
|
|
1966
2774
|
stepProgress: 'Шаги согласования',
|
|
1967
2775
|
prevRequest: 'Назад',
|
|
1968
2776
|
nextRequest: 'Далее',
|
|
1969
|
-
positionOf: '{{index}} из {{total}}',
|
|
2777
|
+
positionOf: 'Запрос {{index}} из {{total}}',
|
|
2778
|
+
progressApprovals: 'Согласования — {{got}} из {{need}}',
|
|
2779
|
+
progressGroups: 'Ход визирования — {{got}} из {{need}} групп',
|
|
2780
|
+
progressEligible: 'Доступных согласующих: {{count}}',
|
|
2781
|
+
progressBar: 'Ход решения',
|
|
2782
|
+
declaredActions: 'Действия',
|
|
2783
|
+
attachmentChip: 'Вложение',
|
|
2784
|
+
attachmentOpenFailed: 'Не удалось открыть вложение — попробуйте ещё раз',
|
|
2785
|
+
approveOneTitle: 'Согласовать «{{title}}»?',
|
|
2786
|
+
approveOneBody: 'Запрос будет согласован от вашего имени. Чтобы добавить комментарий или вложение, откройте запрос.',
|
|
2787
|
+
flowOrigin: 'Инициировано потоком',
|
|
2788
|
+
sortBy: 'Сортировка',
|
|
2789
|
+
sortRecent: 'Сначала новые',
|
|
2790
|
+
sortOldest: 'Сначала старые',
|
|
2791
|
+
sortAmount: 'Сумма (по убыванию)',
|
|
1970
2792
|
quickPhrase1: 'Согласовано — соответствует требованиям.',
|
|
1971
2793
|
quickPhrase2: 'Согласовано с условиями — следите за исполнением.',
|
|
1972
2794
|
quickPhrase3: 'Дополните материалы и отправьте повторно.',
|
|
@@ -2095,6 +2917,10 @@ const ru = {
|
|
|
2095
2917
|
retry: 'Повторить',
|
|
2096
2918
|
},
|
|
2097
2919
|
draftBar: {
|
|
2920
|
+
messageClean: "Предпросмотр черновика — неопубликованных изменений нет; всё здесь уже действует.",
|
|
2921
|
+
sampleDataTitle: "Примеры данных появятся после публикации",
|
|
2922
|
+
sampleDataBody: "Вы просматриваете структуру приложения. Опубликуйте его, чтобы загрузить примеры записей и запустить его.",
|
|
2923
|
+
publishCta: "Опубликовать и посмотреть",
|
|
2098
2924
|
message: 'Предпросмотр черновика — вы видите неопубликованные изменения. Ничего не вступит в силу до публикации.',
|
|
2099
2925
|
publish: 'Опубликовать',
|
|
2100
2926
|
publishing: 'Публикация…',
|