{ "app": { "brand": "Agent Desk", "metadataTitle": "Панель администратора ИИ-поддержки", "metadataDescription": "Панель администратора ИИ-поддержки" }, "common": { "language": "Язык", "notSignedIn": "Вы не вошли в систему", "guest": "гость", "loading": "Загрузка...", "loadingData": "Загрузка данных...", "emptyData": "Нет данных", "searchKeyword": "Поиск по ключевому слову", "emptyOptions": "Нет вариантов", "close": "Закрыть", "fullscreen": "Развернуть на весь экран", "exitFullscreen": "Выйти из полноэкранного режима", "selectedCount": "Выбрано: {count}", "expand": "Развернуть", "collapse": "Свернуть", "cancel": "Отмена", "status": "Статус", "save": "Сохранить", "confirm": "Подтвердить", "actions": "Действия", "name": "Название", "saving": "Сохранение...", "reset": "Сбросить", "operationFailed": "Не удалось выполнить операцию. Повторите попытку.", "loadFailed": "Не удалось загрузить данные. Повторите попытку.", "enabled": "Включено", "disabled": "Отключено" }, "language": { "enUS": "English", "zhCN": "中文 (Chinese)", "ruRU": "Русский", "viVN": "Tiếng Việt", "selectLanguage": "Выберите язык интерфейса" }, "organization": { "createTitle": "Создание организации", "createDescription": "Создайте новую организацию / рабочее пространство для вашей команды.", "name": "Название организации", "namePlaceholder": "например, Acme Corp", "code": "Slug / код (необязательно)", "codePlaceholder": "например, acme-corp", "create": "Создать организацию", "creating": "Создание...", "created": "Организация «{name}» успешно создана", "createFailed": "Не удалось создать организацию", "nameRequired": "Название организации обязательно", "manageTitle": "Управление организацией", "general": "Общие настройки", "members": "Участники команды", "addMember": "Добавить участника", "emailOrUsername": "Email или имя пользователя", "emailOrUsernamePlaceholder": "например, user@company.com или username", "role": "Роль", "owner": "Владелец", "admin": "Администратор", "member": "Участник", "add": "Добавить", "adding": "Добавление...", "remove": "Удалить", "removeConfirm": "Вы уверены, что хотите удалить этого участника?", "memberAdded": "Участник успешно добавлен", "memberRemoved": "Участник удалён", "updated": "Настройки организации обновлены", "save": "Сохранить изменения", "saving": "Сохранение..." }, "pagination": { "pageSummary": "Страница {page} из {totalPages}", "total": "Записей: {total}", "pageSize": "По {pageSize} на странице", "previous": "Назад", "next": "Вперёд" }, "confirm": { "title": "Подтверждение действия", "description": "После подтверждения действие будет выполнено.", "confirm": "Подтвердить", "cancel": "Отмена" }, "realtime": { "connecting": "Подключение канала реального времени", "connected": "Канал реального времени подключён", "disconnected": "Канал реального времени отключён", "compactConnecting": "Real-time: подключение", "compactConnected": "Real-time: на связи", "compactDisconnected": "Real-time: нет связи" }, "notification": { "new": "Новое уведомление", "view": "Просмотреть", "openFailed": "Не удалось открыть уведомление.", "connectFailed": "Не удалось подключиться к службе уведомлений.", "loadFailed": "Не удалось загрузить уведомления.", "all": "Все", "unread": "Непрочитанные", "read": "Прочитанные", "refresh": "Обновить", "markAllRead": "Отметить все как прочитанные", "markAllReadSuccess": "Все уведомления отмечены как прочитанные.", "markAllReadFailed": "Не удалось отметить все уведомления как прочитанные.", "fallbackTitle": "Уведомление", "loading": "Загрузка уведомлений", "empty": "Уведомлений нет", "ticketAssignedTitle": "Обращение назначено", "ticketAssignedLine": "Обращение {ticketNo} назначено на вас.", "assignmentReason": "Причина назначения: {reason}", "conversationTransferredTitle": "Диалог передан", "conversationAutoAssignedTitle": "Диалог назначен автоматически", "conversationAssignedTitle": "Диалог назначен", "conversationAssignedLine": "Диалог #{conversationId} назначен на вас.", "transferReason": "Причина передачи: {reason}" }, "json": { "invalid": "Некорректный JSON.", "valid": "Корректно", "invalidLabel": "Некорректно", "readyHint": "Введите корректный JSON, чтобы проверить вызов инструмента.", "empty": "Нет данных" }, "api": { "requestFailed": "Запрос не выполнен.", "authExpired": "Сессия истекла. Войдите снова.", "customerSessionNotReady": "Чат поддержки ещё не готов.", "supportAuthenticationRequired": "Не удалось подтвердить аккаунт поддержки. Перезагрузите чат и повторите попытку. Гостевая сессия не открыта." }, "supportHelpWorkbench": { "title": "Центр справки", "createPage": "Новая страница", "createChildPage": "Новая вложенная страница", "createDescription": "Страница появится в навигации справки и может содержать контент.", "createAndEdit": "Создать и редактировать", "creating": "Создание...", "created": "Страница создана", "pageTitle": "Заголовок страницы", "searchPlaceholder": "Поиск страниц", "filterAll": "Все", "filterDraft": "Черновик", "filterPublished": "Опубликовано", "filterHidden": "Скрыто", "sortDisabledDuringSearch": "В результатах поиска сортировка недоступна", "loading": "Загрузка страниц...", "empty": "Страниц справки нет", "selectPrompt": "Выберите страницу слева или создайте новую", "pageSettings": "Настройки страницы", "parentPage": "Родительская страница", "selectParentPage": "Выберите родительскую страницу", "rootDirectory": "Корень", "slug": "Slug", "slugFormatHint": "Используйте только буквы, цифры и дефисы (-).", "slugChangeWarning": "Изменение slug сделает предыдущий URL недействительным. Обновите внешние ссылки.", "status": "Статус", "selectStatus": "Выберите статус", "statusDraft": "Черновик", "statusPublished": "Опубликовано", "statusHidden": "Скрыто", "summary": "Краткое описание страницы", "summaryPlaceholder": "Используется в навигации справки, рекомендациях и результатах поиска", "contentPlaceholder": "Напишите содержимое страницы", "save": "Сохранить", "saving": "Сохранение...", "saved": "Страница сохранена", "settingsSaved": "Настройки страницы сохранены", "savedState": "Все изменения сохранены", "unsaved": "Есть несохранённые изменения", "unsavedLeaveConfirm": "На этой странице есть несохранённые изменения. Всё равно уйти?", "unsavedLeaveTitle": "Отменить несохранённые изменения?", "discardChanges": "Отменить изменения", "continueEditing": "Продолжить редактирование", "publishedSaveWarning": "Сохранение опубликованной страницы сразу обновит публичный контент", "saveBeforeStatusChange": "Сохраните изменения перед сменой статуса публикации", "publishedAction": "Опубликовать", "publishedConfirmTitle": "Опубликовать «{title}»?", "publishedConfirmDescription": "Страница сразу станет публично доступной.", "publishedSuccess": "Страница опубликована", "draftAction": "Снять с публикации", "draftConfirmTitle": "Снять с публикации «{title}»?", "draftConfirmDescription": "Страница больше не будет доступна из публичного центра справки.", "draftSuccess": "Страница возвращена в черновики", "withdrawAction": "Снять с публикации", "hiddenAction": "Скрыть", "hiddenConfirmTitle": "Скрыть «{title}»?", "hiddenConfirmDescription": "Страница больше не будет публично доступна, но её содержимое останется в админке.", "hiddenSuccess": "Страница скрыта", "openPublicPage": "Открыть публичную страницу", "collapse": "Свернуть вложенные страницы", "expand": "Развернуть вложенные страницы", "dragPage": "Перетащите страницу «{title}», чтобы изменить порядок", "dragDisabled": "В текущем состоянии сортировка недоступна", "sameLevelOnly": "Страницы можно переставлять только внутри одного родителя", "sortSaved": "Порядок страниц обновлён", "pageActions": "Действия со страницей: {title}", "deletePage": "Удалить страницу", "deleteConfirm": "Удалить «{title}»? Страницы с вложенными страницами удалить нельзя.", "deleteConfirmTitle": "Удалить «{title}»?", "deleted": "Страница удалена", "cancel": "Отмена" }, "editor": { "placeholder": "Введите содержимое...", "undo": "Отменить", "redo": "Повторить", "bold": "Полужирный", "underline": "Подчёркнутый", "italic": "Курсив", "strike": "Зачёркнутый", "heading1": "Заголовок 1", "heading2": "Заголовок 2", "inlineCode": "Встроенный код", "codeBlock": "Блок кода", "bulletList": "Маркированный список", "orderedList": "Нумерованный список", "quote": "Цитата", "link": "Ссылка", "image": "Изображение", "linkText": "текст ссылки", "promptLinkUrl": "Введите URL ссылки", "fullscreen": "Полный экран", "exitFullscreen": "Выйти из полноэкранного режима", "previewOnly": "Только просмотр", "modeLabelMarkdown": "Markdown", "modeLabelRichText": "Rich Text", "modeSwitchTitle": "Переключить в режим {mode}?", "modeSwitchDescription": "Содержимое Rich Text будет преобразовано в Markdown. Сложные стили, встроенное содержимое или часть структуры могут не сохраниться.", "modeSwitchAction": "Преобразовать и переключить", "modeSwitchCancel": "Оставить текущий режим", "modeSwitchLabel": "Режим редактора" }, "locale": { "zh-CN": "简体中文", "en-US": "English", "ru-RU": "Русский" }, "auth": { "checkingSession": "Проверяем вашу сессию", "syncingProfile": "Синхронизируем профиль администратора и разрешения", "loginSuccess": "Вход выполнен. Переходим в панель управления.", "loginFailed": "Не удалось войти", "loadingOptions": "Загрузка способов входа...", "optionsLoadFailed": "Не удалось загрузить способы входа.", "welcome": "С возвращением", "loginDescription": "Войдите в учётную запись {brand}", "username": "Имя пользователя", "usernamePlaceholder": "Имя пользователя или email", "password": "Пароль", "passwordPlaceholder": "Введите пароль", "forgotPassword": "Забыли пароль?", "signingIn": "Выполняется вход...", "signIn": "Войти", "continueWith": "Или продолжить с", "wxworkSignIn": "Войти через WeCom", "oidcSignIn": "Войти через DOS ID", "redirectingToOidc": "Перенаправление в DOS ID...", "noAccount": "Нет учётной записи?", "signUp": "Зарегистрироваться", "termsPrefix": "Нажимая «Продолжить», вы соглашаетесь с нашими", "termsOfService": "Условиями использования", "termsJoiner": "и", "privacyPolicy": "Политикой конфиденциальности", "imageAlt": "Изображение", "wxworkMissingTicket": "Отсутствует заявка на вход через WeCom.", "wxworkFailed": "Не удалось войти через WeCom.", "wxworkSigningIn": "Выполняется вход через WeCom", "oidcMissingTicket": "Отсутствует заявка на вход через DOS ID.", "oidcFailed": "Не удалось войти через DOS ID.", "oidcSigningIn": "Выполняется вход через DOS ID", "checkingTicket": "Проверяем заявку на вход и открываем панель управления." }, "legal": { "terms": { "title": "Условия использования", "description": "Эти условия описывают основные правила доступа к системе и её использования. Это общий продуктовый текст, который может быть заменён официальными юридическими условиями поставщика услуг.", "updatedAt": "Последнее обновление: 2026-05-30", "relatedLabel": "Также читайте", "relatedLink": "Политику конфиденциальности", "sections": [ { "title": "1. Описание сервиса", "body": "Система помогает командам поддержки управлять диалогами, обращениями, базами знаний, ИИ-возможностями и связанными операционными данными. Вы можете получать доступ к ней и использовать её только в пределах ваших служебных полномочий." }, { "title": "2. Учётные записи и доступ", "body": "Вы отвечаете за сохранность учётной записи, пароля, токенов и учётных данных стороннего входа. Действия, вызванные общими, утёкшими или использованными не по назначению учётными данными, могут считаться действиями владельца учётной записи." }, { "title": "3. Допустимое использование", "body": "Вы не должны использовать систему для противоправной деятельности, нарушения прав, сбоев обслуживания, обхода привилегий, вредоносного кода, посторонних данных или несанкционированного доступа к конфиденциальной информации." }, { "title": "4. Ответственность за данные и содержимое", "body": "Создаваемое, загружаемое, синхронизируемое или обрабатываемое в системе содержимое должно быть законным, достоверным и соответствовать внутренним требованиям управления. Необходимые журналы действий могут храниться в целях безопасности, аудита, эксплуатации и соблюдения требований." }, { "title": "5. Изменения сервиса и доступность", "body": "Функции системы могут изменяться из-за развития продукта, технического обслуживания, исправлений безопасности или изменений сторонних сервисов. Поставщик услуг стремится обеспечить стабильную работу, но не гарантирует, что какая-либо функция останется неизменной и будет доступна без перебоев." }, { "title": "6. Оговорка об ответственности", "body": "Сгенерированные ИИ материалы, автоматическое назначение, сводки и подсказки носят вспомогательный характер. Окончательное решение, содержание ответа и результат обработки должны подтверждаться уполномоченными сотрудниками." }, { "title": "7. Контакты и обновления", "body": "Если у вас есть вопросы по этим условиям, свяжитесь с системным администратором или поставщиком услуг через опубликованные контактные каналы. После обновлений применяется последняя версия, отображаемая на этой странице." } ] }, "privacy": { "title": "Политика конфиденциальности", "description": "Эта политика объясняет, какие сведения система может обрабатывать при предоставлении возможностей администрирования поддержкой, зачем они используются и как защищаются. Это общий продуктовый текст, который может быть заменён официальным юридическим текстом поставщика услуг.", "updatedAt": "Последнее обновление: 2026-05-30", "relatedLabel": "Также читайте", "relatedLink": "Условия использования", "sections": [ { "title": "1. Какие сведения мы обрабатываем", "body": "Система может обрабатывать профили учётных записей, роли и разрешения, записи о входах, журналы действий, диалоги поддержки, содержимое обращений, контактные данные клиентов, содержимое баз знаний и операционную диагностику." }, { "title": "2. Цели использования", "body": "Эти сведения используются для аутентификации, контроля доступа, совместной работы поддержки, отслеживания обращений, контроля качества, аудита безопасности, эксплуатации, улучшения функций и выполнения применимых нормативных требований." }, { "title": "3. Хранение и защита", "body": "Система использует контроль доступа, аудит-логирование, защиту передачи данных и надлежащие меры изоляции данных. Вам также следует избегать ввода конфиденциальной личной информации, если в этом нет явной служебной необходимости." }, { "title": "4. Сторонние сервисы и интеграции", "body": "При включённых WeCom, OIDC, каналах сообщений, ИИ-моделях или других внешних интеграциях соответствующие сведения могут передаваться этим сервисам согласно конфигурации. Обработка также регулируется правилами поставщиков интеграций и организационными настройками." }, { "title": "5. Права пользователей и администраторов", "body": "Уполномоченные администраторы могут запрашивать, исправлять, выгружать или удалять соответствующие бизнес-данные в соответствии с организационными правилами. По вопросам, касающимся личной информации, другие пользователи могут обратиться к своему системному администратору." }, { "title": "6. Cookies и локальное хранилище", "body": "Система может использовать локальное хранилище браузера, чтобы сохранять состояние сессии, язык, тему и настройки интерфейса, обеспечивая доступ, поддерживая безопасность и улучшая взаимодействие." }, { "title": "7. Контакты и обновления", "body": "Если у вас есть вопросы о защите данных, свяжитесь с системным администратором или поставщиком услуг через опубликованные контактные каналы. После обновлений применяется последняя версия, отображаемая на этой странице." } ] } }, "account": { "passwordRequired": "Введите новый пароль.", "confirmPasswordRequired": "Подтвердите новый пароль.", "passwordMismatch": "Пароли не совпадают.", "passwordChanged": "Ваш пароль изменён. Войдите снова.", "changePasswordFailed": "Не удалось изменить пароль.", "changePassword": "Смена пароля", "changePasswordDescription": "Обновите пароль текущей учётной записи. После отправки потребуется войти снова.", "cancel": "Отмена", "submitting": "Отправка...", "confirmChange": "Сменить пароль", "newPassword": "Новый пароль", "newPasswordPlaceholder": "Введите новый пароль", "confirmPassword": "Подтверждение пароля", "confirmPasswordPlaceholder": "Повторите новый пароль" }, "operatorPresence": { "viewing": "{name} просматривает этот диалог", "typing": "{name} печатает ответ...", "multipleViewing": "{count} оператора просматривают этот диалог", "collisionWarning": "В этом диалоге уже работает другой оператор во избежание дублирования ответов." }, "conversation": { "syncConversationDataFailed": "Не удалось синхронизировать данные диалога.", "syncMessagesFailed": "Не удалось синхронизировать сообщения.", "syncConversationListFailed": "Не удалось синхронизировать список диалогов.", "realtimeConnectFailed": "Не удалось подключиться к службе реального времени.", "newMessage": "Новое сообщение", "filterActive": "Активные", "filterPending": "Ожидающие", "filterAiServing": "Обрабатывает ИИ", "filterClosed": "Закрытые", "filterPlaceholder": "Фильтр по статусу", "loadListFailed": "Не удалось загрузить диалоги.", "loading": "Загрузка...", "empty": "Диалогов пока нет", "customerFallback": "Клиент #{id}", "noTime": "Времени ещё нет", "noLatestMessage": "Недавних сообщений нет", "teamOnDuty": "Дежурная команда: {name}", "customerAvatar": "К", "customerOnline": "Клиент в сети", "customerOffline": "Клиент не в сети", "channelNumber": "Канал #{id}", "linkedCustomer": "Клиент привязан", "workbenchTitle": "Рабочее пространство диалогов", "openMenuSelectConversation": "Откройте меню, чтобы выбрать диалог", "selectConversationFromSidebar": "Выберите диалог слева, чтобы начать отвечать", "conversationInfo": "Информация о диалоге", "createTicket": "Создать обращение", "transferConversation": "Передать диалог", "closeConversation": "Закрыть диалог", "expandConversationInfo": "Развернуть информацию о диалоге", "collapseConversationInfo": "Свернуть информацию о диалоге", "closeConversationList": "Закрыть список диалогов", "markReadFailed": "Не удалось отметить диалог как прочитанный.", "emptyMessages": "Сообщений пока нет", "loadOlder": "Загрузить более ранние сообщения", "noConversationMobile": "Нажмите меню в левом верхнем углу, чтобы выбрать диалог", "selectConversationToChat": "Выберите диалог слева, чтобы начать переписку", "closedNotice": "Этот диалог закрыт.", "aiServingNotice": "Этот диалог обрабатывает ИИ. Перед ответом передайте его оператору.", "claim": "Взять в работу", "sendAttachmentFailed": "Не удалось отправить вложение.", "customerSender": "Клиент", "agentSender": "Оператор", "messageRecalledHtml": "Это сообщение было отозвано.", "messageRecalled": "Отозвано", "customerRead": "Прочитано клиентом", "customerUnread": "Не прочитано клиентом", "recallFailed": "Не удалось отозвать сообщение.", "recalling": "Отзыв...", "recall": "Отозвать", "loadQuickRepliesFailed": "Не удалось загрузить быстрые ответы.", "tagRemoved": "Тег диалога удалён.", "tagAdded": "Тег диалога добавлен.", "tagUpdateFailed": "Не удалось обновить теги диалога.", "editTags": "Изменить теги диалога", "edit": "Изменить", "searchTags": "Поиск тегов", "loadingTags": "Загрузка тегов...", "emptyTags": "Тегов нет", "tagGroup": "Теги", "unlinkedCustomerTitle": "Клиент CRM не привязан", "unlinkedCustomerDescription": "Этот диалог пока не привязан к профилю клиента. Привяжите клиента, чтобы управлять здесь данными компании и контактами.", "linkOrCreateCustomer": "Привязать или создать клиента", "missingCustomerTitle": "Клиент удалён или недоступен", "missingCustomerDescription": "Профиль клиента, привязанный к этому диалогу, больше недоступен. Привяжите существующего клиента заново или создайте нового и прикрепите его к этому диалогу.", "relinkOrCreateCustomer": "Привязать заново или создать клиента", "conversationOwner": "Владелец диалога", "conversationId": "Идентификатор диалога", "channelId": "Идентификатор канала", "customerId": "Идентификатор клиента", "selectConversationForInfo": "Выберите диалог, чтобы посмотреть детали", "selectSidebarConversationForInfo": "Выберите диалог слева, чтобы посмотреть детали", "loadTagsFailed": "Не удалось загрузить теги.", "conversationTags": "Теги диалога", "noConversationTags": "Для этого диалога теги не заданы", "loadCustomerFailed": "Не удалось загрузить данные клиента.", "loadingCustomer": "Загрузка данных клиента...", "unnamedCustomer": "Клиент без имени", "customerProfileEmpty": "Профиль клиента привязан, но основные данные ещё не заполнены. Нажмите «Изменить», чтобы дополнить профиль.", "lastActive": "Последняя активность", "remark": "Примечания", "createdAt": "Создан", "updatedAt": "Обновлён", "noContacts": "Способов связи пока нет", "primaryContactBadge": "Основной", "verifiedContactBadge": "Подтверждён", "companyUnavailable": "Не удалось загрузить данные компании, либо компания была удалена.", "saved": "Сохранено.", "saveFailed": "Не удалось сохранить.", "loadTicketsFailed": "Не удалось загрузить связанные обращения.", "relatedTickets": "Связанные обращения", "loadingTickets": "Загрузка обращений...", "noRelatedTickets": "К этому диалогу не привязано ни одного обращения", "companyNameRequired": "Введите название компании.", "editCompany": "Изменить компанию", "companyName": "Название компании", "companyCode": "Код компании", "cancel": "Отмена", "saving": "Сохранение...", "save": "Сохранить", "genderMale": "Мужской", "genderFemale": "Женский", "contactMobile": "Мобильный", "contactEmail": "Email", "contactOther": "Другой", "loadHistoryFailed": "Не удалось загрузить более ранние сообщения.", "sendMessageFailed": "Не удалось отправить сообщение.", "editorPlaceholder": "Введите сообщение. Enter — отправить, Shift + Enter — новая строка.", "imageUploading": "Изображение загружается", "sendImage": "Отправить изображение", "attachmentUploading": "Вложение загружается", "sendAttachment": "Отправить вложение", "searchQuickReplies": "Поиск быстрых ответов", "emptyQuickReplies": "Быстрых ответов пока нет", "quickReplySlashHint": "Введите / для быстрого ответа", "enterToSend": "Enter — отправить", "send": "Отправить", "uploading": "Загрузка...", "claimRequiresSignIn": "Сессия истекла. Войдите снова.", "claimReason": "Взять диалог в работу", "claimSuccess": "Диалог взят в работу.", "claimFailed": "Не удалось взять диалог в работу.", "claimTitle": "Взять диалог в работу", "claimConfirmPrefix": "Взять в работу диалог «", "claimConfirmSuffix": "»? Он перейдёт в ваши диалоги.", "claimCurrent": "Взять текущий диалог в работу?", "customerFallbackPrefix": "Клиент #", "claiming": "Взятие в работу...", "confirmClaim": "Взять в работу" }, "csat": { "title": "Как вы оцениваете консультацию?", "score1": "Очень плохо", "score2": "Плохо", "score3": "Удовлетворительно", "score4": "Хорошо", "score5": "Отлично", "commentPlaceholder": "Что мы могли бы улучшить? (необязательно)", "submit": "Отправить оценку", "submitting": "Отправка...", "thankYou": "Спасибо за ваш отзыв!", "alreadyRated": "Вы оценили этот диалог на {score}/5" }, "promptStarters": { "title": "Частые вопросы" }, "supportChat": { "title": "Поддержка", "agentLabel": "Поддержка", "customerSelf": "Вы", "customerFallback": "Г", "newMessage": "Новое сообщение", "justNow": "Только что", "todayAt": "Сегодня {time}", "loadingOlder": "Загрузка...", "loadOlder": "Загрузить более ранние сообщения", "emptyPrompt": "Опишите вашу проблему, и мы поможем как можно скорее.", "agentRead": "Просмотрено поддержкой", "agentUnread": "Не просмотрено поддержкой", "imageSummary": "[Изображение]", "attachmentSummary": "[Вложение]", "messageSummary": "[Сообщение]", "closedTitle": "Диалог завершён", "closedDescription": "Этот диалог поддержки закрыт. Спасибо, что обратились к нам.", "connecting": "Подключение чата", "connected": "Чат подключён", "disconnected": "Чат отключён", "retry": "Переподключиться", "moreActions": "Другие действия", "minimize": "Свернуть окно", "maximize": "Развернуть", "maximizeWindow": "Развернуть окно чата", "restoreWindow": "Восстановить окно", "closeWindow": "Закрыть окно", "closeChatWindow": "Закрыть окно чата", "closeDialogTitle": "Завершить этот диалог?", "closeDialogDescription": "После завершения операторы поддержки больше не смогут просматривать эту историю сообщений. Если нужна дополнительная помощь, начните новый чат.", "continueConversation": "Продолжить чат", "closing": "Завершение...", "confirmClose": "Завершить диалог", "initFailed": "Не удалось начать чат.", "crashTitle": "Что-то пошло не так", "crashDescription": "В чате возникла непредвиденная проблема. Ваши сообщения сохранены.", "crashReload": "Перезагрузить чат", "loadMessagesFailed": "Не удалось загрузить сообщения.", "syncMessagesFailed": "Не удалось синхронизировать сообщения.", "loadHistoryFailed": "Не удалось загрузить более ранние сообщения.", "sendMessageFailed": "Не удалось отправить сообщение.", "uploadImageFailed": "Не удалось загрузить изображение.", "sendAttachmentFailed": "Не удалось отправить вложение.", "closeConversationFailed": "Не удалось закрыть диалог.", "pageTitle": "Онлайн-поддержка", "pageDescription": "Задайте вопрос здесь. История обращений сохраняется в этом браузере.", "refreshFailed": "Не удалось обновить чат.", "myRequests": "Мои обращения", "newRequest": "Новое обращение", "switchRequest": "Сменить обращение", "requestFallbackTitle": "Обращение в поддержку", "statusAiServing": "Отвечает ИИ", "statusPending": "Ожидает оператора", "statusActive": "В работе", "statusClosed": "Закрыто", "requestsUnreadCount": "Непрочитанных: {count}", "noRequests": "Обращений пока нет", "noRequestsDescription": "Создайте обращение, и мы скоро свяжемся с вами.", "newRequestDialogTitle": "Новое обращение", "newRequestDialogDescription": "Кратко опишите проблему, чтобы мы помогли быстрее.", "newRequestSubjectLabel": "Тема", "newRequestSubjectPlaceholder": "Например: не проходит оплата", "newRequestSubjectHint": "Необязательно. Если оставить пустым, тема определится по первому сообщению.", "newRequestSubjectTooLong": "Тема не длиннее 255 символов.", "createRequest": "Создать обращение", "creatingRequest": "Создаём...", "startFirstRequest": "Создайте первое обращение", "openRequestCount": "Открыто {open} из {total}", "loadConversationsFailed": "Не удалось загрузить список обращений", "createConversationFailed": "Не удалось создать обращение", "dismissedTitle": "Окно чата закрыто", "dismissedDescription": "Ваше обращение не завершено. Вы можете вернуться и продолжить разговор.", "returnToChat": "Вернуться в чат", "sendUnavailable": "Диалог недоступен. Вернитесь к нему или повторите попытку перед отправкой.", "sendInProgress": "Сообщение уже отправляется." }, "dashboardHome": { "rangeToday": "Сегодня", "range7d": "Последние 7 дней", "range30d": "Последние 30 дней", "loadFailed": "Не удалось загрузить обзор панели управления.", "title": "Панель управления", "description": "Отслеживайте диалоги поддержки, обращения, загрузку операторов и работу ИИ.", "updatedAt": ", обновлено в {time}", "refresh": "Обновить", "conversationTrend": "Динамика диалогов", "conversationTrendDescription": "Отслеживайте новые и закрытые диалоги, чтобы заранее заметить рост нагрузки на поддержку.", "enabledAiAgents": "Активные ИИ-агенты", "enabledChannels": "Активные каналы", "todayKnowledgeRetrieves": "Поисков по базе знаний сегодня", "todayKnowledgeRetrieveFailRate": "Доля неудачных поисков сегодня", "todayAgentRunFailCount": "Сбоев запусков агентов сегодня", "todayAiHandoffCount": "Передач с ИИ человеку сегодня", "empty": "Данных обзора пока нет.", "summaryTodayNewConversations": "Новые диалоги сегодня", "summaryTodayNewConversationsDescription": "Новые обращения клиентов, созданные сегодня.", "summaryProcessingConversations": "Сейчас в работе", "summaryProcessingConversationsDescription": "Диалоги, которые сейчас обрабатывают ИИ или операторы.", "summaryPendingDispatchConversations": "Ожидают назначения", "summaryPendingDispatchConversationsDescription": "Диалоги, которые всё ещё стоят в очереди назначения.", "summaryOnlineAgents": "Операторы на связи", "summaryOnlineAgentsDescription": "Операторы с активным heartbeat за последние 15 минут.", "summaryAiServiceRate": "Покрытие ИИ", "summaryAiServiceRateDescription": "Доля активных диалогов, в которых помогает ИИ.", "chartNew": "Новые", "chartClosed": "Закрытые", "chartCount": "Количество", "statusDistribution": "Распределение по статусам", "statusDistributionDescription": "Текущее количество диалогов по статусам.", "statusAiServing": "Обрабатывает ИИ", "statusPending": "В очереди", "statusActive": "Активные", "statusClosed": "Закрытые", "teamLoad": "Загрузка команды", "teamLoadDescription": "На связи {online}, занято {busy}, не в сети {offline}", "noTeamData": "Данных о загрузке команды пока нет.", "scheduled": "По расписанию", "notScheduled": "Расписания сейчас нет", "teamStats": "Всего {total}, на связи {online}, занято {busy}, не в сети {offline}", "load": "Нагрузка {processing}/{capacity}", "waiting": "Ожидание", "processing": "В работе", "capacity": "Ёмкость", "busyAgents": "Занятые операторы", "riskAlerts": "Оповещения о рисках", "riskAlertsDescription": "Приоритизируйте проблемы, которые могут повлиять на эффективность поддержки или надёжность ИИ.", "noRiskTitle": "Сейчас критических рисков нет", "noRiskDescription": "Панель продолжает отслеживать очереди диалогов, расписания и проблемы конфигурации ИИ." }, "placeholder": { "nextSteps": "Рекомендуемые следующие шаги", "status": "Статус", "statusDescription": "Для этого модуля пока есть только каркас страницы. Он готов к подключению реальных API, диалогов форм и списочных запросов.", "nextPhase": "Перейти к следующему этапу" }, "help": { "title": "Каркас центра справки", "description": "Центр справки будет собирать рекомендации по продукту, правила разрешений, сценарии интеграции каналов и FAQ.", "step1": "Собрать стандарты разработки проекта и руководства для администраторов.", "step2": "Добавить сценарии сторонних интеграций и чек-листы настройки.", "step3": "Позже подключить Markdown или центр документации." }, "settings": { "title": "Каркас системных настроек", "description": "Системные настройки будут управлять аутентификацией, загрузками, базовой информацией о сайте и политиками выполнения.", "step1": "Добавить API для чтения и сохранения системных настроек.", "step2": "Разделить настройки на разделы безопасности, хранения и политики входа.", "step3": "Добавить маскирование и подтверждение для конфиденциальных настроек.", "brandingTitle": "Брендинг платформы", "brandingDescription": "Измените название платформы и логотип. Они применяются в портале, в консоли и в заголовках страниц.", "brandingSaved": "Брендинг платформы обновлён", "brandingSaveFailed": "Не удалось сохранить брендинг платформы", "brandingLoadFailed": "Не удалось загрузить брендинг платформы", "brandingConfiguredFallback": "Текущее название берётся из конфигурации ({name}). Очистите поле, чтобы вернуться к нему." }, "status": { "all": "Все статусы", "ok": "Включено", "disabled": "Отключено", "deleted": "Удалено" }, "channel": { "allTypes": "Все типы", "typeWeb": "Веб", "typeTelegram": "Telegram-бот", "typeZaloOa": "Официальный аккаунт Zalo", "typeWechatMp": "Официальный аккаунт WeChat", "typeWxworkKf": "Клиентская служба WeCom", "botToken": "Токен Telegram-бота", "botTokenRequired": "Токен Telegram-бота обязателен", "botUsername": "Имя пользователя бота", "webhookSecret": "Секретный токен вебхука", "telegramAutoConnectTitle": "Автоматическое подключение Telegram-бота", "telegramAutoConnectDescription": "Укажите токен бота из @BotFather. Agent Desk автоматически подключится к Telegram и синхронизирует входящие и исходящие диалоги с клиентами.", "zaloAccessToken": "Access Token аккаунта Zalo OA", "zaloOaId": "ID аккаунта OA", "zaloAppId": "ID приложения", "zaloAutoConnectTitle": "Подключение официального аккаунта Zalo", "zaloAutoConnectDescription": "Подключите официальный аккаунт Zalo с помощью Access Token, чтобы автоматически получать сообщения клиентов и отправлять ответы.", "typeSlack": "Slack", "typeLark": "Lark", "slackBotToken": "Bot User OAuth Token", "slackBotTokenRequired": "Bot User OAuth Token обязателен", "slackSigningSecret": "Signing Secret", "slackSigningSecretHint": "Нужен для проверки входящих событий. Без него вебхук принимает неподписанные запросы, поэтому любой, кто узнает URL, сможет писать в диалог.", "slackAppId": "ID приложения", "slackTeamId": "ID рабочего пространства", "slackTeamName": "Название рабочего пространства", "slackDefaultChannel": "ID канала по умолчанию", "slackSetupTitle": "Подключение приложения Slack", "slackSetupDescription": "Создайте приложение Slack, установите его в рабочее пространство и скопируйте Bot User OAuth Token и Signing Secret из раздела Basic Information. Подпишитесь на message.events, затем укажите Request URL ниже в разделе Event Subscriptions.", "slackRequestUrl": "Request URL", "typeDiscord": "Discord", "larkSetupDescription": "Создайте пользовательское приложение Lark (или его аналог в Feishu), добавьте событие приёма IM-сообщений и укажите URL запроса события на вебхук ниже. Токен проверки возвращается каждым событием, поэтому система может подтвердить, что доставки пришли из Lark.", "larkSetupTitle": "Подключение бота Lark", "larkCredentialsRequired": "Обязательны App ID и App Secret Lark", "larkVerificationToken": "Verification Token Lark", "larkAppSecret": "App Secret Lark", "larkAppId": "App ID Lark", "discordGuildId": "ID гильдии / сервера", "discordGuildName": "Название гильдии / сервера", "discordBotToken": "Токен бота", "discordSetupTitle": "Подключение бота Discord", "discordSetupDescription": "Создайте бота в Discord Developer Portal, включите привилегированное намерение Message Content, пригласите его на свой сервер и укажите URL вебхука ниже в качестве эндпоинта взаимодействий или моста. Оставьте токен бота пустым, чтобы использовать общий для развёртывания DISCORD_BOT_TOKEN.", "inboundWebhookUrl": "Эндпоинт входящего вебхука", "typeEmail": "Поддержка по email", "emailAddress": "Адрес поддержки", "senderName": "Отображаемое имя отправителя", "emailProvider": "Служба доставки email", "emailProviderDefault": "Системное значение по умолчанию (.env / config.yaml)", "emailProviderSmtp": "Собственный SMTP-сервер", "emailProviderBrevo": "Brevo API", "emailProviderSendGrid": "SendGrid API", "emailProviderResend": "Resend API", "emailProviderPostmark": "Postmark API", "emailProviderMailgun": "Mailgun API", "emailApiKey": "API-ключ", "emailAutoConnectTitle": "Автоматический приём входящих писем", "emailAutoConnectDescription": "Переадресуйте письма, отправленные на ваш адрес поддержки, на эндпоинт входящего вебхука, чтобы автоматически превращать входящие письма в обращения и запускать ответы ИИ-агента.", "configEmailDescription": "Настройте приём входящих писем через вебхук и исходящую отправку через SMTP, Brevo, SendGrid, Resend, Postmark или Mailgun.", "emailAddressRequired": "Адрес поддержки обязателен", "smtpHost": "SMTP-хост", "smtpPort": "SMTP-порт", "smtpUser": "Имя пользователя SMTP", "smtpPassword": "Пароль SMTP", "loadFailed": "Не удалось загрузить каналы.", "created": "Канал создан: {name}", "updated": "Канал обновлён: {name}", "saveFailed": "Не удалось сохранить канал.", "statusEnabled": "Включён: {name}", "statusDisabled": "Отключён: {name}", "statusUpdateFailed": "Не удалось обновить статус канала.", "deleted": "Канал удалён: {name}", "deleteFailed": "Не удалось удалить канал.", "refresh": "Обновить", "new": "Новый канал", "filterName": "Фильтр по названию канала", "filterChannelId": "Фильтр по channelId", "searchType": "Поиск типов каналов", "emptyType": "Типы каналов не найдены", "searchStatus": "Поиск статусов", "emptyStatus": "Статусы не найдены", "query": "Поиск", "columnChannel": "Канал", "columnType": "Тип", "columnAgent": "ИИ-агент", "columnStatus": "Статус", "columnActions": "Действия", "loading": "Загрузка каналов...", "empty": "Каналов пока нет", "toggleStatus": "Изменить статус канала {name}", "edit": "Изменить", "moreActions": "Другие действия для {name}", "delete": "Удалить", "typeRequired": "Выберите тип канала.", "agentRequired": "Выберите ИИ-агента.", "searchAiAgent": "Поиск ИИ-агентов", "emptyAiAgent": "ИИ-агенты не найдены", "nameRequired": "Введите название канала.", "wxworkAccountRequired": "Выберите аккаунт клиентской службы WeCom.", "positionRight": "Справа снизу", "positionLeft": "Слева снизу", "defaultTitleWeb": "Поддержка", "defaultTitleWechat": "Поддержка WeChat", "defaultSubtitle": "Чем мы можем помочь?", "loadWxworkAccountsFailed": "Не удалось загрузить аккаунты клиентской службы WeCom.", "resetSecretConfirm": "Сброс этого секрета сделает ранее выданные userToken недействительными после истечения их срока. Продолжить?", "resetSecretSuccess": "User JWT Secret сброшен.", "resetSecretFailed": "Не удалось сбросить User JWT Secret.", "copySecretSuccess": "User JWT Secret скопирован.", "copyFailed": "Не удалось скопировать.", "editTitle": "Изменение канала", "createTitle": "Новый канал", "cancel": "Отмена", "saving": "Сохранение...", "save": "Сохранить", "loadingDetail": "Загрузка...", "name": "Название канала", "channelType": "Тип канала", "selectChannelType": "Выберите тип канала", "searchChannelType": "Поиск типов каналов", "emptyChannelType": "Типы каналов не найдены", "configTitle": "Настройки канала", "configWxworkDescription": "Настройте аккаунт клиентской службы WeCom, используемый для сопоставления обратных вызовов и отправки исходящих сообщений.", "configWechatDescription": "Настройте параметры отображения страницы чата в меню WeChat.", "configWebDescription": "Настройте отображение веб-виджета поддержки на вашем сайте.", "wxworkAccount": "Аккаунт клиентской службы WeCom", "loadingWxworkAccount": "Загрузка аккаунтов", "selectWxworkAccount": "Выберите аккаунт", "searchWxworkAccount": "Поиск аккаунтов", "emptyWxworkAccount": "Аккаунты клиентской службы WeCom не найдены", "widgetTitle": "Заголовок виджета", "widgetSubtitle": "Подзаголовок виджета", "themeColor": "Цвет темы", "mountPosition": "Положение виджета", "selectMountPosition": "Выберите положение", "searchMountPosition": "Поиск положений", "emptyMountPosition": "Положения не найдены", "widgetWidth": "Ширина виджета", "userJwtSecret": "User JWT Secret", "userJwtSecretDescription": "Ваша бизнес-система использует этот секрет для подписи userToken. После сброса обновите и конфигурацию бизнес-системы.", "secretAfterSave": "Сохраните канал, чтобы сгенерировать User JWT Secret.", "copy": "Копировать", "reset": "Сбросить", "remark": "Примечания", "webAccessInfo": "Веб-интеграция", "webAccessReady": "Скопируйте ссылку или код встраивания, чтобы подключить этот веб-канал.", "webAccessPending": "Сохраните канал, чтобы сгенерировать ссылку интеграции.", "newChannelPending": "Это новый канал. Идентификатор channelId будет создан после сохранения.", "directAccessUrl": "Прямая ссылка на чат", "copyLink": "Копировать ссылку", "openLink": "Открыть ссылку", "copiedAccessLink": "Ссылка интеграции скопирована.", "embeddedSnippet": "Код встраивания", "copiedSnippet": "Код встраивания скопирован.", "copyCode": "Копировать код", "accessGuide": "Руководство по интеграции", "webGuide1": "1. Убедитесь, что канал включён.", "webGuide2": "2. Вставьте код встраивания перед закрывающим тегом body на вашем сайте.", "webGuide3": "3. Опубликуйте сайт и обновите страницу. Точка входа в поддержку появится с настройками этого канала.", "webGuide4": "4. Для отдельных страниц или QR-кодов используйте прямую ссылку на чат.", "openTestPage": "Открыть тестовую страницу", "wechatAccessInfo": "Интеграция с официальным аккаунтом WeChat", "wechatAccessReady": "Добавьте эту ссылку в пользовательское меню WeChat, чтобы пользователи могли сразу открыть чат поддержки.", "wechatAccessPending": "Сохраните канал, чтобы сгенерировать ссылку меню WeChat.", "wechatMenuUrl": "Ссылка меню WeChat", "copiedWechatMenuUrl": "Ссылка меню WeChat скопирована.", "wechatGuide2": "2. Укажите в пользовательском меню WeChat ссылку выше.", "wechatGuide3": "3. Пользователи откроют чат поддержки сразу после нажатия на пункт меню.", "processing": "Выполняется...", "smtpUseTls": "Использовать TLS", "smtpUseTlsHint": "Шифровать соединение с почтовым сервером. Если выключено, берётся системная настройка.", "smtpAllowInsecure": "Разрешить небезопасное соединение", "smtpAllowInsecureHint": "Принимать самоподписанный сертификат — для подключения к локальному тестовому SMTP-серверу. Для реального ящика не включайте.", "smtpTest": "Проверить подключение к почтовому серверу", "smtpTesting": "Проверка...", "smtpTestSuccess": "Подключение к {host} установлено", "smtpTestFailed": "Не удалось подключиться к почтовому серверу", "smtpTestSaveFirst": "Сначала сохраните канал, затем проверьте подключение." }, "upload": { "imagePlaceholder": "Загрузить изображение", "chooseImage": "Выберите файл изображения.", "imageTooLarge": "Размер изображения должен быть меньше {maxSize} МБ.", "imageUploaded": "Изображение загружено.", "imageUploadFailed": "Не удалось загрузить изображение.", "replaceImage": "Заменить изображение", "uploadedImage": "Загруженное изображение", "uploading": "Загрузка...", "deleteImage": "Удалить изображение" }, "lightbox": { "providerError": "useImageLightbox должен использоваться внутри ImageLightboxProvider", "loadFailed": "Не удалось загрузить изображение.", "openInNewTab": "Открыть в новой вкладке", "previewImage": "Просмотр изображения", "imagePreview": "Просмотр изображения", "zoomIn": "Увеличить", "zoomOut": "Уменьшить", "rotateLeft": "Повернуть влево", "rotateRight": "Повернуть вправо", "reset": "Сбросить масштаб, положение и поворот", "previous": "Предыдущее изображение", "next": "Следующее изображение", "position": "{current} / {total}", "close": "Закрыть", "help": "Масштабируйте колесом мыши или жестом щипка. Перетаскивайте, чтобы перемещать изображение. Поворачивайте влево или вправо с помощью панели инструментов.", "galleryHelp": "Переключайте изображения стрелками влево и вправо. Масштабируйте колесом мыши или жестом щипка, перетаскивайте для перемещения." }, "companyPicker": { "placeholder": "Выберите компанию", "loadFailed": "Не удалось загрузить компании.", "fallback": "Компания #{id}", "created": "Компания создана: {name}", "createFailed": "Не удалось создать компанию.", "searchPlaceholder": "Поиск по названию компании", "loading": "Загрузка...", "empty": "Подходящих компаний не найдено", "results": "Результаты поиска", "none": "Без компании", "actions": "Действия", "create": "Создать компанию «{name}»" }, "company": { "loadFailed": "Не удалось загрузить компании.", "updated": "Компания обновлена: {name}", "created": "Компания создана: {name}", "saveFailed": "Не удалось сохранить компанию.", "enabled": "Включена: {name}", "disabled": "Отключена: {name}", "statusUpdateFailed": "Не удалось обновить статус.", "deleted": "Компания удалена: {name}", "deleteFailed": "Не удалось удалить компанию.", "refresh": "Обновить", "new": "Новая компания", "filterName": "Фильтр по названию компании", "filterCode": "Фильтр по коду компании", "query": "Поиск", "columnName": "Название компании", "columnCode": "Код компании", "columnCustomerCount": "Клиенты", "columnStatus": "Статус", "columnRemark": "Примечания", "columnActions": "Действия", "unknownStatus": "Неизвестно", "loading": "Загрузка компаний...", "empty": "Компаний пока нет", "edit": "Изменить", "moreActions": "Другие действия для {name}", "processing": "Выполняется...", "enable": "Включить", "disable": "Отключить", "delete": "Удалить", "editTitle": "Изменение компании", "createTitle": "Новая компания", "cancel": "Отмена", "saving": "Сохранение...", "save": "Сохранить", "create": "Создать", "loadingDetail": "Загрузка...", "nameRequired": "Введите название компании.", "namePlaceholder": "Введите название компании", "optional": "Необязательно", "remarkPlaceholder": "Необязательно" }, "customerForm": { "nameRequired": "Введите имя клиента.", "genderRequired": "Выберите пол.", "companyRequired": "Выберите компанию.", "sectionCustomer": "Данные клиента", "name": "Имя клиента", "namePlaceholder": "Введите имя клиента", "gender": "Пол", "company": "Компания", "remark": "Примечания", "optional": "Необязательно", "sectionContacts": "Способы связи", "type": "Тип", "contact": "Контакт", "primary": "Основной", "actions": "Действия", "emailPlaceholder": "Email", "contactPlaceholder": "Телефон / аккаунт", "primaryContact": "Основной контакт", "setPrimary": "Сделать основным контактом", "deleteContact": "Удалить этот способ связи", "addContact": "Добавить способ связи", "loading": "Загрузка...", "genderUnknown": "Не указан", "genderMale": "Мужской", "genderFemale": "Женский", "contactMobile": "Мобильный", "contactEmail": "Email", "contactOther": "Другой", "editTitle": "Изменение клиента", "createTitle": "Новый клиент", "cancel": "Отмена", "saving": "Сохранение...", "save": "Сохранить", "create": "Создать" }, "customer": { "allGenders": "Все полы", "allCompanies": "Все компании", "select": "Выбрать", "loadFailed": "Не удалось загрузить клиентов.", "updated": "Клиент обновлён: {name}", "created": "Клиент создан: {name}", "saveFailed": "Не удалось сохранить клиента.", "enabled": "Включён: {name}", "disabled": "Отключён: {name}", "statusUpdateFailed": "Не удалось обновить статус.", "deleted": "Клиент удалён: {name}", "deleteFailed": "Не удалось удалить клиента.", "new": "Создать", "refresh": "Обновить", "keywordPlaceholder": "Имя, телефон, email, компания или контакт", "searchCompany": "Поиск компаний", "query": "Поиск", "columnName": "Имя клиента", "columnGender": "Пол", "columnCompany": "Компания", "columnMobile": "Мобильный", "columnEmail": "Email", "columnStatus": "Статус", "columnActions": "Действия", "loading": "Загрузка клиентов...", "empty": "Клиентов пока нет", "edit": "Изменить", "moreActions": "Другие действия для {name}", "processing": "Выполняется...", "enable": "Включить", "disable": "Отключить", "delete": "Удалить" }, "customerLink": { "keywordRequired": "Введите ключевое слово: имя, телефон, email, компанию или контакт.", "noMatch": "Подходящие клиенты не найдены. Заполните данные нового клиента ниже.", "searchFailed": "Поиск не удался.", "selected": "Клиент выбран: {name}", "linked": "Клиент привязан.", "linkFailed": "Не удалось привязать клиента.", "createdAndLinkedConversation": "Клиент создан и привязан к этому диалогу.", "createdAndLinkedTicket": "Клиент создан и привязан к этому обращению.", "created": "Клиент создан.", "saveFailed": "Не удалось сохранить клиента.", "descriptionPrefix": "Сначала найдите существующего клиента. ", "descriptionLinkConversation": "Выберите клиента, чтобы привязать его к этому диалогу. ", "descriptionLinkTicket": "Выберите клиента, чтобы привязать его к этому обращению. ", "descriptionNoContext": "Без привязанного контекста действие только создаст или выберет клиента. ", "descriptionCreatePrefix": "Если результатов нет, заполните данные нового клиента ниже", "descriptionCreateConversation": "; после сохранения он будет привязан к диалогу.", "descriptionCreateTicket": "; после сохранения он будет привязан к обращению.", "descriptionCreateNoContext": ".", "title": "Привязать или создать клиента", "close": "Закрыть", "submitting": "Отправка...", "createAndLinkConversation": "Создать клиента и привязать к диалогу", "createAndLinkTicket": "Создать клиента и привязать к обращению", "createCustomer": "Создать клиента", "searchPlaceholder": "Имя / телефон / email / компания / контакт", "searching": "Поиск...", "search": "Поиск", "fallbackName": "Клиент #{id}", "processing": "Выполняется...", "link": "Привязать", "select": "Выбрать", "collapseCreate": "Скрыть форму нового клиента", "showCreate": "Не нашли? Заполните данные нового клиента" }, "conversationAction": { "closeReasonRequired": "Укажите причину закрытия.", "conversationMissing": "Диалог не найден.", "closed": "Диалог закрыт: #{id}", "closeFailed": "Не удалось закрыть диалог.", "closeTitle": "Закрыть диалог", "closeReason": "Причина закрытия", "closeReasonPlaceholder": "Укажите причину. Она попадёт в журнал действий.", "cancel": "Отмена", "closing": "Закрытие...", "confirmClose": "Закрыть диалог", "targetAgentRequired": "Выберите целевого оператора.", "agentFallback": "Оператор #{id}", "loadAgentsFailed": "Не удалось загрузить операторов.", "assigned": "Диалог назначен: #{id}", "transferred": "Диалог передан: #{id}", "assignFailed": "Не удалось назначить диалог.", "transferFailed": "Не удалось передать диалог.", "assignTitle": "Назначить диалог", "transferTitle": "Передать диалог", "targetAgent": "Целевой оператор", "loading": "Загрузка...", "selectTargetAgent": "Выберите целевого оператора", "searchAgent": "Поиск операторов", "emptyAgents": "Операторы недоступны", "assignNote": "Примечание к назначению", "transferReason": "Причина передачи", "assignPlaceholder": "Добавьте примечание для дальнейшего контроля.", "transferPlaceholder": "Укажите причину передачи для дальнейшего контроля.", "assigning": "Назначение...", "transferring": "Передача...", "confirmAssign": "Назначить", "confirmTransfer": "Передать" }, "conversationMonitor": { "allStatuses": "Все статусы", "unknown": "Неизвестно", "serviceAi": "Обрабатывает ИИ", "serviceHuman": "Обрабатывает человек", "serviceAiFirst": "Сначала ИИ", "serviceUndefined": "Не определено", "allTags": "Все теги", "allAssignees": "Все исполнители", "allTeams": "Все команды", "loadListFailed": "Не удалось загрузить диалоги.", "loadFiltersFailed": "Не удалось загрузить фильтры.", "realtimeConnectFailed": "Не удалось подключиться к службе реального времени.", "loadDetailFailed": "Не удалось загрузить детали диалога.", "loadMoreMessagesFailed": "Не удалось загрузить больше сообщений.", "markedRead": "Отмечено как прочитанное: {name}", "markReadFailed": "Не удалось отметить как прочитанное.", "dispatchTriggered": "Запущено автоматическое назначение: {name}", "dispatchFailed": "Автоматическое назначение не удалось.", "refresh": "Обновить", "keywordPlaceholder": "Фильтр по теме или сводке", "selectTag": "Выберите тег", "searchTagPath": "Поиск пути тега", "emptyTags": "Подходящие теги не найдены", "selectAssignee": "Выберите исполнителя", "searchAssignee": "Поиск исполнителей", "emptyAssignees": "Подходящие исполнители не найдены", "selectTeam": "Выберите команду", "searchTeam": "Поиск команд", "emptyTeams": "Подходящие команды не найдены", "query": "Поиск", "columnConversation": "Диалог", "columnStatus": "Статус", "columnServiceMode": "Режим обслуживания", "columnAssignee": "Текущий оператор", "columnUnread": "Непрочитанные", "columnLastActive": "Последняя активность", "columnActions": "Действия", "customerFallback": "Клиент #{id}", "channelIdValue": "Идентификатор канала: {id}", "noLatestSummary": "Сводки недавних сообщений нет", "unreadSummary": "Оператор {agent} / Клиент {customer}", "view": "Просмотреть", "moreActions": "Другие действия для {name}", "processing": "Выполняется...", "assign": "Назначить диалог", "retryDispatch": "Повторить назначение", "markRead": "Отметить как прочитанный", "transfer": "Передать диалог", "close": "Закрыть диалог", "loadingRows": "Загрузка диалогов...", "emptyRows": "Подходящие диалоги не найдены", "detailFallbackTitle": "Детали диалога", "lastActivePrefix": "Последняя активность: {time}", "noConversationInfo": "Информации о диалоге пока нет", "loadingDetail": "Загрузка деталей диалога...", "currentAssignee": "Текущий оператор", "agentUnread": "Не прочитано оператором", "customerUnread": "Не прочитано клиентом", "closedAt": "Закрыт", "participants": "Участники", "participantCount": "{count} чел.", "participantIdentity": "ID: {value}", "participantJoinedAt": "Присоединился: {time}", "emptyParticipants": "Информации об участниках пока нет", "loadingOlder": "Загрузка более ранних сообщений...", "loadOlderHint": "Прокрутите вверх, чтобы загрузить более ранние сообщения", "messageRecalled": "Отозвано", "messageRecalledBody": "Это сообщение было отозвано.", "readStatus": "Оператор {agent} / Клиент {customer}", "read": "Прочитано", "unread": "Не прочитано", "emptyMessages": "Истории сообщений пока нет", "emptyDetail": "Нет деталей диалога для показа", "imageFallback": "[Изображение]", "messageImageAlt": "Изображение в сообщении", "senderAgent": "Оператор", "senderCustomer": "Клиент", "senderSystem": "Система" }, "user": { "loadFailed": "Не удалось загрузить пользователей.", "loadRoleAssignFailed": "Не удалось загрузить данные назначения ролей.", "created": "Пользователь создан: {username}", "createFailed": "Не удалось создать пользователя.", "updated": "{username} обновлён", "fallbackUser": "пользователь", "updateFailed": "Не удалось обновить пользователя.", "rolesUpdated": "Роли обновлены для {username}", "saveRolesFailed": "Не удалось сохранить назначение ролей.", "passwordReset": "Пароль сброшен для {username}", "resetPasswordFailed": "Не удалось сбросить пароль.", "statusUpdated": "{username} {status}", "statusUpdateFailed": "Не удалось обновить статус.", "addUser": "Добавить пользователя", "filterUsername": "Фильтр по имени пользователя", "query": "Поиск", "columnUser": "Пользователь", "columnRoles": "Роли", "columnStatus": "Статус", "columnLastLogin": "Последний вход", "columnContact": "Контакт", "columnActions": "Действия", "unassigned": "Не назначено", "enabled": "Включён", "disabled": "Отключён", "system": "Системный", "edit": "Изменить", "moreActions": "Другие действия для {username}", "processing": "Выполняется...", "assignRoles": "Назначить роли", "resetPassword": "Сбросить пароль", "loadingRows": "Загрузка пользователей...", "emptyRows": "Подходящие пользователи не найдены", "nicknameRequired": "Введите отображаемое имя.", "usernameRequired": "Введите имя пользователя.", "avatarInvalid": "Некорректный аватар.", "mobileInvalid": "Введите корректный номер телефона.", "emailInvalid": "Введите корректный адрес электронной почты.", "editTitle": "Изменение пользователя", "currentUser": "Текущий пользователь: {username}", "loading": "Загрузка...", "nickname": "Отображаемое имя", "nicknamePlaceholder": "Введите отображаемое имя", "avatar": "Аватар", "avatarPlaceholder": "Загрузите аватар", "mobile": "Мобильный", "mobilePlaceholder": "Введите номер телефона", "email": "Email", "emailPlaceholder": "Введите email", "saving": "Сохранение...", "saveEdit": "Сохранить изменения", "cancel": "Отмена", "createTitle": "Добавить пользователя", "createDescription": "После отправки система сгенерирует начальный пароль. Он будет показан только один раз.", "username": "Имя пользователя", "usernamePlaceholder": "Логин, обязательно", "nicknameCreatePlaceholder": "Необязательно, по умолчанию имя пользователя", "avatarCreatePlaceholder": "Загрузите аватар", "optional": "Необязательно", "remark": "Примечания", "rolesOptional": "Роли (необязательно)", "searchRoles": "Поиск ролей", "loadingRoles": "Загрузка ролей...", "disabledBadge": "Отключена", "emptyRoles": "Ролей пока нет", "creating": "Создание...", "createUser": "Создать пользователя", "copied": "Пароль скопирован.", "copyFailed": "Не удалось скопировать. Скопируйте вручную.", "createdTitle": "Пользователь создан", "initialPasswordDescription": "Начальный пароль для {username} сгенерирован. Он будет показан только один раз, поэтому скопируйте его сейчас и передайте безопасно.", "initialPassword": "Начальный пароль", "copying": "Копирование...", "copyPassword": "Копировать пароль", "close": "Закрыть", "confirmResetTitle": "Сбросить пароль?", "confirmResetDescription": "Для {username} будет сгенерирован новый случайный пароль, а текущие сессии пользователя станут недействительными.", "resetting": "Сброс...", "confirmReset": "Сбросить пароль", "resetSuccessTitle": "Пароль сброшен", "resetSuccessDescription": "Для {username} сгенерирован новый пароль. Скопируйте его сейчас и передайте безопасно.", "newPassword": "Новый пароль", "assignedRoles": "Назначенные роли", "unassignedRoles": "Роли не назначены", "roleList": "Список ролей", "searchRoleNameOrCode": "Поиск по названию или коду роли", "loadingRoleList": "Загрузка ролей...", "noMatchedRoles": "Подходящие роли не найдены", "changes": "Изменения", "addedRoles": "Добавленные роли", "removedRoles": "Удалённые роли", "noneAdded": "Ничего не добавлено", "noneRemoved": "Ничего не удалено", "confirmAssign": "Назначить роли", "columnUserType": "Тип", "userTypeStaff": "Сотрудник", "userTypeVisitor": "Посетитель", "filterUserType": "Тип аккаунта", "filterUserTypeAll": "Все", "filterUserTypeStaff": "Сотрудники", "filterUserTypeVisitor": "Посетители" }, "aiAgent": { "allStatuses": "Все статусы", "enabled": "Включён", "disabled": "Отключён", "loadFailed": "Не удалось загрузить ИИ-агентов.", "updated": "ИИ-агент обновлён: {name}", "created": "ИИ-агент создан: {name}", "saveFailed": "Не удалось сохранить ИИ-агента.", "statusChanged": "{name} {status}", "statusUpdateFailed": "Не удалось обновить статус ИИ-агента.", "deleted": "ИИ-агент удалён: {name}", "deleteFailed": "Не удалось удалить ИИ-агента.", "sortUpdated": "Порядок ИИ-агентов обновлён.", "sortUpdateFailed": "Не удалось обновить порядок.", "refresh": "Обновить", "new": "Новый ИИ-агент", "filterName": "Фильтр по названию", "searchStatus": "Поиск статуса", "emptyStatus": "Подходящий статус не найден", "query": "Поиск", "columnAiConfig": "Конфигурация ИИ", "columnServiceMode": "Режим обслуживания", "columnKnowledge": "Базы знаний", "columnSkills": "Навыки", "columnCapabilities": "Возможности", "columnStatus": "Статус", "columnActions": "Действия", "dragSort": "Перетащите, чтобы изменить порядок: {name}", "notConfigured": "Не настроено", "ragOnly": "Только RAG", "noMcpServer": "Сервер MCP не подключён", "toggleStatus": "Изменить статус агента {name}", "edit": "Изменить", "moreActions": "Другие действия для {name}", "processing": "Выполняется...", "stop": "Отключить", "workflow": "Рабочий процесс", "configure": "Настроить", "delete": "Удалить", "loadingRows": "Загрузка ИИ-агентов...", "emptyRows": "ИИ-агентов пока нет", "serviceAiOnly": "Только ИИ", "serviceHumanOnly": "Только человек", "serviceAiFirst": "Сначала ИИ", "handoffWaitPool": "Отправлять в очередь ожидания", "handoffDefaultTeamPool": "Отправлять в очередь команды по умолчанию", "handoffAiHoldAndNotify": "ИИ ждёт ответа и уведомляет операторов", "fallbackNoAnswer": "Сообщать, что ответа нет", "fallbackSuggestRetry": "Запрашивать больше деталей", "nameRequired": "Введите название.", "aiConfigRequired": "Выберите конфигурацию ИИ.", "serviceModeRequired": "Выберите режим обслуживания.", "replyTimeoutInvalid": "Таймаут ответа должен быть целым числом не меньше 0.", "handoffModeRequired": "Выберите режим передачи человеку.", "fallbackModeRequired": "Выберите стратегию резервного ответа.", "loadDetailFailed": "Не удалось загрузить детали ИИ-агента.", "loadAiConfigFailed": "Не удалось загрузить конфигурации ИИ.", "loadTeamsFailed": "Не удалось загрузить команды поддержки.", "loadKnowledgeFailed": "Не удалось загрузить базы знаний.", "loadSkillsFailed": "Не удалось загрузить навыки.", "loadMCPToolsFailed": "Не удалось загрузить инструменты MCP.", "builtinTools": "Встроенные инструменты", "ungrouped": "Без группы", "notSelected": "Не выбрано", "sectionSetup": "Идентификация и выполнение", "sectionPersona": "Персона и ответы", "sectionCapability": "Знания и навыки", "sectionService": "Маршрутизация и резервный ответ", "basicDescription": "Настройте внутреннее название агента, режим обслуживания и описание.", "sectionModel": "Модель и ответ", "modelDescription": "Выберите модель рассуждений и задайте таймаут ответа.", "replyTimeout": "Таймаут ответа", "seconds": "с", "sectionRole": "Системный промпт", "personaDescription": "Определите роль, инструкции и границы ответов агента (поддерживается Markdown).", "sectionGreeting": "Приветственное сообщение", "greetingDescription": "Первоначальный ответ при входе в диалог. Оставьте пустым, чтобы не отправлять.", "sectionKnowledge": "Базы знаний", "knowledgeDescription": "Источники знаний, из которых агент может извлекать данные при ответе.", "sectionSkill": "Навыки", "skillDescription": "Стандартные возможности и сценарии, которые может вызывать агент.", "sectionWorkflow": "Рабочие процессы", "workflowDescription": "Опубликованные фиксированные рабочие процессы из редактора процессов.", "selectWorkflow": "Выберите опубликованный рабочий процесс", "emptyWorkflow": "Опубликованных рабочих процессов нет", "sectionMcp": "Инструменты MCP", "mcpDescription": "Выберите инструменты MCP, которые агент может вызывать.", "sectionHandoff": "Передача человеку", "handoffDescription": "Настройте способ маршрутизации и команды поддержки для подключения человека.", "sectionFallback": "Низкая уверенность / резервный ответ", "fallbackDescription": "Настройте стратегию обработки и резервное сообщение для неуверенных ответов.", "publishAgent": "Опубликовать агента", "saveConfig": "Сохранить конфигурацию", "publishedNote": "Опубликованная версия активна; повторная публикация применит текущую конфигурацию", "unpublishedNote": "Публикация сначала сохранит текущую конфигурацию", "readOnly": "Только чтение", "writeAction": "Запись (требуется подтверждение)", "systemDefined": "Определено системой", "activeRevision": "Сейчас активна", "rollback": "Откат", "versionHistory": "История версий", "notCreated": "Не создана", "published": "Опубликована", "unpublished": "Не опубликована", "noRevisions": "Опубликованных версий агента нет.", "createTitle": "Новый ИИ-агент", "editTitle": "Изменение ИИ-агента", "cancel": "Отмена", "saving": "Сохранение...", "save": "Сохранить", "loading": "Загрузка...", "namePrompt": "Введите название агента", "savedActiveNote": "Конфигурация сохранена. Сейчас активна текущая опубликованная версия.", "savedNote": "Конфигурация ИИ-агента сохранена.", "createdNote": "ИИ-агент успешно создан.", "publishedSuccess": "ИИ-агент успешно сохранён и опубликован.", "publishFailed": "Не удалось сохранить и опубликовать ИИ-агента.", "rollbackSuccess": "Выполнен откат к выбранной версии ИИ-агента.", "rollbackFailed": "Не удалось выполнить откат версии ИИ-агента.", "fixedVersion": "Фиксированная версия #{version}", "publishStatus": "Статус публикации", "configuredWorkflows": "Настроено рабочих процессов: {count}", "directAutonomous": "Автономное рассуждение без фиксированных рабочих процессов", "channelRolloutTitle": "Процент каналов с ИИ (%)", "channelRolloutRestored": "Восстановлен предыдущий процент каналов с ИИ", "channelRolloutRestoreFailed": "Не удалось восстановить процент каналов с ИИ", "channelRolloutRestoreBtn": "Восстановить {percent}%", "agentNotPublishedWarning": "Этот агент ещё не опубликован, ИИ не будет отвечать автоматически. Сначала опубликуйте версию в настройках агента.", "agentNotPublishedShort": "Не опубликован", "sectionBasic": "Основные данные", "name": "Название", "aiConfig": "Конфигурация ИИ", "selectAiConfig": "Выберите конфигурацию ИИ", "searchAiConfig": "Поиск конфигураций ИИ", "emptyAiConfig": "Конфигурации ИИ не найдены", "selectServiceMode": "Выберите режим обслуживания", "searchServiceMode": "Поиск режимов обслуживания", "emptyServiceMode": "Режимы обслуживания не найдены", "description": "Описание", "welcomeMessage": "Приветственное сообщение", "systemPrompt": "Системный промпт", "sectionStrategy": "Стратегия обслуживания", "handoffMode": "Режим передачи человеку", "selectHandoffMode": "Выберите режим передачи", "searchHandoffMode": "Поиск режимов передачи", "emptyHandoffMode": "Режимы передачи не найдены", "replyTimeoutSeconds": "Таймаут ответа (секунды)", "replyTimeoutHelp": "Таймаут асинхронных ответов ИИ. Укажите 0, чтобы использовать системное значение 180 секунд.", "teams": "Команды поддержки", "currentHandoffMode": "Текущий режим передачи: {mode}", "handoffNeedsTeam": ". Для этого режима нужна хотя бы одна команда поддержки.", "handoffOnlyWhenNeeded": ". Применяется только при необходимости передачи человеку.", "selectTeam": "Выберите команду поддержки", "searchTeam": "Поиск команд поддержки", "emptyTeam": "Команды поддержки не найдены", "noTeams": "Команды поддержки не настроены", "removeTeam": "Удалить команду {name}", "sectionCapabilities": "Возможности", "knowledgeTab": "Знания", "skillsTab": "Навыки", "mcpToolsTab": "Инструменты MCP", "knowledgeHint": "Выберите хотя бы одну базу знаний. Порядок приоритетов можно изменить.", "selectKnowledge": "Выберите базу знаний и добавьте её", "searchKnowledge": "Поиск баз знаний", "emptyKnowledge": "Базы знаний недоступны", "add": "Добавить", "knowledgeRequired": "Выберите хотя бы одну базу знаний.", "fallbackMode": "Стратегия резервного ответа", "selectFallbackMode": "Выберите стратегию резервного ответа", "searchFallbackMode": "Поиск стратегий резервного ответа", "emptyFallbackMode": "Стратегии резервного ответа не найдены", "fallbackMessage": "Резервное сообщение", "fallbackMessageHint": "Если в базе знаний нет точного совпадения, агент использует эту стратегию и сообщение.", "skillsHint": "Используйте навыки для фиксированных бизнес-сценариев и многошаговых задач.", "selectSkill": "Выберите навык и добавьте его", "searchSkill": "Поиск навыков", "emptySkill": "Навыки недоступны", "noSkillsHint": "Без навыков маршрутизация использует только базы знаний или передачу человеку.", "removeSkill": "Удалить навык {name}", "mcpToolsHint": "Выберите инструменты MCP, которые этому агенту разрешено вызывать.", "selectToolGroup": "Выберите группу инструментов", "searchToolGroup": "Поиск групп инструментов", "emptyToolGroup": "Группы инструментов недоступны", "selectMCPTool": "Выберите инструмент MCP", "searchMCPTool": "Поиск инструментов MCP", "emptyMCPTool": "Инструменты MCP недоступны", "noMCPToolsHint": "Без инструментов MCP агент не будет вызывать внешние инструменты MCP.", "removeMCPTool": "Удалить инструмент MCP {name}", "sectionContextCosts": "Контекст и оптимизация расходов", "contextCostsDescription": "Управление размером контекстного окна, лимитом шагов рассуждения и объемом данных инструментов.", "contextWindow": "Контекстное окно (сообщений)", "contextWindowHelp": "Количество недавних сообщений диалога, передаваемых в контекст (2–30). Меньшее окно экономит токены.", "maxSteps": "Максимум шагов ReAct (Max Steps)", "maxStepsHelp": "Максимальное число вызовов инструментов за один ход (1–8). Снижает риск зацикливания и перерасхода токенов.", "autoHandoffOnFailure": "Автоперевод на оператора при сбое или отсутствии ответа", "autoHandoffOnFailureHelp": "При ошибке модели, исчерпании шагов или отсутствии ответа автоматически переводить клиента на оператора.", "handoffMessage": "Сообщение клиенту при переводе к оператору", "handoffMessageHelp": "Отправляется клиенту в чат, чтобы он понимал, что переключен на человека и его запрос в обработке.", "handoffMessagePlaceholder": "Мы соединяем вас с оператором поддержки. Пожалуйста, подождите.", "offHoursMessage": "Текст в нерабочие часы поддержки", "offHoursMessageHelp": "Пользовательское сообщение, отправляемое клиенту при переводе в нерабочие часы или при отсутствии доступных операторов. Оставьте пустым для текста по умолчанию.", "offHoursMessagePlaceholder": "Поддержка сейчас не активна. Ваш запрос поставлен в очередь и будет рассмотрен оператором позже." }, "aiConfig": { "allStatuses": "Все статусы", "allProviders": "Все провайдеры", "allTypes": "Все типы", "providerOpenAI": "OpenAI", "modelTypeLlm": "Большая языковая модель", "modelTypeEmbedding": "Модель эмбеддингов", "modelTypeRerank": "Модель переранжирования", "enabled": "Включено", "disabled": "Отключено", "deletedStatus": "Удалено", "loadFailed": "Не удалось загрузить конфигурации ИИ.", "updated": "Конфигурация ИИ обновлена: {name}", "created": "Конфигурация ИИ создана: {name}", "saveFailed": "Не удалось сохранить конфигурацию ИИ.", "statusChanged": "{name} {status}", "statusUpdateFailed": "Не удалось обновить статус.", "activeDeleteBlocked": "Включённые конфигурации ИИ удалить нельзя.", "deleted": "Конфигурация ИИ удалена: {name}", "deleteFailed": "Не удалось удалить конфигурацию ИИ.", "sortUpdated": "Порядок конфигураций ИИ обновлён.", "sortUpdateFailed": "Не удалось обновить порядок.", "refresh": "Обновить", "new": "Создать", "filterName": "Фильтр по названию конфигурации", "searchModelType": "Поиск типов моделей", "emptyModelType": "Подходящие типы моделей не найдены", "searchProvider": "Поиск провайдеров", "emptyProvider": "Подходящие провайдеры не найдены", "searchStatus": "Поиск статуса", "emptyStatus": "Подходящий статус не найден", "query": "Поиск", "columnConfig": "Конфигурация", "columnProvider": "Провайдер", "columnModel": "Модель", "columnAccess": "Доступ", "columnLimits": "Лимиты", "columnStatus": "Статус", "columnActions": "Действия", "dragSort": "Перетащите, чтобы изменить порядок: {name}", "dimension": "Измерений: {count}", "apiKey": "Ключ: {key}", "contextTokens": "Контекст {count}", "outputTokens": "Выход {count}", "timeoutRetry": "Таймаут {timeout}мс / повторы {retries}", "toggleStatus": "Изменить статус конфигурации {name}", "edit": "Изменить", "moreActions": "Другие действия для {name}", "deleteDisabledActive": "Нельзя удалить, пока включено", "deleting": "Удаление...", "delete": "Удалить", "loadingRows": "Загрузка конфигураций ИИ...", "emptyRows": "Конфигураций ИИ пока нет", "confirmDeleteTitle": "Удалить конфигурацию ИИ?", "confirmDeleteDescription": "Удалить «{name}»? Это действие нельзя отменить.", "deleteIrreversible": "Это действие нельзя отменить.", "cancel": "Отмена", "confirmDelete": "Удалить", "nameRequired": "Введите название конфигурации.", "providerRequired": "Выберите провайдера.", "baseUrlRequired": "Введите базовый URL-адрес.", "modelTypeRequired": "Выберите тип модели.", "modelNameRequired": "Введите название модели.", "dimensionInvalid": "Размерность эмбеддингов должна быть целым числом не меньше 0.", "maxContextInvalid": "Максимум токенов контекста должен быть целым числом не меньше 0.", "maxOutputInvalid": "Максимум выходных токенов должен быть целым числом не меньше 0.", "timeoutInvalid": "Таймаут должен быть целым числом не меньше 0.", "retryInvalid": "Максимум повторов должен быть целым числом не меньше 0.", "rpmInvalid": "Лимит RPM должен быть целым числом не меньше 0.", "tpmInvalid": "Лимит TPM должен быть целым числом не меньше 0.", "editTitle": "Изменение конфигурации ИИ", "createTitle": "Новая конфигурация ИИ", "saving": "Сохранение...", "save": "Сохранить", "create": "Создать", "loading": "Загрузка...", "name": "Название конфигурации", "namePlaceholder": "Например: основная модель ответов OpenAI", "provider": "Провайдер", "selectProvider": "Выберите провайдера", "modelType": "Тип модели", "selectModelType": "Выберите тип модели", "baseUrl": "Базовый URL-адрес", "baseUrlPlaceholder": "Например: https://api.openai.com/v1", "apiKeyPlaceholder": "Введите API-ключ", "modelName": "Название модели", "modelNamePlaceholder": "Например: gpt-4o-mini", "dimensionLabel": "Размерность эмбеддингов", "maxContextTokens": "Максимум токенов контекста", "maxOutputTokens": "Максимум выходных токенов", "timeoutMs": "Таймаут (мс)", "maxRetryCount": "Максимум повторов", "rpmLimit": "Лимит RPM", "tpmLimit": "Лимит TPM", "remark": "Примечания", "remarkPlaceholder": "Записи об использовании, стоимости или лимитах" }, "supportFaqCategory": { "allStatuses": "Все статусы", "enabled": "Включена", "disabled": "Отключена", "name": "Название категории", "searchName": "Поиск названий категорий", "noDescription": "Нет описания", "status": "Статус", "confirmDeleteTitle": "Удалить категорию FAQ?", "confirmDeleteDescription": "Удалить «{name}»? Категории, используемые вопросами, удалить нельзя.", "delete": "Удалить", "sortUpdated": "Порядок категорий FAQ обновлён.", "sortUpdateFailed": "Не удалось обновить порядок.", "dragSort": "Перетащите, чтобы изменить порядок: {name}", "create": "Создать", "save": "Сохранить", "saving": "Сохранение...", "cancel": "Отмена", "loadingDetail": "Загрузка деталей...", "required": "Это поле обязательно.", "invalidNumber": "Введите корректное число.", "minValue": "Должно быть не меньше {min}", "maxValue": "Должно быть не больше {max}", "namePlaceholder": "Введите название категории", "slugPlaceholder": "Например: account-security", "slugPatternMessage": "Используйте только буквы, цифры и дефисы (-).", "description": "Описание", "descriptionPlaceholder": "Опишите вопросы, которые охватывает эта категория", "remark": "Примечания", "remarkPlaceholder": "Видно только пользователям панели управления", "createTitle": "Новая категория FAQ", "editTitle": "Изменение категории FAQ", "refresh": "Обновить", "new": "Новая категория", "query": "Поиск", "loading": "Загрузка категорий...", "empty": "Категорий FAQ пока нет", "actions": "Действия", "edit": "Изменить", "processing": "Выполняется...", "moreActions": "Другие действия для {name}", "loadFailed": "Не удалось загрузить категории.", "saveFailed": "Не удалось сохранить категорию.", "deleteFailed": "Не удалось удалить категорию.", "created": "Категория создана: {name}", "updated": "Категория обновлена: {name}", "deleted": "Категория удалена: {name}" }, "supportQuestionAdmin": { "allCategories": "Все категории", "allStatuses": "Все статусы", "statusPending": "Ожидает проверки", "statusNormal": "Обычный", "statusResolved": "Решён", "statusClosed": "Закрыт", "statusHidden": "Скрыт", "statusUpdated": "Статус вопроса обновлён.", "answerPublished": "Ответ успешно опубликован.", "answersCount": "Ответов: {count}", "votesAndViews": "Голосов: {votes} · Просмотров: {views}", "moderateNormal": "Вернуть в обычные", "moderateClose": "Закрыть вопрос", "moderateHide": "Скрыть вопрос", "setBest": "Отметить как лучший", "bestAnswer": "Лучший ответ", "replyPlaceholder": "Введите ответ оператора...", "publishReply": "Опубликовать ответ", "empty": "Подходящие вопросы не найдены.", "loading": "Загрузка вопросов...", "title": "Обработка вопроса", "userFallback": "Пользователь", "uncategorized": "Без категории" }, "aiWorkflow": { "filterName": "Название рабочего процесса", "searchName": "Поиск по названию рабочего процесса", "columnWorkflow": "Рабочий процесс", "noDescription": "Описание не указано", "columnStatus": "Статус", "published": "Опубликован", "draft": "Черновик", "currentVersion": "Текущая версия", "publishedVersion": "Опубликована версия #{version}", "versionHistory": "История версий", "usage": "Использование", "editTitle": "Изменение рабочего процесса", "createTitle": "Новый рабочий процесс", "refresh": "Обновить", "create": "Создать рабочий процесс", "query": "Поиск", "loading": "Загрузка рабочих процессов...", "empty": "Рабочих процессов пока нет", "actions": "Действия", "edit": "Изменить", "delete": "Удалить", "processing": "Выполняется...", "moreActions": "Другие действия для {name}", "loadFailed": "Не удалось загрузить рабочие процессы", "saveFailed": "Не удалось сохранить рабочий процесс", "deleteFailed": "Не удалось удалить рабочий процесс", "created": "Рабочий процесс создан: {name}", "updated": "Рабочий процесс обновлён: {name}", "deleted": "Рабочий процесс удалён: {name}", "nameRequired": "Введите название рабочего процесса", "nameSaved": "Название сохранено", "descriptionSaved": "Описание сохранено", "savedSuccess": "Успешно сохранено", "saveFirst": "Сначала сохраните", "publishedVersionSuccess": "Опубликована версия v{version}", "publishFailed": "Не удалось опубликовать", "nameLabel": "Название рабочего процесса", "loadingNodeCapabilities": "Загрузка возможностей узлов...", "nodeStart": "Начало", "nodeEnd": "Конец", "usageTitle": "Использование", "loadingUsage": "Загрузка использования...", "fixedBoundVersion": "Привязан к версии v{version}", "enabledStatus": "Включён", "disabledStatus": "Отключён", "notUsedByAnyAgent": "Пока не используется ни одним ИИ-агентом", "versionsTitle": "История версий", "loadingVersions": "Загрузка истории версий...", "publisher": "Опубликовал: {name}", "restoring": "Восстановление...", "restoreToDraft": "Восстановить как черновик", "restoredDraftSuccess": "Версия v{version} восстановлена как черновик", "restoreFailed": "Не удалось восстановить версию", "noVersionsYet": "Опубликованных версий пока нет", "editorTitle": "Редактор процессов FlowGram", "loadDetailFailed": "Не удалось загрузить детали аудита выполнения", "executedCount": "Выполнено: {count}", "errorStatus": "Ошибка", "nodeTraceTitle": "Трассировка узлов", "nodeTraceHint": "Нажмите, чтобы посмотреть входные данные, выходные данные и ошибки", "noNodeRuns": "Записей выполнения узлов пока нет.", "inputTitle": "Входные данные", "outputTitle": "Выходные данные", "noneValue": "Нет" }, "mcp": { "disabled": "отключено", "loadServersFailed": "Не удалось загрузить серверы MCP.", "connectSuccess": "Подключение к MCP выполнено.", "connectFailed": "Не удалось подключиться к MCP.", "toolsLoaded": "Загружено инструментов: {count}.", "loadToolsFailed": "Не удалось загрузить инструменты.", "selectToolFirst": "Сначала выберите инструмент.", "argumentsInvalid": "Аргументы в JSON заданы некорректно.", "argumentsMustBeJson": "arguments должны быть корректным JSON.", "toolReturnedError": "Инструмент вернул результат с ошибкой.", "toolCallSuccess": "Вызов инструмента выполнен успешно.", "toolCallFailed": "Не удалось вызвать инструмент.", "testConnection": "Проверить подключение", "listTools": "Получить список инструментов", "serverConfig": "Конфигурация сервера", "selectServer": "Выберите сервер MCP", "searchServer": "Поиск по serverCode", "emptyServer": "Серверы MCP недоступны", "connected": "Подключено", "emptyToolsHint": "Результатов по инструментам пока нет. Нажмите «Получить список инструментов» выше.", "toolName": "Название инструмента", "description": "Описание", "actions": "Действия", "view": "Просмотреть", "toolDetail": "Детали инструмента", "detailDescription": "Изучите детали инструмента и выполните реальный тестовый вызов к выбранному серверу MCP.", "noDescription": "Нет описания", "testTool": "Проверить инструмент", "returnedError": "Возвращена ошибка", "callSuccess": "Вызов выполнен успешно", "close": "Закрыть" }, "agentProfile": { "allStatuses": "Все статусы", "all": "Все", "statusIdle": "Свободен", "statusBusy": "Занят", "enabled": "Включён", "disabled": "Отключён", "loadFailed": "Не удалось загрузить профили операторов.", "updated": "Профиль оператора обновлён: {name}", "created": "Профиль оператора создан: {name}", "saveFailed": "Не удалось сохранить профиль оператора.", "deleted": "Профиль оператора удалён: {name}", "deleteFailed": "Не удалось удалить профиль оператора.", "refresh": "Обновить", "expandTeams": "Развернуть список команд", "collapseTeams": "Свернуть список команд", "new": "Создать", "filterDisplayName": "Фильтр по отображаемому имени", "filterAgentCode": "Фильтр по коду оператора", "searchStatus": "Поиск статуса", "emptyStatus": "Подходящий статус не найден", "query": "Поиск", "columnAgent": "Оператор", "columnRules": "Правила обслуживания", "columnDispatch": "Назначение", "columnRecent": "Недавняя активность", "columnActions": "Действия", "userFallback": "Пользователь #{id}", "agentCode": "Код: {code}", "capacityPriority": "Макс. диалогов {capacity} / приоритет {priority}", "autoAssign": "Автоназначение", "noAutoAssign": "Без автоназначения", "offlineReceive": "Принимает офлайн-сообщения", "noOfflineReceive": "Не принимает офлайн-сообщения", "onlineAt": "В сети: {time}", "statusAt": "Статус: {time}", "edit": "Изменить", "moreActions": "Другие действия для {name}", "deleting": "Удаление...", "delete": "Удалить", "loadingRows": "Загрузка профилей операторов...", "emptyTeamRows": "В этой команде нет подходящих профилей операторов", "emptyRows": "Подходящие профили операторов не найдены", "userRequired": "Выберите связанного пользователя.", "teamRequired": "Выберите команду поддержки.", "agentCodeRequired": "Введите код оператора.", "displayNameRequired": "Введите отображаемое имя.", "statusRequired": "Выберите статус оператора.", "maxConcurrentInvalid": "Максимум одновременных диалогов должен быть целым числом не меньше 0.", "priorityInvalid": "Приоритет должен быть целым числом.", "loadOptionsFailed": "Не удалось загрузить варианты.", "loadDetailFailed": "Не удалось загрузить детали профиля оператора.", "editTitle": "Изменение профиля оператора", "createTitle": "Новый профиль оператора", "cancel": "Отмена", "saving": "Сохранение...", "save": "Сохранить", "loading": "Загрузка...", "linkedUser": "Связанный пользователь", "selectUser": "Выберите пользователя", "searchUser": "Поиск пользователей...", "emptyUser": "Подходящие пользователи не найдены", "linkedTeam": "Команда операторов", "selectTeam": "Выберите команду", "searchTeam": "Поиск команды...", "emptyTeam": "Команды не найдены", "noTeamsAvailable": "Сначала создайте команду операторов в боковой панели.", "displayName": "Отображаемое имя", "displayNamePlaceholder": "Введите отображаемое имя", "agentCodeLabel": "Код оператора", "agentCodePlaceholder": "Например: A1001", "avatar": "Аватар", "avatarUpload": "Загрузите аватар", "serviceStatus": "Статус оператора", "maxConcurrent": "Максимум одновременных диалогов", "priority": "Приоритет", "autoAssignEnabled": "Включать в автоназначение", "receiveOfflineMessage": "Принимать офлайн-сообщения", "remark": "Примечания", "remarkPlaceholder": "Введите примечания", "teamTitle": "Команды поддержки", "searchTeams": "Поиск команд", "loadTeamsFailed": "Не удалось загрузить команды поддержки.", "teamUpdated": "Команда поддержки обновлена: {name}", "teamCreated": "Команда поддержки создана: {name}", "teamSaveFailed": "Не удалось сохранить команду поддержки.", "teamDeleted": "Команда поддержки удалена: {name}", "teamDeleteFailed": "Не удалось удалить команду поддержки.", "noTeams": "Подходящие команды поддержки не найдены", "teamNameRequired": "Введите название команды.", "leaderInvalid": "Некорректный руководитель команды.", "teamStatusRequired": "Выберите статус.", "loadUsersFailed": "Не удалось загрузить варианты пользователей.", "loadTeamDetailFailed": "Не удалось загрузить детали команды поддержки.", "teamEditTitle": "Изменение", "teamCreateTitle": "Создание", "createTeamAction": "Создать команду", "teamName": "Название команды", "teamNamePlaceholder": "Введите название команды", "leader": "Руководитель команды", "noLeader": "Без руководителя", "selectLeader": "Выберите руководителя команды", "status": "Статус", "selectStatus": "Выберите статус", "description": "Обязанности", "descriptionPlaceholder": "Например: обрабатывает вопросы по предпродаже и квалифицирует лиды" }, "agentTeamSchedule": { "loadFailed": "Не удалось загрузить расписания команд поддержки.", "loadCalendarFailed": "Не удалось загрузить календарь расписаний.", "loadTeamsFailed": "Не удалось загрузить варианты команд поддержки.", "historyReadonly": "Прошедшие расписания нельзя изменять.", "updated": "Расписание команды поддержки обновлено.", "created": "Расписание команды поддержки создано.", "saveFailed": "Не удалось сохранить расписание команды поддержки.", "deleted": "Расписание команды поддержки удалено.", "deleteFailed": "Не удалось удалить расписание команды поддержки.", "updateFailed": "Не удалось обновить расписание команды поддержки.", "month": "Месяц", "week": "Неделя", "list": "Список", "prevMonth": "Предыдущий месяц", "thisMonth": "Текущий месяц", "nextMonth": "Следующий месяц", "prevWeek": "Предыдущая неделя", "thisWeek": "Текущая неделя", "nextWeek": "Следующая неделя", "today": "Сегодня", "allTeams": "Все команды", "filterTeam": "Фильтр по команде", "searchTeam": "Поиск команд", "emptyTeam": "Подходящие команды не найдены", "query": "Поиск", "refresh": "Обновить", "batch": "Массовое расписание", "new": "Создать", "team": "Команда", "timeRange": "Период", "actions": "Действия", "teamFallback": "Команда #{id}", "teamId": "Идентификатор команды: {id}", "edit": "Изменить", "moreActions": "Другие действия для {name}", "deleting": "Удаление...", "delete": "Удалить", "emptyRows": "Подходящие расписания команд поддержки не найдены", "teamRequired": "Выберите команду поддержки.", "startRequired": "Время начала обязательно.", "endRequired": "Время окончания обязательно.", "endAfterStart": "Время окончания должно быть позже времени начала.", "singleDayOnly": "Одно расписание не может переходить через сутки.", "loadOptionsFailed": "Не удалось загрузить варианты.", "loadDetailFailed": "Не удалось загрузить детали расписания.", "editTitle": "Изменение расписания команды поддержки", "createTitle": "Новое расписание команды поддержки", "loading": "Загрузка...", "startTime": "Время начала", "endTime": "Время окончания", "remark": "Примечания", "remarkPlaceholder": "Введите примечания", "cancel": "Отмена", "saving": "Сохранение...", "save": "Сохранить", "weekdayMon": "Пн", "weekdayTue": "Вт", "weekdayWed": "Ср", "weekdayThu": "Чт", "weekdayFri": "Пт", "weekdaySat": "Сб", "weekdaySun": "Вс", "weekdayShortMon": "Пн", "weekdayShortTue": "Вт", "weekdayShortWed": "Ср", "weekdayShortThu": "Чт", "weekdayShortFri": "Пт", "weekdayShortSat": "Сб", "weekdayShortSun": "Вс", "monthTitle": "{month}/{year}", "dropInsideCalendar": "Перетащите на день календаря.", "cannotMoveHere": "Сюда переместить нельзя.", "resizeInvalid": "Нельзя переходить через сутки или задавать короче 15 минут.", "noTeamsCalendar": "Для календаря нет доступных команд поддержки.", "moreItems": "Ещё {count}", "batchDescription": "Выберите команды, период и рабочие часы. Проверьте результат перед созданием расписаний.", "addTeam": "Добавить команду", "loadingTeams": "Загрузка команд...", "noTeams": "Команд нет", "allTeamsSelected": "Выбраны все команды", "removeTeam": "Удалить {name}", "noSelectedTeams": "Команды не выбраны", "startDate": "Дата начала", "endDate": "Дата окончания", "weekday": "День недели", "previewFailed": "Не удалось выполнить предварительный просмотр массового расписания.", "previewFirst": "Сначала проверьте массовое расписание.", "conflictCannotSubmit": "Расписания с конфликтами отправить нельзя.", "batchCreated": "Создано расписаний команд поддержки: {count}.", "batchRefreshFailed": "Расписания созданы, но не удалось обновить список: {message}", "batchRefreshFailedFallback": "Расписания созданы, но не удалось обновить список.", "generateFailed": "Не удалось создать массовое расписание.", "selectAtLeastOneTeam": "Выберите хотя бы одну команду поддержки.", "selectDateRange": "Выберите период.", "startBeforeToday": "Дата начала не может быть раньше сегодняшней.", "endBeforeStart": "Дата окончания не может быть раньше даты начала.", "selectAtLeastOneWeekday": "Выберите хотя бы один день недели.", "selectStartEndTime": "Выберите время начала и окончания.", "previewSummaryConflict": "{total} расписаний, есть конфликты. Вернитесь и скорректируйте их.", "previewSummaryReady": "{total} расписаний. Создайте их после подтверждения отсутствия конфликтов.", "hasConflict": "Есть конфликты", "noConflict": "Конфликтов нет", "date": "Дата", "time": "Время", "status": "Статус", "conflictFallback": "Конфликт расписания", "canGenerate": "Готово", "emptyPreview": "Нет расписаний для создания", "backToEdit": "Вернуться к редактированию", "preview": "Проверить", "generate": "Создать расписания" }, "ticket": { "allAssignees": "Все исполнители", "allTags": "Все теги", "hours": "{hours} ч", "manual": "Вручную", "conversation": "Диалог", "manualCreated": "Создано вручную", "conversationGenerated": "Создано из диалога", "agentFallback": "Оператор #{id}", "customerFallback": "Клиент #{id}", "userFallback": "Пользователь #{id}", "unassigned": "Не назначено", "noCustomer": "Без клиента", "loadFailed": "Не удалось загрузить обращения.", "loadFiltersFailed": "Не удалось загрузить фильтры.", "created": "Обращение создано.", "createFailed": "Не удалось создать обращение.", "quickAll": "Все обращения", "quickPending": "Ожидают", "quickInProgress": "В работе", "quickDone": "Решённые", "quickUnassigned": "Без исполнителя", "quickMine": "Мои обращения", "quickStale": "Просроченные", "refresh": "Обновить", "newTicket": "Новое обращение", "searchPlaceholder": "Поиск по номеру, заголовку или описанию обращения", "staleThreshold": "Считается просроченным после", "reset": "Сбросить", "query": "Поиск", "columnTicket": "Обращение", "columnStatus": "Статус", "columnAssignee": "Исполнитель", "columnUpdated": "Последнее обновление", "columnActions": "Действия", "loadingRows": "Загрузка обращений...", "emptyRows": "Обращений пока нет", "detail": "Детали", "currentStatus": "Текущий статус", "statusPending": "Ожидает", "statusInProgress": "В работе", "statusDone": "Решено", "titleRequired": "Введите заголовок обращения.", "descriptionRequired": "Введите описание проблемы.", "selectedTags": "Выбрано тегов: {count}", "selectTags": "Выберите теги обращения", "searchTags": "Поиск тегов", "emptyTags": "Тегов нет", "tags": "Теги", "noAssignee": "Без исполнителя", "editTitle": "Изменение обращения", "createTitle": "Новое обращение", "dialogDescription": "Введите основные данные обращения.", "cancel": "Отмена", "saving": "Сохранение...", "save": "Сохранить", "create": "Создать", "loading": "Загрузка...", "title": "Заголовок", "titlePlaceholder": "Введите заголовок обращения", "description": "Описание", "assignee": "Исполнитель", "selectAssignee": "Выберите исполнителя", "ticketTags": "Теги обращения", "detailTitle": "Детали обращения", "creator": "Создал {name}", "loadDetailFailed": "Не удалось загрузить детали обращения.", "statusUpdated": "Статус обращения обновлён.", "statusUpdateFailed": "Не удалось обновить статус обращения.", "statusChangeConfirmTitle": "Подтверждение смены статуса", "statusChangeConfirmDescription": "Изменить статус обращения с «{from}» на «{to}»?", "statusChangeConfirm": "Подтвердить изменение", "updating": "Обновление...", "progressRequired": "Введите запись о ходе работ.", "progressRecorded": "Запись добавлена.", "progressCreateFailed": "Не удалось добавить запись.", "selectTicket": "Выберите обращение.", "updated": "Обращение обновлено.", "updateFailed": "Не удалось обновить обращение.", "noLinkedCustomer": "Это обращение не привязано к клиенту.", "saved": "Сохранено.", "saveFailed": "Не удалось сохранить.", "noDescription": "Нет описания", "assign": "Назначить", "edit": "Изменить", "linkOrCreate": "Привязать или создать", "customerInfo": "Данные клиента", "customer": "Клиент", "contact": "Контакт", "ticketInfo": "Данные обращения", "source": "Источник", "channel": "Канал", "conversationId": "Идентификатор диалога", "progress": "Ход работ", "addProgress": "Добавить запись", "noProgress": "Записей пока нет", "chooseTicket": "Выберите обращение", "progressPlaceholder": "Опишите ход работ", "submitting": "Отправка...", "submit": "Отправить", "assignTitle": "Назначить обращение", "assigneeRequired": "Выберите исполнителя.", "loadAssigneesFailed": "Не удалось загрузить исполнителей.", "assigneeUpdated": "Исполнитель обновлён.", "assignFailed": "Не удалось назначить обращение.", "selectHandler": "Выберите исполнителя", "assignReason": "Примечание", "assignReasonPlaceholder": "Добавьте примечание к назначению", "confirmAssign": "Назначить", "conversationToTicket": "Создать обращение из диалога", "conversationToTicketDescription": "Создайте обращение на основе текущего диалога.", "conversationMissing": "Диалог не найден.", "createSuccess": "Обращение создано." }, "skillDefinition": { "allStatus": "Все статусы", "statusOk": "Включён", "statusDisabled": "Отключён", "statusDeleted": "Удалён", "whitelistCount": "В списке разрешённых: {count}", "exampleCount": "Примеров: {count}", "noDescription": "Нет описания", "toggleStatus": "Изменить статус навыка {name}", "debug": "Отладка", "edit": "Изменить", "moreActions": "Другие действия для {name}", "restoring": "Восстановление...", "restore": "Восстановить", "deleting": "Удаление...", "processing": "Выполняется...", "delete": "Удалить", "loadFailed": "Не удалось загрузить навыки.", "updated": "Навык обновлён: {name}", "created": "Навык создан: {name}", "saveFailed": "Не удалось сохранить навык.", "enabled": "Включён: {name}", "disabled": "Отключён: {name}", "statusUpdateFailed": "Не удалось обновить статус.", "deleted": "Навык удалён: {name}", "deleteFailed": "Не удалось удалить навык.", "restored": "Навык восстановлен: {name}", "restoreFailed": "Не удалось восстановить навык.", "refresh": "Обновить", "new": "Создать", "filterName": "Фильтр по названию", "searchStatus": "Поиск статусов", "emptyStatus": "Подходящие статусы не найдены", "query": "Поиск", "status": "Статус", "updatedAt": "Последнее обновление", "actions": "Действия", "loadingRows": "Загрузка навыков...", "emptyRows": "Подходящие навыки не найдены", "nameRequired": "Введите название навыка.", "instructionRequired": "Введите инструкции навыка.", "editTitle": "Изменение", "createTitle": "Создание", "cancel": "Отмена", "saving": "Сохранение...", "save": "Сохранить", "create": "Создать", "loading": "Загрузка...", "name": "Название", "namePlaceholder": "Например: обработка возвратов", "description": "Описание", "descriptionPlaceholder": "Опишите, что делает этот навык, какие у него границы и когда его применять.", "instruction": "Инструкции", "instructionPlaceholder": "Введите документацию навыка: цели, шаги, правила работы с инструментами и границы.", "examples": "Примеры фраз", "examplesPlaceholder": "По одной типовой фразе пользователя в строке, например:\nМне нужен возврат\nВы можете проверить мой заказ?", "toolWhitelist": "Список разрешённых инструментов", "selectTool": "Выберите инструменты, доступные этому навыку", "searchTool": "Поиск по коду или названию инструмента", "emptyTool": "Добавить инструменты нельзя", "add": "Добавить", "inheritAgentTools": "Оставьте пустым, чтобы наследовать доступные агенту инструменты.", "remark": "Примечания", "remarkPlaceholder": "Добавьте внутренние примечания или детали сопровождения", "agentRequired": "Выберите ИИ-агента.", "messageRequired": "Введите сообщение пользователя.", "emptyData": "Нет данных", "traceData": "Данные трассировки", "resumeTraceData": "Данные трассировки для продолжения", "confirm": "Подтвердить", "reject": "Отмена", "debugFailed": "Отладка навыка не удалась.", "resumeMessageRequired": "Введите сообщение для продолжения.", "resumeFailed": "Не удалось продолжить отладку.", "debugTitle": "Отладка навыка · {name}", "debugDescription": "Принудительно примените этот навык и изучите маршрутизацию, инструменты, выполнение графа, HITL и итоговый ответ.", "close": "Закрыть", "debugging": "Отладка...", "startDebug": "Начать отладку", "debugInput": "Входные данные отладки", "selectAgent": "Выберите ИИ-агента", "searchAgent": "Поиск ИИ-агентов", "emptyAgent": "ИИ-агенты не найдены", "conversationPlaceholder": "Необязательно. Укажите идентификатор существующего диалога, чтобы использовать его контекст.", "matchedAgent": "Совпавший агент", "noAgentSelected": "Не выбран", "userMessage": "Сообщение пользователя", "userMessagePlaceholder": "Введите сообщение пользователя, чтобы отладить вызовы возможностей навыка и ответ внутри цикла агента.", "debugSummary": "Сводка отладки", "interrupted": "Прервано", "notInterrupted": "Не прервано", "skillName": "Название навыка", "none": "Нет", "errorMessage": "Сообщение об ошибке", "toolView": "Инструменты", "skillToolWhitelist": "Разрешённые инструменты навыка", "invokedTools": "Инструменты, вызванные за этот запуск", "resumeDebug": "Продолжить отладку", "currentCheckpoint": "Текущая контрольная точка", "resumeMessage": "Сообщение для продолжения", "resumePlaceholder": "Введите «Подтвердить», «Отмена» или другое сообщение для продолжения", "resuming": "Продолжение...", "resumeDebugAction": "Продолжить отладку", "resumeResult": "Результат продолжения", "stillWaiting": "По-прежнему ожидается подтверждение", "resumeCompleted": "Продолжение завершено", "resumeReply": "Ответ при продолжении" }, "knowledge": { "document": "Документы", "faq": "FAQ", "retrieveLogs": "Журналы извлечения", "expandList": "Развернуть список баз знаний", "collapseList": "Свернуть список баз знаний", "resizeList": "Изменить размер списка баз знаний", "refreshDocuments": "Обновить документы", "listLayout": "Список", "gridLayout": "Плитка", "openDebugPanel": "Открыть панель отладки", "newDocument": "Новый документ", "refreshFAQ": "Обновить FAQ", "importFAQ": "Импорт FAQ", "newFAQ": "Новый FAQ", "ragDebug": "Отладка RAG", "title": "База знаний", "columnBase": "База знаний", "columnType": "Тип", "columnContent": "Элементы", "columnStatus": "Статус", "columnUpdatedAt": "Последнее обновление", "columnActions": "Действия", "sortHandle": "Перетащите, чтобы изменить порядок", "processing": "Выполняется...", "noDescription": "Нет описания", "refreshBases": "Обновить базы знаний", "backToList": "Назад к базам знаний", "baseNotFound": "Эта база знаний не найдена или была удалена.", "loadBaseFailed": "Не удалось загрузить базу знаний.", "allStatus": "Все статусы", "status": "Статус", "statusOk": "Включена", "statusDisabled": "Отключена", "statusDeleted": "Удалена", "typeDocument": "База знаний документов", "typeFAQ": "База знаний FAQ", "chunkFixed": "Фиксированная длина", "chunkStructured": "Структурированные фрагменты", "chunkFAQ": "Фрагменты «вопрос-ответ»", "chunkSemantic": "Семантические фрагменты", "answerStrict": "Строгий режим", "answerAssist": "Режим подсказок", "loadBasesFailed": "Не удалось загрузить базы знаний.", "baseUpdated": "База знаний обновлена: {name}", "baseCreated": "База знаний создана: {name}", "baseSaveFailed": "Не удалось сохранить базу знаний.", "baseDeleted": "База знаний удалена: {name}", "baseDeleteFailed": "Не удалось удалить базу знаний.", "loadDirectoriesFailed": "Не удалось загрузить каталоги.", "directoryCreated": "Каталог создан: {name}", "directoryUpdated": "Каталог обновлён: {name}", "directoryDeleted": "Каталог удалён: {name}", "directorySaveFailed": "Не удалось сохранить каталог.", "directoryDeleteFailed": "Не удалось удалить каталог.", "directoryMoved": "Каталог перемещён.", "directoryMoveFailed": "Не удалось переместить каталог.", "directorySortUpdated": "Порядок каталогов обновлён.", "directorySortUpdateFailed": "Не удалось обновить порядок каталогов.", "directoryNameRequired": "Название каталога обязательно.", "rebuildStarted": "Запущена переиндексация базы знаний: {name}", "rebuildFailed": "Не удалось перестроить индекс базы знаний.", "sortUpdated": "Порядок баз знаний обновлён.", "sortUpdateFailed": "Не удалось обновить порядок баз знаний.", "moreActions": "Другие действия для {name}", "view": "Просмотреть", "edit": "Изменить", "rebuilding": "Перестроение...", "rebuildIndex": "Перестроить индекс", "deleting": "Удаление...", "delete": "Удалить", "move": "Переместить", "moving": "Перемещение...", "selectedCount": "Выбрано: {count}", "clearSelection": "Снять выделение", "selectCurrentPage": "Выбрать текущую страницу", "selectItem": "Выбрать {name}", "batchMove": "Переместить выбранные", "batchMoveDescription": "Переместить выбранные элементы ({count}) в каталог.", "batchMoved": "Перемещено элементов: {count}.", "batchMoveFailed": "Не удалось переместить выбранные элементы.", "batchDelete": "Удалить выбранные", "batchDeleteConfirm": "Удалить выбранные элементы ({count})? Это действие нельзя отменить.", "batchDeleted": "Удалено элементов: {count}.", "batchDeleteFailed": "Не удалось удалить выбранные элементы.", "targetDirectory": "Целевой каталог", "directory": "Каталог", "resizeDirectoryPanel": "Изменить размер панели каталогов", "allContent": "Всё содержимое", "rootContent": "Содержимое корня", "rootDirectory": "Корневой каталог", "parentDirectory": "Родительский каталог", "createDirectory": "Новый каталог", "createSubDirectory": "Новый подкаталог", "editDirectory": "Изменение каталога", "expandDirectory": "Развернуть каталог", "collapseDirectory": "Свернуть каталог", "selectDirectory": "Выбрать каталог", "searchDirectory": "Поиск каталогов", "emptyDirectory": "Подходящие каталоги не найдены", "directoryName": "Название каталога", "directoryNamePlaceholder": "Введите название каталога", "searchBase": "Поиск баз знаний", "query": "Поиск", "emptyBases": "Подходящие базы знаний не найдены", "nameRequired": "Название обязательно.", "nameMax": "Название не может превышать 100 символов.", "descriptionMax": "Описание не может превышать 500 символов.", "typeRequired": "Выберите тип базы знаний.", "topKRequired": "Введите значение Top K.", "scoreRequired": "Введите порог оценки.", "rerankRequired": "Введите лимит переранжирования.", "chunkProviderRequired": "Выберите стратегию разбиения на фрагменты.", "targetTokensRequired": "Введите целевое количество токенов.", "maxTokensRequired": "Введите максимальное количество токенов.", "overlapTokensRequired": "Введите количество перекрывающихся токенов.", "answerModeRequired": "Выберите режим ответа.", "remarkMax": "Примечания не могут превышать 500 символов.", "editBaseTitle": "Изменение базы знаний", "createBaseTitle": "Новая база знаний", "cancel": "Отмена", "saving": "Сохранение...", "save": "Сохранить", "create": "Создать", "loading": "Загрузка...", "knowledgeType": "Тип базы знаний", "selectKnowledgeType": "Выберите тип базы знаний", "searchKnowledgeType": "Поиск типов баз знаний", "emptyKnowledgeType": "Подходящие типы баз знаний не найдены", "name": "Название", "namePlaceholder": "Название базы знаний", "description": "Описание", "descriptionPlaceholder": "Описание базы знаний", "chunkProvider": "Стратегия разбиения на фрагменты", "selectChunkProvider": "Выберите стратегию разбиения на фрагменты", "searchChunkProvider": "Поиск стратегий разбиения", "emptyChunkProvider": "Подходящие стратегии разбиения не найдены", "targetToken": "Целевые токены", "maxToken": "Максимум токенов", "overlapToken": "Перекрывающиеся токены", "defaultTopK": "Top K по умолчанию", "defaultScoreThreshold": "Порог оценки по умолчанию", "defaultRerankLimit": "Лимит переранжирования по умолчанию", "answerMode": "Режим ответа", "selectAnswerMode": "Выберите режим ответа", "searchAnswerMode": "Поиск режимов ответа", "emptyAnswerMode": "Подходящие режимы ответа не найдены", "remark": "Примечания", "remarkPlaceholder": "Примечания", "allIndexStatus": "Все статусы индексации", "searchStatus": "Поиск статусов", "emptyStatus": "Подходящие статусы не найдены", "indexPending": "Ожидает", "indexIndexed": "Проиндексирован", "indexFailed": "Ошибка индексации", "loadDocumentsFailed": "Не удалось загрузить документы.", "documentUpdated": "Документ обновлён: {title}", "documentCreated": "Документ создан: {title}", "documentSaveFailed": "Не удалось сохранить документ.", "documentDeleted": "Документ удалён: {title}", "documentDeleteFailed": "Не удалось удалить документ.", "documentIndexRebuilt": "Индекс перестроен: {title}", "documentIndexRebuildFailed": "Не удалось перестроить индекс.", "selectKnowledgeBaseForDocuments": "Выберите базу знаний, чтобы просмотреть документы.", "searchDocumentTitle": "Поиск по заголовкам документов", "indexedAt": "Проиндексирован {time}", "indexTime": "Проиндексирован в {time}", "running": "Выполняется...", "emptyDocuments": "Подходящие документы не найдены", "documentTitleRequired": "Заголовок обязателен.", "documentTitleMax": "Заголовок не может превышать 255 символов.", "contentTypeRequired": "Выберите тип содержимого.", "contentRequired": "Содержимое обязательно.", "editDocumentTitle": "Изменение документа", "createDocumentTitle": "Новый документ", "viewDocumentTitle": "Просмотр документа", "documentTitle": "Заголовок", "documentTitlePlaceholder": "Заголовок документа", "content": "Содержимое", "contentPlaceholder": "Введите содержимое документа", "loadFAQFailed": "Не удалось загрузить FAQ.", "loadingFAQ": "Загрузка FAQ...", "faqSaved": "FAQ сохранён.", "faqSaveFailed": "Не удалось сохранить FAQ.", "faqDeleted": "FAQ удалён.", "faqDeleteFailed": "Не удалось удалить FAQ.", "faqIndexRebuilt": "Индекс FAQ перестроен.", "faqIndexRebuildFailed": "Не удалось перестроить индекс FAQ.", "selectFAQBase": "Выберите базу знаний FAQ, чтобы просмотреть вопросы.", "searchFAQ": "Поиск FAQ по вопросу", "question": "Вопрос", "indexStatus": "Статус индексации", "indexedAtLabel": "Проиндексирован", "similarQuestions": "Похожие вопросы", "updatedAt": "Обновлён", "createUser": "Создал", "updateUser": "Обновил", "actions": "Действия", "emptyFAQ": "В этой базе знаний пока нет вопросов FAQ", "faqQuestionRequired": "Вопрос обязателен.", "faqQuestionMax": "Вопрос не может превышать 500 символов.", "faqAnswerRequired": "Ответ обязателен.", "editFAQTitle": "Изменение FAQ", "createFAQTitle": "Новый FAQ", "viewFAQTitle": "Просмотр FAQ", "standardQuestion": "Основной вопрос", "questionPlaceholder": "Введите основной вопрос", "answer": "Ответ", "answerPlaceholder": "Введите ответ FAQ", "similarQuestionsPlaceholder": "По одному похожему вопросу в строке", "importRowFailed": "Строка {row}: {message}", "importFailed": "Импорт не удался.", "importFAQTitle": "Импорт FAQ", "importFAQDescription": "Загрузите Excel-файл для массового импорта FAQ. Обязательные столбцы: основной вопрос и ответ. Похожие вопросы указывайте по одному в строке в той же ячейке.", "downloadTemplate": "Скачать шаблон", "downloadTemplateFailed": "Не удалось скачать шаблон.", "importing": "Импорт...", "startImport": "Начать импорт", "importFile": "Файл импорта", "chooseFile": "Выбрать файл", "importFileDescription": "Поддерживаются только файлы .xlsx.", "currentFile": "Текущий файл: {name}", "importHint": "Примечания по импорту", "importXlsxHint": "Столбцы шаблона: основной вопрос, ответ, похожие вопросы и примечания. Похожие вопросы указывайте по одному в строке внутри ячейки.", "importXlsxOnly": "Поддерживаются только файлы .xlsx.", "importMode": "Режим импорта", "selectImportMode": "Выберите режим импорта", "searchImportMode": "Поиск режима импорта", "emptyImportMode": "Режимы импорта не найдены", "importModeAppend": "Импорт с добавлением", "importModeOverwrite": "Импорт с перезаписью", "importModeAppendDescription": "Создаёт только те основные вопросы, которых ещё нет. Существующие основные вопросы пропускаются.", "importModeOverwriteDescription": "Сопоставляет по основному вопросу и обновляет существующие записи FAQ. Отсутствующие основные вопросы создаются.", "importResult": "Результат импорта", "importTotal": "Всего", "importCreated": "Создано", "importUpdated": "Обновлено", "importSkipped": "Пропущено", "importFailedCount": "С ошибками", "importFAQResultToast": "Создано: {created}, обновлено: {updated}, пропущено: {skipped}, с ошибками: {failed}", "exportFAQ": "Экспорт FAQ", "exportFAQSuccess": "Загрузка экспорта FAQ начата.", "exportFAQFailed": "Не удалось экспортировать FAQ.", "none": "Нет", "allChannels": "Все каналы", "channelIM": "Чат поддержки", "channelAgentAssist": "Помощь оператору", "channelAPI": "API", "channelDebug": "Отладка", "allScenes": "Все сценарии", "sceneFirstResponse": "Первый ответ", "sceneAssist": "Подсказка ответа", "sceneQA": "Вопрос-ответ", "allAnswerStatus": "Все статусы ответа", "answerNormal": "Обычный", "answerNoAnswer": "Нет ответа", "answerFallback": "Резервный ответ", "answerBlocked": "Заблокирован", "allChunkProviders": "Все стратегии разбиения", "allRerank": "Любое переранжирование", "rerankEnabled": "Переранжирование включено", "rerankDisabled": "Переранжирование отключено", "loadRetrieveLogsFailed": "Не удалось загрузить журналы извлечения.", "selectBaseForLogs": "Выберите базу знаний, чтобы просмотреть журналы извлечения.", "loadingRetrieveLogs": "Загрузка журналов извлечения...", "emptyRetrieveLogs": "В этой базе знаний пока нет журналов извлечения", "filterQuestion": "Фильтр по ключевому слову вопроса", "selectChannel": "Выберите канал", "selectScene": "Выберите сценарий", "answerStatus": "Статус ответа", "chunkStrategy": "Стратегия разбиения на фрагменты", "filter": "Фильтр", "time": "Время", "hitCount": "Совпадения", "citations": "Ссылки", "duration": "Длительность", "yes": "Да", "no": "Нет", "loadRetrieveLogDetailFailed": "Не удалось загрузить детали журнала извлечения.", "noCitations": "Источники ссылок отсутствуют", "unrecordedSection": "Раздел не зафиксирован", "retrieveLogDetail": "Детали журнала извлечения", "retrieveLogNotFound": "Журнал извлечения не найден", "loadingDetail": "Загрузка деталей...", "emptyDetail": "Нет деталей", "requestInfo": "Данные запроса", "createdAt": "Создан", "channelScene": "Канал / сценарий", "originalQuestion": "Исходный вопрос", "rewriteQuestion": "Переформулированный вопрос", "answerContent": "Ответ", "retrieveStrategy": "Стратегия извлечения", "resultSummary": "Сводка результата", "contextChunks": "Фрагменты контекста", "retrieveMs": "Время извлечения", "generateMs": "Время генерации", "totalMs": "Общее время", "model": "Модель", "sessionId": "Идентификатор сессии", "citationSources": "Источники ссылок", "hitDetails": "Детали совпадений", "itemsCount": "Элементов: {count}", "usedInContext": "Использован в контексте", "notUsedInContext": "Не использован в контексте", "section": "Раздел: {section}", "selectKnowledgeBaseFirst": "Сначала выберите базу знаний.", "debugQuestionRequired": "Введите вопрос для отладки.", "searchCompleted": "Поиск завершён. Совпадений: {count}.", "searchFailed": "Поиск не удался.", "answerCompleted": "Ответ сформирован. Статус: {status}", "answerFailed": "Не удалось сформировать ответ.", "debugQuestionPlaceholder": "Введите вопрос, чтобы проверить извлечение и качество ответа.", "topKPlaceholder": "Количество совпадений", "scoreThreshold": "Порог сходства", "scoreThresholdPlaceholder": "Минимальная оценка", "rerankLimitLabel": "Лимит переранжирования", "rerankLimitPlaceholder": "Элементов для переранжирования", "searching": "Поиск...", "debugSearch": "Отладочный поиск", "generating": "Формирование...", "debugAnswer": "Отладочный ответ", "answerResult": "Результат ответа", "searchHits": "Совпадения поиска", "hitsSummary": "Совпадений: {count} · {latency}мс", "unknownType": "Неизвестный тип", "unknownStatus": "Неизвестный статус", "indexFailureSummary": "Не удалось выполнить индексацию. Проверьте настройки индексации и повторите попытку.", "requestId": "Идентификатор запроса", "rerank": "Переранжирование", "topScore": "Лучшая оценка", "promptTokens": "Входные токены", "completionTokens": "Выходные токены", "traceData": "Данные трассировки", "chunkNumber": "Фрагмент №{number}", "providerValue": "Стратегия: {value}", "scoreValue": "Оценка: {value}", "rerankValue": "Оценка переранжирования: {value}", "historyRecordedNotice": "Прошлые ответы и фрагменты показаны в исходном виде. Смена языка интерфейса не изменяет историю.", "faqNumber": "FAQ №{number}", "documentNumber": "Документ №{number}" }, "scaffold": { "moduleBoard": "Доска поставки модулей", "moduleBoardDescription": "Каркас админки первого этапа. Позже замените его реальными модулями на базе API.", "searchModule": "Поиск модулей", "filter": "Фильтр", "moduleList": "Модули", "milestones": "Этапы", "phaseOneModules": "Модули первого этапа", "phaseOneDescription": "Охватывает учётные записи, разрешения, базу знаний, каналы и точки входа навыков.", "module": "Модуль", "owner": "Ответственный", "status": "Статус", "progress": "Прогресс", "updatedAt": "Обновлён", "done": "Готово", "nextMilestone": "Следующий этап", "nextMilestoneDescription": "Каркас интерфейса готов. Следующий шаг: подключить реальные API и бизнес-формы.", "milestoneLogin": "Подключить API входа, пользователей, ролей и разрешений.", "milestoneForms": "Добавить диалоги форм, постраничные запросы и обработку ошибок.", "milestoneKnowledge": "Подключить реальную базу знаний и настройку каналов.", "adminUsers": "Администраторы", "newAdminsThisWeek": "Новых администраторов за неделю", "accountSystemReady": "Основа учётных записей готова к подключению реальных API", "permissions": "Разрешения", "initialized": "Инициализировано", "permissionsPending": "Разрешения меню и API ожидают реализации", "permissionModelReady": "Готово к подключению серверной модели разрешений", "knowledgeTasks": "Задачи по знаниям", "running": "Выполняется", "ragReserved": "Заглушка интеграции RAG", "docIndexSupport": "Поддерживает импорт документов и индексацию", "channelAccess": "Доступ к каналам", "pendingConfig": "Ожидает настройки", "channelEntrances": "Точки входа WeCom, DingTalk и IM", "waitingRealConfig": "Ожидание реальных параметров подключения", "recentActivity": "Недавняя активность разработки", "activityDescription": "Демонстрационные данные о росте диалогов и готовности базы знаний.", "activeSessions": "Активные сессии", "indexedDocs": "Документы базы знаний", "last14Days": "Последние 14 дней", "last7Days": "Последние 7 дней", "selectTimeRange": "Выберите период", "businessModules": "Бизнес-модули", "open": "Открыть", "share": "Поделиться", "delete": "Удалить", "more": "Ещё" }, "widgetDemo": { "defaultName": "Демо-пользователь", "missingUserId": "Введите userId.", "missingName": "Введите имя пользователя.", "missingSecret": "Введите JWT-секрет.", "invalidTtl": "TTL должен быть больше 0.", "missingChannel": "Введите channelId.", "mountedJwt": "Виджет подключён в режиме JWT-пользователя.", "mountedGuest": "Виджет подключён в режиме гостя.", "mounted": "Виджет подключён.", "mountFailed": "Не удалось подключить виджет.", "linkFailed": "Не удалось сформировать ссылку на поддержку.", "unmounted": "Виджет отключён.", "title": "Проверка подключения виджета", "authMode": "Режим авторизации", "guest": "Гость", "jwtUser": "JWT-пользователь", "ttlMinutes": "TTL (минуты)", "mount": "Подключить", "unmount": "Отключить", "snippetTitle": "Код встраивания", "jwtNotice": "Эта страница предназначена только для локальной симуляции. В рабочей среде userToken должен выдавать ваш бэкенд.", "copiedSnippet": "Код встраивания скопирован", "copySnippet": "Копировать код встраивания", "copied": "Скопировано", "copyCode": "Копировать код", "directChat": "Прямой чат с клиентом", "directChatPlaceholder": "Скопируйте или откройте в новом окне, чтобы получить актуальную ссылку", "copy": "Копировать", "openNewWindow": "Открыть в новом окне", "currentToken": "Текущий userToken" }, "quickReply": { "loadFailed": "Не удалось загрузить быстрые ответы.", "created": "Быстрый ответ создан: {title}", "updated": "Быстрый ответ обновлён: {title}", "saveFailed": "Не удалось сохранить быстрый ответ.", "enabled": "Включён: {title}", "disabled": "Отключён: {title}", "statusUpdateFailed": "Не удалось обновить статус.", "deleted": "Быстрый ответ удалён: {title}", "deleteFailed": "Не удалось удалить быстрый ответ.", "refresh": "Обновить", "new": "Новый быстрый ответ", "filterTitle": "Фильтр по заголовку", "filterGroup": "Фильтр по группе", "query": "Поиск", "columnQuickReply": "Быстрый ответ", "columnGroup": "Группа", "columnStatus": "Статус", "columnSort": "Сортировка", "columnCreator": "Создал", "columnActions": "Действия", "edit": "Изменить", "moreActions": "Другие действия для {title}", "processing": "Выполняется...", "enable": "Включить", "disable": "Отключить", "deleting": "Удаление...", "delete": "Удалить", "loading": "Загрузка быстрых ответов...", "empty": "Подходящие быстрые ответы не найдены", "editTitle": "Изменение быстрого ответа", "createTitle": "Новый быстрый ответ", "cancel": "Отмена", "saving": "Сохранение...", "save": "Сохранить", "create": "Создать", "loadingDetail": "Загрузка...", "groupName": "Название группы", "groupNameRequired": "Введите название группы.", "groupNamePlaceholder": "Например: предпродажа, поддержка, сопровождение", "title": "Заголовок", "titleRequired": "Введите заголовок.", "titlePlaceholder": "Введите заголовок быстрого ответа", "content": "Содержимое ответа", "contentRequired": "Введите содержимое ответа.", "contentPlaceholder": "Введите содержимое ответа", "statusRequired": "Выберите статус.", "sortRequired": "Введите значение сортировки.", "sortInvalid": "Значение сортировки должно быть целым числом не меньше 0.", "sortPlaceholder": "Большие значения отображаются первыми" }, "tag": { "loadFailed": "Не удалось загрузить теги.", "updated": "Тег обновлён: {name}", "created": "Тег создан: {name}", "saveFailed": "Не удалось сохранить тег.", "enabled": "Включён: {name}", "disabled": "Отключён: {name}", "statusUpdateFailed": "Не удалось обновить статус.", "deleted": "Тег удалён: {name}", "deleteFailed": "Не удалось удалить тег.", "sameParentOnly": "Теги можно переставлять только внутри одного родительского тега.", "notFound": "Тег не найден.", "sortUpdated": "Порядок тегов обновлён.", "sortUpdateFailed": "Не удалось обновить порядок тегов.", "refresh": "Обновить", "expandAll": "Развернуть все", "collapseAll": "Свернуть все", "new": "Новый тег", "filterName": "Фильтр по названию", "searchStatus": "Поиск статуса", "emptyStatus": "Статусы не найдены", "query": "Поиск", "columnName": "Название тега", "columnStatus": "Статус", "columnRemark": "Примечания", "columnCreatedAt": "Создан", "columnActions": "Действия", "dragSort": "Перетащите, чтобы изменить порядок: {name}", "toggleStatus": "Изменить статус тега {name}", "edit": "Изменить", "moreActions": "Другие действия для {name}", "deleting": "Удаление...", "delete": "Удалить", "loading": "Загрузка тегов...", "empty": "Подходящие теги не найдены", "editTitle": "Изменение тега", "createTitle": "Новый тег", "cancel": "Отмена", "saving": "Сохранение...", "save": "Сохранить", "create": "Создать", "loadingDetail": "Загрузка...", "parent": "Родительский тег", "rootParent": "Нет (тег верхнего уровня)", "name": "Название тега", "nameRequired": "Введите название тега.", "namePlaceholder": "Введите название тега", "remark": "Примечания", "remarkPlaceholder": "Необязательные примечания", "searchParent": "Поиск родительских тегов", "emptyParent": "Родительские теги не найдены" }, "permission": { "loadFailed": "Не удалось загрузить разрешения.", "refresh": "Обновить", "sync": "Синхронизировать разрешения", "syncing": "Синхронизация...", "syncTitle": "Синхронизация встроенных разрешений", "syncDescription": "Синхронизировать встроенные разрешения из кода и добавить отсутствующие разрешения во встроенные роли. Существующие разрешения ролей удалены не будут.", "syncSuccess": "Разрешения синхронизированы: создано {created}, обновлено {updated}, добавлено разрешений ролей {rolePermissionsAdded}", "syncFailed": "Не удалось синхронизировать разрешения.", "filterKeyword": "Фильтр по названию или коду разрешения", "filterGroup": "Фильтр по группе", "query": "Поиск", "columnPermission": "Разрешение", "columnCode": "Код", "columnGroup": "Группа", "columnApi": "API", "columnStatus": "Статус", "loading": "Загрузка разрешений...", "empty": "Подходящие разрешения не найдены" }, "role": { "dragSort": "Перетащите, чтобы изменить порядок: {name}", "system": "Системная", "processing": "Выполняется...", "assignPermissions": "Назначить разрешения", "loadFailed": "Не удалось загрузить роли.", "created": "Роль создана: {name}", "createFailed": "Не удалось создать роль.", "loadAssignFailed": "Не удалось загрузить данные назначения разрешений.", "sortUpdated": "Порядок ролей обновлён.", "sortUpdateFailed": "Не удалось обновить порядок ролей.", "permissionsUpdated": "Разрешения обновлены для {name}.", "savePermissionsFailed": "Не удалось сохранить назначение разрешений.", "add": "Добавить роль", "refresh": "Обновить", "dragHint": "Перетаскивайте строки, чтобы изменить порядок ролей.", "pageSummary": "Страница {page} / по {limit} на странице", "columnRole": "Роль", "columnCode": "Код", "columnStatus": "Статус", "columnSort": "Сортировка", "columnActions": "Действия", "loading": "Загрузка ролей...", "empty": "Ролей пока нет", "assignTitle": "Назначить разрешения", "currentRole": "Текущая роль: {name} {code}", "permissionList": "Разрешения", "searchPermission": "Поиск по названию, коду, группе или API разрешения", "loadingPermissions": "Загрузка разрешений...", "permissionCount": "Элементов: {count}", "noPermissions": "Подходящие разрешения не найдены", "saving": "Сохранение...", "savePermissions": "Сохранить разрешения", "cancel": "Отмена", "nameRequired": "Введите название роли.", "codeRequired": "Введите код роли.", "codeInvalid": "Код роли должен начинаться с буквы и может содержать только буквы, цифры, двоеточия, подчёркивания и дефисы.", "createTitle": "Добавить роль", "createDescription": "После создания роли можно назначить разрешения и изменить её порядок в списке.", "name": "Название роли", "namePlaceholder": "Например: руководитель поддержки", "code": "Код роли", "codePlaceholder": "Например: support_manager", "remark": "Примечания", "optional": "Необязательно", "creating": "Создание...", "create": "Создать роль" }, "workflowRun": { "allStatus": "Все статусы", "completed": "Завершено", "interrupted": "Прервано", "failed": "Ошибка", "allAgents": "Все операторы", "loadAgentsFailed": "Не удалось загрузить ИИ-агентов.", "loadDetailFailed": "Не удалось загрузить детали выполнения.", "loadConversationFailed": "Не удалось загрузить детали диалога.", "conversationId": "Идентификатор диалога", "messageId": "Идентификатор сообщения", "workflowVersionId": "Идентификатор версии рабочего процесса", "agent": "Оператор", "searchAgent": "Поиск операторов", "emptyAgent": "Операторы не найдены", "status": "Статус", "startedAt": "Начало", "endedAt": "Окончание", "workflow": "Рабочий процесс", "version": "Версия", "message": "Сообщение", "conversationShort": "Диалог #{id}", "messageShort": "Сообщение #{id}", "duration": "Длительность", "error": "Ошибка", "refresh": "Обновить", "query": "Поиск", "loading": "Загрузка запусков рабочих процессов", "empty": "Запусков рабочих процессов пока нет", "loadFailed": "Не удалось загрузить запуски рабочих процессов.", "detailTitle": "Детали выполнения", "detailDescription": "Изучите путь выполнения рабочего процесса", "close": "Закрыть", "loadingDetail": "Загрузка деталей выполнения...", "interruptNode": "Узел прерывания", "nodeDetails": "Детали выполнения узлов", "emptyNodes": "Записей о выполнении узлов нет", "notFound": "Запуск рабочего процесса не найден", "input": "Входные данные", "output": "Выходные данные", "recordsTitle": "Журналы выполнения ИИ", "loadingLogs": "Загрузка журналов выполнения...", "emptyLogs": "Журналов выполнения ИИ нет", "description": "Трассировка выполнения рабочего процесса", "emptyDetail": "Запись о выполнении не найдена.", "loadLogsFailed": "Не удалось загрузить журналы выполнения ИИ", "labelConversation": "Диалог", "labelMessage": "Сообщение", "labelAgent": "Оператор", "labelStatus": "Статус", "labelStartedAt": "Начало", "labelEndedAt": "Окончание", "labelInterruptNode": "Узел прерывания", "labelWorkflow": "Рабочий процесс", "viewDetails": "Детали выполнения" }, "agentRun": { "conversation": "Диалог", "agent": "Оператор", "engine": "Движок", "status": "Статус", "startedAt": "Начало", "duration": "Длительность", "tokens": "Входные/выходные токены", "error": "Ошибка", "refresh": "Обновить", "query": "Запрос", "loading": "Загрузка запусков операторов", "empty": "Запусков операторов нет", "loadFailed": "Не удалось загрузить запуски операторов", "loadDetailFailed": "Не удалось загрузить детали запуска оператора", "detailTitle": "Детали запуска оператора", "detailDescription": "Единый аудит запусков", "loadingDetail": "Загрузка деталей запуска оператора", "close": "Закрыть", "revision": "Версия", "trace": "Трассировка", "steps": "Шаги", "emptySteps": "Шаги не зафиксированы", "toolCalls": "Вызовы инструментов", "emptyToolCalls": "Вызовы инструментов не зафиксированы", "input": "Предпросмотр входных данных", "output": "Предпросмотр выходных данных", "arguments": "Предпросмотр аргументов", "result": "Предпросмотр результата", "notFound": "Запуск оператора не найден", "metricCompletionRate": "Доля завершённых", "metricResolutionRate": "Доля решённых", "metricUnsupportedRate": "Доля без подтверждения", "metricToolSuccessRate": "Доля успешных вызовов инструментов", "metricAvgSteps": "Среднее число шагов", "metricP95Latency": "Задержка P95", "metricToken": "Расход токенов", "metricHandoffRate": "Доля передач человеку", "metricFallbackRate": "Доля резервных обращений к базе знаний", "metricInterruptRecoveryRate": "Доля восстановлений после прерывания", "qualityTitle": "Проверка качества запусков", "qualityDescription": "Доли решённых и неподтверждённых запусков считаются только по проверенным запускам.", "selectResolution": "Выберите статус решения", "selectEvidence": "Выберите статус подтверждения", "qualityCommentPlaceholder": "Примечания проверки...", "saveQuality": "Сохранить проверку", "qualitySaved": "Результат проверки сохранён", "workflowAudit": "Аудит узлов рабочего процесса", "viewWorkflowAudit": "Посмотреть аудит узлов" }, "agentActivity": { "thinking": "AI-ассистент думает...", "searchingKnowledge": "Поиск в базе знаний...", "callingTool": "Выполнение действия: {name}...", "runningWorkflow": "Выполнение сценария: {name}...", "default": "AI-ассистент обрабатывает запрос...", "customerThinking": "AI-ассистент думает...", "customerSearching": "Поиск информации...", "customerProcessing": "AI-ассистент готовит ответ...", "customerDefault": "AI-ассистент готовит ответ...", "toolAnalyzeConversation": "Анализ диалога", "toolTriageServiceRequest": "Маршрутизация обращения", "toolCreateTicket": "Создание обращения", "toolHandoff": "Перевод на оператора" }, "wxworkOutbox": { "statusFailed": "Ошибка", "statusIgnored": "Игнорируется", "statusAll": "Все", "retrySuccess": "Сообщение возвращено в очередь отправки", "ignoreSuccess": "Ошибочная запись проигнорирована", "actionFailed": "Не удалось выполнить действие", "retry": "Повторить", "ignore": "Игнорировать", "columnStatus": "Статус", "conversationId": "Идентификатор диалога", "messageId": "Идентификатор сообщения", "columnMessage": "Сообщение", "conversationLine": "Чат #{id}", "messageLine": "Сообщение #{id}", "columnRetry": "Повторы", "retriesCount": "{count} раз", "nextRetry": "Следующий: {time}", "columnError": "Причина сбоя", "columnUpdatedAt": "Обновлено", "columnActions": "Действия", "refresh": "Обновить", "query": "Поиск", "loading": "Загрузка исходящих сообщений...", "empty": "Ошибочных исходящих сообщений нет", "loadFailed": "Не удалось загрузить исходящие сообщения" }, "supportPublic": { "brand": "AgentDesk Support", "nav": { "home": "Главная", "help": "Справка", "questions": "FAQ", "login": "Войти", "community": "Сообщество", "siteNavigation": "Навигация сайта" }, "home": { "badge": "Центр поддержки", "title": "Документация, ответы сообщества и живая поддержка в одном месте.", "description": "Собирайте повторяющиеся вопросы как сообщество и организуйте рекомендации как сайт документации. Сначала поищите, а затем при необходимости обратитесь в поддержку.", "searchPlaceholder": "Поиск по страницам справки и вопросам", "helpTitle": "Центр справки", "helpDescription": "Официальные руководства, заметки по развёртыванию и устранение неполадок.", "questionsTitle": "Сообщество FAQ", "questionsDescription": "Изучите вопросы, затем войдите, чтобы задать вопрос или ответить.", "chatTitle": "Живая поддержка", "chatDescription": "Откройте диалог с поддержкой, если самостоятельного решения недостаточно.", "quickPanelTitle": "Быстрые ссылки", "quickPanelDescription": "Продолжите по задаче", "unsolvedQuestions": "Посмотреть нерешённые вопросы", "browseDocs": "Перейти к документации", "askQuestion": "Задать вопрос", "recommendedPages": "Рекомендуемые страницы", "hotQuestions": "Популярные вопросы", "postsTitle": "Вопросы и ответы сообщества", "postsDescription": "Посмотрите, что спрашивали и отвечали другие пользователи." }, "help": { "title": "Центр справки", "description": "Официальные руководства, заметки по развёртыванию и документация по устранению неполадок.", "searchPlaceholder": "Поиск по документации", "openPage": "Открыть страницу справки", "childPages": "Страницы этого раздела", "navigation": "Документация", "toc": "На этой странице", "noToc": "Разделов нет", "updatedAt": "Обновлено {date}", "feedbackTitle": "Была ли страница полезной?", "feedbackDescription": "Ваш отзыв помогает нам улучшать документацию.", "copyCode": "Копировать код", "mermaidDiagram": "Схема документации", "mermaidPreview": "Увеличить схему", "mermaidLoading": "Отрисовка схемы...", "mermaidError": "Синтаксис схемы некорректен, отобразить её не удалось.", "previous": "Назад", "next": "Вперёд" }, "questions": { "title": "Сообщество FAQ", "description": "Авторизованные пользователи могут задавать вопросы, отвечать, голосовать и отмечать лучшие ответы.", "categoryNavigation": "Категории вопросов", "moreCategories": "Другие категории", "more": "Ещё", "categoriesFailed": "Не удалось загрузить категории. Нажмите, чтобы повторить.", "searchPlaceholder": "Поиск по заголовкам вопросов", "detailTitle": "Детали вопроса", "answers": "Ответы", "votes": "Голоса", "views": "Просмотры", "askedBy": "Задал {name}", "updatedAt": "Обновлено {date}" }, "ask": { "title": "Задать вопрос", "description": "Войдите, чтобы отправить вопрос. Ответить могут участники сообщества и операторы поддержки.", "formTitle": "Опубликовать вопрос", "category": "Категория", "categoryPlaceholder": "Выберите категорию", "categorySearch": "Поиск категорий", "categoryEmpty": "Категорий нет", "categoriesFailed": "Не удалось загрузить категории. Нажмите, чтобы повторить.", "categoryRequired": "Выберите категорию", "questionTitle": "Заголовок вопроса", "questionTitlePlaceholder": "Сформулируйте вопрос в одном предложении", "titleRequired": "Введите заголовок вопроса", "content": "Подробности", "contentPlaceholder": "Опишите проблему, окружение и что вы уже пробовали", "contentRequired": "Добавьте подробности вопроса", "tags": "Теги", "tagsPlaceholder": "Разделяйте теги запятыми" }, "answer": { "title": "Отправить ответ", "placeholder": "Напишите ответ", "best": "Лучший ответ" }, "login": { "title": "Вход в поддержку", "description": "Войдите, чтобы задавать вопросы, отвечать, голосовать и отмечать лучшие ответы.", "name": "Имя", "namePlaceholder": "Введите ваше имя", "email": "Email", "emailPlaceholder": "Введите email", "password": "Пароль", "passwordPlaceholder": "Не меньше 8 символов", "loginAction": "Войти", "registerAction": "Зарегистрироваться и войти", "switchToRegister": "Нет учётной записи? Зарегистрируйтесь", "switchToLogin": "Уже есть учётная запись? Войдите", "account": "Учётная запись", "accountPlaceholder": "Введите учётную запись", "noMethodsDescription": "Администратор ещё не настроил ни одного способа входа. Попробуйте позже.", "noMethodsTitle": "Нет доступного способа входа", "welcomeBack": "С возвращением" }, "account": { "loading": "Загрузка состояния входа", "openMenu": "Открыть меню учётной записи", "signOut": "Выйти", "signingOut": "Выход...", "profile": "Профиль", "editProfile": "Изменить профиль" }, "actions": { "search": "Поиск", "viewAll": "Смотреть все", "helpful": "Полезно", "notHelpful": "Не полезно", "openStandalone": "Открыть отдельно", "askQuestion": "Задать вопрос", "publishQuestion": "Опубликовать вопрос", "publishAnswer": "Опубликовать ответ", "publishing": "Публикация...", "processing": "Выполняется...", "accept": "Принять", "retry": "Повторить", "loadMore": "Показать ещё", "viewDiscussion": "Посмотреть обсуждение", "answerQuestion": "Ответить", "cancel": "Отмена", "copyLink": "Копировать ссылку", "createPost": "Создать тему", "delete": "Удалить", "edit": "Изменить", "noMore": "Больше нет", "publishComment": "Опубликовать комментарий", "publishPost": "Опубликовать тему", "publishReply": "Опубликовать ответ", "reply": "Ответить", "report": "Пожаловаться", "save": "Сохранить", "viewReplies": "Показать ответы" }, "status": { "all": "Все", "normal": "Без ответа", "resolved": "Решён", "closed": "Закрыт" }, "common": { "allCategories": "Все категории", "uncategorized": "Без категории", "user": "Пользователь" }, "empty": { "noPages": "Опубликованных страниц пока нет", "noQuestions": "Вопросов сообщества пока нет", "noPagesMatched": "Страницы не найдены", "pageNotFound": "Эта страница не существует, не опубликована или снята с публикации", "pagesFailed": "Не удалось загрузить документацию. Попробуйте позже.", "noQuestionsMatched": "Вопросы не найдены", "questionsFailed": "Не удалось загрузить вопросы. Попробуйте позже.", "noAnswers": "Ответов пока нет", "selectPage": "Выберите страницу слева", "noComments": "Комментариев пока нет", "noPostsMatched": "Темы не найдены", "postsFailed": "Не удалось загрузить темы. Попробуйте позже." }, "loading": { "categories": "Загрузка категорий…", "navigation": "Загрузка документации...", "page": "Загрузка страницы...", "question": "Загрузка вопроса...", "questions": "Загрузка вопросов...", "session": "Проверка состояния входа...", "comments": "Загрузка комментариев...", "post": "Загрузка темы...", "posts": "Загрузка тем..." }, "toast": { "feedbackSaved": "Спасибо за отзыв", "codeCopied": "Код скопирован", "answerCreated": "Ответ опубликован", "questionCreated": "Вопрос опубликован", "loggedIn": "Вы вошли в систему", "commentCreated": "Комментарий опубликован", "commentDeleted": "Комментарий удалён", "commentReported": "Жалоба отправлена", "commentUpdated": "Комментарий обновлён", "linkCopied": "Ссылка скопирована", "postCreated": "Тема опубликована", "profileUpdated": "Профиль обновлён", "replyCreated": "Ответ опубликован" }, "a11y": { "openNavigation": "Открыть навигацию документации", "closeNavigation": "Закрыть навигацию документации", "collapse": "Свернуть вложенные страницы", "expand": "Развернуть вложенные страницы", "openMenu": "Открыть меню", "closeMenu": "Закрыть меню" }, "comment": { "accepted": "Принят", "authorBadge": "Автор", "count": "Комментариев: {count}", "deleteConfirm": "Удалить этот комментарий?", "deleted": "Комментарий удалён", "placeholder": "Напишите комментарий...", "replyPlaceholder": "Напишите ответ...", "sort": { "default": "По умолчанию", "hot": "Популярные", "latest": "Новые" }, "title": "Комментарии" }, "createPost": { "categoriesFailed": "Не удалось загрузить категории. Нажмите, чтобы повторить.", "category": "Категория", "categoryRequired": "Выберите категорию", "content": "Подробности", "contentPlaceholder": "Опишите свой вопрос или поделитесь опытом", "contentRequired": "Добавьте подробности темы", "formTitle": "Опубликовать тему", "postTitle": "Заголовок", "postTitlePlaceholder": "Сформулируйте тему в одном предложении", "tags": "Теги", "tagsPlaceholder": "Разделяйте теги запятыми", "titleRequired": "Введите заголовок" }, "posts": { "categoriesFailed": "Не удалось загрузить категории. Нажмите, чтобы повторить.", "categoryNavigation": "Категории тем", "comments": "Комментарии", "createdBy": "Опубликовал {name}", "likes": "Нравится", "title": "Темы", "updatedAt": "Обновлено {date}", "views": "Просмотры" }, "profile": { "avatar": "Аватар", "avatarPlaceholder": "Загрузите аватар", "communityDescription": "Посмотрите темы, которые вы опубликовали в сообществе.", "communityTitle": "Активность в сообществе", "edit": "Изменить профиль", "editDescription": "Обновите аватар, отображаемое имя и email.", "editTitle": "Изменение профиля", "email": "Email", "emailPlaceholder": "Введите email", "emailUnset": "Не задан", "nickname": "Отображаемое имя", "nicknamePlaceholder": "Введите отображаемое имя", "nicknameRequired": "Введите отображаемое имя", "noPosts": "Вы ещё не опубликовали ни одной темы", "username": "Имя пользователя" } }, "nav": { "overview": "Обзор", "setupWizard": "Пошаговая настройка", "receptionCenter": "Приёмная поддержки", "conversations": "Диалоги", "tickets": "Обращения", "conversationMonitor": "Мониторинг диалогов", "customers": "Клиенты", "companies": "Компании", "agentConfig": "Настройка поддержки", "tags": "Теги", "quickReplies": "Быстрые ответы", "agents": "Операторы", "agentTeamSchedules": "Расписания команд", "channels": "Каналы", "wxworkOutbox": "Исходящие WeCom", "aiCapabilities": "Возможности ИИ", "knowledge": "База знаний", "support": "Центр поддержки", "supportCenter": "Центр поддержки", "supportHelp": "Центр справки", "supportFaq": "Сообщество FAQ", "supportFaqCategories": "Категории FAQ", "aiConfigs": "Настройки моделей", "aiAgents": "Агенты", "aiWorkflows": "Рабочие процессы ИИ", "workflowRuns": "Аудит рабочих процессов", "workflows": "Рабочие процессы", "agentRuns": "Аудит операторов", "skillDefinition": "Навыки", "mcp": "Инструменты MCP", "system": "Система", "users": "Пользователи", "roles": "Роли", "permissions": "Разрешения", "dashboardHome": "Панель управления", "notifications": "Уведомления", "preferences": "Предпочтения", "changePassword": "Смена пароля", "signOut": "Выйти", "supportDocs": "Центр справки", "supportCommunity": "Вопросы и ответы сообщества", "supportCommunityCategories": "Категории сообщества", "supportConfig": "Настройки поддержки" }, "workspace": { "dashboard": "Панель администратора", "workbench": "Рабочее место поддержки", "switchWorkspace": "Сменить рабочее пространство" }, "theme": { "toggle": "Сменить тему", "light": "Светлая", "dark": "Тёмная", "system": "Системная" }, "palette": { "toggle": "Сменить акцентный цвет", "plain": "По умолчанию", "green": "Сервисный зелёный", "gray": "Нейтральный серый", "blue": "Чистый синий" }, "supportCommunityCategory": { "allStatuses": "Все статусы", "enabled": "Включена", "disabled": "Отключена", "name": "Название категории", "searchName": "Поиск названий категорий", "noDescription": "Нет описания", "status": "Статус", "confirmDeleteTitle": "Удалить категорию сообщества?", "confirmDeleteDescription": "Удалить «{name}»? Категории, используемые темами, удалить нельзя.", "delete": "Удалить", "sortUpdated": "Порядок категорий сообщества обновлён.", "sortUpdateFailed": "Не удалось обновить порядок.", "dragSort": "Перетащите, чтобы изменить порядок: {name}", "create": "Создать", "save": "Сохранить", "saving": "Сохранение...", "cancel": "Отмена", "loadingDetail": "Загрузка деталей...", "required": "Это поле обязательно.", "invalidNumber": "Введите корректное число.", "minValue": "Должно быть не меньше {min}", "maxValue": "Должно быть не больше {max}", "namePlaceholder": "Введите название категории", "slugPlaceholder": "Например: account-security", "slugPatternMessage": "Используйте только буквы, цифры и дефисы (-).", "description": "Описание", "descriptionPlaceholder": "Опишите, какие темы охватывает эта категория", "remark": "Примечания", "remarkPlaceholder": "Видно только пользователям панели управления", "createTitle": "Новая категория сообщества", "editTitle": "Изменение категории сообщества", "refresh": "Обновить", "new": "Новая категория", "query": "Поиск", "loading": "Загрузка категорий...", "empty": "Категорий сообщества пока нет", "actions": "Действия", "edit": "Изменить", "processing": "Выполняется...", "moreActions": "Другие действия для {name}", "loadFailed": "Не удалось загрузить категории.", "saveFailed": "Не удалось сохранить категорию.", "deleteFailed": "Не удалось удалить категорию.", "created": "Категория создана: {name}", "updated": "Категория обновлена: {name}", "deleted": "Категория удалена: {name}" }, "supportConfig": { "actions": "Действия", "description": "Настройте навигацию, точки входа и параметры отображения портала поддержки.", "loadFailed": "Не удалось загрузить конфигурацию навигации.", "loading": "Загрузка настроек навигации...", "refresh": "Обновить", "save": "Сохранить", "saveFailed": "Не удалось сохранить конфигурацию навигации.", "saving": "Сохранение...", "title": "Настройки центра поддержки", "navigationTitle": "Меню навигации", "navigationDescription": "Пункты меню, которые показываются в шапке центра поддержки и на мобильных устройствах.", "addNavigation": "Добавить пункт меню", "sort": "Сортировка", "menuTitle": "Заголовок пункта", "menuURL": "Ссылка пункта", "target": "Открывать", "visible": "Видимость", "emptyNavigation": "Пункты навигации ещё не добавлены", "saved": "Настройки сохранены", "validationFailed": "Проверка настроек не пройдена", "titlePlaceholder": "Введите заголовок пункта", "untitled": "Пункт без названия", "targetSelf": "В текущем окне", "targetBlank": "В новом окне", "openURL": "Открыть ссылку", "confirmDelete": "Удалить пункт меню «{title}»?", "deleteNavigation": "Удалить пункт меню {title}", "dragNavigation": "Перетащите пункт меню {title}, чтобы изменить порядок", "toggleNavigation": "Изменить видимость пункта меню {title}" }, "dashboard": { "sidebar": { "navSection": "Навигация" } }, "docs": { "title": "Каркас центра справки", "description": "Центр справки будет собирать рекомендации по продукту, правила разрешений, сценарии интеграции каналов и FAQ.", "step1": "Собрать стандарты разработки проекта и руководства для администраторов.", "step2": "Добавить сценарии сторонних интеграций и чек-листы настройки.", "step3": "Позже подключить Markdown или центр документации." }, "supportCommunityAdmin": { "postStatusUpdated": "Статус темы обновлён.", "allStatuses": "Все статусы", "statusPending": "На модерации", "statusNormal": "Обычный", "statusResolved": "Решён", "statusClosed": "Закрыт", "statusHidden": "Скрыт", "allCategories": "Все категории", "uncategorized": "Без категории", "refresh": "Обновить", "defaultUser": "Пользователь", "commentCount": "{count} комментариев", "noMatchingPosts": "Нет публикаций, соответствующих фильтрам", "loadingPosts": "Загрузка публикаций...", "moderateDialogTitle": "Модерация публикации", "likesAndViews": "{likes} отм. · {views} просм.", "restoreNormalAction": "Восстановить", "closePostAction": "Закрыть публикацию", "hidePostAction": "Скрыть публикацию", "commentsTitle": "Комментарии ({count})", "acceptedBadge": "Принято", "acceptAnswerAction": "Принять как ответ", "commentPlaceholder": "Введите ответ поддержки...", "publishCommentAction": "Опубликовать ответ", "commentSuccess": "Комментарий опубликован." }, "systemConfig": { "branding": { "companyName": { "title": "Название платформы", "description": "Отображается в шапке портала, в консоли и в заголовках страниц." }, "companyLogoUrl": { "title": "Логотип платформы", "description": "Оставьте пустым, чтобы использовать встроенный логотип." } } }, "aiCopilot": { "suggestReply": "Подсказать ответ", "generating": "Генерация ответа...", "insertReply": "Использовать ответ", "discardReply": "Отклонить", "summarize": "AI Резюме", "summarizing": "Составление резюме...", "summaryTitle": "Краткое резюме диалога", "noSummary": "Резюме пока недоступно", "errorGenerating": "Не удалось сгенерировать ответ", "copy": "Копировать", "copied": "Скопировано", "summaryGenerated": "Резюме успешно создано" }, "setupWizard": { "title": "Пошаговая настройка и диагностика маршрутизации к оператору", "description": "Проверьте все этапы цепочки доставки обращений до оператора, исправьте проблемы в 1 клик и протестируйте маршрут.", "statusReady": "Готово к приёму обращений", "statusNeedsSetup": "Требуется настройка (готово {ready} из {total} шагов)", "stepsProgress": "Готово {ready} из {total} шагов", "quickSetupAll": "Проверить недостающие настройки", "quickSetupRunning": "Подготовка плана...", "quickFixSuccess": "Настройки применены, проверка маршрутизации обновлена", "refresh": "Проверить снова", "openSettings": "Открыть настройки", "openSetupWizard": "Пошаговая настройка", "stepBadgeOk": "Готово", "stepBadgeWarning": "Внимание", "stepBadgeError": "Не готово", "readyCountLabel": "Готово: {ready} из {total}", "currentOperatorTitle": "Мой статус приёма обращений (Оператор)", "currentOperatorReady": "Вы онлайн и готовы принимать обращения клиентов прямо сейчас.", "currentOperatorBlocked": "Запросы клиентов сейчас не доходят до вас по следующим причинам:", "currentOperatorLoad": "Активные диалоги: {active} / {max}", "currentOperatorTeam": "Команда: {team}", "currentOperatorNoTeam": "Не назначена", "enableMyReceptionBtn": "Включить приём обращений в 1 клик", "checklistSectionTitle": "Пошаговая проверка цепочки доставки (6 шагов)", "steps": { "teams": { "title": "Команды операторов", "description": "Требуется как минимум одна активная команда для объединения операторов и привязки расписания смен." }, "schedules": { "title": "Рабочее время поддержки", "description": "У команды сейчас должно быть рабочее время по выбранному календарю: датированным сменам или недельному расписанию. Вне рабочих часов обращения остаются в очереди." }, "operators": { "title": "Профили операторов и доступная емкость", "description": "Для назначения нужны активные учётная запись и профиль, рабочее время команды, подключение к платформе, готовность принимать обращения, отсутствие действующего отпуска и включённое автоназначение. Лимит одновременных обращений не должен быть достигнут." }, "ai_agents": { "title": "AI-агенты и передача человеку", "description": "AI-агент должен поддерживать передачу человеку (AIFirst с автопередачей или HumanOnly) и быть привязан к активным командам." }, "channels": { "title": "Входящие каналы связи", "description": "Хотя бы один активный канал (Web, API, WeCom) должен быть подключен к активному AI-агенту с охватом > 0%." }, "end_to_end": { "title": "Сквозная цепочка маршрутизации", "description": "Проверяет, сможет ли входящее обращение из канала пройти всю цепочку и дойти до живого оператора прямо сейчас." } }, "issues": { "no_active_team": "Нет активных команд операторов. Требуется как минимум одна команда.", "team_no_schedule_configured": "У команды не настроено расписание смен.", "team_off_hours_now": "Команда сейчас не на смене (нет расписания на текущее время).", "no_operator_profile": "Профили операторов отсутствуют. Некому назначать обращения.", "operator_profile_disabled": "Профиль оператора отключен.", "operator_user_disabled": "Учетная запись пользователя отключена или удалена.", "operator_no_active_team": "Оператор не прикреплен к активной команде.", "operator_auto_assign_off": "У оператора отключено автоматическое назначение.", "operator_busy": "Оператор находится в статусе «Занят».", "operator_at_capacity": "Оператор достиг предела параллельных диалогов.", "no_active_ai_agent": "Нет активных AI-агентов.", "agent_ai_only_mode": "AI-агент работает в режиме «Только ИИ» и не передает диалоги операторам.", "agent_no_teams": "У AI-агента не назначены активные команды для перевода на оператора.", "agent_auto_handoff_disabled": "У AI-агента выключена автоматическая передача оператору при сбое.", "no_active_channel": "Нет активных каналов для клиентов.", "channel_no_agent": "Канал не подключен к AI-агенту.", "channel_agent_disabled": "Канал указывает на отключенного или удаленного AI-агента.", "channel_zero_rollout": "У канала охват AI-агента равен 0%.", "no_end_to_end_path": "Ни один канал не может доставить запрос до доступного оператора прямо сейчас.", "agent_unpublished": "У агента нет опубликованной версии. Опубликуйте его в настройках перед использованием в канале.", "channel_agent_unpublished": "Канал связан с неопубликованным агентом. Опубликуйте его или выберите опубликованного агента.", "operator_offline": "У оператора нет активного подключения к платформе поддержки.", "operator_break": "Оператор на перерыве и не может получать новые назначения.", "operator_unavailable": "Оператор недоступен для новых назначений.", "operator_vacation": "У оператора сейчас действует запланированный отпуск.", "operator_outside_hours": "Оператор сейчас вне рабочего времени по расписанию.", "operator_availability_unavailable": "Не удалось определить текущую доступность оператора." }, "operatorBlockers": { "not_authenticated": "Вы не вошли в систему.", "missing_profile": "Для вашей учетной записи не создан профиль оператора.", "profile_disabled": "Ваш профиль оператора отключен.", "no_team": "Вы не прикреплены ни к одной активной команде операторов.", "team_off_hours": "Ваша команда сейчас не на смене (нет активного расписания).", "auto_assign_disabled": "Автоматическое назначение диалогов выключено в вашем профиле.", "status_busy": "Ваш статус установлен в «Занят».", "at_capacity": "Вы достигли лимита одновременных диалогов.", "offline": "Нет активного подключения к платформе поддержки.", "break": "Перерыв: новые назначения приостановлены.", "unavailable": "Недоступен для новых назначений.", "vacation": "Действует запланированный отпуск.", "availability_unavailable": "Не удалось определить текущую доступность.", "user_disabled": "Учётная запись отключена или удалена." }, "quickFixLabels": { "quick_setup_all": "Проверить недостающие настройки", "ensure_team_and_schedule": "Проверить настройку группы", "enable_my_operator_profile": "Включить мой приём и статус «Свободен»", "fix_ai_agent_handoff": "Настроить передачу оператору и привязать команды", "ensure_default_channel": "Создать/исправить веб-канал по умолчанию" }, "simulator": { "title": "Симулятор маршрутизации к оператору", "description": "Проверка текущей доступности маршрута только с оператором без изменений. Поведение ИИ и частичный запуск не моделируются; сообщения не отправляются.", "selectChannelPlaceholder": "Выберите канал для симуляции...", "runSimulation": "Запустить симуляцию", "running": "Симуляция...", "outcomeSuccess": "Сейчас доступен оператор: {operator}", "outcomeBlocked": "Передача оператору не подтверждена", "outcomes": { "assigned_to_operator": "Для маршрута только с оператором сейчас есть подходящий сотрудник. Это проверка без изменений, не гарантия доставки.", "blocked_no_channel": "Заблокировано: каналы не созданы или запрошенный канал не найден.", "blocked_channel_disabled": "Заблокировано: данный канал отключен.", "blocked_zero_rollout": "Заблокировано: охват AI-агента в канале равен 0%.", "blocked_missing_ai_agent": "Заблокировано: привязанный AI-агент отсутствует или выключен.", "blocked_ai_only_mode": "Заблокировано: AI-агент работает в режиме «Только ИИ» и не переключает на человека.", "blocked_agent_no_teams": "Заблокировано: у AI-агента не указаны активные команды для перевода.", "queued_off_hours_no_schedule": "В очереди: у команд сейчас нет активного расписания смен (нерабочие часы).", "queued_no_eligible_operator": "В очереди: смена активна, но нет свободных операторов с доступной емкостью.", "ai_execution_not_simulated": "Поведение ИИ не моделируется; передача оператору не подтверждена.", "partial_rollout_not_simulated": "Частичный запуск не моделируется; передача оператору не подтверждена.", "blocked_agent_unpublished": "Маршрутизация к оператору не подтверждена для неопубликованного агента. Сначала опубликуйте его." }, "hops": { "channel": "Канал", "ai_agent": "AI-агент", "teams": "Команды операторов", "schedules": "Расписание смены", "operators": "Выбор оператора" }, "hopReasons": { "ok": "Узел настроен и готов", "ok_human_only": "Прямой приём операторами (Human-Only): передача сразу операторам", "ok_ai_first_handoff": "AI-First приём: клиент может запросить оператора или сработает автоперевод", "warning_auto_handoff_off": "Включен AI-First, но автопередача оператору при ошибке выключена", "blocked_no_channel": "Каналы не найдены", "blocked_channel_disabled": "Канал отключен", "blocked_zero_rollout": "Охват канала равен 0%", "blocked_missing_ai_agent": "AI-агент отсутствует или отключен", "blocked_ai_only_mode": "AI-агент настроен как «Только ИИ» (маршрут к человеку заблокирован)", "blocked_agent_no_teams": "Агенту не назначены активные команды", "queued_off_hours_no_schedule": "Нет активного расписания на текущее время (нерабочие часы)", "queued_no_eligible_operator": "В активных командах нет свободных операторов с доступной емкостью", "assigned_to_operator": "Назначено подходящему оператору", "ai_execution_not_simulated": "Поведение ИИ не моделируется; передача оператору не подтверждена.", "partial_rollout_not_simulated": "Частичный запуск не моделируется; передача оператору не подтверждена.", "blocked_agent_unpublished": "Маршрутизация к оператору не подтверждена для неопубликованного агента. Сначала опубликуйте его." }, "candidateTableTitle": "Оценка кандидатов-операторов", "colOperator": "Оператор", "colTeam": "Команда", "colStatus": "Статус", "colAutoAssign": "Автоназначение", "colLoad": "Нагрузка", "colResult": "Результат", "statusIdle": "Свободен", "statusBusy": "Занят", "eligibleBadge": "Подходит", "skipReasons": { "profile_disabled": "Профиль отключен", "user_disabled": "Учётная запись отключена или удалена.", "team_not_in_agent": "Команда не входит в настройки агента", "team_off_hours": "Вне расписания команды", "auto_assign_off": "Автоназначение выключено", "status_busy": "Статус «Занят»", "at_capacity": "Лимит диалогов исчерпан", "offline": "Нет активного подключения к платформе поддержки.", "break": "Перерыв: новые назначения приостановлены.", "unavailable": "Недоступен для новых назначений.", "vacation": "Действует запланированный отпуск.", "availability_unavailable": "Не удалось определить текущую доступность.", "auto_assign_disabled": "Автоматическое назначение отключено.", "no_team": "Нет назначенной активной команды." } }, "banner": { "title": "Настройка маршрутизации к операторам не завершена", "description": "Обращения клиентов сейчас не могут дойти до живых операторов, пока не выполнены все шаги настройки." }, "headerIndicator": { "readyLabel": "Приём включен", "blockedLabel": "Приём заблокирован ({count})" }, "preview": { "review": "Просмотреть изменения", "title": "Проверка изменений перед применением", "description": "Изменятся только указанные записи и поля. Смены не добавляются. Остальные настройки и доли запуска сохранятся. После сохранения ожидающие диалоги могут быть распределены.", "noChanges": "Безопасных автоматических изменений нет. Выберите группу, маршрут или рабочие часы в соответствующих настройках.", "apply": "Применить проверенные изменения", "create": "Создать", "update": "Изменить", "notApplied": "Проверенные изменения не были применены.", "manageSchedules": "Настроить рабочие часы" }, "repairFields": { "name": "Название", "leader_user_id": "ID руководителя группы", "status": "Статус (0 включён, 1 отключён)", "user_id": "ID пользователя", "team_id": "ID группы / название новой группы", "team_ids": "Группы маршрутизации", "service_status": "Доступность (0 свободен, 1 занят)", "auto_assign_enabled": "Автоматическое назначение", "max_concurrent_count": "Лимит одновременных диалогов", "priority_level": "Приоритет назначения", "receive_offline_message": "Принимать сообщения офлайн", "service_mode": "Режим (1 только ИИ, 2 только оператор, 3 сначала ИИ)", "rollout_percent": "Доля запуска агента (%)", "handoff_mode": "Режим передачи (2 очередь группы)", "fallback_mode": "Резервный режим", "auto_handoff_on_failure": "Передавать оператору при сбое", "reply_timeout_seconds": "Тайм-аут ответа (сек.)", "max_steps": "Максимум шагов ИИ", "channel_id": "Идентификатор канала", "channel_type": "Тип канала", "ai_agent_id": "ID агента / название нового агента", "ai_agent_rollout_percent": "Доля запуска канала (%)", "config_json": "Настройки канала" }, "repairWarnings": { "schedules_unchanged": "Рабочие часы не изменены. Настройте смены явно: время вне смены не является ошибкой настройки.", "active_team_required": "Выберите или включите группу в настройках перед связыванием новых записей.", "disabled_configuration_preserved": "Выбранная конфигурация отключена или имеет нулевую долю запуска и оставлена без изменений.", "agent_team_selection_required": "Выберите нужные группы в настройках агента. Группы не добавлялись автоматически.", "channel_selection_required": "Выберите агента и долю запуска в настройках канала. Существующая маршрутизация сохранена.", "existing_configuration_preserved": "Существующие настройки сохранены. Проверьте оставшиеся проблемы готовности в соответствующих настройках.", "dispatch_failed": "Изменения сохранены, но распределение ожидающих диалогов не удалось. Проверьте очередь, не применяйте исправление повторно.", "readiness_refresh_failed": "Не удалось обновить диагностику. Загрузите её снова: сохранённые изменения не отменены.", "agent_publication_required": "Опубликуйте нужного агента в его настройках перед созданием канала. Мастер не публикует агентов и не обходит это требование." } }, "supportAvailability": { "title": "Доступность поддержки", "description": "Настройте часы работы и часовые пояса. Подключение, рабочий статус и возможность принимать обращения учитываются отдельно.", "loading": "Загрузка доступности…", "myStatus": "Моя доступность", "retryStatus": "Статус неизвестен. Повторить", "operatorStatus": "Доступность: {name}", "presenceHelp": "«На платформе» означает активное подключение к платформе поддержки с учётом вкладок и устройств. Это не означает готовность принимать новые обращения.", "online": "На платформе", "offline": "Не подключён", "workingStatus": "Рабочий статус", "statusHelp": "Статус сохраняется между сеансами. Занятость, перерыв, недоступность и действующий отпуск блокируют новые назначения. Вход в систему их не сбрасывает.", "statusSaved": "Доступность сохранена", "saveFailed": "Не удалось сохранить изменения. Введённые данные сохранены в форме.", "loadFailed": "Не удалось загрузить доступность", "saveStatus": "Сохранить статус", "saving": "Сохранение…", "cancel": "Отмена", "retry": "Повторить", "refresh": "Обновить", "discardTitle": "Отменить несохранённые изменения?", "discardDescription": "Изменения ещё не сохранены. Выйти без сохранения?", "discard": "Отменить изменения", "vacationStart": "Начало отпуска", "vacationEnd": "Окончание отпуска (не включительно)", "vacationTimezone": "Введите даты в часовом поясе браузера: {timezone}.", "vacationExact": "Точный интервал UTC: {start} → {end}.", "vacationHelp": "В этот период новые назначения отключены, даже если вы войдёте в систему. Вне периода действует сохранённый статус: {status}. Текущие обращения автоматически не передаются.", "cancelVacationHelp": "Сохранение другого статуса отменит запланированный отпуск.", "invalidVacation": "Укажите корректные начало и окончание, причём окончание должно быть позже начала. Время, пропущенное при переводе часов, недопустимо.", "calendar": "Календарь поддержки", "editCalendar": "Изменить календарь", "saveCalendar": "Сохранить календарь", "calendarSaved": "Календарь поддержки сохранён", "readOnly": "У вас доступ только для просмотра.", "deploymentDefault": "Настройки по умолчанию", "selectScope": "Выберите общие настройки или команду", "deploymentTimezone": "Часовой пояс IANA по умолчанию", "teamTimezone": "Часовой пояс команды", "timezoneHelp": "Используйте имя IANA, например Europe/Moscow или America/New_York, а не фиксированное смещение UTC.", "inheritTimezoneHelp": "Оставьте пустым для наследования общего часового пояса. Переопределение не меняет сохранённые датированные смены.", "effectiveTimezone": "Применяемый часовой пояс: {timezone}", "scheduleMode": "Режим календаря", "legacy": "Существующие датированные смены", "recurring": "Недельное расписание и исключения", "legacyHelp": "Существующие датированные смены сохраняются и не пересчитываются в новый часовой пояс. Недельное расписание применяется только после явного выбора и сохранения этого режима.", "viewDatedShifts": "Открыть датированные смены", "legacyActive": "Часы работы по-прежнему определяются существующими датированными сменами. Недельное расписание автоматически не создаётся.", "confirmCalendarTitle": "Применить календарь поддержки?", "confirmRecurring": "Переключить выбранную область на недельное расписание и исключения? Датированные смены останутся сохранёнными, но в этом режиме не будут определять доступность.", "confirmCalendar": "Эти настройки меняют время назначения новых обращений. Изменение общего часового пояса затронет команды, которые его наследуют. Датированные смены останутся без изменений.", "weeklyHours": "Недельное расписание", "hoursHelp": "Добавьте несколько интервалов для смен с перерывом. Окончание раньше начала означает переход на следующий день. Одинаковые начало и конец недопустимы. Дни без интервалов закрыты. Для полного дня используйте 00:00–24:00.", "noWeeklyHours": "Недельных интервалов нет. В этом режиме поддержка открывается только по явно заданным исключениям.", "addPeriod": "Добавить интервал", "removePeriod": "Удалить интервал", "day": "День", "start": "Начало", "end": "Окончание", "exceptions": "Праздники и исключения по датам", "exceptionsHelp": "Исключение заменяет недельное расписание на эту местную дату. Закрытая дата блокирует весь день, включая ночной интервал с предыдущего дня.", "noExceptions": "Исключений по датам нет", "addException": "Добавить исключение", "removeException": "Удалить исключение", "date": "Дата", "closedDay": "Закрыто весь день", "preview": "Проверка календаря", "previewHelp": "Проверьте форму без сохранения. Введите момент проверки в часовом поясе браузера ({timezone}) или оставьте пустым для текущего момента. Результат показан в часовом поясе календаря.", "previewAt": "Момент проверки (необязательно)", "runPreview": "Проверить календарь", "previewing": "Проверка…", "previewFailed": "Не удалось проверить календарь", "previewStale": "Форма изменилась. Повторите проверку.", "scheduleOpen": "В этот момент расписание открыто.", "scheduleClosed": "В этот момент расписание закрыто.", "nextOpening": "Следующее открытие по расписанию: {time}", "noNextOpening": "В периоде проверки не найдено следующего открытия.", "notPresencePromise": "Часы по расписанию не гарантируют подключение или доступность оператора.", "invalidTimezone": "Укажите корректный часовой пояс IANA. Общий часовой пояс не может быть пустым.", "invalidHours": "Используйте интервалы ЧЧ:мм с разными началом и окончанием. Для открытого исключения нужен хотя бы один интервал.", "invalidExceptionDate": "Для каждого исключения нужна корректная, неповторяющаяся дата.", "invalidPreviewTime": "Укажите корректное время проверки в часовом поясе браузера.", "noPermission": "У вас нет прав на просмотр календаря. Свой рабочий статус можно изменить отдельно.", "noTeams": "Нет команд для настройки календаря.", "publicChecking": "Проверяем доступность операторов…", "publicNextOpening": "Следующее открытие по расписанию: {time}. Наличие оператора не гарантируется.", "offlineDeprecated": "Устаревшая настройка сохранена для совместимости. Она не разрешает новые назначения отключённым операторам.", "manageStatus": "Изменить доступность", "statusSeparate": "Рабочий статус и отпуск настраиваются отдельно от профиля оператора.", "status": { "ready": "Готов принимать", "busy": "Занят", "break": "Перерыв", "unavailable": "Недоступен", "vacation": "В отпуске", "unknown": "Неизвестный статус" }, "reason": { "eligible": "Может принимать новые назначения", "profile_disabled": "Профиль оператора отключён администратором", "user_disabled": "Учётная запись отключена", "team_disabled": "Команда отключена", "outside_hours": "Вне рабочего времени по расписанию", "offline": "Нет активного подключения к платформе поддержки", "busy": "Занят: новые назначения приостановлены", "break": "Перерыв: новые назначения приостановлены", "unavailable": "Недоступен для новых назначений", "vacation": "Действует запланированный отпуск", "auto_assign_disabled": "Автоматическое назначение отключено", "capacity": "Достигнут лимит одновременных обращений", "unknown": "Не удалось определить возможность назначения" }, "public": { "available": "Операторы сейчас доступны", "outside_hours": "Сейчас нерабочее время поддержки", "temporarily_absent": "Сейчас нет оператора для нового обращения", "capacity": "Операторы сейчас полностью загружены", "unknown": "Доступность операторов неизвестна" }, "weekday": { "1": "Понедельник", "2": "Вторник", "3": "Среда", "4": "Четверг", "5": "Пятница", "6": "Суббота", "7": "Воскресенье" }, "dstOccurrence": "{field}: это время встречается дважды. Выберите точный момент UTC.", "chooseOccurrence": "Выберите вариант времени", "datedShiftsNotice": "Эти датированные смены определяют доступность только в режиме существующих смен. В недельном режиме они сохраняются, но не действуют. При возврате они вновь применяются без изменений." } }