Files
LangBot/web/src/i18n/locales/ru-RU.ts
T

3607 lines
218 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import pipelineMigration from './pipeline-migration/ru-RU';
const ruRU = {
assistant: {
movePosition: 'Переместить помощника по горизонтали',
resizeHeight: 'Изменить высоту помощника',
sessions: 'Диалоги',
currentChat: 'Текущий диалог',
stop: 'Остановить задачу',
stopped:
'Остановлено. Инструмент мог уже внести изменения. Проверьте ресурс перед повтором.',
setupRequired:
'Войдите в аккаунт LangBot или настройте модель, чтобы начать пользоваться помощником рабочего пространства.',
loginAccount: 'Войти в LangBot Account',
configureModels: 'Настроить модели',
providerCheckFailed:
'Не удалось проверить провайдеров. Попробуйте ещё раз.',
retrySetup: 'Повторить',
preparing: 'Подготовка помощника…',
thinking: 'Ответ модели · Шаг {{round}}',
executing: 'Выполнение инструмента…',
toolRunning: 'Выполняется',
recommendationFailed:
'Не удалось загрузить рекомендуемую модель. Выберите модель.',
expand: 'Развернуть помощника рабочего пространства',
collapse: 'Свернуть помощника рабочего пространства',
modelHint: 'Сменить модель ассистента для следующего сообщения',
details: 'Показать исходные данные',
found: 'Найдено элементов: {{count}}',
completed: 'Готово',
failed: 'Ошибка',
denied: 'Не выполнено',
partial: 'Частичный результат',
operationFailed:
'Операция не удалась. Проверьте подробности и состояние ресурсов, прежде чем повторять изменение.',
operationDenied: 'Отклонено. Ничего из этого пакета не выполнено.',
openResource: 'Открыть ресурс',
sendUnconfirmed:
'Доставка не подтверждена. Проверьте соединение и откройте диалог заново.',
draftPlaceholder: 'Черновик следующего сообщения, пока идёт ответ…',
operations: {
create_pipeline: 'Создать Pipeline',
configure_pipeline: 'Настроить Pipeline',
create_knowledge_base: 'Создать базу знаний',
get_pipeline: 'Посмотреть Pipeline',
get_knowledge_schema: 'Посмотреть схему движка знаний',
list_operation_logs: 'Просмотр журнала операций',
},
resources: {
models: 'Найти чат-модели',
embedding_models: 'Найти модели эмбеддингов',
pipelines: 'Найти Pipelines',
knowledge_bases: 'Найти базы знаний',
knowledge_engines: 'Найти движки знаний',
},
title: 'Ассистент рабочего пространства',
subtitle: 'Создавайте приложения и управляйте ими',
newChat: 'Новый диалог',
close: 'Закрыть',
welcome:
'Расскажите, что вы хотите создать. Я могу изучить рабочее пространство и предложить настройки ботов, Agents, баз знаний, Pipelines и других ресурсов, а затем применить их после вашего подтверждения.',
discover: 'Какие модели, базы знаний и Pipelines доступны?',
build: 'Помогите создать приложение для ответов на вопросы по базе знаний.',
toolResult: 'Результат операции',
review: 'Проверьте точные операции перед выполнением',
confirm: 'Подтвердить и выполнить',
decline: 'Отклонить',
working: 'Обработка…',
modelUnavailable:
'Модель недоступна. Проверьте её настройки и доступ, затем начните новый диалог.',
error:
'Этот ход не завершён. Проверьте результаты ресурсов перед новым диалогом; изменения не повторяются автоматически.',
running:
'Этот ход ещё выполняется или был прерван до сохранения результата. Откройте ассистента заново для обновления; проверьте ресурсы перед повтором.',
placeholder: 'Опишите ваше приложение…',
send: 'Отправить',
},
sidebarGuide: {
steps: {
monitoring: {
rangeDays: 'Последние {{days}} дней',
customRange: 'Свой период',
rangeStart: 'Начало',
rangeEnd: 'Конец',
rangeHint: 'Начало должно быть раньше конца. Максимум 365 дней.',
autoRefreshLabel: 'Автообновление',
autoRefreshOff: 'Автообновление: выкл.',
autoRefreshEvery: 'Обновлять каждые {{seconds}} с',
title: 'Проверьте активность',
description:
'Просматривайте активность ботов, использование моделей, объём сообщений и производительность системы.',
},
bots: {
title: 'Подключите платформы чата',
description:
'Подключайте LangBot к платформам чата и управляйте подключениями ботов.',
},
pipelines: {
title: 'Настройте обработчики',
description:
'Создавайте переиспользуемые конвейеры, Agents и конфигурации обработчиков плагинов, затем подключайте их к ботам.',
},
knowledge: {
title: 'Управляйте базами знаний',
description:
'Управляйте документами и внешними источниками знаний для улучшения ответов моделей.',
},
plugins: {
title: 'Управляйте расширениями',
description:
'Управляйте установленными плагинами, серверами MCP и навыками, включая их состояние.',
},
'add-extension': {
title: 'Добавьте расширения',
description:
'Устанавливайте расширения из магазина, GitHub или локального пакета.',
},
models: {
title: 'Настройте модели',
description:
'Настройте поставщиков и выберите языковые модели, модели эмбеддингов и другие модели LangBot.',
},
'api-integration': {
title: 'Настройте доступ к API',
description:
'Создавайте ключи API и настраивайте внешний доступ к сервисам LangBot и MCP.',
},
},
},
guidedTour: {
eventDebugDescription:
'Выберите поддерживаемое событие, введите тестовые данные и проверьте вывод и результаты инструментов. Действия платформы имитируются; модели и другие инструменты выполняются согласно настройкам.',
pipeline: {
trigger: {
title: 'Выберите сообщения для ответа',
description:
'Конвейер обрабатывает события сообщений и автоматически отвечает с помощью ИИ. Здесь задаются условия в группах, правила личных чатов и фильтры сообщений.',
},
ai: {
title: 'Настройте возможности ИИ',
description:
'Выберите локальный исполнитель или исполнитель внешней платформы, затем настройте модель, инструкции, базы знаний и другие параметры.',
},
output: {
title: 'Настройте ответы',
description:
'Задайте правила вывода, например обработку длинного текста, чтобы определить способ доставки ответов.',
},
safety: {
title: 'Настройте защиту',
description:
'При необходимости включите фильтрацию содержимого и ограничения частоты обработки.',
},
extensions: {
title: 'Выберите расширения',
description:
'Выберите плагины, серверы MCP и навыки, доступные этому конвейеру для обработки сообщений и работы с инструментами.',
},
basic: {
title: 'Управляйте конвейером',
description:
'Скопируйте конвейер для создания другой конфигурации или удалите ненужный конвейер.',
},
debug: {
title: 'Протестируйте диалог',
description:
'Отправьте тестовые сообщения, чтобы проверить условия запуска, ответы ИИ и обработку вывода. Изменения сохраняются перед тестом.',
},
monitoring: {
rangeDays: 'Последние {{days}} дней',
customRange: 'Свой период',
rangeStart: 'Начало',
rangeEnd: 'Конец',
rangeHint: 'Начало должно быть раньше конца. Максимум 365 дней.',
autoRefreshLabel: 'Автообновление',
autoRefreshOff: 'Автообновление: выкл.',
autoRefreshEvery: 'Обновлять каждые {{seconds}} с',
title: 'Посмотрите историю запусков',
description:
'На вкладке рядом с заголовком доступны прошлые диалоги, этапы обработки и ошибки для диагностики отсутствующих или неожиданных ответов.',
},
save: {
title: 'Сохраните и подключите бота',
description:
'Сохраните настройки, затем направьте события получения сообщений в этот конвейер на странице бота.',
},
},
pluginProcessor: {
select: {
title: 'Выберите исполнитель плагина',
description:
'Выберите исполнитель с поддержкой обработки событий. Автор плагина определяет поддерживаемые события и логику их обработки.',
},
parameters: {
title: 'Настройте параметры плагина',
description:
'Заполните настройки плагина. Для разных ботов и задач можно сохранить несколько конфигураций одного плагина.',
},
debug: {
title: 'Протестируйте обработку событий',
},
logs: {
title: 'Проверьте результаты',
description:
'Просмотрите состояние запуска, входное событие, журналы плагина и результаты вызовов, чтобы выяснить причины ошибок.',
},
save: {
title: 'Сохраните и привяжите к боту',
description:
'После сохранения добавьте конфигурацию в раздел обработчиков плагинов на странице бота. Заявленные события поступают автоматически, без настройки отдельных маршрутов.',
},
},
previous: 'Назад',
label: 'Руководство',
progress: 'Шаг {{current}} из {{total}}',
next: 'Далее',
finish: 'Завершить руководство',
skip: 'Пропустить',
bot: {
connection: {
title: 'Выберите способ подключения',
description:
'Выберите способ подключения, поддерживаемый адаптером. Его параметры обновятся автоматически.',
},
basic: {
title: 'Задайте имя бота',
description:
'Задайте понятное имя, чтобы находить подключение в маршрутах и журналах.',
},
adapter: {
title: 'Выберите адаптер платформы',
description:
'Выберите адаптер бота. Способ подключения и параметры платформы настраиваются после создания.',
},
parameters: {
title: 'Настройте платформу',
description:
'Введите учётные данные и параметры платформы. Настройки на стороне платформы описаны в документации адаптера.',
action: 'Открыть документацию адаптера',
},
routing: {
title: 'Настройте маршруты входящих событий',
description:
'Выберите обработчик для каждого события, получаемого ботом.',
},
save: {
title: 'Сохраните настройки бота',
description:
'Проверьте параметры подключения и маршруты событий, затем сохраните настройки. После этого можно включить бота.',
},
submit: {
title: 'Создайте бота',
description:
'Создайте выключенного бота, затем настройте подключение и параметры платформы на его странице.',
},
},
processorCreate: {
type: {
title: 'Выберите тип обработчика',
description:
'Конвейеры обрабатывают сообщения по заданному сценарию, агенты принимают решения с помощью моделей и инструментов, а обработчики плагинов обрабатывают заявленные события платформы.',
},
basic: {
title: 'Назовите обработчик',
description:
'Укажите понятное имя. Исполнитель и события настраиваются после создания.',
},
submit: {
title: 'Создайте и продолжите настройку',
description:
'После создания настройте исполнителя, параметры, события и инструменты для выбранного типа обработчика.',
},
},
runner: {
debug: {
title: 'Проверьте обработку событий',
},
select: {
title: 'Выберите или установите исполнителя',
description:
'Выберите установленного исполнителя или установите его прямо из списка магазина в этом поле.',
action: 'Открыть магазин исполнителей',
},
parameters: {
title: 'Настройте параметры исполнителя',
description:
'Укажите модель, учётные данные, URL сервиса и другие параметры выбранного исполнителя.',
},
events: {
title: 'Настройте события и инструменты',
description:
'Откройте вкладку событий и инструментов, чтобы выбрать события для агента и разрешённые инструменты платформы или LangBot.',
},
},
knowledge: {
basic: {
title: 'Опишите базу знаний',
description:
'Задайте понятное имя и необязательное описание перед выбором движка хранения и поиска.',
},
engine: {
title: 'Проверьте движок знаний',
description:
'Проверьте движок этой базы знаний. Его параметры и настройки поиска задаются ниже.',
action: 'Открыть магазин движков знаний',
},
parameters: {
title: 'Настройте параметры движка',
description:
'Заполните требуемые движком настройки хранения, модели, учётных данных или внешнего сервиса.',
},
retrieval: {
title: 'Настройте поиск',
description:
'Определите, как движок ищет и возвращает подходящий контент обработчикам.',
},
save: {
title: 'Сохраните настройки базы знаний',
description:
'Проверьте параметры движка и поиска, затем сохраните настройки.',
},
submit: {
title: 'Создайте базу знаний',
description:
'Создайте базу знаний, затем добавьте документы или подключите источники, поддерживаемые движком.',
},
},
},
pipelineMigration,
sidebar: {
home: 'Главная',
extensions: 'Расширения',
installedPlugins: 'Установленные',
pluginMarket: 'Маркетплейс',
mcpServers: 'MCP-серверы',
addExtension: 'Добавить расширение',
pluginPages: 'Страницы плагинов',
pluginPagesTooltip:
'Визуальные страницы, предоставляемые установленными плагинами',
quickStart: 'Быстрый старт',
scrollToBottom: 'Прокрутить вниз',
editionCommunity: 'Сообщество',
editionCloud: 'Cloud',
},
common: {
failureReasonNotRecorded: 'Причина сбоя не сохранена. Проверьте журнал бота или отправьте сообщение повторно для получения подробностей.',
loadFailedTitle: 'Не удалось загрузить данные',
loadFailedHint: 'Повторите попытку позже. Если проблема остаётся, проверьте подключение и состояние сервиса.',
customValue: 'Свой вариант',
loadFailed: 'Не удалось загрузить. Попробуйте ещё раз.',
search: 'Поиск',
previous: 'Назад',
next: 'Далее',
login: 'Войти',
logout: 'Выйти',
accountOptions: 'Настройки',
account: 'Аккаунт',
integration: 'Интеграция',
email: 'Электронная почта',
password: 'Пароль',
welcome: 'С возвращением в LangBot 👋',
continueToLogin: 'Войдите, чтобы продолжить',
loginSuccess: 'Вход выполнен успешно',
loginFailed: 'Ошибка входа, проверьте адрес электронной почты и пароль',
loginLoadError: 'Не удалось подключиться к серверу',
loginLoadErrorDesc:
'Не удалось подключиться к серверу LangBot. Убедитесь, что сервис запущен, и повторите попытку.',
retry: 'Повторить',
showSecret: 'Показать секрет',
hideSecret: 'Скрыть секрет',
enterEmail: 'Введите адрес электронной почты',
enterPassword: 'Введите пароль',
invalidEmail: 'Пожалуйста, введите корректный адрес электронной почты',
emptyPassword: 'Пожалуйста, введите пароль',
language: 'Язык',
helpDocs: 'Помощь',
featureRequest: 'Запрос функции',
starOnGitHub: 'Поставить звезду на GitHub',
joinDiscord: 'Присоединиться к Discord',
create: 'Создать',
edit: 'Редактировать',
editBasicInfo: 'Изменить основные сведения',
editBasicInfoDescription: 'Измените имя, описание и значок.',
editBasicInfoDescriptionNoIcon: 'Измените имя и описание.',
management: 'Управление',
delete: 'Удалить',
add: 'Добавить',
select: 'Выбрать',
clear: 'Очистить',
skill: 'Навык',
cancel: 'Отмена',
submit: 'Отправить',
error: 'Ошибка',
success: 'Успешно',
save: 'Сохранить',
saving: 'Сохранение...',
recommend: 'Рекомендуется',
start: 'Начать',
confirm: 'Подтвердить',
confirmDelete: 'Подтвердить удаление',
deleteConfirmation: 'Вы уверены, что хотите удалить это?',
selectOption: 'Выберите вариант',
selectPreset: 'Выберите шаблон',
required: 'Обязательно',
enable: 'Включить',
name: 'Название',
description: 'Описание',
icon: 'Иконка',
close: 'Закрыть',
deleteSuccess: 'Успешно удалено',
deleteError: 'Ошибка удаления: ',
addRound: 'Добавить раунд',
copy: 'Копировать',
download: 'Скачать',
copySuccess: 'Скопировано',
copyFailed: 'Ошибка копирования',
test: 'Тест',
forgotPassword: 'Забыли пароль?',
agreementNotice: 'Продолжая, вы соглашаетесь с нашей',
termsOfService: 'Условия обслуживания',
privacyPolicy: 'Политикой конфиденциальности',
and: 'и',
dataCollectionPolicy: 'Политикой сбора данных',
dataCollectionPolicyUrl:
'https://langbot.app/docs/en/insight/data-collection-policy',
loading: 'Загрузка...',
fieldRequired: 'Это поле обязательно для заполнения',
or: 'или',
loginWithSpace: 'Войти с аккаунтом LangBot',
spaceLoginRecommended:
'Рекомендуется: Используйте официальные стабильные API моделей и облачные сервисы',
loginLocal: 'Войти с локальной учётной записью',
loginWithPassword: 'Войти с паролем',
loginWithPasskey: 'Войти с помощью Passkey',
passkeyLoginSuccess: 'Passkey успешно подтверждён, вход...',
passkeyLoginFailed: 'Не удалось войти с помощью Passkey',
passkeyNotSupported:
'Passkey не поддерживается в этом браузере или на устройстве',
verify: 'Подтвердить',
back: 'Назад',
totpChallengeTitle: 'Двухфакторная проверка',
totpChallengeDesc:
'Введите 6-значный код из приложения-аутентификатора, чтобы продолжить',
totpUseRecoveryCode:
'Введите один из одноразовых кодов восстановления, чтобы продолжить',
enterTotpCode: 'Введите 6-значный код',
enterRecoveryCode: 'Введите код восстановления',
useRecoveryCode: 'Использовать код восстановления',
useTotpCode: 'Использовать код аутентификатора',
totpInvalidCode: 'Код неверный или уже использован, попробуйте снова',
totpVerifyFailed: 'Двухфакторная проверка не удалась, попробуйте снова',
spaceLoginTitle: 'Войти с аккаунтом LangBot',
spaceLoginDescription:
'Отсканируйте QR-код или перейдите по ссылке ниже для авторизации',
spaceLoginUserCode: 'Ваш код',
spaceLoginExpires: 'Код истекает через {{seconds}} секунд',
spaceLoginWaiting: 'Ожидание авторизации...',
spaceLoginSuccess: 'Авторизация успешна',
spaceLoginFailed: 'Ошибка входа с аккаунтом LangBot',
spaceLoginExpired: 'Код авторизации истёк, попробуйте снова',
spaceLoginCancel: 'Отмена',
spaceLoginVisitLink: 'Перейти по ссылке',
spaceLoginProcessing: 'Вход с аккаунтом LangBot',
spaceLoginProcessingDescription:
'Пожалуйста, подождите, пока мы завершим вход...',
spaceLoginSuccessDescription: 'Перенаправление в LangBot...',
spaceLoginError: 'Ошибка входа',
spaceLoginNoCode: 'Отсутствует код авторизации',
backToLogin: 'Вернуться к входу',
backToHome: 'На главную',
spaceAccountCannotChangePassword:
'Для аккаунтов LangBot невозможно изменить пароль здесь',
theme: 'Тема',
changePassword: 'Изменить пароль',
currentPassword: 'Текущий пароль',
newPassword: 'Новый пароль',
confirmNewPassword: 'Подтвердите новый пароль',
enterCurrentPassword: 'Введите текущий пароль',
enterNewPassword: 'Введите новый пароль',
enterConfirmPassword: 'Подтвердите новый пароль',
currentPasswordRequired: 'Текущий пароль обязателен',
newPasswordRequired: 'Новый пароль обязателен',
confirmPasswordRequired: 'Подтверждение пароля обязательно',
passwordsDoNotMatch: 'Пароли не совпадают',
changePasswordSuccess: 'Пароль успешно изменён',
changePasswordFailed:
'Не удалось изменить пароль, проверьте текущий пароль',
apiIntegration: 'API-интеграция',
apiIntegrationDescription:
'Управление API-ключами и вебхуками для внешнего доступа',
apiKeys: 'API-ключи',
manageApiIntegration: 'Управление API-интеграцией',
manageApiKeys: 'Управление API-ключами',
createApiKey: 'Создать API-ключ',
apiKeyName: 'Имя API-ключа',
apiKeyDescription: 'Описание API-ключа',
apiKeyValue: 'Значение API-ключа',
apiKeyCreated: 'API-ключ успешно создан',
apiKeyDeleted: 'API-ключ успешно удалён',
apiKeyDeleteConfirm: 'Вы уверены, что хотите удалить этот API-ключ?',
apiKeyNameRequired: 'Имя API-ключа обязательно',
copyApiKey: 'Копировать API-ключ',
apiKeyCopied: 'API-ключ скопирован в буфер обмена',
noApiKeys: 'API-ключи не настроены',
apiKeyHint:
'API-ключи позволяют внешним системам получать доступ к API сервисов LangBot',
mcpTab: 'MCP',
mcpHint:
'LangBot exposes an MCP (Model Context Protocol) server so AI agents can manage this instance. It uses the same API keys as the Service API.',
mcpEndpoint: 'MCP Endpoint',
mcpAuthTitle: 'Authentication',
mcpAuthDesc:
'Authenticate with any API key from the API Keys tab, sent as a header:',
mcpGlobalKeyNote:
'You can also set a global API key in config.yaml (api.global_api_key) to use without logging in.',
mcpClientConfigTitle: 'Example MCP client config',
webhooks: 'Вебхуки',
createWebhook: 'Создать вебхук',
webhookName: 'Имя вебхука',
webhookUrl: 'URL вебхука',
webhookDescription: 'Описание вебхука',
webhookEnabled: 'Включён',
webhookCreated: 'Вебхук успешно создан',
webhookDeleted: 'Вебхук успешно удалён',
webhookDeleteConfirm: 'Вы уверены, что хотите удалить этот вебхук?',
webhookNameRequired: 'Имя вебхука обязательно',
webhookUrlRequired: 'URL вебхука обязателен',
noWebhooks: 'Вебхуки не настроены',
webhookHint:
'Вебхуки позволяют LangBot отправлять события личных и групповых сообщений во внешние системы',
actions: 'Действия',
apiKeyCreatedMessage:
'Пожалуйста, скопируйте этот API-ключ. Если кнопка не работает, скопируйте вручную.',
apiKeyStoredSecurely: 'Secret shown only when created',
none: 'Нет',
more: 'Ещё ({{count}})',
less: 'Свернуть',
noItems: 'Нет элементов',
},
notFound: {
title: 'Страница не найдена',
description: 'Запрашиваемая страница не существует.',
back: 'Назад',
home: 'Главная',
help: 'Помощь',
},
models: {
starModel: 'Отметить модель для новых обработчиков',
unstarModel: 'Снять отметку',
starModelFailed: 'Не удалось изменить избранную модель',
codex: {
account: 'Подписка ChatGPT',
description:
'Войдите в аккаунт ChatGPT. Подписка не связана с оплатой API OpenAI; доступные модели и лимиты зависят от тарифа.',
disconnected: 'Не подключено',
loading: 'Проверка подключения…',
starting: 'Начало входа…',
pending: 'Ожидание авторизации',
connected: 'Подключено',
expired: 'Срок входа истёк. Получите новый код.',
error: 'Не удалось войти. Проверьте подключение и повторите попытку.',
canceling: 'Отмена входа…',
saveAndSignIn: 'Сохранить и войти',
done: 'Готово',
instructions:
'Введите этот код на странице OpenAI. Не закрывайте это окно до завершения входа.',
copyCode: 'Копировать код',
copied: 'Скопировано',
copyManually: 'Выделите и скопируйте код вручную.',
continueAtOpenAI: 'Продолжить в OpenAI',
expiresAt: 'Код действителен до {{time}}.',
retrying: 'Соединение прервано. Автоматическая повторная попытка…',
cancelSignIn: 'Отменить вход',
tryAgain: 'Повторить',
signIn: 'Войти',
reconnect: 'Переподключить',
disconnect: 'Отключить',
disconnectConfirm:
'Отключить этого провайдера? Его модели перестанут работать до повторного входа. Подписка ChatGPT не будет отменена.',
confirmDisconnect: 'Подтвердить отключение',
},
title: 'Модели',
description: 'Настройка и управление моделями, используемыми в конвейерах',
createModel: 'Создать модель',
editModel: 'Редактировать модель',
getModelListError: 'Не удалось получить список моделей: ',
modelName: 'Название модели',
modelProvider: 'Провайдер модели',
modelBaseURL: 'Базовый URL',
modelAbilities: 'Возможности модели',
saveSuccess: 'Успешно сохранено',
saveError: 'Ошибка сохранения: ',
createSuccess: 'Успешно создано',
createError: 'Ошибка создания: ',
deleteSuccess: 'Успешно удалено',
deleteError: 'Ошибка удаления: ',
deleteConfirmation: 'Вы уверены, что хотите удалить эту модель?',
modelNameRequired: 'Название модели не может быть пустым',
modelProviderRequired: 'Провайдер модели не может быть пустым',
requestURLRequired: 'URL запроса не может быть пустым',
apiKeyRequired: 'API-ключ не может быть пустым',
keyNameRequired: 'Имя ключа не может быть пустым',
mustBeValidNumber: 'Должно быть корректным числом',
mustBeTrueOrFalse: 'Должно быть true или false',
requestURL: 'URL запроса',
scanURL: 'URL сканирования моделей',
scanURLPlaceholder:
'Оставьте пустым для использования URL запроса + /models',
scanURLDescription:
'Укажите фактический эндпоинт списка моделей, если сканирование моделей использует другой адрес, нежели вызов модели.',
apiKey: 'API-ключ',
abilities: 'Возможности',
selectModelAbilities: 'Выберите возможности модели',
visionAbility: 'Распознавание изображений',
functionCallAbility: 'Вызов функций',
reasoningAbility: 'Рассуждение',
reasoningLevel: 'Уровень рассуждений',
reasoningLevels: {
providerDefault: 'Использовать настройки поставщика',
disabled: 'Выключено',
enabled: 'Включено',
minimal: 'Минимальный',
low: 'Низкий',
medium: 'Средний',
high: 'Высокий',
xhigh: 'Очень высокий',
max: 'Максимальный',
},
contextLength: 'Контекстное окно',
contextLengthPlaceholder: 'Неизвестно',
contextLengthInvalid:
'Контекстное окно должно быть положительным целым числом',
extraParameters: 'Дополнительные параметры',
addParameter: 'Добавить параметр',
keyName: 'Имя ключа',
type: 'Тип',
value: 'Значение',
string: 'Строка',
number: 'Число',
boolean: 'Логический',
object: 'Объект',
objectJsonPlaceholder: '{ "type": "disabled" }',
invalidJsonObject: 'Значение должно быть допустимым объектом JSON',
selectModelProvider: 'Выберите провайдера модели',
modelProviderDescription:
'Пожалуйста, введите название модели, предоставленное провайдером',
modelManufacturer: 'Производитель модели',
aggregationPlatform: 'Платформа агрегации',
selfDeployed: 'Самостоятельное развёртывание',
builtin: 'Встроенный',
selectModel: 'Выберите модель',
testSuccess: 'Тест успешен',
testError: 'Тест не пройден, проверьте конфигурацию модели',
llmModels: 'LLM-модели',
localProvider: 'Локальный',
localProviderDescription: 'Модели, настроенные и управляемые локально',
spaceProviderDescription:
'Модели, синхронизированные из вашего аккаунта LangBot',
spaceDisabledForLocalAccount:
'Войдите с аккаунтом LangBot, чтобы использовать облачные модели',
syncModels: 'Синхронизировать',
syncSuccess:
'Синхронизация завершена: {{created}} создано, {{updated}} обновлено',
syncError: 'Ошибка синхронизации: ',
spaceModelReadOnly: 'Модели Space доступны только для чтения',
noSpaceModels:
'Нет моделей Space. Нажмите «Синхронизировать», чтобы загрузить модели из Space.',
noLocalModels:
'Нет локальных моделей. Нажмите «Создать», чтобы добавить модель.',
providerCount: '{{count}} провайдеров',
addModel: 'Добавить модель',
manualAdd: 'Вручную',
scanAdd: 'Сканировать',
scanModels: 'Сканировать модели',
scanModelsHint:
'Прочитайте доступные модели от текущего провайдера, затем выберите, какие из них добавить.',
scannedModels: 'Отсканированные модели',
scanDebug: 'Информация об отладке',
searchScannedModels: 'Поиск отсканированных моделей',
noScannedModels:
'Пока нет результатов. Нажмите кнопку выше для сканирования.',
noScannedModelsMatch: 'Нет подходящих моделей',
addSelectedModels: 'Добавить выбранные',
addSelectedModelsSuccess: 'Добавлено моделей: {{count}}',
selectAll: 'Выбрать все',
alreadyAdded: 'Уже добавлено',
addLLMModel: 'Добавить LLM-модель',
addEmbeddingModel: 'Добавить Embedding-модель',
provider: 'Провайдер',
existingProvider: 'Существующий провайдер',
newProvider: 'Новый провайдер',
selectProvider: 'Выберите провайдера',
requester: 'Тип провайдера',
selectRequester: 'Выберите тип провайдера',
searchProviders: 'Поиск провайдеров...',
langbotModelsDescription: 'Облачные модели на базе LangBot Space',
credits: 'Кредиты',
loginWithSpace: 'Войти с аккаунтом LangBot',
loginToUseModels:
'Войдите с аккаунтом LangBot, чтобы использовать облачные модели',
ownerMustBindSpace:
'The Workspace owner must connect a LangBot Account for LangBot Models.',
usesOwnerSpaceBilling:
"Uses the Workspace owner's LangBot Account billing and credits.",
noModels: 'Модели не настроены',
availability: {
available: 'Доступна при последней проверке',
unavailable: 'Недоступна при последней проверке',
notChecked: 'Нет результата проверки',
lastChecked: 'Проверено {{time}}',
},
pricing: {
compact: '{{input}} / {{output}}',
inline: 'Ввод {{input}} · вывод {{output}}',
title: 'Кредиты за 1 млн токенов',
input: 'Ввод: {{credits}} кредитов',
output: 'Вывод: {{credits}} кредитов',
unavailable: 'Цена не найдена. Возможно, модель была удалена.',
},
langbotModels: 'Модели LangBot',
spaceTrialTooltip:
'Доступны бесплатные пробные кредиты! Войдите с аккаунтом LangBot, чтобы получить доступ к облачным моделям без настройки.',
unlockModels: 'Войдите для использования',
editProvider: 'Редактировать провайдера',
addProvider: 'Добавить провайдера',
addProviderHint:
'Добавьте провайдеров для использования моделей из других источников',
addProviderHintSimple: 'Добавьте провайдеров для использования моделей',
noProviders: 'Провайдеров пока нет',
providerName: 'Имя провайдера',
providerNameRequired: 'Имя провайдера обязательно',
requesterRequired: 'Тип провайдера обязателен',
providerSaved: 'Провайдер сохранён',
providerCreated: 'Провайдер создан',
providerSaveError: 'Ошибка сохранения провайдера: ',
providerDeleted: 'Провайдер удалён',
providerDeleteError: 'Ошибка удаления провайдера: ',
deleteProviderCascadeConfirmation:
'Удалить этого провайдера и ВСЕ содержащиеся в нём модели? Это действие необратимо, его нельзя отменить.',
deleteProviderConfirmation:
'Вы уверены, что хотите удалить этого провайдера?',
loadError: 'Не удалось загрузить данные',
chat: 'Чат',
embedding: 'Embedding',
rerank: 'Переранжирование',
rerankUrlTooltip:
'Полный URL для эндпоинта переранжирования (напр.: https://dashscope.aliyuncs.com/compatible-api/v1/reranks)',
rerankPathTooltip:
'Путь, добавляемый к базовому URL (по умолчанию: rerank, некоторые сервисы используют reranks)',
modelsCount: '{{count}} модель(ей)',
expandModels: 'Развернуть',
collapseModels: 'Свернуть',
fallback: {
primary: 'Основная модель',
fallbackList: 'Резервные модели',
addFallback: 'Добавить резервную модель',
},
},
bots: {
pluginSubscriptions: {
incompleteEvents:
'Этот бот поддерживает только часть отслеживаемых событий ({{events}}). Обработчик может работать не во всех случаях так, как ожидается.',
description:
'Автоматически получает события, объявленные плагином, независимо от маршрутов выше.',
empty: 'Обработчики плагинов не привязаны.',
add: 'Добавить обработчик плагина',
existing: 'Выбрать конфигурацию',
new: 'Новая конфигурация',
noExisting: 'Нет доступных конфигураций. Создайте новую.',
shared:
'Боты с общей конфигурацией используют общие настройки и состояние выполнения.',
saveHint: 'Сохраните бота, чтобы активировать привязку.',
createAndBind: 'Создать и привязать',
created: 'Конфигурация создана. Сохраните бота для активации привязки.',
enable: 'Включить {{name}}',
remove: 'Отвязать {{name}}',
configure: 'Настроить',
logs: 'Журнал',
},
applyFailed: 'Настройки сохранены, но не применены',
internalErrorHint:
'Внутренняя ошибка. Проверьте журналы сервера по указанному идентификатору.',
errorReference: 'Идентификатор ошибки: {{id}}',
title: 'Боты',
description:
'Создание и управление ботами — точками входа LangBot для подключения к различным платформам',
createBot: 'Создать бота',
selectFromSidebar: 'Выберите бота из боковой панели',
editBot: 'Редактировать бота',
getBotListError: 'Не удалось получить список ботов: ',
botName: 'Имя бота',
botDescription: 'Описание бота',
botNameRequired: 'Имя бота не может быть пустым',
botDescriptionRequired: 'Описание бота не может быть пустым',
adapterRequired: 'Адаптер не может быть пустым',
connectionMode: 'Способ подключения',
connectionModeDescription:
'Выберите способ подключения, поддерживаемый адаптером.',
connectionWebhook: 'Webhook',
connectionWebhookDescription:
'Платформа отправляет события на URL, созданный LangBot.',
connectionPersistent: 'Постоянное соединение',
connectionPersistentDescription:
'LangBot поддерживает исходящее сокетное или потоковое соединение.',
noAdaptersForConnectionMode:
'Ни один установленный адаптер не поддерживает этот способ подключения.',
defaultDescription: 'Бот',
getBotConfigError: 'Не удалось получить конфигурацию бота: ',
saveSuccess: 'Успешно сохранено',
saveError: 'Ошибка сохранения: ',
createSuccess: 'Успешно создано. Настройте маршрутизацию событий',
createError: 'Ошибка создания: ',
deleteSuccess: 'Успешно удалено',
deleteError: 'Ошибка удаления: ',
deleteConfirmation: 'Вы уверены, что хотите удалить этого бота?',
platformAdapter: 'Выбор платформы/адаптера',
selectAdapter: 'Выберите адаптер',
saveAndEnable: 'Сохранить и включить',
searchAdapters: 'Поиск адаптеров',
noMatchingAdapters: 'Подходящие адаптеры не найдены',
legacyAdapters: 'Устаревшие адаптеры',
legacyAdapterBadge: 'Устаревший',
legacyAdaptersHint:
'Старые адаптеры в основном обмениваются сообщениями и сохраняются для совместимости.\nНовые подключают ту же платформу через события: сообщения, поддерживаемые запросы в друзья и изменения в группах, направляя их обработчикам.\nДля новых ботов выбирайте новые адаптеры. Старые боты могут работать как прежде. При переходе проверьте подключение и маршруты; аккаунт платформы не обновляется.',
adapterConfig: 'Настройка адаптера',
viewAdapterDocs: 'Документация',
bindPipeline: 'Привязать конвейер',
selectPipeline: 'Выберите конвейер',
selectBot: 'Выберите бота',
botLogTitle: 'Журнал бота',
enableAutoRefresh: 'Автообновление',
session: 'Сессия',
yesterday: 'Вчера',
earlier: 'Ранее',
dateFormat: '{{day}}.{{month}}',
setBotEnableError: 'Не удалось изменить статус бота',
enabling: 'Включение…',
disabling: 'Отключение…',
enableConfirmed: 'Включён',
disableConfirmed: 'Отключён',
log: 'Журнал',
configuration: 'Настройки',
logs: 'Журналы',
basicInfo: 'Основная информация',
basicInfoDescription: 'Задайте имя и описание бота',
routingConnection: 'Маршрутизация и подключение',
routingConnectionDescription:
'Привяжите конвейер, обрабатывающий сообщения для этого бота',
routingHelp: {
title: 'Что такое маршрутизация событий?',
intro: 'Бот получает сообщения, запросы в друзья и события вступления в группу.',
events: 'Входящие события',
agents: 'Разные агенты',
message: 'Сообщение',
friend: 'Запрос в друзья',
group: 'Вступление в группу',
messageAction: 'Агент ответов',
friendAction: 'Агент проверки',
groupAction: 'Агент приветствия',
rules: 'По вашим правилам · Пример',
instructions: 'Агенты следуют вашим инструкциям и вызывают инструменты для ответов и обработки запросов.',
plugin: 'Для сложных задач обработчики плагинов регистрируют события пакетно и обрабатывают их кодом. Добавьте конфигурацию обработчика ниже.',
docs: 'Разработать свой обработчик плагина',
runnerDocs: 'Разработать свой исполнитель Agent',
pause: 'Пауза',
play: 'Воспроизвести',
},
eventRouting: 'Маршрутизация событий',
eventRoutingDescription:
'Выберите обработчик для каждого события бота. Изменяйте логику в настройках соответствующего Agent или Pipeline. Pipeline поддерживает только события сообщений.',
eventBindings: 'Маршруты событий',
addEventBinding: 'Добавить маршрут',
addBehavior: 'Добавить поведение',
commonScenarios: 'Типовые сценарии',
dragEventRoute: 'Перетащить маршрут {{index}}',
behaviorReplyMessages: 'Отвечать на сообщения',
behaviorReplyMessagesDescription:
'Передавайте входящие сообщения обработчику.',
behaviorWelcomeMembers: 'Приветствовать новых участников',
behaviorWelcomeMembersDescription:
'Запускайте обработчик при вступлении участника в группу.',
behaviorHandleDepartures: 'Обрабатывать выход участников',
behaviorHandleDeparturesDescription:
'Запускайте обработчик при выходе или удалении участника.',
behaviorReviewFriendRequests: 'Проверять заявки в друзья',
behaviorReviewFriendRequestsDescription:
'Передавайте новые заявки в друзья обработчику.',
behaviorHandleModeration: 'Обрабатывать события модерации',
behaviorHandleModerationDescription:
'Запускайте обработчик при ограничении участника группы.',
behaviorCustom: 'Настроить другое событие',
behaviorCustomDescription:
'Добавьте маршрут и выберите событие из поддерживаемых адаптером.',
eventPattern: 'Событие',
eventPatternPlaceholder: 'Выберите событие',
targetType: 'Тип назначения',
target: 'Обработчик',
targetAgent: 'Agent',
targetPipeline: 'Конвейер',
targetDiscard: 'Отбросить',
selectTarget: 'Выберите обработчик',
searchTarget: 'Поиск обработчиков…',
noTargetFound: 'Совместимые обработчики не найдены',
priority: 'Приоритет',
enabled: 'Включено',
eventBindingDescriptionPlaceholder: 'Описание правила',
noEventBindings: 'Нет маршрутов событий',
unsupportedPipelineEvent: 'Конвейеры поддерживают только события message.received',
disable: 'Отключить',
enable: 'Включить',
disabledBindings: 'Отключено',
adapterEventsTitle: 'Поддерживаемые события',
adapterEventsDescription: 'Типов событий: {{count}}',
adapterEventsMore: 'Ещё {{count}}',
advancedEventValues: 'Показать все',
eventGroup: 'Группа',
eventGroupNames: {
wecomcs: "Поддержка WeCom",
bot: 'Состояние бота',
feedback: 'Обратная связь',
friend: 'Друзья',
group: 'Группы',
message: 'Сообщения',
platform: 'Платформа',
},
routeConflictTitle: 'Некоторые маршруты пересекаются',
routeConflictShadowed:
'{{shadowed}} может не запускаться, поскольку {{winner}} обрабатывает те же события раньше.',
routeConflictMore: 'Ещё {{count}} конфликтов маршрутов требуют внимания.',
routeFallbackCatchAll: '{{route}} — маршрут для всех событий.',
routeFallbackIgnored:
'События без подходящего маршрута игнорируются. Добавляйте общий маршрут, только если каждое событие требует явного результата.',
matchRecords: 'История совпадений',
matchRecordsDescription: 'Последний результат каждого правила и недавние события без совпадений. Журнал в памяти очищается при перезапуске.',
testRoute: 'Проверить маршрут',
adapterEventDebugAction: 'Тест прослушивания',
adapterEventDebugTitle: 'Отладка событий платформы',
adapterEventDebugDescription:
'Вызовите событие в {{platform}}. Оно появится здесь после получения адаптером.',
adapterEventObserveOnly:
'Это окно только наблюдает за событиями. Входящие события обрабатываются по текущим маршрутам.',
adapterEventPreparing: 'Подготовка',
adapterEventListening: 'Ожидание событий',
adapterEventListenerUnavailable: 'Приём событий прерван',
adapterEventLoadFailed:
'Не удалось прочитать события платформы. Убедитесь, что бот работает, и повторите попытку.',
adapterEventReceivedCount: 'Получено событий: {{count}}',
adapterEventClear: 'Очистить',
adapterEventEmptyTitle: 'Ожидание события платформы',
adapterEventEmptyDescription:
'Отправьте сообщение или вызовите событие в {{platform}}.',
adapterEventData: 'Показать данные события',
adapterEventNeedsSavedBot:
'Сохраните бота перед приёмом событий платформы.',
adapterEventCurrentPlatform: 'текущей платформе',
adapterConfigurationTest: 'Проверка настроек адаптера',
adapterConfigurationTestDescription:
'Сначала сохраните и включите бота, затем вызовите событие платформы для проверки настроек.',
refreshRouteStatus: 'Обновить состояние',
routeStatusIdle: 'Ещё не запускался',
routeStatusRefreshFailed: 'Не удалось обновить состояние маршрута.',
routeStatus: {
matched: 'Совпадение',
delivered: 'Доставлено',
discarded: 'Отброшено',
failed: 'Ошибка',
not_matched: 'Нет совпадения',
},
routeStatusDetail: {
matched: 'Маршрут соответствует событию.',
delivered: 'Обработчик получил событие.',
discarded: 'Событие намеренно отброшено.',
failed: 'Не удалось завершить обработку маршрута.',
not_matched: 'Ни один настроенный маршрут не соответствует событию.',
},
routeFailure: {
binding_disabled: 'Этот маршрут отключён.',
event_pattern_mismatch: 'Событие не соответствует маршруту.',
filters_mismatch: 'Тестовые данные не соответствуют условиям маршрута.',
lower_priority:
'Другой подходящий маршрут имеет более высокий приоритет.',
route_not_found: 'Для события не найден подходящий маршрут.',
processor_incompatible:
'Выбранный обработчик не поддерживает это событие.',
processor_not_found: 'Выбранный обработчик недоступен.',
runner_failed:
'Исполнитель Agent завершился с ошибкой при обработке события.',
delivery_failed: 'Обработчик завершил работу, но доставка не удалась.',
},
dryRunTitle: 'Проверка маршрута события',
dryRunDescription:
'Выберите событие, чтобы определить подходящий маршрут и обработчик.',
dryRunEventType: 'Тип события',
dryRunSampleReady: 'Пример события готов',
dryRunSampleDescription:
'LangBot подготовил пример данных для {{event}}. Обычно его можно использовать без изменений.',
dryRunEditPayload: 'Тестовые данные',
dryRunHidePayload: 'Скрыть данные',
dryRunPayload: 'Тестовые данные (JSON)',
dryRunPayloadHint: 'Используйте для проверки условий сообщений и диалогов.',
dryRunPayloadJsonError: 'Введите корректный JSON.',
dryRunPayloadObjectError: 'Данные должны быть объектом JSON.',
dryRunNeedsSavedBot: 'Сохраните бота перед проверкой маршрутов.',
dryRunFailed: 'Не удалось проверить маршрут. Повторите позже.',
dryRunAction: 'Показать совпадение',
dryRunRunning: 'Проверка…',
dryRunMatched: 'Маршрут найден',
dryRunNotMatched: 'Маршрут не найден',
dryRunTarget: 'Целевой обработчик',
dryRunNoTarget: 'Нет назначения',
dryRunMatchedRule: 'Подходящее правило',
dryRunRuleIndex: 'Маршрут {{index}}',
dryRunNoRule: 'Нет подходящего правила',
dryRunDiagnostics: 'Этапы диагностики',
dryRunDiagnosticSelected: 'Выбран маршрут {{route}}.',
dryRunDiagnosticMatched: '{{route}} соответствует. {{reason}}',
dryRunDiagnosticSkipped: '{{route}} пропущен. {{reason}}',
eventCustom: 'Пользовательское событие',
eventWildcard: 'Все события',
eventNamespaceWildcard: '{{namespace}}.*',
eventNames: {
wecombot_enter_chat: "Пользователь открыл чат бота",
wecombot_template_card_event: "Взаимодействие с карточкой",
wecomcs_enter_session: "Клиент вошёл в диалог",
wecomcs_msg_send_fail: "Ошибка отправки сообщения поддержки",
wecomcs_servicer_status_change: "Статус оператора изменён",
wecomcs_session_status_change: "Статус диалога поддержки изменён",
wecomcs_reject_customer_msg_switch_change: "Приём сообщений клиента изменён",
message_received: 'Получено сообщение',
message_edited: 'Сообщение изменено',
message_deleted: 'Сообщение удалено',
message_reaction: 'Реакция на сообщение',
feedback_received: 'Получен отзыв',
friend_request_received: 'Получен запрос в друзья',
friend_added: 'Друг добавлен',
group_member_joined: 'Участник вступил в группу',
group_member_left: 'Участник покинул группу',
group_member_banned: 'Участник заблокирован',
bot_invited_to_group: 'Бот приглашён в группу',
bot_removed_from_group: 'Бот удалён из группы',
bot_muted: 'Боту запрещено отправлять сообщения',
bot_unmuted: 'Боту разрешено отправлять сообщения',
platform_specific: 'Событие конкретной платформы',
},
eventDescriptions: {
wecombot_enter_chat: "Пользователь открыл чат бота. Событие подходит для сценариев приветствия.",
wecombot_template_card_event: "Пользователь нажал или отправил карточку. Ответы управляемых форм обрабатываются отдельно.",
wecomcs_enter_session: "Клиент открыл ссылку поддержки; событие содержит источник и код приветствия.",
wecomcs_msg_send_fail: "WeChat сообщил об ошибке отправки с ID сообщения и типом ошибки.",
wecomcs_servicer_status_change: "Оператор начал, остановил или приостановил приём обращений.",
wecomcs_session_status_change: "Оператор принял, передал, завершил или возобновил диалог.",
wecomcs_reject_customer_msg_switch_change: "Оператор включил или отключил отказ в приёме сообщений клиента.",
all: 'Соответствует всем событиям, полученным адаптером.',
namespace: 'Соответствует всем событиям {{group}}.',
namespace_bot:
'Соответствует приглашениям, удалениям, отключению звука бота и другим изменениям состояния.',
namespace_feedback:
'Соответствует обратной связи от платформы или пользователя.',
namespace_friend:
'Соответствует заявкам в друзья и изменениям дружеских связей.',
namespace_group:
'Соответствует вступлениям, выходам, удалениям участников и другим событиям группы.',
namespace_message:
'Соответствует получению, редактированию, удалению сообщений и реакциям.',
namespace_platform:
'Соответствует особым событиям платформы, предоставляемым адаптером.',
custom: 'Пользовательское событие или событие без описания.',
message_received:
'Пользователь или группа отправляет новое сообщение боту.',
message_edited:
'Платформа сообщает об изменении существующего сообщения.',
message_deleted: 'Платформа сообщает об удалении сообщения.',
message_reaction:
'Пользователь добавляет или удаляет реакцию на сообщение.',
feedback_received:
'Получена обратная связь от платформы или пользователя.',
friend_request_received: 'Кто-то отправляет боту заявку в друзья.',
friend_added: 'Установлена дружеская связь.',
group_member_joined: 'Участник вступает в группу, где есть бот.',
group_member_left: 'Участник покидает группу, где есть бот.',
group_member_banned: 'Участник группы заблокирован или удалён.',
bot_invited_to_group: 'Бот приглашён в группу.',
bot_removed_from_group: 'Бот удалён из группы.',
bot_muted: 'Боту запрещено отправлять сообщения в группе.',
bot_unmuted: 'Боту разрешено отправлять сообщения в группе.',
platform_specific: 'Событие платформы, специфичное для адаптера.',
},
conditions: 'Условия',
conditionsDescription:
'Для срабатывания должны выполняться все условия. Пустой список означает срабатывание всегда.',
conditionsEmpty: 'Нет условий — срабатывает всегда.',
addFilter: 'Добавить условие',
filterChatType: 'Тип сеанса',
filterChatId: 'ID сеанса',
filterMessageText: 'Текст сообщения',
filterMessageElement: 'Элемент сообщения',
operator_eq: 'равно',
operator_neq: 'не равно',
operator_contains: 'содержит',
operator_not_contains: 'не содержит',
operator_starts_with: 'начинается с',
operator_regex: 'регулярное выражение',
routingRules: 'Правила условной маршрутизации',
routingRulesDescription:
'Правила проверяются по порядку; первое совпадение направляет в соответствующий конвейер. При отсутствии совпадений используется конвейер по умолчанию.',
addRoutingRule: 'Добавить правило',
ruleTypeLauncherType: 'Тип сессии',
ruleTypeLauncherId: 'ID сессии',
ruleTypeMessageContent: 'Содержимое сообщения',
operatorEq: 'Равно',
operatorNeq: 'Не равно',
operatorContains: 'Содержит',
operatorNotContains: 'Не содержит',
operatorStartsWith: 'Начинается с',
operatorRegex: 'Регулярное выражение',
operatorHas: 'Содержит',
operatorNotHas: 'Не содержит',
ruleTypeMessageHasElement: 'Элемент сообщения',
ruleValueElementPlaceholder: 'Выберите тип элемента',
elementImage: 'Изображение',
elementVoice: 'Голос',
elementFile: 'Файл',
elementForward: 'Пересланное',
elementFace: 'Эмодзи',
elementAt: '@Упоминание',
elementAtAll: '@Все',
elementQuote: 'Цитата',
ruleValuePlaceholder: 'Значение для сопоставления',
ruleValueLauncherIdPlaceholder: 'ID группы или пользователя',
ruleValueMessagePlaceholder: 'Текст сообщения',
ruleValuePrefixPlaceholder: 'Напр., !draw',
ruleValueRegexpPlaceholder: 'Напр., ^/help',
pipelineDiscard: 'Отклонить сообщение',
sessionTypePerson: 'Личный чат',
sessionTypeGroup: 'Групповой чат',
adapterConfigDescription: 'Настройте выбранный адаптер платформы',
dangerZone: 'Опасная зона',
dangerZoneDescription: 'Необратимые и деструктивные действия',
deleteBotAction: 'Удалить этого бота',
deleteBotHint:
'После удаления все связанные настройки будут безвозвратно удалены.',
webhookUrl: 'URL обратного вызова Webhook',
webhookUrlCopied: 'URL Webhook скопирован',
webhookUrlHint:
'Нажмите на поле ввода, чтобы выделить всё, затем Ctrl+C (Mac: Cmd+C) для копирования, или нажмите кнопку',
webhookUrlHintEither:
'Используйте любой из двух URL выше в настройках вашей платформы',
webhookSaasHint:
'Для Webhook требуется публично доступный домен. LangBot Cloud предоставляет готовую публичную конечную точку для вашего бота.',
webhookSaasLink: 'Подробнее о LangBot Cloud',
adapterCategory: {
popular: 'Популярные',
china: 'Китай',
global: 'Глобальные',
protocol: 'Протокол',
},
logLevel: 'Уровень журнала',
allLevels: 'Все уровни',
selectLevel: 'Выберите уровень',
levelsSelected: 'уровней выбрано',
viewDetailedLogs: 'Подробные журналы',
viewDetails: 'Подробности',
collapse: 'Свернуть',
imagesAttached: 'изображений прикреплено',
noLogs: 'Журналов пока нет',
sessionMonitor: {
title: 'Сессии',
sessions: 'Сессии',
noSessions: 'Сессии не найдены',
selectSession: 'Выберите сессию для просмотра сообщений',
noMessages: 'В этой сессии нет сообщений',
messages: 'сообщений',
messageCount: '{{count}} сообщений',
loading: 'Загрузка...',
loadingSessions: 'Загрузка сессий...',
loadingMessages: 'Загрузка сообщений...',
user: 'Пользователь',
variables: 'Переменные',
platform: 'Платформа',
lastActive: 'Последняя активность',
refresh: 'Обновить',
active: 'Активна',
inactive: 'Неактивна',
discarded: 'Отклонена',
userMessage: 'Пользователь',
botMessage: 'Ассистент',
totalSessions: 'Сеансов: {{count}}',
userSearch: 'ID или имя пользователя',
startDate: 'Дата начала',
endDate: 'Дата окончания',
},
admins: {
title: 'Admins',
description:
"Launchers (person/group IDs) that have admin privilege for this bot's commands",
addAdmin: 'Add Admin',
launcherType: 'Type',
launcherId: 'ID',
typePerson: 'Person',
typeGroup: 'Group',
placeholderId: 'User or group ID',
addSuccess: 'Admin added',
addError: 'Failed to add admin: ',
deleteSuccess: 'Admin removed',
deleteError: 'Failed to remove admin: ',
noAdmins: 'No admins configured',
setAdminTitle: 'Set as admin',
adminBadge: 'Admin',
configureAdmins: 'Manage Admins',
removeAdminTitle: 'Remove admin',
},
},
agents: {
apiToolsSelectAll: 'Выбрать все',
monitoring: {
rangeDays: 'Последние {{days}} дней',
customRange: 'Свой период',
rangeStart: 'Начало',
rangeEnd: 'Конец',
rangeHint: 'Начало должно быть раньше конца. Максимум 365 дней.',
autoRefreshLabel: 'Автообновление',
autoRefreshOff: 'Автообновление: выкл.',
autoRefreshEvery: 'Обновлять каждые {{seconds}} с',
runStatus: "Статус выполнения",
toolCalls: "Вызовы инструментов",
delivery: "Отправка сообщений",
sendFailed: "Ошибка отправки",
sendCount: "Успешных вызовов отправки: {{count}}",
noSend: "Отправки не зарегистрированы",
noSteps: "Шаги выполнения ещё не зарегистрированы.",
recipient: "Получатель",
actionCompleted: "Инструмент выполнен успешно.",
simulatedAction: "Действие смоделировано; реальное сообщение не отправлено.",
description:
'Просмотр события, ответа модели и вызовов инструментов для каждой задачи.',
empty:
'Запусков пока нет. Вызовите событие платформы или запустите отладку.',
input: 'Входные данные',
eventData: 'Данные события',
execution: 'Ход выполнения',
rawEvents: 'Исходные события',
inputUnavailable: 'Входные данные этого запуска не записаны.',
},
eventProcessor: {
configurations: 'Конфигурации обработчиков плагинов',
configTab: 'Настройки',
logsTab: 'Журнал',
noSettings: 'Этот обработчик плагина не требует настройки.',
createPageTitle: 'Создать обработчик событий',
processWithPlugin: 'Обработка кодом плагина',
pluginSettings: 'Настройки плагина',
pluginSettingsDescription: 'Параметры, объявленные этим плагином.',
selectToDebug: 'Выберите плагин выше, чтобы начать отладку.',
debugOutput: 'Вывод обработчика',
debugDescription:
'Входные события, журналы плагина и результаты действий этой проверки.',
debugNotice:
'Плагин обрабатывает тестовое событие. Действия платформы используют Mock и не отправляют реальные сообщения; остальные инструменты работают согласно настройкам.',
create: 'Создать обработчик плагина',
type: 'Обработчик плагина',
description: 'Обрабатывает события с помощью кода и логики плагина.',
component: 'Обработчик плагина',
selectComponent: 'Выберите обработчик плагина',
unavailable: 'Компонент недоступен',
noComponents: 'Плагины с обработчиками не установлены.',
installPlugin: 'Установить плагин',
loadError: 'Не удалось загрузить данные.',
refresh: 'Обновить',
runs: 'Запуски',
noRuns: 'Запусков пока нет. Привяжите обработчик к боту.',
bindBot: 'Привязать к боту',
trace: 'Журнал и поток сообщений',
selectRun: 'Выберите запуск для просмотра.',
input: 'Входящее событие',
destination: 'Получатель',
loadMore: 'Загрузить ещё',
activation:
'Установите плагин, создайте конфигурацию обработчика и привяжите бота.',
status_timeout: 'Время истекло',
status_pending: 'Ожидание',
status_running: 'Выполняется',
status_completed: 'Завершено',
status_failed: 'Ошибка',
status_cancelled: 'Отменено',
status_queued: 'В очереди',
trace_run_completed: 'Выполнение завершено',
trace_run_failed: 'Ошибка выполнения',
trace_tool_call_started: 'Действие начато',
trace_tool_call_completed: 'Результат действия',
},
debugData: {
chatId: 'ID чата',
feedbackType: 'Тип отзыва (1: нравится, 2: не нравится, 3: отмена)',
title: 'Данные события',
form: 'Основные поля',
json: 'Полный JSON',
groupId: 'ID группы',
memberId: 'ID участника',
memberName: 'Имя участника',
userId: 'ID пользователя',
userName: 'Имя пользователя',
requesterId: 'ID заявителя',
requesterName: 'Имя заявителя',
messageId: 'ID сообщения',
duration: 'Длительность (секунды)',
message: 'Текст сообщения',
newMessage: 'Новый текст',
verificationMessage: 'Текст заявки',
reaction: 'Реакция',
groupName: 'Название группы',
feedback: 'Отзыв',
rating: 'Оценка',
eventName: 'Название события',
privateChat: 'Пусто для личного чата',
sampleUser: 'Тестовый пользователь',
sampleMessage: 'Привет',
sampleFeedback: 'Очень полезно',
invalidField: 'Проверьте {{field}}',
},
title: 'Обработчики',
description:
'Создавайте переиспользуемые обработчики и используйте их в маршрутизации событий бота',
create: 'Создать обработчик',
editAgent: 'Редактировать Agent',
selectFromSidebar: 'Выберите обработчик на боковой панели',
agentType: 'Agent',
agentTypeDescription:
'Используйте runner для обработки сообщений, участников групп, друзей, обратной связи и других событий платформы.',
pipelineType: 'Конвейер',
kindBadgeAgent: 'Agent',
kindBadgePipeline: 'Pipeline',
groupByKind: 'Группировать по типу',
groupByKindShort: 'Группа',
pipelineTypeDescription:
'Работает по заданному процессу: получить сообщение, вызвать AI и ответить пользователю. Поддерживает настройку баз знаний и плагинов; обрабатывает только события сообщений и подходит для задач с четкими шагами и контролем обработки.',
allEvents: 'Поддерживает все события',
messageEventsOnly: 'Только события сообщений',
selectAgentRunner: 'Выберите исполнитель Agent',
selectProcessorPlugin: 'Выберите плагин обработки',
createBasicInfoDescription: 'Задайте имя, значок и плагин',
chooseType: 'Выберите способ работы',
chooseTypeDescription:
'Сначала выберите тип обработчика. Остальные настройки доступны после создания.',
diagramHint: 'Как это работает',
agentDiagramTitle: 'Agent: решения и действия',
agentDiagramDescription:
'Agent получает разные события платформы, использует модели и инструменты для понимания ситуации и решает, что делать дальше.',
pipelineDiagramTitle: 'Конвейер: заданная последовательность',
pipelineDiagramDescription:
'Конвейер обрабатывает только события сообщений и выполняет шаги в заданном порядке.',
pipelineDiagramFlow: 'Сообщения проходят фиксированную последовательность',
diagramEvents: 'События платформы',
diagramAgentCanUse: 'Доступно Agent',
diagramMessages: 'Сообщения',
diagramMembers: 'Участники',
diagramFeedback: 'Обратная связь',
diagramDecide: 'Понять и решить',
diagramModel: 'Использовать модель',
diagramTools: 'Использовать инструменты',
diagramActions: 'Выполнить действие',
diagramMessage: 'Сообщение',
diagramPreprocess: 'Подготовка',
diagramAI: 'ИИ',
diagramPostprocess: 'Обработка результата',
diagramOutput: 'Вывод',
basicInfo: 'Основная информация',
basicInfoDescription: 'Задайте имя, иконку и описание',
runnerSettings: 'Runner',
advanced: 'Дополнительно',
eventsAndTools: 'События и инструменты',
eventsAndToolsDescription:
'Задайте события запуска и доступные инструменты.',
bindableEvents: 'Диапазон привязываемых событий',
bindableEventsDescription:
'Ограничьте, какие маршруты событий бота могут выбирать этот Agent. Обычно достаточно значения по умолчанию.',
configuredEvents: 'Добавленные события',
configuredEventsCount: 'Всего: {{count}}',
addEvent: 'Добавить событие',
removeEvent: 'Удалить событие',
eventActions: 'Автоматически включённые инструменты',
eventToolEnabled: 'Включено',
eventToolsEnabledCount: 'Включено инструментов: {{count}}',
noEventActions: 'Для этого события нет доступных действий.',
noEventsConfigured: 'События не добавлены',
noEventsConfiguredDescription:
'Ни одно событие не может запустить этот Agent.',
noEventsConfiguredBadge: 'Нет событий',
apiTools: 'Доступ к инструментам',
apiToolsDescription:
'Выберите инструменты, которые может вызывать этот Agent.',
otherTools: 'Другие инструменты',
otherToolsDescription:
'Выберите инструменты платформы, песочницы, MCP, плагинов и навыков.',
apiToolsSelected: 'Выбрано: {{count}}',
apiToolsSecurityHint:
'Включайте только необходимые этому Agent инструменты.',
apiToolsSearch: 'Поиск инструментов…',
eventApiTools: 'Инструменты событий',
eventToolUnavailable: 'Недоступно',
eventApiToolsDescription:
'Цели фиксируются по текущему событию. Agent передаёт только параметры действия.',
platformApiTools: 'Инструменты платформы',
platformApiToolsDescription:
'Agent может выбирать ID пользователей, групп и сообщений. Предоставляйте только необходимые права.',
apiToolEvents: 'События',
apiToolParameters: 'Параметры Agent',
apiToolSource: 'Источник',
apiToolNoParameters: 'нет',
sandboxTools: 'Песочница',
mcpTools: 'MCP',
pluginTools: 'Плагины',
skillTools: 'Навыки',
langbotBuiltIn: 'LangBot',
apiToolDetails: 'Подробности',
apiToolHideDetails: 'Скрыть',
apiToolsNoResults: 'Подходящие API или инструменты не найдены',
apiToolsCatalogUnavailable:
'Сервер LangBot не вернул каталог инструментов API. Убедитесь, что сервер обновлён и перезапущен. Это не означает отсутствие инструментов у платформы.',
hostToolsCatalogUnavailable: 'Каталог инструментов временно недоступен.',
apiToolRisk: {
read: 'Только чтение',
write: 'Действие',
dangerous: 'Чувствительное',
},
supportedEvents: 'Диапазон событий',
supportedEventsDescription:
'Выберите все события, группу или отдельные события. В маршрутах бота этот Agent будет доступен только для подходящих событий.',
searchEvents: 'Поиск событий…',
noEventsFound: 'Подходящие события не найдены',
nameRequired: 'Имя не может быть пустым',
createSuccess: 'Успешно создано',
createError: 'Ошибка создания: ',
loadError: 'Ошибка загрузки: ',
saveSuccess: 'Успешно сохранено',
saveError: 'Ошибка сохранения: ',
deleteSuccess: 'Успешно удалено',
deleteError: 'Ошибка удаления: ',
deleteConfirmation: 'Вы уверены, что хотите удалить этот Agent?',
dangerZone: 'Опасная зона',
dangerZoneDescription: 'Необратимые и деструктивные действия',
deleteAgentAction: 'Удалить этот Agent',
deleteAgentHint:
'После удаления события, привязанные к ней, больше не смогут выполняться.',
noRunnerMetadata: 'Метаданные Runner в данный момент недоступны.',
runnerStatusLoading: 'Проверка состояния исполнителя',
runnerStatusCheckFailed: 'Не удалось проверить состояние исполнителя',
runnerStatusCheckFailedDescription:
'Повторите проверку. Если ошибка остаётся, проверьте сервер и среду выполнения плагинов.',
noRunnersAvailable: 'Нет доступных исполнителей',
noRunnersAvailableDescription:
'Установите и включите расширение исполнителя перед настройкой Agent.',
installedRunners: 'Установленные исполнители',
marketplaceRunners: 'Плагины исполнителей в магазине',
viewMarketplace: 'Открыть магазин',
restoringRunnerInstall:
'Восстановление установки плагина и ожидание исполнителя…',
noInstalledRunners: 'Расширения исполнителей ещё не установлены.',
installingRunner: 'Установка {{runner}}...',
runnerInstallSuccess: '{{runner}} установлен и доступен для выбора',
selectedRunnerUnavailable: 'Выбранный исполнитель недоступен',
selectedRunnerUnavailableDescription:
'{{runner}} сейчас не зарегистрирован. Выберите другой исполнитель или восстановите расширение.',
noRunnerSelected: 'Исполнитель не выбран',
runnerConfigIncomplete: 'Настройка исполнителя не завершена',
runnerConfigIncompleteDescription:
'Заполните обязательные поля: {{fields}}',
runnerReady: 'Исполнитель готов',
runnerReadyDescription:
'{{runner}} зарегистрирован, среда выполнения плагинов подключена.',
debugTab: 'Отладка событий',
debugTitle: 'Отладка событий Agent',
debugDescription:
'Запустите текущий Agent с сообщением или событием платформы и проверьте фактический результат.',
debugResetSession: 'Сбросить сеанс',
debugEventType: 'Тип события',
debugNoEventsTitle: 'Нет событий для отладки',
debugNoEventsDescription:
'Сначала добавьте событие в разделе «События и инструменты».',
debugMessageReceived: 'Получено сообщение',
debugGroupMemberJoined: 'Участник вступил в группу',
debugGroupMemberLeft: 'Участник покинул группу',
debugFriendRequested: 'Получена заявка в друзья',
debugFeedbackReceived: 'Получена обратная связь',
debugCustomEvent: 'Пользовательское событие',
debugCustomEventType: 'Имя пользовательского события',
debugMessageInput: 'Ввод диалога',
debugEventSummary: 'Сводка события',
debugInputPlaceholder: 'Введите задачу для Agent',
debugEventPayload: 'Данные события (JSON)',
debugSupportedEvents: 'Agent поддерживает',
debugRun: 'Запустить тест',
debugSaveAndRun: 'Сохранить и запустить',
debugRunning: 'Выполняется',
debugTranscript: 'Журнал отладки',
debugTranscriptDescription:
'Входные данные и результаты Agent в текущем сеансе отладки.',
debugEmptyTitle: 'Проверьте поведение Agent',
debugEmptyTranscript:
'Выберите событие, введите тестовые данные и нажмите «Запустить тест». Результаты останутся на странице.',
debugAgentOutput: 'Результат Agent',
debugReasoning: 'Размышление',
debugTextOutput: 'Текстовый вывод',
debugPlatformNotice:
'Инструменты платформы используют Mock: Agent вызывает инструменты реально, но действия имитируются без отправки сообщений. Остальные инструменты выполняются согласно настройкам.',
debugToolSimulated: 'Успешная имитация · Mock',
debugStop: 'Остановить отладку',
debugMockOptions: 'Сценарий Mock (JSON)',
debugInvalidMock: 'Сценарий Mock должен быть корректным объектом JSON.',
debugToolMockFailed: 'Имитация ошибки · Mock',
debugMockOptionsHelp:
'По умолчанию вызовы успешны. Задайте ошибки по именам инструментов в errors, результаты запросов в results и неподдерживаемые API в unsupported_apis. Пример: {"errors":{"event_reply":"Имитация ошибки отправки"}}',
debugCancelled:
'Отладка остановлена. Предыдущие записи выполнения сохранены.',
debugNoToolCalls:
'Вызовы инструментов не зарегистрированы. Создание текста не означает отправку сообщения.',
debugToolCount:
'Зарегистрировано вызовов инструментов: {{count}}. Состояние и результаты приведены ниже.',
debugToolRunning: 'Выполняется',
debugToolCompleted: 'Завершено',
debugToolFailed: 'Ошибка',
debugToolInterrupted: 'Результат не получен',
debugToolArguments: 'Аргументы',
debugToolResult: 'Результат',
debugTestInput: 'Тестовый ввод',
debugNoTextOutput: 'Выполнение завершилось без текстового вывода.',
debugEventTypeRequired: 'Введите тип события',
debugInputRequired: 'Введите сообщение для диалога',
debugInvalidPayload: 'Данные события должны быть корректным объектом JSON',
debugUnsupportedEvent:
'Это событие не входит в допустимый набор событий Agent',
debugRunnerConfigInvalidDescription:
'Настройка исполнителя не завершена: {{message}}',
debugRunnerExecutionFailedDescription:
'Выполнение завершилось с ошибкой. Проверьте модель и настройки исполнителя и повторите попытку.',
debugRunnerTimeoutDescription:
'Превышено время выполнения. Повторите позже или измените тайм-аут исполнителя.',
debugApiKeyRequired: 'Отсутствует ключ API',
debugOpenRunnerConfig: 'Открыть настройки исполнителя',
debugReviewRunnerConfig: 'Проверить настройки исполнителя',
debugErrorDetails: 'Показать подробности ошибки',
debugRunFailed: 'Ошибка отладки Agent',
},
plugins: {
title: 'Расширения',
description:
'Установка и настройка плагинов для расширения функциональности. Выберите их в настройках конвейера',
createPlugin: 'Создать плагин',
editPlugin: 'Редактировать плагин',
installed: 'Установленные',
marketplace: 'Маркетплейс',
arrange: 'Сортировка плагинов',
install: 'Установить',
installPlugin: 'Установить плагин',
newPlugin: 'Новый плагин',
onlySupportGithub:
'В настоящее время поддерживается установка только с GitHub',
enterGithubLink: 'Введите ссылку на GitHub плагина',
installing: 'Установка плагина...',
installSuccess: 'Плагин успешно установлен',
installFailed: 'Ошибка установки плагина:',
searchPlugin: 'Поиск плагинов',
sortBy: 'Сортировать по',
mostStars: 'Больше всего звёзд',
recentlyAdded: 'Недавно добавленные',
recentlyUpdated: 'Недавно обновлённые',
noMatchingPlugins: 'Подходящие плагины не найдены',
loading: 'Загрузка...',
getPluginListError: 'Не удалось получить список плагинов:',
noPluginInstalled: 'Плагины не установлены',
noExtensionInstalled: 'Расширения не установлены',
searchInstalled: 'Поиск установленных расширений',
noMatchingExtensions: 'Нет расширений, соответствующих «{{query}}»',
loadingExtensions: 'Загрузка расширений...',
groupByType: 'Группировать по формату',
groupByTypeShort: 'Группа',
pluginConfig: 'Настройка плагина',
pluginSort: 'Порядок плагинов',
pluginSortDescription:
'Порядок плагинов влияет на очерёдность обработки одного события. Перетащите карточку плагина для сортировки',
pluginSortSuccess: 'Порядок плагинов обновлён',
pluginSortError: 'Ошибка сортировки плагинов: ',
pluginNoConfig: 'У плагина нет параметров настройки.',
systemDisabled: 'Система плагинов отключена',
systemDisabledDesc:
'Система плагинов не включена. Измените конфигурацию согласно документации',
connectionError: 'Ошибка подключения системы плагинов',
connectionErrorDesc:
'Проверьте конфигурацию системы плагинов или обратитесь к администратору.',
errorDetails: 'Подробности ошибки',
loadingStatus: 'Проверка статуса системы плагинов...',
failedToGetStatus: 'Не удалось получить статус системы плагинов',
pluginSystemNotReady:
'Система плагинов не готова, невозможно выполнить эту операцию',
debugInfo: 'Отладочная информация',
debugInfoTitle: 'Отладочная информация плагина',
debugUrl: 'URL для отладки',
debugKey: 'Ключ отладки',
debugKeyExpires: 'Смена в {{time}}; у каждого Workspace свой ключ',
noDebugKey: '(Не задан)',
debugKeyDisabled: 'Учетные данные отладки временно недоступны',
boxStatusTitle: 'Box Runtime',
boxStatus: 'Статус',
boxConnected: 'Подключено',
boxUnavailable: 'Недоступно',
boxBackend: 'Бэкенд',
boxProfile: 'Профиль',
boxSandboxes: 'Песочницы',
boxErrors: 'Ошибки',
boxSessionImage: 'Образ',
boxSessionBackend: 'Бэкенд',
boxSessionResources: 'Ресурсы',
boxSessionNetwork: 'Сеть',
boxStatusLoadFailed: 'Не удалось загрузить статус Box',
failedToGetDebugInfo: 'Не удалось получить отладочную информацию',
copiedToClipboard: 'Скопировано в буфер обмена',
deleting: 'Удаление...',
deletePlugin: 'Удалить плагин',
cancel: 'Отмена',
saveConfig: 'Сохранить настройки',
saving: 'Сохранение...',
confirmDeletePlugin:
'Вы уверены, что хотите удалить плагин ({{author}}/{{name}})?',
deleteDataCheckbox:
'Также удалить конфигурацию плагина и постоянное хранилище',
confirmDelete: 'Подтвердить удаление',
deleteError: 'Ошибка удаления: ',
close: 'Закрыть',
deleteConfirm: 'Подтверждение удаления',
deleteSuccess: 'Удаление успешно',
dangerZone: 'Опасная зона',
dangerZoneDescription: 'Необратимые и разрушительные действия',
modifyFailed: 'Ошибка изменения: ',
componentName: {
Tool: 'Инструмент',
EventListener: 'Обработчик событий',
Command: 'Команда',
KnowledgeEngine: 'Движок знаний',
Parser: 'Парсер',
Page: 'Страница',
Runner: 'Исполнитель',
},
uploadLocal: 'Загрузить локально',
debugging: 'Отладка',
uploadLocalPlugin: 'Загрузить локальный плагин',
localPreview: {
title: 'Предпросмотр локального пакета плагина',
unpacking: 'Распаковка пакета для предпросмотра...',
unpackComplete: 'Предпросмотр пакета готов',
failed: 'Не удалось выполнить предпросмотр пакета',
pluginInfo: 'Информация о плагине',
packageInfo: 'Информация о пакете',
name: 'Название',
author: 'Автор',
version: 'Версия',
fileCount: 'Файлы',
dependencies: 'Зависимости',
components: 'Компоненты',
ready: 'Пакет плагина распакован. Подтвердите, чтобы начать установку.',
},
uploadPluginOnly: 'Поддерживаются только пакеты плагинов .lbpkg',
dragToUpload: 'Перетащите файл плагина сюда для загрузки',
unsupportedFileType:
'Неподдерживаемый тип файла, поддерживаются только файлы .lbpkg и .zip',
uploadingPlugin: 'Загрузка плагина...',
uploadSuccess: 'Загрузка успешна',
uploadFailed: 'Ошибка загрузки',
selectFileToUpload: 'Выберите файл плагина для загрузки',
askConfirm:
'Вы уверены, что хотите установить плагин "{{name}}" ({{version}})?',
askConfirmNoVersion: 'Вы уверены, что хотите установить плагин "{{name}}"?',
fromGithub: 'С GitHub',
fromLocal: 'Из локального файла',
fromMarketplace: 'Из маркетплейса',
componentsList: 'Компоненты: ',
noComponents: 'Нет компонентов',
delete: 'Удалить плагин',
update: 'Обновить плагин',
new: 'Новый',
updateConfirm: 'Подтверждение обновления',
confirmUpdatePlugin:
'Вы уверены, что хотите обновить плагин ({{author}}/{{name}})?',
confirmUpdate: 'Подтвердить обновление',
updating: 'Обновление...',
updateSuccess: 'Плагин успешно обновлён',
updateError: 'Ошибка обновления: ',
saveConfigSuccessNormal: 'Конфигурация успешно сохранена',
saveConfigError: 'Ошибка сохранения конфигурации: ',
config: 'Настройки',
readme: 'Документация',
viewSource: 'Исходный код',
loadingReadme: 'Загрузка документации...',
noReadme: 'Этот плагин не предоставляет документацию README',
tabDocs: 'Документация',
tabLogs: 'Журналы',
logsLevelAll: 'Все уровни',
logsRefresh: 'Обновить',
logsAutoRefresh: 'Автообновление',
logsEmpty:
'Журналов пока нет. Здесь появятся логи, выводимые плагином через logger.',
fileUpload: {
tooLarge: 'Размер файла превышает лимит 10 МБ',
success: 'Файл успешно загружен',
failed: 'Ошибка загрузки файла',
uploading: 'Загрузка...',
chooseFile: 'Выбрать файл',
addFile: 'Добавить файл',
},
installFromGithub: 'С GitHub',
enterRepoUrl: 'Введите URL репозитория GitHub',
repoUrlPlaceholder: 'Напр., https://github.com/owner/repo',
fetchingReleases: 'Загрузка релизов...',
selectRelease: 'Выберите релиз',
noReleasesFound: 'Релизы не найдены',
fetchReleasesError: 'Не удалось загрузить релизы: ',
selectAsset: 'Выберите файл для установки',
noAssetsFound: 'В этом релизе нет файлов .lbpkg',
fetchAssetsError: 'Не удалось загрузить файлы: ',
backToReleases: 'Назад к релизам',
backToRepoUrl: 'Назад к URL репозитория',
backToAssets: 'Назад к файлам',
releaseTag: 'Тег: {{tag}}',
releaseName: 'Название: {{name}}',
publishedAt: 'Опубликовано: {{date}}',
prerelease: 'Предварительный релиз',
assetSize: 'Размер: {{size}}',
confirmInstall: 'Подтвердить установку',
installFromGithubDesc: 'Установить плагин из GitHub Release',
goToMarketplace: 'Перейти в маркетплейс',
installProgress: {
title: 'Установка {{name}}',
updateTitle: 'Обновление {{name}}',
titleGeneric: 'Установка плагина',
titlePlugin: 'Установка плагина {{name}}',
titleMCP: 'Установка сервера MCP {{name}}',
titleSkill: 'Установка навыка {{name}}',
overallProgress: 'Общий прогресс',
checkingUpdate: 'Проверка обновлений',
downloading: 'Загрузка плагина',
validating: 'Проверка пакета',
installingDeps: 'Установка зависимостей',
applyingUpdate: 'Применение обновления',
activating: 'Запуск и обновление компонентов',
initializing: 'Инициализация настроек',
launching: 'Запуск плагина',
completed: 'Завершено',
failed: 'Ошибка',
downloadSize: 'Размер пакета: {{size}}',
depsInfo: '{{count}} зависимостей для установки',
depsProgress:
'{{installed}}/{{total}} установлено · {{remaining}} осталось',
installComplete: 'Плагин успешно установлен',
updateComplete: 'Плагин успешно обновлён',
installCompletePlugin: 'Плагин успешно установлен',
installCompleteMCP: 'Сервер MCP успешно установлен',
installCompleteSkill: 'Навык успешно установлен',
dismiss: 'Закрыть',
background: 'В фоновом режиме',
taskQueue: 'Задачи установки',
clearCompleted: 'Очистить завершённые',
noTasks: 'Нет задач установки',
},
},
market: {
certifiedPlugin: 'Сертифицированный плагин',
certificationTooltip:
'Эта версия прошла проверку изоляции данных и совместимости с общей средой выполнения. Пакет подписан.',
certificationLearnMore: 'О сертификации',
runnerUsage: 'Назначение исполнителя',
runnerUsageAll: 'Все',
runnerUsageAgent: 'Agent / Конвейер',
runnerUsageEvent: 'Обработчик плагина',
searchPlaceholder: 'Поиск плагинов...',
searchPlaceholderCount:
'Поиск среди {{count}} расширений, возможностей или сценариев...',
searchResults: 'Найдено {{count}} расширений',
totalPlugins: 'Всего {{count}} расширений',
noPlugins: 'Нет доступных плагинов',
noResults: 'Подходящие плагины не найдены',
loadingMore: 'Загрузка ещё...',
loading: 'Загрузка...',
allLoaded: 'Все плагины отображены',
allLoadedCount: 'Показаны все {{count}} расширений',
install: 'Установить',
installCard: 'Установить {{name}}',
installedCard: '{{name}} установлен',
installed: 'Установлено',
updateAvailable: 'Доступно обновление',
installConfirm:
'Вы уверены, что хотите установить плагин "{{name}}" ({{version}})?',
downloadComplete: 'Плагин "{{name}}" загружен',
installFailed: 'Ошибка установки, попробуйте позже',
loadFailed: 'Не удалось получить список плагинов, попробуйте позже',
noDescription: 'Описание отсутствует',
recommendation: {
pause: 'Приостановить авто-прокрутку',
resume: 'Возобновить авто-прокрутку',
},
notFound: 'Информация о плагине не найдена',
sortBy: 'Сортировать по',
sort: {
hottest: 'По популярности',
recentlyAdded: 'Недавно добавленные',
recentlyUpdated: 'Недавно обновлённые',
mostDownloads: 'Больше всего загрузок',
leastDownloads: 'Меньше всего загрузок',
},
downloads: 'загрузок',
download: 'Скачать',
like: 'Нравится',
unlike: 'Убрать отметку',
likeFailed: 'Не удалось обновить отметку. Повторите попытку.',
repository: 'Репозиторий',
downloadFailed: 'Ошибка загрузки',
noReadme: 'Этот плагин не предоставляет документацию README',
description: 'Описание',
tagLabel: 'Теги',
submissionTitle: 'У вас есть плагин на рассмотрении: {{name}}',
submissionPending: 'Ваш плагин находится на рассмотрении: {{name}}',
submissionApproved: 'Ваш плагин одобрен: {{name}}',
submissionRejected: 'Ваш плагин отклонён: {{name}}',
clickToRevoke: 'Отозвать',
revokeSuccess: 'Успешно отозвано',
revokeFailed: 'Ошибка отзыва',
submissionDetails: 'Детали заявки на плагин',
markAsRead: 'Отметить как прочитанное',
markAsReadSuccess: 'Отмечено как прочитанное',
markAsReadFailed: 'Не удалось отметить как прочитанное',
filterByComponent: 'Компонент плагина',
filterByComponentHint:
'Типы возможностей, которые предоставляет плагин — инструмент (Tool), команда (Command), обработчик событий (EventListener) и т. д., — расширяющие функции LangBot. Фильтруйте по компоненту, чтобы видеть только плагины с нужной возможностью.',
allComponents: 'Все компоненты',
componentName: {
Tool: 'Инструмент',
EventListener: 'Обработчик событий',
Command: 'Команда',
KnowledgeEngine: 'Движок знаний',
Parser: 'Парсер',
Page: 'Страница',
Runner: 'Исполнитель',
},
filterByType: 'Тип',
allTypes: 'Все типы',
typePlugin: 'Плагин',
typeMCP: 'MCP',
typeSkill: 'Навык',
requestPlugin: 'Запросить плагин',
viewDetails: 'Подробнее',
deprecated: 'Устаревший',
deprecatedTooltip:
'Пожалуйста, установите соответствующий плагин движка знаний.',
filters: {
allFormats: 'Все типы',
more: 'Ещё',
advancedTitle: 'Расширенные фильтры',
advancedDescription: 'Фильтр по типу расширения',
technicalType: 'Технический тип',
},
allExtensions: 'Все расширения',
tags: {
filterByTags: 'Фильтр по тегам',
selected: 'выбрано',
selectTags: 'Выберите теги',
clearAll: 'Очистить всё',
noTags: 'Нет доступных тегов',
},
},
mcp: {
title: 'MCP',
createServer: 'Добавить MCP-сервер',
addMCPServer: 'Добавить MCP-сервер',
editServer: 'Редактировать MCP-сервер',
deleteServer: 'Удалить MCP-сервер',
confirmDeleteServer: 'Вы уверены, что хотите удалить этот MCP-сервер?',
confirmDeleteTitle: 'Удаление MCP-сервера',
getServerListError: 'Не удалось получить список MCP-серверов: ',
serverName: 'Имя сервера',
serverMode: 'Режим подключения',
selectMode: 'Выберите режим',
stdio: 'Режим Stdio',
sse: 'Режим SSE',
http: 'Режим HTTP',
local: 'Локально (Stdio)',
remote: 'Удалённо',
localModeDescription:
'Запуск MCP-сервера локально как подпроцесса внутри песочницы Box.',
remoteModeDescription:
'Подключение к удалённому MCP-серверу по URL. Транспорт (Streamable HTTP или SSE) определяется автоматически.',
remoteUrlPlaceholder: 'https://example.com/mcp',
remoteUrlDescription:
'Вставьте URL MCP-сервера. Поддерживаются как Streamable HTTP, так и устаревшие SSE-эндпоинты.',
noServerInstalled: 'MCP-серверы не настроены',
serverNameRequired: 'Имя сервера не может быть пустым',
commandRequired: 'Команда не может быть пустой',
urlRequired: 'URL не может быть пустым',
timeoutMustBePositive: 'Таймаут должен быть положительным числом',
command: 'Команда',
args: 'Аргументы',
env: 'Переменные окружения',
url: 'URL',
headers: 'Заголовки',
timeout: 'Таймаут',
toolCallTimeout: 'Таймаут вызова инструмента (секунды)',
toolCallTimeoutDescription:
'Максимальное ожидание одного вызова. 0 отключает ограничение. По умолчанию 300 секунд.',
addArgument: 'Добавить аргумент',
addEnvVar: 'Добавить переменную окружения',
addHeader: 'Добавить заголовок',
keyName: 'Имя ключа',
value: 'Значение',
testing: 'Тестирование...',
connecting: 'Подключение...',
testSuccess: 'Тест успешен',
testFailed: 'Тест не пройден: ',
testError: 'Ошибка тестирования',
refreshSuccess: 'Обновление успешно',
refreshFailed: 'Ошибка обновления: ',
connectionSuccess: 'Подключение успешно',
connectionFailed: 'Не удалось подключиться, проверьте URL',
connectionFailedStatus: 'Ошибка подключения',
connectionUnreachable:
'Сервер MCP недоступен. Проверьте, запущен ли он и доступен ли по сети.',
connectionTimeout:
'Время ожидания ответа MCP истекло. Проверьте сервис или увеличьте тайм-аут.',
connectionHttpError:
'Сервер MCP вернул HTTP {{status}}. Проверьте требования доступа и журналы сервера.',
oauthAuthorizationRequired: 'Требуется авторизация OAuth',
oauthAuthorizationRequiredSuggestion:
'Для этого MCP-сервера требуется вход через OAuth. OAuth-вход пока не поддерживается; если сервер это позволяет, добавьте заголовок Authorization вручную.',
boxDisabledStdioRefused:
'MCP-серверы в режиме stdio требуют песочницу Box, которая отключена в конфигурации (box.enabled = false).',
boxUnavailableStdioRefused:
'MCP-серверы в режиме stdio требуют песочницу Box, которая сейчас недоступна.',
boxStdioRefusedSuggestion:
'Включите Box (box.enabled = true) и убедитесь, что среда работает, либо переключите этот сервер в режим http/sse.',
boxRequired: 'требуется Box',
disabledByPolicy: 'отключено политикой',
stdioDisabledByPolicy:
'Stdio MCP отключён в этом развёртывании. Используйте удалённый MCP-сервер.',
stdioBlockedByBoxToast:
'Сохранить MCP в режиме stdio нельзя: песочница Box отключена или недоступна. Включите Box либо выберите режим http/sse.',
toolsFound: 'инструментов',
unknownError: 'Неизвестная ошибка',
noToolsFound: 'Инструменты не найдены',
noResourcesFound: 'Ресурсы не найдены',
tabTools: 'Инструменты',
tabResources: 'Ресурсы',
tabDocs: 'Документация',
tabLogs: 'Журнал',
logsLevelAll: 'Все уровни',
logsRefresh: 'Обновить',
logsAutoRefresh: 'Автообновление',
logsEmpty:
'Журналов пока нет. Здесь будут отображаться журналы выполнения MCP-сервера.',
noReadme: 'Документация отсутствует',
parseResultFailed: 'Не удалось разобрать результат теста',
noResultReturned: 'Тест не вернул результат',
getTaskFailed: 'Не удалось получить статус задачи',
noTaskId: 'Не удалось получить ID задачи',
deleteSuccess: 'Успешно удалено',
deleteFailed: 'Ошибка удаления: ',
deleteError: 'Ошибка удаления: ',
saveSuccess: 'Успешно сохранено',
saveError: 'Ошибка сохранения: ',
createSuccess: 'Успешно создано',
createFailed: 'Ошибка создания: ',
createError: 'Ошибка создания: ',
loadFailed: 'Ошибка загрузки',
modifyFailed: 'Ошибка изменения: ',
toolCount: 'Инструменты: {{count}}',
parameterCount: 'Параметры: {{count}}',
noParameters: 'Нет параметров',
resourceCount: 'Ресурсы: {{count}}',
resourceBinaryContent: 'Двоичное содержимое (невозможно отобразить)',
resourceBinaryOmitted:
'Двоичное содержимое опущено согласно политике безопасности ресурсов',
resourceTruncated: 'Содержимое усечено по лимитам байтов или токенов',
resourceReadFailed: 'Не удалось прочитать содержимое ресурса',
statusConnected: 'Подключён',
statusDisconnected: 'Отключён',
statusError: 'Ошибка подключения',
statusDisabled: 'Отключён',
loading: 'Загрузка...',
starCount: 'Звёзды: {{count}}',
install: 'Установить',
installFromGithub: 'Установить MCP-сервер с GitHub',
add: 'Добавить',
name: 'Название',
nameRequired: 'Название не может быть пустым',
sseTimeout: 'Таймаут SSE',
sseTimeoutDescription: 'Таймаут для установления SSE-соединения',
extraParametersDescription:
'Дополнительные параметры для настройки поведения MCP-сервера',
timeoutMustBeNumber: 'Таймаут должен быть числом',
timeoutNonNegative: 'Таймаут не может быть отрицательным',
sseTimeoutMustBeNumber: 'Таймаут SSE должен быть числом',
sseTimeoutNonNegative: 'Таймаут SSE не может быть отрицательным',
updateSuccess: 'Успешно обновлено',
updateFailed: 'Ошибка обновления: ',
selectFromSidebar: 'Выберите MCP-сервер из боковой панели',
dangerZone: 'Опасная зона',
dangerZoneDescription:
'Необратимые и деструктивные действия для этого MCP-сервера.',
deleteMCPAction: 'Удалить этот MCP-сервер',
deleteMCPHint:
'После удаления конфигурация этого MCP-сервера не может быть восстановлена.',
},
pipelines: {
title: 'Конвейеры',
description:
'Конвейеры определяют поток обработки событий сообщений и привязываются к ботам',
createPipeline: 'Создать конвейер',
selectFromSidebar: 'Выберите конвейер из боковой панели',
editPipeline: 'Редактировать конвейер',
chat: 'Чат',
configuration: 'Настройки',
debugChat: 'Отладочный чат',
getPipelineListError: 'Не удалось получить список конвейеров: ',
daysAgo: 'дней назад',
today: 'Сегодня',
updateTime: 'Обновлено ',
defaultBadge: 'По умолчанию',
sortBy: 'Сортировать по',
newestCreated: 'Сначала новые',
earliestCreated: 'Сначала старые',
recentlyEdited: 'Недавно изменённые',
earliestEdited: 'Давно изменённые',
basicInfo: 'Основная информация',
basicInfoDescription: 'Задайте название, иконку и описание конвейера',
managementDescription: 'Скопируйте или удалите этот конвейер.',
aiCapabilities: 'ИИ',
triggerConditions: 'Триггер',
safetyControls: 'Безопасность',
outputProcessing: 'Вывод',
nameRequired: 'Название не может быть пустым',
descriptionRequired: 'Описание не может быть пустым',
createSuccess: 'Успешно создано. Отредактируйте параметры конвейера',
createError: 'Ошибка создания: ',
saveSuccess: 'Успешно сохранено',
saveError: 'Ошибка сохранения: ',
copySuffix: ' Копия',
deleteConfirmation:
'Вы уверены, что хотите удалить этот конвейер? Боты, привязанные к нему, перестанут работать.',
defaultPipelineCannotDelete: 'Конвейер по умолчанию нельзя удалить',
deleteSuccess: 'Успешно удалено',
deleteError: 'Ошибка удаления: ',
copyConfirmTitle: 'Подтверждение копирования',
copyConfirmation:
'Вы уверены, что хотите скопировать этот конвейер? Будет создан новый конвейер со всеми настройками.',
unsavedChanges: 'У вас есть несохранённые изменения',
dangerZone: 'Опасная зона',
dangerZoneDescription: 'Необратимые и деструктивные действия',
deletePipelineAction: 'Удалить этот конвейер',
deletePipelineHint:
'После удаления боты, привязанные к этому конвейеру, перестанут работать.',
copyPipelineAction: 'Копировать этот конвейер',
copyPipelineHint: 'Создать новый конвейер с дублированием всех настроек.',
extensions: {
title: 'Расширения',
loadError: 'Не удалось загрузить плагины',
saveSuccess: 'Успешно сохранено',
saveError: 'Ошибка сохранения',
noPluginsAvailable: 'Нет доступных плагинов',
disabled: 'Отключено',
noPluginsSelected: 'Плагины не выбраны',
addPlugin: 'Добавить плагин',
selectPlugins: 'Выберите плагины',
pluginsTitle: 'Плагины',
mcpServersTitle: 'MCP-серверы',
mcpResourcesTitle: 'MCP-ресурсы',
noMCPServersSelected: 'MCP-серверы не выбраны',
noMCPResourcesAvailable: 'Нет доступных MCP-ресурсов',
addMCPServer: 'Добавить MCP-сервер',
selectMCPServers: 'Выберите MCP-серверы',
enableMCPResourceAgentRead: 'Разрешить модели чтение',
toolCount: '{{count}} инструментов',
noPluginsInstalled: 'Нет установленных плагинов',
noMCPServersConfigured: 'Нет настроенных MCP-серверов',
selectAll: 'Выбрать все',
enableAllPlugins: 'Включить все плагины',
enableAllMCPServers: 'Включить все MCP-серверы',
enableAllSkills: 'Включить все навыки',
allPluginsEnabled: 'Все плагины включены',
allMCPServersEnabled: 'Все MCP-серверы включены',
allSkillsEnabled: 'Все навыки включены',
skillsTitle: 'Навыки',
noSkillsSelected: 'Навыки не выбраны',
addSkill: 'Добавить навык',
selectSkills: 'Выбрать навыки',
noSkillsAvailable: 'Нет доступных навыков',
mcpServersScopeTooltip:
'Здесь задаётся только привязка MCP-серверов к конвейеру. Конкретные MCP-инструменты и ресурсы выбираются в AI Feature > Runner.',
enableAllMCPServersTooltip:
'Если включено, все настроенные и включённые MCP-серверы станут кандидатами для инструментов и ресурсов MCP в AI Feature.',
},
runner: {
toolsTitle: 'Инструменты',
toolsDescription:
'Выберите инструменты плагинов, MCP и встроенные инструменты для этого Runner.',
toolsScopeTooltip:
'MCP-инструменты берутся только из MCP-серверов, привязанных в Расширениях. Чтобы добавить источник, сначала привяжите там сервер.',
enableAllTools: 'Включить все инструменты',
allToolsEnabled: 'Все доступные инструменты включены',
noToolsSelected: 'Инструменты не выбраны',
editTools: 'Редактировать инструменты',
builtinTools: 'Встроенные инструменты',
pluginTools: 'Инструменты плагинов',
skillTools: 'Инструменты навыков',
mcpTools: 'Инструменты MCP',
mcpToolsScopeTooltip:
'Здесь показаны только инструменты MCP-серверов, разрешённых сейчас в Расширениях.',
skillToolsScopeTooltip:
'Инструменты навыков доступны, когда сервис навыков LangBot и backend песочницы Box готовы. Они позволяют агенту активировать или регистрировать навыки.',
selectTools: 'Выбрать инструменты',
resourcesTitle: 'Ресурсы',
resourcesDescription:
'Выберите MCP-ресурсы и базы знаний для этого Runner.',
knowledgeBases: 'Базы знаний',
mcpResources: 'MCP-ресурсы',
mcpResourcesScopeTooltip:
'Здесь показаны только ресурсы MCP-серверов, разрешённых сейчас в Расширениях.',
enableMCPResourceRead: 'Разрешить модели читать MCP-ресурсы',
mcpResourceReadTooltip:
'Если выключено, выбранные MCP-ресурсы не будут добавляться в контекст модели.',
noMCPResourcesAvailable: 'Нет доступных MCP-ресурсов',
selectKnowledgeBases: 'Выбрать базы знаний',
},
debugDialog: {
title: 'Чат конвейера',
selectPipeline: 'Выберите конвейер',
sessionType: 'Тип сессии',
privateChat: 'Личный чат',
groupChat: 'Групповой чат',
send: 'Отправить',
saveAndSend: 'Сохранить и отправить',
reset: 'Сбросить диалог',
inputPlaceholder: 'Отправить {{type}} сообщение...',
noMessages: 'Нет сообщений',
userMessage: 'Пользователь',
botMessage: 'Бот',
sendFailed: 'Ошибка отправки',
resetSuccess: 'Диалог успешно сброшен',
resetFailed: 'Ошибка сброса',
loadMessagesFailed: 'Не удалось загрузить сообщения',
loadPipelinesFailed: 'Не удалось загрузить конвейеры',
atTips: 'Упомянуть бота',
streaming: 'Потоковая передача',
streamOutput: 'Поток',
connected: 'Подключено',
disconnected: 'Отключено',
connectionError: 'Ошибка подключения WebSocket',
connectionFailed: 'Ошибка подключения WebSocket',
notConnected: 'WebSocket не подключён, повторите попытку позже',
imageUploadFailed: 'Ошибка загрузки изображения',
reply: 'Ответить',
replyTo: 'Ответ на',
showMarkdown: 'Показать Markdown',
showRaw: 'Показать исходный текст',
allMembers: 'Все участники',
file: 'Файл',
voice: 'Голос',
uploadImage: 'Загрузить изображение',
uploading: 'Загрузка...',
},
monitoring: {
rangeDays: 'Последние {{days}} дней',
customRange: 'Свой период',
rangeStart: 'Начало',
rangeEnd: 'Конец',
rangeHint: 'Начало должно быть раньше конца. Максимум 365 дней.',
autoRefreshLabel: 'Автообновление',
autoRefreshOff: 'Автообновление: выкл.',
autoRefreshEvery: 'Обновлять каждые {{seconds}} с',
title: 'Журнал выполнения',
workbench: 'Настройка и отладка',
description:
'Просмотр журналов выполнения и ошибок конвейера (за последние 24 часа)',
detailedLogs: 'Подробные журналы',
},
},
knowledge: {
title: 'Знания',
createKnowledgeBase: 'Создать базу знаний',
selectFromSidebar: 'Выберите базу знаний из боковой панели',
editKnowledgeBase: 'Редактировать базу знаний',
selectKnowledgeBase: 'Выберите базу знаний',
selectKnowledgeBases: 'Выберите базы знаний',
addKnowledgeBase: 'Добавить базу знаний',
noKnowledgeBaseSelected: 'Базы знаний не выбраны',
empty: 'Пусто',
editDocument: 'Документы',
description: 'Настройка баз знаний для улучшения ответов LLM',
metadata: 'Метаданные',
documents: 'Документы',
kbNameRequired: 'Название базы знаний не может быть пустым',
kbDescriptionRequired: 'Описание базы знаний не может быть пустым',
embeddingModelUUIDRequired: 'Модель Embedding не может быть пустой',
daysAgo: 'дней назад',
today: 'Сегодня',
kbName: 'Название базы знаний',
kbDescription: 'Описание базы знаний',
topK: 'Top K',
topKRequired: 'Top K не может быть пустым',
topKMax: 'Максимальное значение Top K — 30',
topKdescription:
'Указывает количество релевантных документов для извлечения, от 1 до 30.',
defaultDescription: 'База знаний',
embeddingModelUUID: 'Модель Embedding',
selectEmbeddingModel: 'Выберите модель Embedding',
embeddingModelDescription:
'Используется для векторизации текста. Настроить можно на странице моделей',
updateTime: 'Обновлено ',
cannotChangeEmbeddingModel:
'Модель Embedding нельзя изменить после создания базы знаний',
updateKnowledgeBaseSuccess: 'База знаний успешно обновлена',
updateKnowledgeBaseFailed: 'Ошибка обновления базы знаний: ',
documentsTab: {
name: 'Название',
status: 'Статус',
noResults: 'Нет документов',
dragAndDrop: 'Перетащите файлы сюда или нажмите для загрузки',
uploading: 'Загрузка...',
supportedFormats:
'Поддерживаются PDF, Word, TXT, Markdown, HTML, ZIP и другие форматы',
uploadSuccess: 'Файл успешно загружен!',
uploadError: 'Ошибка загрузки файла: ',
uploadingFile: 'Загрузка файла...',
fileSizeExceeded:
'Размер файла превышает 10 МБ. Разделите на файлы меньшего размера.',
actions: 'Действия',
delete: 'Удалить файл',
fileDeleteSuccess: 'Файл успешно удалён',
fileDeleteFailed: 'Ошибка удаления файла: ',
processing: 'Обработка',
completed: 'Завершено',
failed: 'Ошибка',
selectParser: 'Выберите парсер',
builtInParser: 'Предоставлено движком знаний',
noParserAvailable:
'Нет парсера, поддерживающего этот тип файла. Установите плагин-парсер для этого формата.',
installParserHint: 'Найти плагины-парсеры в маркетплейсе →',
confirmUpload: 'Загрузить',
cancelUpload: 'Отмена',
},
deleteKnowledgeBaseConfirmation:
'Вы уверены, что хотите удалить эту базу знаний? Все документы будут удалены.',
retrieve: 'Тест извлечения',
retrieveTest: 'Тест извлечения',
query: 'Запрос',
queryPlaceholder: 'Введите текст запроса...',
distance: 'Расстояние',
content: 'Содержимое',
fileName: 'Имя файла',
noResults: 'Нет результатов',
retrieveError: 'Ошибка извлечения: ',
unknownEngine: 'Неизвестный движок',
knowledgeEngine: 'Движок знаний',
knowledgeEngineRequired: 'Движок знаний обязателен',
selectKnowledgeEngine: 'Выберите движок знаний',
installedEngines: 'Установленные движки знаний',
noInstalledEngines: 'Плагины движков знаний ещё не установлены.',
marketplaceEngines: 'Плагины движков знаний в магазине',
noMarketplaceEngines: 'Нет доступных плагинов движков знаний.',
loadingEngineCatalog: 'Загрузка плагинов из магазина…',
engineCatalogUnavailable:
'Магазин временно недоступен. Откройте список выбора заново для повтора.',
viewMarketplace: 'Открыть магазин',
installingEngine: 'Установка {{engine}}…',
engineInstallSuccess: '{{engine}} установлен и доступен для выбора',
engineInstallFailed:
'Не удалось установить движок знаний. Повторите попытку.',
engineVersionUnavailable:
'У этого плагина нет доступной для установки версии.',
engineInstallTimeout:
'Установка продолжается. Обновите страницу для проверки.',
engineRegistrationTimeout:
'Плагин установлен, но движок знаний ещё не готов.',
builtInEngine: 'Встроенный движок',
cannotChangeKnowledgeEngine: 'Движок знаний нельзя изменить после создания',
basicInfo: 'Основная информация',
basicInfoDescription: 'Задайте название, иконку и описание базы знаний',
engineSettings: 'Настройки движка',
engineSettingsDescription: 'Конфигурация выбранного движка знаний',
engineSettingsReadonly: 'только чтение в режиме редактирования',
engineSettingsInvalid:
'Настройки движка недействительны, проверьте обязательные поля',
retrievalSettingsInvalid:
'Настройки извлечения недействительны, проверьте обязательные поля',
retrievalSettings: 'Настройки извлечения',
retrievalSettingsDescription:
'Настройте способ извлечения документов из базы знаний',
dangerZone: 'Опасная зона',
dangerZoneDescription: 'Необратимые и деструктивные действия',
deleteKbAction: 'Удалить эту базу знаний',
deleteKbHint:
'После удаления все документы и данные будут безвозвратно удалены.',
noEnginesAvailable: 'Нет доступных движков баз знаний',
installEngineHint: 'Сначала установите плагин «Движок знаний»',
createKnowledgeBaseFailed: 'Ошибка создания базы знаний: ',
loadKnowledgeBaseFailed: 'Ошибка загрузки базы знаний: ',
deleteKnowledgeBaseFailed: 'Ошибка удаления базы знаний: ',
getKnowledgeBaseListError: 'Не удалось получить список баз знаний: ',
embeddingModel: 'Модель Embedding',
embeddingModelRequired: 'Модель Embedding обязательна для этого движка',
addExternal: 'Добавить внешнюю базу знаний',
createExternalSuccess: 'Внешняя база знаний успешно создана',
updateExternalSuccess: 'Внешняя база знаний успешно обновлена',
deleteExternalSuccess: 'Внешняя база знаний успешно удалена',
retriever: 'Ретривер',
selectRetriever: 'Выберите ретривер...',
retrieverConfiguration: 'Настройка ретривера',
retrieverInstallInfo: 'Вы можете установить плагины ретривера знаний из',
retrieverMarketLink: 'маркетплейса',
migration: {
title: 'Миграция базы знаний',
description:
'Новая версия переработала базы знаний в архитектуру на основе плагинов. Требуется миграция данных. Старые данные автоматически сохранены в базе данных.',
detected:
'Найдено {{total}} баз знаний для миграции ({{internal}} внутренних, {{external}} внешних).',
startWithInstall: 'Автоустановка плагина и миграция',
startDataOnly: 'Только миграция данных',
dataOnlyHint:
'«Только миграция данных» подходит для офлайн/интранет-сред. Установите плагин вручную после миграции.',
dismiss: 'Отклонить исходные данные',
running: 'Миграция баз знаний, пожалуйста, подождите...',
success: 'Миграция базы знаний завершена',
error: 'Ошибка миграции базы знаний: ',
dismissError: 'Ошибка операции',
retry: 'Повторить',
},
},
register: {
title: 'Инициализация LangBot 👋',
description: 'Вы впервые запускаете LangBot',
adminAccountNote:
'Указанная учётная запись будет настроена как администратор',
register: 'Регистрация',
initWithSpace: 'Инициализация с аккаунтом LangBot',
spaceRecommended:
'Рекомендуется: Используйте официальные стабильные API моделей и облачные сервисы',
spaceInfoTip1:
'Space предоставляет единую службу аутентификации без загрузки конфиденциальной информации.',
spaceInfoTip2:
'Вход с аккаунтом LangBot даёт доступ к моделям LangBot и облачным сервисам, включая бесплатные кредиты для быстрого старта.',
spaceInfoTip3:
'Способ входа не влияет на другие функции. Вы можете настроить модели из других источников в любое время.',
registerLocal: 'Зарегистрировать локальную учётную запись',
registerWithPassword: 'Зарегистрироваться с email и паролем',
initSuccess: 'Инициализация успешна, пожалуйста, войдите',
initFailed: 'Ошибка инициализации: ',
},
resetPassword: {
title: 'Сброс пароля 🔐',
description:
'Введите ключ восстановления и новый пароль для сброса пароля учётной записи',
recoveryKey: 'Ключ восстановления',
recoveryKeyDescription:
'Хранится в `system.recovery_key` файла конфигурации `data/config.yaml`',
newPassword: 'Новый пароль',
enterRecoveryKey: 'Введите ключ восстановления',
enterNewPassword: 'Введите новый пароль',
recoveryKeyRequired: 'Ключ восстановления не может быть пустым',
newPasswordRequired: 'Новый пароль не может быть пустым',
resetPassword: 'Сбросить пароль',
resetting: 'Сброс...',
resetSuccess: 'Пароль успешно сброшен, пожалуйста, войдите',
resetFailed: 'Ошибка сброса пароля, проверьте email и ключ восстановления',
secondFactorFailed: 'Проверка не удалась, проверьте код и попробуйте снова',
backToLogin: 'Вернуться к входу',
verifyWith: 'Способ проверки',
methodRecoveryKey: 'Ключ восстановления',
methodTotp: 'Аутентификатор',
methodRecoveryCode: 'Код восстановления',
totpCode: 'Код аутентификатора',
totpCodeDescription: 'Введите 6-значный код из приложения-аутентификатора',
totpCodeRequired: 'Код аутентификатора не может быть пустым',
enterTotpCode: 'Введите 6-значный код',
recoveryCode: 'Код восстановления',
recoveryCodeDescription:
'Введите один из одноразовых кодов восстановления, сохранённых при включении двухфакторной аутентификации',
recoveryCodeRequired: 'Код восстановления не может быть пустым',
enterRecoveryCodeValue: 'Введите код восстановления',
},
embedding: {
description: 'Управление моделями Embedding для векторизации текста',
createModel: 'Создать модель Embedding',
editModel: 'Редактировать модель Embedding',
getModelListError: 'Не удалось получить список моделей Embedding: ',
embeddingModels: 'Embedding',
extraParametersDescription:
'Будут добавлены к телу запроса, например encoding_format, dimensions и т.д.',
},
llm: {
description: 'Управление LLM-моделями для генерации диалогов',
llmModels: 'LLM',
extraParametersDescription:
'Будут добавлены к телу запроса, например max_tokens, temperature, top_p и т.д.',
},
version: {
newVersionAvailable: 'Доступна новая версия',
viewUpdateGuide: 'Руководство по обновлению',
noReleaseNotes: 'Примечания к выпуску недоступны',
},
account: {
settings: 'Настройки аккаунта',
settingsDescription: 'Управление паролем и связанными аккаунтами',
setPassword: 'Установить пароль',
passwordSetSuccess: 'Пароль успешно установлен',
passwordStatus: 'Локальный пароль',
passwordSet: 'Установлен',
passwordNotSet: 'Не установлен',
passwordSetDescription:
'Пароль установлен, вы можете входить с email и паролем',
spaceStatus: 'Аккаунт LangBot',
spaceBound: 'Привязан',
spaceNotBound: 'Не привязан',
spaceBoundDescription:
'Аккаунт LangBot привязан, доступны официальные API моделей и облачные сервисы',
bindSpace: 'Привязать аккаунт LangBot',
bindSpaceDescription:
'Привяжите для использования официальных API моделей и облачных сервисов',
bindSpaceButton: 'Привязать',
bindSpaceConfirmTitle: 'Подтверждение привязки',
bindSpaceConfirmDescription:
'Вы собираетесь привязать локальный экземпляр к аккаунту LangBot',
bindSpaceWarning:
'После привязки ваш email для входа будет изменён с {{localEmail}} на email аккаунта LangBot.',
bindSpaceSuccess: 'Аккаунт LangBot успешно привязан',
passkeySectionTitle: 'Ключи доступа (Passkey)',
passkeySectionDesc:
'Безопасный вход без пароля с помощью биометрии или аппаратного ключа',
addPasskey: 'Добавить ключ доступа',
passkeyName: 'Название ключа',
passkeyNamePlaceholder: 'например, MacBook Touch ID, YubiKey',
passkeyCreated: 'Создан {{date}}',
passkeyLastUsed: 'Последнее использование: {{date}}',
noPasskeys: 'Нет зарегистрированных ключей доступа',
deletePasskeyConfirm:
'Вы уверены, что хотите удалить этот ключ доступа? Вы больше не сможете использовать его для входа.',
passkeyAddedSuccess: 'Ключ доступа успешно добавлен',
passkeyDeleteSuccess: 'Ключ доступа удален',
passkeyRenameSuccess: 'Ключ доступа успешно переименован',
totpSectionTitle: 'Двухфакторная аутентификация',
totpSectionDesc:
'Добавьте одноразовый пароль на основе времени как второй фактор входа',
totpEnabledDesc:
'Двухфакторная аутентификация включена · осталось кодов восстановления: {{count}}',
enableTotp: 'Включить',
manageTotp: 'Управление',
totpEnrollTitle: 'Включить двухфакторную аутентификацию',
totpEnrollDesc:
'Отсканируйте QR-код в приложении-аутентификаторе и подтвердите сгенерированный код',
totpStartEnroll: 'Создать секрет',
totpGeneratingSecret: 'Создание нового секрета…',
totpManageTitle: 'Двухфакторная аутентификация',
totpManageDesc:
'Перегенерируйте коды восстановления или отключите второй фактор.',
totpRegenerateCodes: 'Перегенерировать коды восстановления',
totpRegenerateDesc:
'Введите текущий код аутентификатора или код восстановления, чтобы получить новый набор.',
totpRecoveryCodesRegenerated: 'Новые коды восстановления созданы',
totpStatusDisabled: 'Не включено',
totpCodesRemaining: 'Осталось кодов восстановления: {{count}}',
totpManagerSectionDesc:
'Владельцы и администраторы могут просматривать и сбрасывать второй фактор аккаунтов этого рабочего пространства.',
revokeTotp: 'Перепривязать',
totpAdminResetTitle:
'Перепривязать двухфакторную аутентификацию для {{user}}',
totpAdminResetDesc:
'Попросите аккаунт отсканировать QR-код в приложении-аутентификаторе и ввести ниже 6-значный код для завершения.',
totpAdminResetWarning:
'После начала перепривязки текущий аутентификатор {{user}} сразу перестанет работать.',
totpAdminResetHint:
'Если аккаунт сейчас не может войти, он может отсканировать этот QR-код в любом приложении-аутентификаторе.',
totpAdminHandOverCodes:
'Передайте эти коды восстановления {{user}}. Они показываются только один раз.',
revokeTotpConfirm:
'Отключить двухфакторную аутентификацию для {{user}}? После этого вход будет возможен только по паролю.',
revokeTotpSuccess: 'Двухфакторная аутентификация сброшена',
you: 'вы',
noAccounts: 'Нет аккаунтов для отображения',
totpRefreshSecret: 'Обновить QR-код',
totpQrAlt: 'QR-код двухфакторной аутентификации',
totpEnterCode: 'Код подтверждения',
enterCode: 'Введите код',
totpVerifyAndEnable: 'Подтвердить и включить',
totpOrRecoveryCode: 'Код аутентификатора или восстановления',
totpStatusEnabled: 'Двухфакторная аутентификация включена',
totpLastUsed: 'Последняя проверка: {{date}}',
totpNeverUsed: 'Ещё не использовалось',
disableTotp: 'Отключить двухфакторную аутентификацию',
disableTotpDesc:
'Введите текущий код аутентификатора или код восстановления, чтобы отключить двухфакторную аутентификацию',
totpEnabledSuccess: 'Двухфакторная аутентификация включена',
totpDisabledSuccess: 'Двухфакторная аутентификация отключена',
totpInvalidCode: 'Неверный код, проверьте и попробуйте снова',
totpRecoveryCodesTitle: 'Коды восстановления',
totpRecoveryCodesDesc:
'Сохраните эти одноразовые коды восстановления в надёжном месте. Они показываются только один раз.',
totpRecoveryCodesWarning:
'Каждый код работает один раз. Если вы потеряете аутентификатор и эти коды, вы потеряете доступ к входу.',
totpSavedCodes: 'Я сохранил эти коды',
regenerateRecoveryCodes: 'Перегенерировать коды восстановления',
bindSpaceFailed: 'Не удалось привязать аккаунт LangBot',
bindSpaceInvalidState:
'Недействительный запрос привязки. Повторите попытку из настроек аккаунта.',
setPasswordHint: 'Установите пароль для входа с email и паролем',
spaceEmailMismatch:
'Email входа с аккаунтом LangBot не совпадает с email локальной учётной записи',
space_account_not_registeredTitle: 'Account not registered',
space_account_not_registered:
'No local account is registered for this LangBot Account email. Ask the Workspace owner for an invitation.',
space_account_binding_requiredTitle: 'LangBot Account connection required',
space_account_binding_required:
'This local account must connect a LangBot Account from Account settings before using LangBot Account login.',
},
workspace: {
title: 'Workspace',
description: 'Manage members, roles, and invitation links',
selectTitle: 'Choose a Workspace',
selectDescription: 'Select where you want to continue in LangBot.',
selectionLoadFailed:
'Your Workspaces could not be loaded. Please try again.',
switchWorkspace: 'Switch Workspace',
settings: 'Workspace Settings',
currentPlan: 'Current plan',
planUnavailable: 'Unavailable',
upgradePlan: 'Change or upgrade plan',
ossSingletonDescription:
'This self-hosted instance has one Workspace and can include multiple users.',
cloudManagedDescription:
'This Workspace is hosted by LangBot Cloud. Manage members here; billing opens in Cloud.',
loadFailed: 'Failed to load Workspace information',
members: 'Members',
you: 'You',
inviteMember: 'Invite a member',
inviteDescription:
'Create a one-time link to add another user to this Workspace.',
emailPlaceholder: '[email protected]',
createInvitation: 'Create invitation',
invitationCreated: 'Invitation created',
delivery: {
sent: 'Invitation sent',
link_only: 'Invitation link created',
failed: 'Invitation link created, but email could not be sent',
},
invitationCreateFailed: 'Failed to create invitation',
oneTimeLinkWarning: 'Copy this link now. It is shown only once.',
copyInvitation: 'Copy invitation link',
invitationCopied: 'Invitation link copied',
pendingInvitations: 'Pending invitations',
expiresAt: 'Expires {{date}}',
revokeInvitation: 'Revoke invitation',
invitationRevoked: 'Invitation revoked',
invitationRevokeFailed: 'Failed to revoke invitation',
acceptInvitation: 'Accept invitation',
invitedToWorkspace: 'You were invited to {{workspace}}',
checkingInvitation: 'Checking this invitation...',
invitationMissing: 'This invitation link is missing required information.',
invitationExpired: 'This invitation has expired.',
invitationAlreadyRevoked: 'This invitation was revoked.',
invitationAlreadyUsed: 'This invitation was already used.',
invitationInvalid: 'This invitation is invalid or no longer available.',
invitationAccepted: 'Invitation accepted',
invitationAcceptFailed: 'Failed to accept invitation',
invitationEmailMismatch:
'This invitation belongs to a different email address.',
existingAccountLoginRequired:
'An account already exists for this email. Sign in to continue.',
acceptAsCurrentAccount: 'Accept with current account',
authenticatedInvitationNotice:
'Sign out first, then sign in with the invited account. Your invitation will be preserved.',
logoutAndReturn: 'Sign out and return to this invitation',
switchAccount: 'Switch account',
registerAndAccept: 'Create account and accept',
alreadyHaveAccount: 'I already have an account',
confirmPassword: 'Confirm password',
passwordMinimum: 'Password must contain at least 8 characters.',
passwordMismatch: 'The passwords do not match.',
backToLogin: 'Back to sign in',
memberUpdated: 'Member role updated',
memberUpdateFailed: 'Failed to update member role',
removeMember: 'Remove member',
removeMemberConfirm: 'Remove this member from the Workspace?',
memberRemoved: 'Member removed',
memberRemoveFailed: 'Failed to remove member',
transferOwnership: 'Transfer ownership',
types: {
personal: 'Personal',
team: 'Team',
},
roles: {
owner: 'Owner',
admin: 'Admin',
developer: 'Developer',
operator: 'Operator',
viewer: 'Viewer',
},
},
monitoring: {
rangeDays: 'Последние {{days}} дней',
customRange: 'Свой период',
rangeStart: 'Начало',
rangeEnd: 'Конец',
rangeHint: 'Начало должно быть раньше конца. Максимум 365 дней.',
autoRefreshLabel: 'Автообновление',
autoRefreshOff: 'Автообновление: выкл.',
autoRefreshEvery: 'Обновлять каждые {{seconds}} с',
unified: {
inputs: 'Событие и ввод',
outputs: 'Сгенерированные результаты',
deliveries: 'Записи отправки',
conversation: 'Контекст диалога',
related: 'Связанные запуски',
events: 'События выполнения',
llm_calls: 'Вызовы модели',
tool_calls: 'Вызовы инструментов',
errors: 'Ошибки',
payload: 'Подробности',
metadata: 'Технические сведения',
loadMore: 'Загрузить ещё',
noRecords: 'Нет записей',
contextHint: 'Другие сообщения могут не относиться к этому запуску.',
unhandled: 'Обработчик не запущен',
roles: {
user: 'Пользователь',
assistant: 'Ассистент',
system: 'Система',
tool: 'Инструмент',
},
},
execution: {
title: 'Выполнения',
subtitle:
'Все входящие события и вызванные ими выполнения агентов и конвейеров.',
tabs: { executions: 'Выполнения' },
filters: {
source: 'Тип',
sourceAll: 'Все типы',
sourceAgent: 'Агенты',
sourcePipeline: 'Конвейеры',
mode: 'Режим выполнения',
modeAll: 'Обычные и отладочные',
modeLive: 'Только обычные',
modeDebug: 'Только отладочные',
status: 'Статус',
statusAll: 'Все статусы',
},
status: {
completed: 'Завершено',
failed: 'Ошибка',
running: 'Выполняется',
queued: 'В очереди',
cancelled: 'Отменено',
ignored: 'Пропущено',
},
// prettier-ignore
kind: {
agent: 'Агент',
pipeline: 'Конвейер',
processor: 'Обработчик',
},
columns: {
time: 'Время',
target: 'Обработчик',
status: 'Статус',
duration: 'Длительность',
tokens: 'Токены',
},
debug: 'Отладка',
empty: 'За этот период выполнений нет',
loading: 'Загрузка выполнений...',
triggeredBy: 'Запущено: {{trigger}}',
cards: {
latencyHint:
'P50/P95: около 50%/95% запусков завершаются за это время. Только недавние завершённые запуски Agent, без ожидания в очереди.',
tokensHint:
'Учитывается только записанный расход. Итог может быть неполным, если модель не возвращает расход.',
totalExecutions: 'Выполнения',
bySource: 'Агенты: {{agent}} · Конвейеры: {{pipeline}}',
successRate: 'Доля успешных выполнений',
successRateHint:
'Успешные ÷ (успешные + неудачные). Текущие, пропущенные и отменённые запуски исключены.',
denominator: 'Успешно: {{completed}} из {{denominator}} завершившихся',
running: 'Выполняется',
queued: 'В очереди',
waiting: 'Ожидание ввода',
failed: 'Ошибка',
ignored: 'Пропущено',
latency: 'Время выполнения',
p50: 'P50',
p95: 'P95',
sample: 'выборка: {{count}} выполнений',
tokens: 'Токены',
coverage: 'расход указан для {{withUsage}}/{{calls}} вызовов',
debugRuns: 'В том числе отладочных выполнений: {{count}}',
},
detail: {
title: 'Выполнение',
timeline: 'Хронология',
executionId: 'ID выполнения',
eventId: 'Событие',
queue: 'Очередь',
runner: 'Исполнитель',
created: 'Создано',
duration: 'Длительность',
usage: 'Расход',
noEvents: 'События трассировки не записаны',
query: 'Входящее сообщение',
modelCalls: 'Вызовы моделей',
toolCalls: 'Вызовы инструментов',
errors: 'Ошибки',
loadError: 'Не удалось загрузить трассировку выполнения',
openObject: 'Открыть объект',
a11yDescription: 'Полная трассировка этого выполнения',
},
},
title: 'Мониторинг',
description:
'Мониторинг активности ботов, вызовов LLM и производительности системы',
overview: 'Обзор',
totalMessages: 'Всего сообщений',
llmCallsCount: 'Вызовы LLM',
modelCallsCount: 'Вызовы моделей',
successRate: 'Доля успешных',
activeSessions: 'Активные сессии',
last24Hours: 'За последние 24 часа',
filters: {
title: 'Фильтры',
bot: 'Бот',
pipeline: 'Конвейер',
allBots: 'Все боты',
selectBot: 'Выберите бота',
processor: 'Обработчик',
allProcessors: 'Все обработчики',
selectProcessor: 'Выберите обработчик',
allPipelines: 'Все конвейеры',
selectPipeline: 'Выберите конвейер',
loading: 'Загрузка...',
timeRange: 'Период',
customRange: 'Произвольный период',
from: 'С',
to: 'По',
apply: 'Применить',
reset: 'Сбросить фильтры',
lastHour: 'За последний час',
last6Hours: 'За последние 6 часов',
last24Hours: 'За последние 24 часа',
last7Days: 'За последние 7 дней',
last30Days: 'За последние 30 дней',
},
tabs: {
messages: 'Записи сообщений',
llmCalls: 'Вызовы LLM',
embeddingCalls: 'Вызовы Embedding',
modelCalls: 'Вызовы моделей',
tokens: 'Мониторинг токенов',
feedback: 'Обратная связь',
sessions: 'Анализ сессий',
errors: 'Журнал ошибок',
},
pipelineTrace: {
received: 'Входящее сообщение',
processing: 'Обработка',
replies: 'Ответы',
noSteps: 'Вызовы моделей и инструментов не зарегистрированы',
success: 'Успешно',
error: 'Ошибка',
pending: 'Ожидание',
},
messageList: {
timestamp: 'Время',
bot: 'Бот',
pipeline: 'Конвейер',
message: 'Сообщение',
sessionId: 'ID сессии',
status: 'Статус',
actions: 'Действия',
viewDetails: 'Подробнее',
copyId: 'Копировать ID',
noMessages: 'Сообщения не найдены',
noMessagesDescription: 'Попробуйте изменить фильтры или проверьте позже',
loading: 'Загрузка сообщений...',
loadMore: 'Загрузить ещё',
autoRefresh: 'Автообновление',
platform: 'Роль',
user: 'Пользователь',
level: 'Уровень',
runner: 'Обработчик',
viewConversation: 'Просмотр диалога',
turns: '{{count}} диалоговых ходов',
userMessage: 'Пользователь',
noUserMessage: 'Ввод пользователя не записан',
assistantMessage: 'Ассистент',
assistantMessageCount: 'Ассистент +{{count}}',
noAssistantMessage: 'Ответ ассистента не записан',
messageCount: 'Сообщения',
conversationTrace: 'Ход диалога',
noLlmCalls: 'Вызовы модели не записаны',
roles: {
user: 'Пользователь',
assistant: 'Ассистент',
message: 'Сообщение',
},
},
llmCalls: {
title: 'Вызовы LLM',
model: 'Модель',
tokens: 'Токены',
duration: 'Длительность',
cost: 'Стоимость',
noData: 'Вызовы LLM не найдены',
inputTokens: 'Входные токены',
outputTokens: 'Выходные токены',
totalTokens: 'Всего токенов',
avgDuration: 'Средняя длительность',
calls: 'Вызовы',
},
toolCalls: {
title: 'Вызовы инструментов',
totalCalls: 'Вызовы',
duration: 'Длительность инструментов',
errorCalls: 'Неудачные вызовы',
arguments: 'Аргументы',
result: 'Результат',
noToolCalls: 'Вызовы инструментов не записаны',
showDetails: 'Показать детали',
hideDetails: 'Скрыть детали',
},
tokens: {
totalTokens: 'Всего токенов',
inputTokens: 'Входные токены',
outputTokens: 'Выходные токены',
avgPerCall: 'Сред. / вызов',
throughput: 'Пропускная способность',
tokensPerSec: 'токенов/сек',
errorCalls: 'Неуспешные вызовы',
acrossCalls: 'за {{count}} вызов(ов)',
ofTotal: 'из {{count}} всего',
usageOverTime: 'Использование токенов со временем',
byModel: 'По модели',
model: 'Модель',
calls: 'Вызовы',
avgLatency: 'Сред. задержка',
noData: 'Нет использования токенов в выбранном диапазоне времени',
loadError: 'Не удалось загрузить статистику токенов: {{error}}',
zeroTokenWarning:
'{{count}} успешный(ых) вызов(ов) сообщили о нулевом использовании токенов. Обычно это означает, что вышестоящий провайдер не вернул информацию об использовании — проверьте настройки провайдера модели.',
bucket: {
hour: 'По часам',
day: 'По дням',
},
},
embeddingCalls: {
title: 'Вызовы Embedding',
model: 'Модель',
tokens: 'Токены',
duration: 'Длительность',
noData: 'Вызовы Embedding не найдены',
promptTokens: 'Токены запроса',
totalTokens: 'Всего токенов',
inputCount: 'Количество входов',
knowledgeBase: 'База знаний',
queryText: 'Запрос',
},
modelCalls: {
title: 'Вызовы моделей',
llmModel: 'LLM',
embeddingModel: 'Embedding',
embeddingCall: 'Embedding',
retrieveCall: 'Извлечение',
noData: 'Вызовы моделей не найдены',
},
sessions: {
sessionId: 'ID сессии',
messageCount: 'Сообщений',
duration: 'Длительность',
lastActivity: 'Последняя активность',
noSessions: 'Сессии не найдены',
startTime: 'Время начала',
messageStats: 'Статистика сообщений',
totalMessages: 'Всего сообщений',
successMessages: 'Успешных',
errorMessages: 'С ошибками',
llmStats: 'Статистика LLM',
noData: 'Сессия не найдена',
},
errors: {
title: 'Ошибки',
errorType: 'Тип ошибки',
errorMessage: 'Сообщение об ошибке',
occurredAt: 'Время возникновения',
noErrors: 'Ошибки не найдены',
stackTrace: 'Стек вызовов',
},
feedback: {
title: 'Обратная связь',
totalFeedback: 'Всего отзывов',
totalLikes: 'Лайков',
totalDislikes: 'Дизлайков',
satisfactionRate: 'Уровень удовлетворённости',
like: 'Нравится',
dislike: 'Не нравится',
noFeedback: 'Отзывов пока нет',
noFeedbackDescription: 'Отзывы пользователей будут отображаться здесь',
feedbackList: 'Список отзывов',
feedbackContent: 'Содержание отзыва',
contextInfo: 'Контекстная информация',
userId: 'ID пользователя',
messageId: 'ID сообщения',
streamId: 'ID потока',
inaccurateReasons: 'Причины неточности',
platform: 'Платформа',
exportFeedback: 'Экспорт отзывов',
description:
'Tell us what went wrong or what could be better. Instance UUID and login account are included for diagnosis.',
placeholder: 'Describe your suggestion, issue, or reproduction steps...',
attachImage: 'Add image',
screenshot: 'Screenshot',
submit: 'Submit feedback',
privacyHint:
'Do not include secrets, passwords, or private chat content.',
contentRequired: 'Please enter feedback first',
imageOnly: 'Only image attachments are supported',
imageTooLarge: 'Each image must be under 1MB',
tooManyImages: 'You can attach up to 3 images',
screenshotFailed: 'Screenshot failed. Try pasting or uploading an image.',
submitSuccess: 'Feedback submitted. Thanks!',
submitFailed: 'Failed to submit feedback. Please try again later.',
removeImage: 'Remove image',
},
queries: {
title: 'Запросы',
},
messageDetails: {
noData: 'Нет вызовов LLM или ошибок для этого запроса',
},
queryVariables: {
title: 'Переменные запроса',
},
loadError: 'Не удалось загрузить данные мониторинга',
partialMessages:
'Показано {{shown}} из {{total}} сообщений. Трассировки диалогов могут быть неполными.',
partialModelCalls: 'Показано {{shown}} из {{total}} вызовов модели.',
partialToolCalls:
'Показано {{shown}} из {{total}} вызовов инструментов. Трассировки диалогов могут быть неполными.',
partialErrors: 'Показано {{shown}} из {{total}} ошибок.',
trafficChart: {
unavailable: 'Агрегированные данные трафика недоступны',
truncated: 'Диапазон трафика обрезан. Выберите более короткий период.',
title: 'Обзор трафика',
messages: 'Сообщения',
llmCalls: 'Вызовы LLM',
noData: 'Нет данных о трафике',
},
viewMonitoring: 'Мониторинг',
refreshData: 'Обновить данные',
exportData: 'Экспорт данных',
export: {
title: 'Экспорт данных',
exporting: 'Экспорт...',
messages: 'Сообщения',
llmCalls: 'Вызовы LLM',
embeddingCalls: 'Вызовы Embedding',
errors: 'Журнал ошибок',
sessions: 'Сессии',
feedback: 'Отзывы пользователей',
},
systemStatus: 'Состояние системы',
pluginRuntime: 'Среда плагинов',
boxRuntime: 'Среда Box',
connected: 'Подключено',
disconnected: 'Отключено',
disabled: 'Отключено',
statusDetail: 'Статус',
pluginDisabled: 'Система плагинов отключена',
boxDisabled:
'Песочница Box отключена в конфигурации — инструменты песочницы, добавление/редактирование навыков и stdio MCP недоступны',
boxUnavailable:
'Песочница Box недоступна — инструменты песочницы, добавление/редактирование навыков и stdio MCP недоступны',
boxRequiredHint:
'Для этой функции требуется среда Box. Включите её в конфигурации (box.enabled = true) и убедитесь, что соединение работает.',
boxBackend: 'Бэкенд',
boxProfile: 'Профиль',
boxSandboxes: 'Песочницы',
boxSessionCreated: 'Создано',
boxSessionLastUsed: 'Последнее использование',
},
settingsDialog: {
title: 'Настройки',
nav: {
workspace: 'Workspace',
operationTrace: 'Журнал',
models: 'Модели',
api: 'API',
storage: 'Хранилище',
account: 'Аккаунт',
},
},
operationTrace: {
title: 'Журнал операций',
description: 'Отслеживание изменений и просмотров администраторов',
reset: 'Сбросить',
settingsUpdated: 'Настройки сохранены',
settingsUpdateFailed: 'Не удалось сохранить настройки',
levelBadge: 'Уровень: {{level}}',
collectionSettings: 'Настройки сбора',
captureLevel: 'Уровень записи',
retention: 'Хранение',
retentionDays: 'Дней хранения',
maxRows: 'Максимум записей',
dedupeWindow: 'Окно дедупликации (с)',
records: 'Записи операций',
changesCount: 'Изменений: {{count}}',
hideDetails: 'Скрыть детали',
export: 'Скачать журнал',
exportFailed: 'Не удалось скачать журнал операций',
empty: 'Записей операций пока нет',
systemActor: 'Система',
pageInfo: '{{from}}-{{to}} из {{total}}',
previousPage: 'Предыдущая страница',
nextPage: 'Следующая страница',
filterAction: 'Действие',
filterAllActions: 'Все действия',
filterResource: 'Ресурс',
filterAllResources: 'Все ресурсы',
filterActor: 'Исполнитель',
filterAllActors: 'Все исполнители',
loadFailed: 'Не удалось загрузить журнал операций',
refresh: 'Обновить',
save: 'Сохранить',
redacted: 'Скрыто',
tamperedBadge: 'Возможна подмена',
verifiedBadge: 'Проверено',
integrityFailedCount: 'Несовпадение хэша: {{count}}',
chainFailedCount: 'Разрыв связи: {{count}}',
scanTruncated: 'Проверены только последние {{count}}',
emptyFiltered: 'По текущим фильтрам нет записей, требующих проверки',
mutationsOnly: 'Только изменения',
today: 'Сегодня',
yesterday: 'Вчера',
unknownDay: 'Неизвестное время',
showDetails: 'Подробнее',
moreChanges: 'ещё {{count}}',
elidedValue: '{{count}} символов',
levels: {
off: {
label: 'Журнал выключен',
},
mutation: {
label: 'Только изменения',
},
read: {
label: 'Всё (включая просмотры)',
},
},
levelNames: {
off: 'Выкл',
mutation: 'Изменения',
read: 'Всё',
},
resourceTypes: {
bot: 'Бот',
adapter: 'Адаптер',
model_provider: 'Провайдер моделей',
llm_model: 'Модель',
pipeline: 'Конвейер',
user: 'Пользователь',
workspace: 'Рабочее пространство',
monitoring: 'Мониторинг',
webhook: 'Webhook',
api_key: 'API-ключ',
workspace_settings: 'Настройки пространства',
member: 'Участник',
member_invitation: 'Приглашение участника',
operation_log: 'Журнал операций',
assistant_conversation: 'Сессия ассистента',
agent: 'Агент',
file: 'Файл',
plugin: 'Расширение',
plugin_page: 'Страница расширения',
skill: 'Навык',
knowledge_base: 'База знаний',
mcp_server: 'MCP-сервер',
runtime: 'Среда выполнения',
system: 'Система',
resource: 'Ресурс',
},
outcomes: {
ok: 'Успех',
denied: 'Отказано',
error: 'Ошибка',
},
actions: {
audit_log_view: 'Просмотр журнала операций',
settings_update: 'Изменение настроек трассировки',
settings_view: 'Просмотр настроек трассировки',
member_invite: 'Приглашение участника',
member_role_update: 'Изменение роли участника',
member_remove: 'Удаление участника',
member_view: 'Просмотр участников',
plugin_view: 'Просмотр страниц расширения',
plugin_config: 'Изменение настроек расширения',
plugin_install: 'Установка расширения',
plugin_uninstall: 'Удаление расширения',
plugin_upgrade: 'Обновление расширения',
page_view: 'Просмотр страницы расширения',
skill_view: 'Просмотр навыка',
skill_install: 'Установка навыка',
skill_uninstall: 'Удаление навыка',
knowledge_base_view: 'Просмотр базы знаний',
knowledge_base_update: 'Изменение базы знаний',
knowledge_base_delete: 'Удаление базы знаний',
mcp_view: 'Просмотр сервера MCP',
mcp_config: 'Изменение сервера MCP',
mcp_delete: 'Удаление сервера MCP',
skill_update: 'Изменение навыка',
file_view: 'Просмотр файла',
ingest: 'Импорт данных',
file_delete: 'Удаление файла базы знаний',
ingress: 'Внешний приём сообщений',
codex_view: 'Просмотр авторизации Codex',
codex_authorize: 'Авторизация Codex',
embed: 'Встроенная сессия',
pipeline_extensions_update: 'Изменение привязок расширений конвейера',
export: 'Экспорт данных',
execute: 'Выполнение задачи',
debug: 'Отладка задачи',
publish: 'Публикация ресурса',
create: 'Создание ресурса',
update: 'Изменение ресурса',
delete: 'Удаление ресурса',
view: 'Просмотр ресурса',
probe: 'Проверка эндпоинта',
},
},
storageAnalysis: {
title: 'Анализ хранилища',
description: 'Проверьте использование хранилища и кандидатов на очистку',
openDialog: 'Открыть анализ',
dialogTitle: 'Анализ хранилища',
generatedAt: 'Создано {{time}}',
loading: 'Загрузка...',
refresh: 'Обновить',
totalSize: 'Общий размер',
binaryStorage: 'Бинарное хранилище плагинов',
uploadCleanup: 'Просроченные загрузки',
logCleanup: 'Просроченные журналы',
sections: 'Разделы хранилища',
monitoringTables: 'Таблицы мониторинга',
runtimeTasks: 'Задачи runtime',
cleanupPolicy: 'Политика очистки',
uploadRetention: 'Хранение загрузок',
logRetention: 'Хранение журналов',
databaseType: 'Тип базы данных',
days: 'дн.',
missing: 'Нет',
notCreated: 'Ещё не создано',
processStorage: 'Хранилище по процессам',
processStorageDescription:
'Каждая среда выполнения измеряет свои каталоги. Детализация уже входит в итог родительского каталога.',
directory: 'Каталог',
size: 'Размер',
files: 'Файлы',
runtimeUnavailable: 'Статистика хранилища среды выполнения недоступна.',
noManagedDirectories: 'Управляемые каталоги не обнаружены.',
scanWarnings: 'Недоступно для чтения: {{count}}',
boxActivity: 'Сеансов: {{sessions}} · Управляемых процессов: {{processes}}',
statusLabels: {
available: 'Доступно',
unavailable: 'Недоступно',
disabled: 'Отключено',
not_applicable: 'Не применимо',
},
sourceLabels: {
local_process: 'Измерено процессом LangBot',
runtime_rpc: 'Измерено средой выполнения через аутентифицированный RPC',
},
scopeLabels: {
runtime_host: 'Хост среды выполнения',
sandbox_sessions: 'Сеансы песочницы',
},
processNames: {
langbot: 'Основной процесс LangBot',
plugin_runtime: 'Среда выполнения плагинов',
box_runtime: 'Среда выполнения Box',
},
processDescriptions: {
langbot:
'База данных приложения, журналы, загруженные файлы, векторные данные и временные файлы.',
plugin_runtime:
'Пакеты плагинов, проверенные артефакты, окружения зависимостей и закрытые данные установки.',
box_runtime:
'Рабочие каталоги песочницы и процессов MCP, каталоги обмена вложениями и навыки.',
},
expiredUploads: 'Просроченные загрузки',
expiredLogs: 'Просроченные журналы',
noExpiredUploads: 'Нет просроченных загруженных файлов',
noExpiredLogs: 'Нет просроченных журналов',
sectionNames: {
database: 'База данных',
logs: 'Журналы',
storage: 'Загруженные файлы',
vector_store: 'Векторное хранилище',
plugins: 'Плагины',
mcp: 'MCP',
temp: 'Временные файлы',
legacy_plugins: 'Старые пакеты плагинов',
artifacts: 'Проверенные артефакты плагинов',
dependency_environments: 'Окружения зависимостей',
installations: 'Данные установки плагинов',
staging: 'Промежуточные файлы плагинов',
rpc_transfer: 'Файлы передачи RPC среды выполнения',
workspace: 'Рабочий каталог песочницы',
inbox: 'Входящие вложения',
outbox: 'Исходящие вложения',
skills: 'Навыки',
session_workspaces: 'Рабочие каталоги сеансов песочницы',
session_caches: 'Кэш среды выполнения песочницы',
session_temp: 'Временные файлы песочницы',
managed_process_workspaces:
'Рабочие каталоги управляемых процессов (включая MCP)',
},
},
limitation: {
maxBotsReached:
'Достигнуто максимальное количество ботов ({{max}}). Удалите существующего бота перед созданием нового.',
maxPipelinesReached:
'Достигнуто максимальное количество конвейеров ({{max}}). Удалите существующий конвейер перед созданием нового.',
maxExtensionsReached:
'Достигнуто максимальное количество расширений ({{max}}). Удалите существующий MCP-сервер или плагин перед добавлением нового.',
quotaLoadingTooltip:
'Данные об использовании рабочего пространства загружаются. Подождите перед созданием ресурса.',
quotaCheckFailed:
'Не удалось проверить текущую квоту рабочего пространства. Повторите попытку.',
createDisabledTooltip:
'Достигнут лимит {{resource}} ({{max}}) для этого рабочего пространства. Удалите существующий ресурс перед созданием нового.',
},
skills: {
title: 'Навыки',
description:
'Создавайте навыки и управляйте ими для активации во время диалогов',
createSkill: 'Создать навык',
createSkillDescription:
'Импортируйте локальный каталог или создайте навык, заполнив данные',
editSkill: 'Редактировать навык',
getSkillListError: 'Не удалось получить список навыков: ',
skillName: 'Название навыка',
displayName: 'Название навыка',
displayNamePlaceholder: 'Отображаемое имя (поддерживает любой язык)',
skillSlug: 'Имя каталога',
skillSlugPlaceholder: 'english-name-only',
skillSlugHelp:
'Используется как имя каталога навыка. Разрешены только буквы, цифры, дефисы и подчёркивания.',
skillDescription: 'Описание навыка',
skillInstructions: 'Инструкции',
saveSuccess: 'Успешно сохранено',
saveError: 'Не удалось сохранить: ',
createSuccess: 'Успешно создано',
createError: 'Не удалось создать: ',
deleteSuccess: 'Успешно удалено',
deleteError: 'Не удалось удалить: ',
deleteConfirmation: 'Вы уверены, что хотите удалить этот навык?',
delete: 'Удалить навык',
skillNameRequired: 'Название навыка не может быть пустым',
skillDescriptionRequired: 'Описание навыка не может быть пустым',
packageRootRequired: 'Корневой путь пакета не может быть пустым',
scan: 'Сканировать',
scanSuccess: 'Каталог успешно просканирован',
scanError: 'Не удалось просканировать каталог: ',
noSkills: 'Навыки не настроены',
preview: 'Предпросмотр',
previewInstructions: 'Предпросмотр содержимого SKILL.md',
instructionsPlaceholder: 'Введите инструкции навыка в формате Markdown...',
descriptionPlaceholder:
'Краткое описание того, что делает этот навык (показывается LLM)',
packageRoot: 'Каталог пакета',
packageRootHelp:
'Необязательно. Нужно только при импорте существующего каталога навыка. Для новых навыков оставьте пустым. Сканирование проверяет текущий каталог и подкаталоги глубиной до 2 уровней.',
importLocalDirectory: 'Импортировать локальный каталог навыка',
chooseSkillDirectory: 'Выбрать каталог с SKILL.md',
chooseAnotherDirectory: 'Выбрать другой каталог',
importingDirectory: 'Подготовка предпросмотра...',
clearDirectoryPreview: 'Очистить выбранный каталог',
noSkillMdInDirectory: 'В выбранном каталоге не найден SKILL.md',
multipleSkillMdInDirectory:
'В выбранном каталоге найдено несколько файлов SKILL.md. Выберите один каталог навыка напрямую.',
importDirectoryError: 'Не удалось импортировать каталог: ',
advancedSettings: 'Расширенные настройки',
searchSkills: 'Поиск навыков...',
selectSkills: 'Выбрать навыки',
addSkill: 'Добавить навык',
builtin: 'Встроенный',
importFromGithub: 'Установить навык из GitHub',
createManually: 'Создать вручную',
uploadZip: 'Загрузить ZIP-пакет',
uploadZipOnly: 'Поддерживаются только ZIP-пакеты навыков',
installSuccess: 'Навык успешно установлен',
installError: 'Не удалось установить навык: ',
enterRepoUrl: 'Введите URL репозитория GitHub',
repoUrlPlaceholder: 'например, https://github.com/owner/repo',
fetchingReleases: 'Получение релизов...',
selectRelease: 'Выбрать релиз',
noReleasesFound: 'Релизы не найдены',
fetchReleasesError: 'Не удалось получить релизы: ',
selectAsset: 'Выберите файл для установки',
sourceArchive: 'Исходный код (zip)',
noAssetsFound: 'В этом релизе нет устанавливаемых файлов',
fetchAssetsError: 'Не удалось получить файлы: ',
backToReleases: 'Назад к релизам',
backToRepoUrl: 'Назад к URL репозитория',
backToAssets: 'Назад к файлам',
releaseTag: 'Тег: {{tag}}',
publishedAt: 'Опубликовано: {{date}}',
prerelease: 'Предварительный релиз',
assetSize: 'Размер: {{size}}',
confirmInstall: 'Подтвердить установку',
installing: 'Установка навыка...',
loading: 'Загрузка...',
previewLoadError: 'Не удалось загрузить предпросмотр',
selectFromSidebar: 'Выберите навык на боковой панели',
dangerZone: 'Опасная зона',
dangerZoneDescription: 'Необратимые и разрушительные действия',
files: 'Файлы',
noFiles: 'Файлы не найдены',
loadFilesError: 'Не удалось загрузить файлы: ',
readFileError: 'Не удалось прочитать файл: ',
saveFile: 'Сохранить файл',
saveFileSuccess: 'Файл успешно сохранён',
saveFileError: 'Не удалось сохранить файл: ',
},
wizard: {
sidebarDescription: 'Создать бота с пошаговым руководством',
loading: 'Загрузка мастера...',
loadError: 'Не удалось загрузить данные мастера',
skip: 'Пропустить',
skipConfirmMessage:
'Вы можете вернуться к мастеру быстрого старта из меню аккаунта позже или создать бота вручную.',
skipConfirmOk: 'ОК',
prev: 'Назад',
next: 'Далее',
finish: 'Создать и развернуть',
confirmCreateBot: 'Подтвердить, создать бота',
createSuccess: 'Конвейер создан и привязан к боту!',
botCreateSuccess: 'Бот успешно создан!',
botSaveSuccess: 'Конфигурация бота сохранена и включена!',
createError: 'Не удалось создать ресурсы',
skipSaveError: 'Не удалось сохранить статус пропуска. Повторите попытку.',
completeSaveError:
'Не удалось сохранить статус завершения. Повторите попытку.',
step: {
platform: 'Платформа',
botConfig: 'Настройка бота',
aiEngine: 'ИИ-движок',
done: 'Готово',
},
platform: {
title: 'Выберите платформу',
description: 'Выберите мессенджер, к которому подключится ваш бот.',
},
botConfig: {
title: 'Настройте бота',
description: 'Настройте бота и проверьте его работу перед продолжением.',
saveBot: 'Сохранить и включить бота',
resaveBot: 'Пересохранить конфигурацию',
botSaved:
'Конфигурация бота сохранена и включена. Проверьте журналы для подтверждения подключения.',
waitingForMessage:
'Бот включён. Отправьте ему сообщение из мессенджера, чтобы продолжить.',
messageReceived:
'Бот получил сообщение. Можно перейти к следующему шагу.',
messageReceivedLocalAccountWarning:
'Подключение бота настроено правильно, и сообщение получено. Поскольку вход выполнен не через аккаунт LangBot, вызовы модели могут завершаться ошибкой; перейдите к следующему шагу, чтобы добавить собственную модель.',
pageBotPreviewFailed:
'Не удалось загрузить тестовый чат. Сохраните настройки ещё раз, чтобы повторить попытку.',
pageBotTestPrompt:
'Бот для веб-страницы включён. Нажмите на значок чата в правом нижнем углу и отправьте сообщение, чтобы проверить полный сценарий диалога.',
pageBotTestNotice:
'Только для тестирования. Встройте код в настоящую внешнюю веб-страницу.',
webhookTestPrompt:
'URL обратного вызова готов. Настройте его на внешней платформе, затем отправьте боту настоящее сообщение.',
httpTestPrompt:
'HTTP-бот включён. Отправьте сюда настоящее входящее сообщение, чтобы проверить подключение.',
httpTestDefaultMessage:
'Здравствуйте, это тестовое сообщение подключения.',
sendHttpTest: 'Отправить тестовое сообщение',
httpTestAccepted:
'Тестовое сообщение принято. Оно скоро появится в журнале.',
httpTestMissingSecret:
'Введите секрет подписи входящих запросов и сначала сохраните конфигурацию.',
httpTestFailed: 'Не удалось отправить тестовое сообщение: {{error}}',
logsTitle: 'Журналы бота',
logsDescription:
'Отслеживайте активность бота для проверки подключения к платформе.',
},
aiEngine: {
defaultModelUnavailable:
'Модель по умолчанию недоступна. Повторите попытку.',
defaultRunnerUnavailable: 'Local Agent ещё не готов. Повторите попытку.',
preparingDefault: 'Подготовка ИИ по умолчанию…',
title: 'Настройте ИИ-движок',
description:
'Выберите ИИ-движок, который будет управлять интеллектом вашего бота.',
optionalDescription:
'ИИ уже настроен. Используйте его или измените способ подключения.',
externalTitle: 'Подключить Agent внешней платформы',
externalDescription:
'Подключите Dify, n8n, Coze или другой внешний Agent через плагин Runner.',
ownModelTitle: 'Использовать собственную модель',
ownModelDescription:
'Добавьте провайдера, затем найдите модель автоматически или укажите её вручную, чтобы завершить настройку.',
ownModelSetupTitle: 'Добавьте собственную модель',
ownModelSetupDescription:
'Добавьте провайдера моделей. Модели чата будут найдены автоматически, либо можно вручную указать ID модели.',
addProviderTitle: 'Добавить провайдера',
addProviderDescription:
'Введите данные провайдера и API-ключ для подключения и поиска моделей.',
selectModelTitle: 'Выберите модель',
selectScannedModelTitle: 'Выберите модель',
selectScannedModelDescription:
'Выбранная модель заменит основную модель в пайплайне этого бота.',
scanModelMode: 'Найти модели',
manualModelMode: 'Добавить вручную',
scanningModels: 'Поиск доступных моделей…',
noScannedModels:
'Доступные модели чата не найдены. Проверьте конфигурацию провайдера.',
scanModelsFailed:
'Не удалось найти модели. Проверьте URL и API-ключ, затем повторите попытку.',
manualFallbackFailed:
'Автоматический поиск не удался. Введите ID модели, поддерживаемой провайдером.',
manualFallbackEmpty:
'Модели не найдены. Введите ID модели, поддерживаемой провайдером.',
manualModelId: 'ID модели',
manualModelIdPlaceholder: 'Например: gpt-4o',
manualModelIdDescription:
'Введите параметр модели, используемый в запросах к модели.',
manualModelOptions: 'Дополнительные возможности модели',
editProvider: 'Изменить провайдера',
rescanModels: 'Повторить поиск моделей',
moreFeaturesTitle: 'Использовать настройки по умолчанию',
moreFeaturesDescription:
'Продолжить с Local Agent и рекомендованной моделью. Инструменты и базы знаний можно добавить позже.',
runnerDescription:
'Выберите Runner для внешнего Agent и настройте подключение.',
backToChoices: 'Вернуться к вариантам',
backToList: 'Вернуться к списку',
createExternal: 'Создать и привязать',
finishWithModel: 'Использовать выбранную модель и завершить',
openWorkbench: 'Открыть рабочую панель',
loadingCatalog: 'Загрузка расширений исполнителей...',
catalogUnavailable: 'Каталог исполнителей недоступен',
catalogUnavailableDescription:
'Установленные исполнители доступны. Повторите загрузку каталога или откройте расширения.',
noMarketplaceRunners: 'Нет плагинов исполнителей для этого назначения',
noMarketplaceRunnersDescription:
'Используйте установленный исполнитель или повторите позже.',
browseRunners: 'Открыть расширения исполнителей',
installAndContinue: 'Установить и продолжить',
installing: 'Установка...',
useInstalled: 'Использовать этот исполнитель',
installedUnavailable: 'Установлено, исполнитель недоступен',
installSuccess: '{{runner}} установлен и выбран',
installFailed: 'Не удалось установить расширение исполнителя',
versionUnavailable: 'Магазин не вернул доступную для установки версию.',
installTimeout:
'Время ожидания установки истекло. Проверьте задачу в разделе расширений.',
registrationTimeout:
'Расширение установлено, но исполнитель не зарегистрирован. Проверьте среду выполнения плагинов и повторите попытку.',
},
config: {
botInfo: 'Информация о боте',
botNamePlaceholder: 'Введите имя бота',
botDescPlaceholder: 'Введите описание бота (необязательно)',
platformConfig: 'Настройка {{platform}}',
aiConfig: 'Настройка {{engine}}',
},
done: {
title: 'Всё готово!',
description:
'Ваш бот создан и подключён к конвейеру ИИ. Теперь вы можете управлять им из рабочей панели.',
backToWorkbench: 'Вернуться к рабочей панели',
},
},
addExtension: {
installTitle: 'Установить {{type}}',
installConfirm: 'Установить {{type}} «{{name}}»?',
installInfoType: 'Тип',
installInfoId: 'ID',
installInfoVersion: 'Версия',
installSuccess: 'Успешно установлено',
installStage: {
mcpInstalling: 'Добавление и подключение сервера MCP…',
skillInstalling: 'Установка навыка…',
installed: 'Готово',
},
manualAdd: 'Добавить вручную',
uploadExtension: 'Перетащите файл сюда или нажмите для загрузки',
uploadHint: 'Поддерживаются файлы .zip (навыки) и .lbpkg (плагины)',
orContinueWith: 'или выберите действие ниже',
addMCPServerHint: 'Подключить расширение сервера инструментов MCP',
installFromGithub: 'Установить из GitHub',
installFromGithubHint: 'Пакет плагина или навык (SKILL.md)',
githubUrlHelp: 'Вставьте URL GitHub',
githubUrlTooltip:
'Плагин: вставьте URL репозитория, Release или Tag. Навык: вставьте URL страницы SKILL.md внутри каталога навыка.',
githubUrlPlaceholder: 'Репозиторий GitHub, Release или ссылка SKILL.md',
githubUrlRequired: 'Введите URL GitHub',
previewSkill: 'Предпросмотр навыка',
noSkillPreviewFound: 'Импортируемый навык не найден',
createSkill: 'Создать новый навык',
createSkillHint: 'Импортировать из локального каталога или создать вручную',
unsupportedFileType:
'Неподдерживаемый тип файла. Поддерживаются только файлы .zip и .lbpkg',
},
errorPage: {
unexpectedError: 'Что-то пошло не так',
unexpectedErrorDescription:
'Произошла непредвиденная ошибка. Повторите попытку позже.',
notFound: 'Страница не найдена',
notFoundDescription:
'Страница, которую вы ищете, не существует или была перемещена.',
backendUnavailableStatus: 'Бэкенд недоступен',
goBack: 'Назад',
backToHome: 'На главную',
backToLogin: 'Вернуться к входу',
retrying: 'Повторяем',
retryFailed:
'По-прежнему не удается подключиться к бэкенду. Запустите сервис и повторите попытку.',
},
feishu: {
createApp: 'Создать приложение Feishu в один клик',
scanQRCode:
'Отсканируйте QR-код ниже в Feishu, чтобы авторизоваться и автоматически создать приложение',
waitingForScan: 'Ожидание сканирования',
createSuccess:
'Приложение успешно создано! Учётные данные заполнены автоматически',
createFailed: 'Не удалось создать приложение',
connecting: 'Подключение к сервису Feishu...',
expired: 'Срок действия QR-кода истёк. Повторите попытку',
denied: 'Пользователь отклонил авторизацию',
connectionLost: 'Соединение потеряно. Повторите попытку',
reconnecting: 'Переподключение...',
retry: 'Повторить',
},
weixin: {
scanLogin: 'Войти в WeChat по QR-коду',
scanQRCode:
'Отсканируйте QR-код ниже в WeChat, чтобы авторизоваться и автоматически заполнить токен',
loginSuccess: 'Вход выполнен успешно! Токен заполнен автоматически',
loginFailed: 'Не удалось выполнить вход',
connecting: 'Подключение к сервису WeChat...',
waitingForScan: 'Ожидание сканирования',
retry: 'Повторить',
},
dingtalk: {
createApp: 'Создать приложение DingTalk в один клик',
scanQRCode:
'Отсканируйте QR-код ниже в DingTalk, чтобы авторизоваться и автоматически создать приложение',
waitingForScan: 'Ожидание сканирования',
createSuccess:
'Приложение успешно создано! Учётные данные заполнены автоматически',
createFailed: 'Не удалось создать приложение',
connecting: 'Подключение к сервису DingTalk...',
retry: 'Повторить',
robotCodeNote:
'Код робота нельзя получить автоматически. Перейдите в консоль разработчика DingTalk > Настройки робота и скопируйте его вручную. Он нужен для таких функций, как распознавание изображений и загрузка файлов.',
},
wecombot: {
createBot: 'Создать бота WeCom в один клик',
scanQRCode:
'Отсканируйте QR-код ниже в WeCom, чтобы авторизоваться и автоматически создать бота',
waitingForScan: 'Ожидание сканирования',
createSuccess: 'Бот успешно создан! Учётные данные заполнены автоматически',
createFailed: 'Не удалось создать бота',
connecting: 'Подключение к сервису WeCom...',
retry: 'Повторить',
robotNameNote:
'Имя бота нельзя получить автоматически. Пожалуйста, введите его вручную.',
},
qqofficial: {
createBinding: 'Привязка официального бота QQ по QR-коду',
scanQRCode:
'Отсканируйте QR-код ниже мобильным QQ и подтвердите привязку в «QQ Bot Assistant»',
waitingForScan: 'Ожидание сканирования',
bindSuccess: 'Привязка успешна! AppID и Secret заполнены автоматически',
bindFailed: 'Не удалось выполнить привязку',
connecting: 'Подключение к сервису QQ...',
retry: 'Повторить',
tokenNote:
'Поле Token не используется текущим адаптером — его можно оставить пустым.',
boundBy: 'Привязано пользователем QQ {{openid}}',
},
pluginPages: {
selectFromSidebar: 'Выберите страницу плагина на боковой панели',
invalidPage: 'Недопустимая страница плагина',
},
beta_banner: {
message:
'Эта среда находится в стадии бета-тестирования. Стабильность сервиса не гарантируется. Рекомендуем использовать',
cloud_link: 'LangBot Cloud (выделенная среда)',
or: 'или',
oss_link: 'версию с открытым исходным кодом на своём сервере',
period: '.',
dismiss: 'Закрыть',
},
};
export default ruRU;