From 1c2c4b337e2b00f9bec2524d18f149152f93a1db Mon Sep 17 00:00:00 2001 From: Sank Date: Thu, 2 Apr 2026 06:18:27 +0300 Subject: [PATCH] [RU] Add schema synchronization and translate (#13891) ### What problem does this PR solve? Add schema synchronization and translate ### Type of change - [x] Translation into Russian --- web/src/locales/ru.ts | 927 +++++++++++++++++++++++++++++++++--------- 1 file changed, 734 insertions(+), 193 deletions(-) diff --git a/web/src/locales/ru.ts b/web/src/locales/ru.ts index f0505f344b..e460204d6c 100644 --- a/web/src/locales/ru.ts +++ b/web/src/locales/ru.ts @@ -8,6 +8,7 @@ export default { selectAll: 'Выбрать все', delete: 'Удалить', deleteModalTitle: 'Вы уверены, что хотите удалить этот элемент?', + deleteThem: 'Вы уверены, что хотите удалить выбранные элементы?', ok: 'Ок', cancel: 'Отмена', yes: 'Да', @@ -26,8 +27,17 @@ export default { chinese: 'Китайский упрощенный', traditionalChinese: 'Китайский традиционный', russian: 'Русский', + indonesian: 'Индонезийский', + indonesia: 'Индонезийский', + spanish: 'Испанский', + vietnamese: 'Вьетнамский', + japanese: 'Японский', + german: 'Немецкий', + french: 'Французский', + italian: 'Итальянский', bulgarian: 'Болгарский', arabic: 'Арабский', + turkish: 'Турецкий', language: 'Язык', languageMessage: 'Пожалуйста, укажите ваш язык!', languagePlaceholder: 'выберите ваш язык', @@ -62,6 +72,9 @@ export default { urlPlaceholder: 'https://api.example.com/v1/mcp', tokenPlaceholder: 'например, eyJhbGciOiJIUzI1Ni...', }, + selected: 'Выбрано', + seeAll: 'Показать все', + bulkOperate: 'Массовые операции', }, login: { loginTitle: 'Войдите в свою учетную запись', @@ -86,9 +99,10 @@ export default { description: 'Зарегистрируйтесь бесплатно, чтобы изучить передовые RAG-технологии. Создавайте базы знаний и ИИ для развития вашего бизнеса.', review: 'на основе 500+ отзывов', + seeAll: 'Показать все', }, header: { - knowledgeBase: 'Датасет', + knowledgeBase: 'База знаний', chat: 'Чат', register: 'Регистрация', signin: 'Войти', @@ -102,6 +116,88 @@ export default { dataset: 'Датасет', memories: 'Память', }, + memories: { + llmTooltip: + 'Анализирует содержание диалога, извлекает ключевую информацию и формирует структурированные сводки памяти.', + embeddingModelTooltip: + 'Преобразует текст в числовые векторы для семантического поиска и извлечения памяти.', + embeddingModelError: + 'Тип памяти обязателен; тип «raw» нельзя удалить.', + memoryTypeTooltip: `Raw: исходный диалог пользователя и агента (обязателен по умолчанию). +Семантическая память: обобщённые знания и факты о пользователе и мире. +Эпизодическая память: события с привязкой ко времени. +Процедурная память: навыки, привычки и автоматизированные процедуры.`, + raw: 'raw', + semantic: 'semantic', + episodic: 'episodic', + procedural: 'procedural', + editName: 'Изменить название', + memory: 'Память', + createMemory: 'Создать память', + name: 'Название', + memoryNamePlaceholder: 'название памяти', + memoryType: 'Тип памяти', + embeddingModel: 'Модель эмбеддингов', + selectModel: 'Выберите модель', + llm: 'LLM', + delMemoryWarn: `После удаления все сообщения в этой памяти будут удалены и агенты не смогут их получить.`, + }, + memory: { + taskLogDialog: { + title: 'Память', + startTime: 'Время начала', + status: 'Статус', + details: 'Подробности', + + success: 'Успешно', + running: 'Выполняется', + failed: 'Ошибка', + }, + + messages: { + forget: 'Забыть', + forgetMessageTip: 'Вы уверены, что хотите забыть?', + messageDescription: + 'Извлечение памяти настраивается промптами и температурой в расширенных настройках.', + copied: 'Скопировано!', + contentEmbed: 'Встраивание содержимого', + content: 'Содержимое', + delMessageWarn: `После «забывания» это сообщение не будет извлекаться агентами.`, + forgetMessage: 'Забыть сообщение', + sessionId: 'ID сессии', + agent: 'Агент', + type: 'Тип', + validDate: 'Действительно до', + forgetAt: 'Забыть в', + source: 'Источник', + enable: 'Включить', + action: 'Действие', + }, + config: { + descriptionPlaceholder: 'Опишите вашу память', + memorySizeTooltip: `Учитывается содержимое каждого сообщения и его вектор эмбеддинга (≈ содержимое + размерность × 8 байт). +Пример: сообщение 1 КБ с эмбеддингом 1024 измерений — около 9 КБ. Лимит по умолчанию 5 МБ — примерно 500 таких сообщений.`, + avatar: 'Аватар', + description: 'Описание', + memorySize: 'Размер памяти', + advancedSettings: 'Расширенные настройки', + permission: 'Доступ', + onlyMe: 'Только мне', + team: 'Команда', + storageType: 'Тип хранения', + storageTypePlaceholder: 'Выберите тип хранения', + forgetPolicy: 'Политика забывания', + temperature: 'Температура', + systemPrompt: 'Системный промпт', + systemPromptPlaceholder: 'Введите системный промпт', + userPrompt: 'Пользовательский промпт', + userPromptPlaceholder: 'Введите пользовательский промпт', + }, + sideBar: { + messages: 'Сообщения', + configuration: 'Конфигурация', + }, + }, knowledgeList: { welcome: 'С возвращением', description: 'Какие базы знаний вы будете использовать сегодня?', @@ -111,12 +207,69 @@ export default { doc: 'Документы', searchKnowledgePlaceholder: 'Поиск', noMoreData: `Это всё. Больше ничего нет.`, - parserRequired: 'Chunk method is required', + parserRequired: 'Необходимо указать метод чанкирования', }, knowledgeDetails: { + metadata: { + fields: 'поля', + selectFiles: 'Выбрано файлов: {{count}}', + type: 'Тип', + fieldNameInvalid: + 'Имя поля может содержать только буквы или подчёркивания.', + builtIn: 'Встроенное', + generation: 'Генерация', + toMetadataSetting: 'Настройки генерации', + toMetadataSettingTip: + 'Задайте авто-метаданные в разделе «Конфигурация».', + descriptionTip: + 'Добавьте описание или примеры, чтобы LLM извлекала значения для этого поля. Если пусто — используется имя поля.', + restrictDefinedValuesTip: + 'Режим перечисления: извлечение только из заданных ниже значений.', + valueExists: + 'Значение уже есть. Подтвердите объединение дубликатов и связанных файлов.', + fieldNameExists: + 'Имя поля уже есть. Подтвердите объединение дубликатов и связанных файлов.', + valueSingleExists: + 'Значение уже есть. Подтвердите объединение дубликатов.', + fieldSingleNameExists: + 'Имя поля уже есть. Подтвердите объединение дубликатов.', + fieldExists: 'Поле уже существует.', + fieldSetting: 'Настройки поля', + changesAffectNewParses: 'Изменения применяются только к новым парсингам.', + // editMetadataForDataset: 'View and edit metadata for ', + restrictDefinedValues: 'Ограничить заданными значениями', + metadataGenerationSettings: 'Настройки генерации метаданных', + // manageMetadataForDataset: 'Manage metadata for this dataset', + manageMetadata: 'Управление метаданными', + metadata: 'Метаданные', + values: 'Значения', + value: 'Значение', + action: 'Действие', + field: 'Поле', + description: 'Описание', + fieldName: 'Имя поля', + editMetadata: 'Редактировать метаданные', + addMetadata: 'Добавить метаданные', + deleteWarn: + 'Поле «{{field}}» будет удалено из всех связанных файлов', + deleteManageFieldAllWarn: + 'Это поле и все его значения будут удалены из всех связанных файлов.', + deleteManageValueAllWarn: + 'Это значение будет удалено из всех связанных файлов.', + deleteManageFieldSingleWarn: + 'Это поле и все его значения будут удалены из этих файлов.', + deleteManageValueSingleWarn: + 'Это значение будет удалено из этих файлов.', + deleteSettingFieldWarn: `Поле будет удалено; существующие метаданные не затронуты.`, + deleteSettingValueWarn: `Значение будет удалено; существующие метаданные не затронуты.`, + }, redoAll: 'Очистите существующие фрагменты', + applyAutoMetadataSettings: 'Применить глобальные настройки авто-метаданных', + parseFileTip: 'Запустить парсинг?', + parseFile: 'Парсить файл', emptyMetadata: 'Нет метаданных', metadataField: 'Поле метаданных', + systemAttribute: 'Системный атрибут', localUpload: 'Локальная загрузка', fileSize: 'Размер файла', fileType: 'Тип файла', @@ -172,7 +325,7 @@ export default { searchFiles: 'Поиск по вашим файлам', localFiles: 'Локальные файлы', emptyFiles: 'Создать пустой файл', - webCrawl: 'Веб-краулинг', + webCrawl: 'Поисковый робот', chunkNumber: 'Количество чанков', uploadDate: 'Дата загрузки', chunkMethod: 'Метод чанкинга', @@ -250,6 +403,11 @@ export default { delimiter: `Разделитель текста`, delimiterTip: 'Разделитель может состоять из одного или нескольких специальных символов. Если это несколько символов, убедитесь, что они заключены в обратные кавычки (``). Например, если вы настроите разделители так: \\n`##`;, то ваш текст будет разделен по переводам строк, двойным символам решетки (##) и точкам с запятой.', + enableChildrenDelimiter: 'Дочерние чанки используются для извлечения', + childrenDelimiter: 'Разделитель текста', + childrenDelimiterTip: + 'Разделитель может состоять из одного или нескольких специальных символов. Если это несколько символов, убедитесь, что они заключены в обратные кавычки (``). Например, если вы настроите разделители так: \\n`##`;, то ваш текст будет разделен по переводам строк, двойным символам решетки (##) и точкам с запятой.', + html4excel: 'Excel в HTML', html4excelTip: `Используется с методом чанкинга General. Когда отключено, электронные таблицы (XLSX или XLS (Excel 97-2003)) в базе знаний будут разобраны в пары ключ-значение. Когда включено, они будут разобраны в HTML таблицы, разделяя каждые 12 строк, если исходная таблица имеет более 12 строк. Подробности см. на https://ragflow.io/docs/dev/enable_excel2html.`, autoKeywords: 'Авто-ключевые слова', @@ -282,29 +440,49 @@ export default { deleteDocumentConfirmContent: 'Документ связан с графом знаний. После удаления связанная информация об узлах и отношениях будет удалена, но граф не будет обновлен немедленно. Действие обновления графа выполняется в процессе парсинга нового документа, который несет задачу извлечения графа знаний.', plainText: 'Наивный', - reRankModelWaring: 'Re-rank модель очень требовательна ко времени.', + reRankModelWaring: 'Rerank модель очень требовательна ко времени.', }, knowledgeConfiguration: { - overlappedPercent: 'Процент перекрытия(%)', - autoMetadata: 'Авто-метаданные', - autoMetadataTip: `Автоматическая генерация метаданных. Применяется к новым файлам во время синтаксического анализа (парсинга). Существующие файлы требуют повторного разбора для обновления (фрагменты остаются сохраненными). Имейте в виду, что дополнительные токены будут использоваться моделью индексации, указанной в разделе "Конфигурация".`, + randomSeedTip: + 'Seed — начальное значение псевдослучайного алгоритма для воспроизводимости результата при повторных запусках.', + datasetDescription: 'Опишите ваш датасет', + overlappedPercentTip: 'Процент перекрытия между соседними чанками', + globalIndexModelTip: + 'Используется для графа знаний, RAPTOR, авто-метаданных, авто-ключевых слов и авто-вопросов. Качество модели влияет на качество генерации.', + globalIndexModel: 'Индексирующая модель', + settings: 'Настройки', + autoMetadataTip: `Автоматическая генерация метаданных. Применяется к новым файлам во время парсинга. Существующие файлы требуют повторного разбора для обновления (фрагменты остаются сохраненными). Имейте в виду, что дополнительные токены будут использоваться моделью индексации, указанной в разделе "Конфигурация".`, imageTableContextWindow: 'Окно контекста изображения и таблицы', imageTableContextWindowTip: 'Захватывает N токенов текста выше и ниже изображения и таблицы, чтобы дать более богатый контекст.', + autoMetadata: 'Авто-метаданные', + mineruOptions: 'Опции MinerU', + mineruParseMethod: 'Метод парсинга', + mineruParseMethodTip: + 'Метод для парсинга PDF: auto (автоопределение), txt (текст), ocr (распознавание символов)', + mineruFormulaEnable: 'Распознавание формул', + mineruFormulaEnableTip: + 'Включает распознавание формул. Примечание: для кириллических документов может работать некорректно.', + mineruTableEnable: 'Распознавание таблиц', + mineruTableEnableTip: 'Включает распознавание и извлечение таблиц.', + paddleocrOptions: 'Параметры PaddleOCR', + paddleocrApiUrl: 'URL API PaddleOCR', + paddleocrApiUrlTip: 'URL конечной точки API сервиса PaddleOCR', + paddleocrApiUrlPlaceholder: + 'Например: https://paddleocr-server.com/layout-parsing', + paddleocrAccessToken: 'Токен доступа AI Studio', + paddleocrAccessTokenTip: 'Токен доступа к API PaddleOCR (необязательно)', + paddleocrAccessTokenPlaceholder: 'Ваш токен AI Studio (необязательно)', + paddleocrAlgorithm: 'Алгоритм PaddleOCR', + paddleocrAlgorithmTip: 'Алгоритм, используемый для обработки PaddleOCR', + paddleocrSelectAlgorithm: 'Выбрать алгоритм', + paddleocrModelNamePlaceholder: 'Например: paddleocr-from-env-1', + overlappedPercent: 'Процент перекрытия(%)', generationScopeTip: 'Определяет, генерируется ли RAPTOR для всего набора данных или для одного файла.', scopeDataset: 'Датасет', generationScope: 'Область генерации', scopeSingleFile: 'Один файл', - mineruOptions: 'Опции MinerU', - mineruParseMethod: 'Метод парсинга', - mineruParseMethodTip: - 'Метод для парсинга PDF: auto (автоматическое определение), txt (извлечение текста), ocr (оптическое распознавание символов)', - mineruFormulaEnable: 'Распознавание формул', - mineruFormulaEnableTip: - 'Включает распознавание формул. Примечание: Для документов, написанных кириллицей, это может работать некорректно.', - mineruTableEnable: 'Распознавание таблиц', - mineruTableEnableTip: 'Включает распознавание и извлечение таблиц.', autoParse: 'Авто-парсинг', rebuildTip: 'Повторно загружает файлы из связанного источника данных и снова их парсит.', @@ -316,7 +494,7 @@ export default { linkDataSource: 'Связать источник данных', tocExtraction: 'Улучшение оглавлением', tocExtractionTip: - ' Для существующих чанков генерирует иерархическое оглавление (одна директория на файл). При запросах, когда активировано Улучшение оглавлением, система будет использовать большую модель для определения, какие элементы оглавления релевантны вопросу пользователя, тем самым идентифицируя релевантные чанки.', + 'Для существующих чанков генерируется иерархическое оглавление (одна директория на файл). При запросах, когда активировано улучшение по оглавлению, система использует большую модель, чтобы определить релевантные пункты оглавления вопросу пользователя и выделить нужные чанки.', deleteGenerateModalContent: `

Удаление сгенерированных результатов {{type}} удалит все производные сущности и отношения из этого набора данных. @@ -324,8 +502,8 @@ export default {
Вы хотите продолжить? `, - extractRaptor: 'Извлечь Raptor', - extractKnowledgeGraph: 'Извлечь Граф знаний', + extractRaptor: 'Извлечь с Raptor', + extractKnowledgeGraph: 'Извлечь граф знаний', filterPlaceholder: 'пожалуйста, введите фильтр', fileFilterTip: '', fileFilter: 'Фильтр файлов', @@ -334,9 +512,7 @@ export default { editLinkDataPipeline: 'Редактировать пайплайн обработки', linkPipelineSetTip: 'Управление связью пайплайна обработки с этим набором данных', - globalIndexModel: 'Индексирующая модель', default: 'По умолчанию', - settings: 'Настройки', dataPipeline: 'Переключить или настроить конвейер приема данных', linkDataPipeline: 'Связать пайплайн обработки', enableAutoGenerate: 'Включить авто-генерацию', @@ -348,9 +524,9 @@ export default { manualSetup: 'Выбрать пайплайн', builtIn: 'Встроенный', titleDescription: - 'Обновите конфигурацию вашей базы знаний здесь, особенно метод чанкинга.', + 'Обновите конфигурацию базы знаний здесь, в частности LLM и промпты.', name: 'Название базы знаний', - photo: 'Фото базы знаний', + photo: 'Иконка базы знаний', photoTip: 'Вы можете загрузить изображение до 4 МБ.', description: 'Описание', language: 'Язык документа', @@ -361,9 +537,9 @@ export default { chunkTokenNumber: 'Рекомендуемый размер чанка', chunkTokenNumberMessage: 'Требуется количество токенов чанка для текста', embeddingModelTip: - 'Модель эмбеддингов по умолчанию для базы знаний. После того как в базе знаний появились чанки, при смене модели эмбеддингов система случайным образом выбирает несколько чанков для проверки совместимости, заново кодирует их новой моделью эмбеддингов и вычисляет косинусное сходство между новыми и старыми векторами. Переключение возможно только если среднее сходство по выборке ≥ 0.9. В противном случае необходимо удалить все чанки в базе знаний, чтобы изменить модель.', + 'Модель эмбеддингов по умолчанию для базы знаний. После появления чанков при смене модели система случайно выбирает несколько чанков для проверки совместимости, перекодирует их новой моделью и вычисляет косинусное сходство. Переключение возможно только если среднее сходство ≥ 0.9. Иначе удалите все чанки в датасете.', permissionsTip: - "Если установлено значение 'Команда', все члены вашей команды смогут управлять базой знаний.", + "Если установлено значение «Команда», все члены команды смогут управлять базой знаний.", chunkTokenNumberTip: 'Это своего рода устанавливает порог токенов для создания чанка. Сегмент с меньшим количеством токенов, чем этот порог, будет объединен со следующими сегментами до тех пор, пока количество токенов не превысит порог, после чего будет создан чанк. Новый чанк не создается, если не встречен разделитель, даже если порог превышен.', chunkMethod: 'Метод чанкинга', @@ -374,8 +550,24 @@ export default { portugueseBr: 'Португальский (Бразилия)', embeddingModelPlaceholder: 'Пожалуйста, выберите модель эмбеддингов.', chunkMethodPlaceholder: 'Пожалуйста, выберите метод чанкинга.', + parserLabel: { + naive: 'Общий', + qa: 'Вопрос–ответ', + resume: 'Резюме', + manual: 'Руководство', + table: 'Таблица', + paper: 'Статья', + book: 'Книга', + laws: 'Законы', + presentation: 'Презентация', + picture: 'Изображение', + one: 'Один', + audio: 'Аудио', + email: 'Email', + tag: 'Тег', + }, save: 'Сохранить', - me: 'Только я', + me: 'Только мне', team: 'Команда', cancel: 'Отмена', methodTitle: 'Описание метода чанкинга', @@ -390,20 +582,21 @@ export default { laws: `

Поддерживаемые форматы файлов: DOCX, PDF, TXT.

Юридические документы обычно следуют строгому формату написания. Мы используем особенности текста для определения точек разделения.

- Чанк имеет гранулярность, соответствующую 'СТАТЬЕ', обеспечивая включение всего текста верхнего уровня в чанк. + Чанк имеет гранулярность, соответствующую «СТАТЬЕ», обеспечивая включение всего текста верхнего уровня в чанк.

`, manual: `

Поддерживается только PDF.

Мы предполагаем, что руководство имеет иерархическую структуру разделов, используя заголовки самых низких разделов в качестве базовой единицы для чанкинга документов. Поэтому рисунки и таблицы в одном разделе не будут разделены, что может привести к большему размеру чанков.

`, naive: `

Поддерживаемые форматы файлов: MD, MDX, DOCX, XLSX, XLS (Excel 97-2003), PPTX, PDF, TXT, JPEG, JPG, PNG, TIF, GIF, CSV, JSON, EML, HTML.

-

Этот метод разбивает файлы 'наивным' способом:

+

Этот метод разбивает файлы «наивным» способом:

+

`, paper: `

Поддерживается только PDF файл.

Статьи будут разделены по разделам, таким как аннотация, 1.1, 1.2.

Этот подход позволяет LLM более эффективно суммировать статью и предоставлять более полные, понятные ответы. - Однако это также увеличивает контекст для разговоров с ИИ и добавляет вычислительные затраты для LLM. Поэтому во время разговора рассмотрите возможность уменьшения значения 'topN'.

`, + Однако это также увеличивает контекст для разговоров с ИИ и добавляет вычислительные затраты для LLM. Поэтому во время разговора рассмотрите возможность уменьшения значения «topN».

`, presentation: `

Поддерживаемые форматы файлов: PDF, PPTX.

Каждая страница в слайдах рассматривается как чанк, с сохранением ее уменьшенного изображения.

Этот метод чанкинга автоматически применяется ко всем загруженным PPT файлам, поэтому вам не нужно указывать его вручную.

`, @@ -411,6 +604,7 @@ export default {

Этот метод чанкинга поддерживает форматы файлов XLSX и CSV/TXT.

+

Строки текста, не следующие приведенным выше правилам, будут проигнорированы, и @@ -459,26 +654,26 @@ export default {

`, knowledgeGraph: `

Поддерживаемые форматы файлов: DOCX, EXCEL, PPT, IMAGE, PDF, TXT, MD, JSON, EML -

Этот подход разбивает файлы, используя 'наивный'/'Общий' метод. Он разделяет документ на сегменты, а затем объединяет соседние сегменты до тех пор, пока количество токенов не превысит порог, указанный в 'Количестве токенов чанка для текста', после чего создается чанк.

+

Этот подход разбивает файлы, используя «наивный»/«Общий» метод. Он разделяет документ на сегменты, а затем объединяет соседние сегменты до тех пор, пока количество токенов не превысит порог, указанный в «Количестве токенов чанка для текста», после чего создается чанк.

Затем чанки передаются в LLM для извлечения сущностей и отношений для графа знаний и ментальной карты.

Убедитесь, что вы установили Типы сущностей.

`, - tag: `

База знаний, использующая метод чанкинга 'Тег', функционирует как набор тегов. Другие базы знаний используют ее для тегирования своих чанков, и запросы к этим базам знаний также тегируются с использованием этого набора тегов.

-

Набор тегов НЕ будет напрямую участвовать в процессе RAG (Retrieval-Augmented Generation).

-

Каждый чанк в этой базе знаний является независимой парой описание-тег.

-

Поддерживаемые форматы файлов включают XLSX и CSV/TXT:

-

Если файл в формате XLSX, он должен содержать два столбца без заголовков: один для описаний тегов, другой для имен тегов, причем столбец с описанием предшествует столбцу с тегом. Несколько листов допустимы, при условии, что столбцы правильно структурированы.

-

Если файл в формате CSV/TXT, он должен быть закодирован в UTF-8 с TAB в качестве разделителя для разделения описаний и тегов.

+ tag: `

База знаний с методом чанкинга «Тег» функционирует как набор тегов. Другие базы знаний используют его для тегирования чанков, и запросы к ним также тегируются этим набором.

+

Набор тегов НЕ будет напрямую участвовать в процессе RAG.

+

Каждый чанк в этой базе знаний — независимая пара описание-тег.

+

Поддерживаемые форматы: XLSX и CSV/TXT:

+

Если файл в формате XLSX, он должен содержать два столбца без заголовков: один для описаний тегов, другой для имен тегов, причем столбец с описанием предшествует столбцу с тегом.

+

Если файл в формате CSV/TXT, он должен быть UTF-8 с TAB как разделителем между описанием и тегом.

В столбце Тег запятая используется для разделения тегов.

Строки текста, не следующие приведенным выше правилам, будут проигнорированы. `, useRaptor: 'RAPTOR', useRaptorTip: - 'RAPTOR может использоваться для многошаговых вопросно-ответных задач. Перейдите на страницу Файлы, нажмите Сгенерировать > RAPTOR, чтобы включить его. Подробности см. на https://ragflow.io/docs/dev/enable_raptor.', + 'RAPTOR можно использовать для многошаговых вопросно-ответных задач. Перейдите на страницу Файлы, нажмите Сгенерировать > RAPTOR. Подробности: https://ragflow.io/docs/dev/enable_raptor', prompt: 'Промпт', promptTip: - 'Используйте системный промпт, чтобы описать задачу для LLM, указать, как она должна отвечать, и очертить другие различные требования. Системный промпт часто используется вместе с ключами (переменными), которые служат различными входными данными для LLM. Используйте прямую косую черту `/` или кнопку (x), чтобы показать ключи для использования.', + 'Используйте системный промпт, чтобы описать задачу для LLM, указать, как она должна отвечать, и очертить другие требования. Системный промпт часто используется вместе с ключами (переменными). Используйте `/` или кнопку (x), чтобы показать ключи.', promptMessage: 'Промпт обязателен', - promptText: `Пожалуйста, суммируйте следующие параграфы. Будьте внимательны с числами, не выдумывайте. Параграфы следующие: + promptText: `Пожалуйста, суммаризируйте следующие параграфы. Будьте внимательны с числами, не выдумывайте. Параграфы следующие: {cluster_content} Выше приведено содержимое, которое вам нужно суммировать.`, maxToken: 'Макс. токенов', @@ -487,7 +682,7 @@ export default { maxTokenMessage: 'Макс. токенов обязательно', threshold: 'Порог', thresholdTip: - 'В RAPTOR чанки кластеризуются по их семантическому сходству. Параметр Порог устанавливает минимальное сходство, необходимое для группировки чанков вместе. Более высокий Порог означает меньше чанков в каждом кластере, а более низкий - больше.', + 'В RAPTOR чанки кластеризуются по семантическому сходству. Параметр Порог задаёт минимальное сходство для группировки. Более высокий порог — меньше чанков в кластере, более низкий — больше.', thresholdMessage: 'Порог обязателен', maxCluster: 'Макс. кластеров', maxClusterTip: 'Максимальное количество создаваемых кластеров.', @@ -497,7 +692,7 @@ export default { entityTypes: 'Типы сущностей', vietnamese: 'Вьетнамский', pageRank: 'Page rank', - pageRankTip: `Вы можете назначить более высокий балл PageRank определенным базам знаний во время извлечения. Соответствующий балл добавляется к комбинированным оценкам схожести извлеченных чанков из этих баз знаний, повышая их рейтинг. Подробности см. на https://ragflow.io/docs/dev/set_page_rank.`, + pageRankTip: `Вы можете назначить более высокий балл PageRank определённым базам знаний при извлечении. Соответствующий балл добавляется к комбинированным оценкам схожести извлечённых чанков, повышая их рейтинг. Подробности: https://ragflow.io/docs/dev/set_page_rank`, tagName: 'Тег', frequency: 'Частота', searchTags: 'Поиск тегов', @@ -505,47 +700,44 @@ export default { tagTable: 'Таблица', tagSet: 'Наборы тегов', tagSetTip: ` -

Выберите одну или несколько баз знаний тегов для автоматического тегирования чанков в вашей базе знаний. Подробности см. на https://ragflow.io/docs/dev/use_tag_sets.

+

Выберите одну или несколько баз тегов для автоматического тегирования чанков. Подробности: https://ragflow.io/docs/dev/use_tag_sets

Пользовательский запрос также будет автоматически тегирован.

-Эта функция автоматического тегирования улучшает извлечение, добавляя еще один уровень предметно-ориентированных знаний к существующему набору данных. +Авто-тегирование улучшает извлечение, добавляя ещё один уровень предметных знаний.

Разница между авто-тегом и авто-ключевым словом:

`, - topnTags: 'Топ-N Тегов', + topnTags: 'Топ-N тегов', tags: 'Теги', addTag: 'Добавить тег', useGraphRag: 'Граф знаний', useGraphRagTip: - 'Строит граф знаний поверх чанков файлов текущей базы знаний для улучшения многошагового вопросно-ответа, включающего вложенную логику. Подробности см. на https://ragflow.io/docs/dev/construct_knowledge_graph.', + 'Строит граф знаний поверх чанков файлов текущей базы знаний для многошагового Q&A с вложенной логикой. Подробности: https://ragflow.io/docs/dev/construct_knowledge_graph', graphRagMethod: 'Метод', graphRagMethodTip: ` - Light: (По умолчанию) Использует промпты, предоставленные github.com/HKUDS/LightRAG, для извлечения сущностей и отношений. Этот вариант потребляет меньше токенов, памяти и вычислительных ресурсов.
- General: Использует промпты, предоставленные github.com/microsoft/graphrag, для извлечения сущностей и отношений`, + Light: (по умолчанию) Промпты github.com/HKUDS/LightRAG для извлечения сущностей и связей. Меньше токенов, памяти и вычислений.
+ General: Промпты github.com/microsoft/graphrag`, resolution: 'Разрешение сущностей', - resolutionTip: `Переключатель дедубликации сущностей. Когда включен, LLM будет объединять похожие сущности - например, '2025' и 'год 2025', или 'IT' и 'Информационные технологии' - для построения более точного графа`, - community: 'Отчеты сообществ', + resolutionTip: `Переключатель дедубликации сущностей. Когда включен, LLM объединяет похожие сущности (например «2025» и «год 2025») для более точного графа`, + community: 'Отчёты сообществ', communityTip: - 'В графе знаний сообщество - это кластер сущностей, связанных отношениями. Вы можете поручить LLM генерировать аннотацию для каждого сообщества, известную как отчет сообщества. Более подробная информация здесь: https://www.microsoft.com/en-us/research/blog/graphrag-improving-global-search-via-dynamic-community-selection/', + 'В графе знаний сообщество — кластер сущностей, связанных отношениями. LLM может сгенерировать аннотацию для каждого сообщества (отчёт сообщества). Подробнее: https://www.microsoft.com/en-us/research/blog/graphrag-improving-global-search-via-dynamic-community-selection/', theDocumentBeingParsedCannotBeDeleted: - 'Документ, который в данный момент парсится, не может быть удален', - paddleocrOptions: 'Параметры PaddleOCR', - paddleocrApiUrl: 'URL API PaddleOCR', - paddleocrApiUrlTip: 'URL конечной точки API сервиса PaddleOCR', - paddleocrApiUrlPlaceholder: - 'Например: https://paddleocr-server.com/layout-parsing', - paddleocrAccessToken: 'Токен доступа AI Studio', - paddleocrAccessTokenTip: 'Токен доступа к API PaddleOCR (необязательно)', - paddleocrAccessTokenPlaceholder: 'Ваш токен AI Studio (необязательно)', - paddleocrAlgorithm: 'Алгоритм PaddleOCR', - paddleocrAlgorithmTip: 'Алгоритм, используемый для обработки PaddleOCR', - paddleocrSelectAlgorithm: 'Выбрать алгоритм', - paddleocrModelNamePlaceholder: 'Например: paddleocr-среда-1', + 'Документ, который в данный момент парсится, не может быть удалён', + lastWeek: 'за прошлую неделю', }, chunk: { + type: 'Тип', + docType: { + image: 'Изображение', + table: 'Таблица', + text: 'Текст', + }, + size: 'Размер', + uploadedTime: 'Время загрузки', chunk: 'Чанк', bulk: 'Пакетно', selectAll: 'Выбрать все', @@ -557,6 +749,9 @@ export default { enabled: 'Включено', disabled: 'Выключено', keyword: 'Ключевое слово', + image: 'Изображение', + imageUploaderTitle: + 'Загрузите новое изображение, чтобы обновить этот чанк', function: 'Функция', chunkMessage: 'Пожалуйста, введите значение!', full: 'Полный текст', @@ -589,34 +784,44 @@ export default { sendPlaceholder: 'Сообщение ассистенту...', chatConfiguration: 'Конфигурация чата', chatConfigurationDescription: - ' Настройте чат-ассистента для ваших выбранных наборов данных (баз знаний) здесь! 💕', + ' Настройте чат-ассистента для ваших выбранных баз знаний здесь! 💕', assistantName: 'Имя ассистента', assistantNameMessage: 'Имя ассистента обязательно', namePlaceholder: 'например, Резюме Джарвис', assistantAvatar: 'Аватар ассистента', language: 'Язык', emptyResponse: 'Пустой ответ', - emptyResponseTip: `Установите это как ответ, если по вашему запросу не найдено результатов из баз знаний, или оставьте это поле пустым, чтобы позволить LLM импровизировать, когда ничего не найдено.`, - emptyResponseMessage: `Пустой ответ будет срабатывать, когда ничего релевантного не извлечено из баз знаний. Вы должны очистить поле 'Пустой ответ', если не выбрана ни одна база знаний.`, + emptyResponseTip: `Установите это как ответ, если по вашему запросу не найдено результатов из базы знаний, или оставьте поле пустым, чтобы LLM импровизировала, когда ничего не найдено.`, + emptyResponseMessage: `Пустой ответ сработает, когда ничего релевантного не извлечено из базы знаний. Очистите поле «Пустой ответ», если база знаний не выбрана.`, + emptyResponsePlaceholder: + 'Ответ, который вы ищете, не найден в базе знаний!', setAnOpener: 'Приветственное сообщение', setAnOpenerInitial: `Привет! Я ваш ассистент. Чем могу помочь?`, setAnOpenerTip: 'Установите приветственное сообщение для пользователей.', - knowledgeBases: 'Датасеты', + knowledgeBases: 'Базы знаний', + knowledgeBasesPlaceholder: 'Выберите значение', knowledgeBasesMessage: 'Пожалуйста, выберите', knowledgeBasesTip: - 'Выберите наборы данных для связи с этим чат-ассистентом. Пустая база знаний не появится в выпадающем списке.', + 'Выберите базы знаний для связи с этим чат-ассистентом. Пустая база знаний не появится в списке.', system: 'Системный промпт', + systemPlaceholder: `Вы — интеллектуальный ассистент. Ваша задача — отвечать на вопросы строго на основе предоставленной базы знаний. + +**Основные правила:** + - Ответ должен опираться **только** на эту базу знаний: {knowledge}. + - **Если информация есть**: кратко изложите содержание и дайте развёрнутый ответ. + - **Если информации нет**: ответ должен содержать точную фразу: «Ответ, который вы ищете, не найден в базе знаний!» + - **Всегда учитывайте** всю историю диалога.`, systemInitialValue: `Вы - интеллектуальный ассистент. Пожалуйста, обобщите содержание базы знаний, чтобы ответить на вопрос. Пожалуйста, перечислите данные в базе знаний и ответьте подробно. Когда все содержимое базы знаний не релевантно вопросу, ваш ответ должен включать фразу "Ответ, который вы ищете, не найден в базе знаний!" Ответы должны учитывать историю чата. Вот база знаний: {knowledge} Выше приведена база знаний.`, systemMessage: 'Пожалуйста, введите!', systemTip: - 'Ваши промпты или инструкции для LLM, включая, но не ограничиваясь, его ролью, желаемой длиной, тоном и языком ответов. Если ваша модель имеет нативную поддержку рассуждений, вы можете добавить //no_thinking в промпт, чтобы остановить рассуждения.', + 'Ваши промпты или инструкции для LLM: роль, длина, тон и язык ответов. Если модель поддерживает рассуждения, добавьте //no_thinking в промпт, чтобы отключить рассуждения.', topN: 'Топ N', topNTip: `Не все чанки с оценкой схожести выше 'порога схожести' будут отправлены в LLM. Это выбирает 'Топ N' чанков из извлеченных.`, variable: 'Переменная', - variableTip: `Используется вместе с API управления чат-ассистентами RAGFlow, переменные могут помочь разработать более гибкие стратегии системных промптов. Определенные переменные будут использоваться 'Системным промптом' как часть промптов для LLM. {knowledge} - зарезервированная специальная переменная, представляющая чанки, извлеченные из указанных баз знаний, и все переменные должны быть заключены в фигурные скобки {} в 'Системном промпте'. Подробности см. на https://ragflow.io/docs/dev/set_chat_variables.`, + variableTip: `Используется вместе с API управления чат-ассистентами RAGFlow, переменные помогают строить гибкие стратегии системных промптов. {knowledge} — зарезервированная переменная для чанков из указанных баз знаний; все переменные в фигурных скобках {} в «Системном промпте». Подробнее: https://ragflow.io/docs/dev/set_chat_variables`, add: 'Добавить', key: 'Ключ', optional: 'Опционально', @@ -626,16 +831,16 @@ export default { modelMessage: 'Пожалуйста, выберите!', modelEnabledTools: 'Включенные инструменты', modelEnabledToolsTip: - 'Пожалуйста, выберите один или несколько инструментов для использования чат-моделью. Не действует для моделей, не поддерживающих вызов инструментов.', + 'Выберите один или несколько инструментов для чат-модели. Не действует для моделей без вызова инструментов.', freedom: 'Креативность', - improvise: 'Импровизировать', + improvise: 'Импровизация', precise: 'Точно', balance: 'Баланс', custom: 'Пользовательский', freedomTip: `Ярлык для настроек 'Температура', 'Top P', 'Штраф за присутствие' и 'Штраф за частоту', указывающий уровень свободы модели. Этот параметр имеет три варианта: Выберите 'Импровизировать' для получения более творческих ответов; выберите 'Точно' (по умолчанию) для получения более консервативных ответов; 'Баланс' - это золотая середина между 'Импровизировать' и 'Точно'.`, temperature: 'Температура', temperatureMessage: 'Температура обязательна', - temperatureTip: `Этот параметр контролирует случайность предсказаний модели. Более низкая температура приводит к более консервативным ответам, а более высокая температура дает более творческие и разнообразные ответы.`, + temperatureTip: `Контролирует случайность предсказаний модели. Ниже температура — консервативнее; выше — разнообразнее.`, topP: 'Top P', topPMessage: 'Top P обязателен', topPTip: @@ -643,22 +848,21 @@ export default { presencePenalty: 'Штраф за присутствие', presencePenaltyMessage: 'Штраф за присутствие обязателен', presencePenaltyTip: - 'Это препятствует повторению моделью одной и той же информации, штрафуя слова, которые уже появились в разговоре.', + 'Снижает повторение той же информации, штрафуя уже встречавшиеся слова.', frequencyPenalty: 'Штраф за частоту', frequencyPenaltyMessage: 'Штраф за частоту обязателен', frequencyPenaltyTip: 'Подобно штрафу за присутствие, это снижает тенденцию модели часто повторять одни и те же слова.', maxTokens: 'Макс. токенов', - maxTokensMessage: 'Макс. токенов обязательно', - maxTokensTip: `Максимальный размер контекста mодель; недопустимое или неверное значение приведёт к ошибке. По умолчанию 512.`, + maxTokensMessage: 'Максимальное количество токенов обязательно', + maxTokensTip: `Максимальный размер контекста модели; неверное значение вызовет ошибку. По умолчанию 512.`, maxTokensInvalidMessage: - 'Пожалуйста, введите действительное число для Макс. Токенов.', - maxTokensMinMessage: 'Макс. Токенов не может быть меньше 0.', + 'Пожалуйста, введите действительное число для макс. токенов.', + maxTokensMinMessage: 'Максимальное количество токенов не может быть меньше 0.', quote: 'Показать цитату', - quoteTip: 'Отображать ли исходный текст в качестве ссылки.', + quoteTip: 'Отображать ли исходный текст как ссылку.', selfRag: 'Self-RAG', - selfRagTip: - 'Пожалуйста, обратитесь к: https://huggingface.co/papers/2310.11511', + selfRagTip: 'См. https://huggingface.co/papers/2310.11511', overview: 'ID чата', pv: 'Количество сообщений', uv: 'Количество активных пользователей', @@ -677,6 +881,16 @@ export default { created: 'Создано', action: 'Действие', embedModalTitle: 'Встроить на веб-страницу', + published: 'Опубликовано', + publishedTooltip: + 'Использовать опубликованную версию для встраивания. В URL будет release=true.', + embedType: 'Тип встраивания', + fullscreenChat: 'Полноэкранный чат (классический iframe)', + floatingWidget: 'Плавающий виджет (стиль Intercom)', + theme: 'Тема', + light: 'Светлая', + dark: 'Тёмная', + enableStreaming: 'Включить потоковые ответы', comingSoon: 'Скоро будет', fullScreenTitle: 'Полное встраивание', fullScreenDescription: @@ -702,48 +916,74 @@ export default { 'Это оптимизирует пользовательские запросы с использованием контекста в многораундовом разговоре. Когда включено, будет потреблять дополнительные токены LLM.', howUseId: 'Как использовать ID чата?', description: 'Описание ассистента', - descriptionPlaceholder: 'например, Чат-ассистент для резюме.', + descriptionPlaceholder: 'Я чат-ассистент.', useKnowledgeGraph: 'Использовать граф знаний', useKnowledgeGraphTip: 'Использовать ли граф(ы) знаний в указанных базах знаний во время извлечения для многошагового вопросно-ответа. Когда включено, это будет включать итеративные поиски по сущностям, отношениям и чанкам отчетов сообществ, значительно увеличивая время извлечения.', keyword: 'Анализ ключевых слов', - keywordTip: `Использовать LLM для анализа вопросов пользователя, извлечения ключевых слов, которые будут подчеркнуты во время вычисления релевантности. Хорошо работает с длинными запросами, но увеличит время ответа.`, + keywordTip: `LLM анализирует вопросы пользователя и извлекает ключевые слова для релевантности. Хорошо для длинных запросов, увеличивает время ответа.`, languageTip: - 'Позволяет переписывать предложения на указанном языке или по умолчанию на языке последнего вопроса, если не выбрано.', + 'Переписывание на указанном языке или по умолчанию язык последнего вопроса.', avatarHidden: 'Скрыть аватар', - locale: 'Локаль', + locale: 'Локально', selectLanguage: 'Выберите язык', reasoning: 'Рассуждение', reasoningTip: `Включать ли рабочий процесс рассуждений во время вопросно-ответа, как в моделях типа Deepseek-R1 или OpenAI o1. Когда включено, это позволяет модели получать доступ к внешним знаниям и решать сложные вопросы шаг за шагом, используя такие методы, как цепочка рассуждений. Этот подход улучшает способность модели предоставлять точные ответы, разбивая проблемы на управляемые шаги, улучшая производительность на задачах, требующих логического мышления и многошагового подхода.`, tavilyApiKeyTip: 'Если здесь правильно установлен API ключ, для дополнения извлечения из базы знаний будут использоваться веб-поиски на основе Tavily.', - tavilyApiKeyMessage: 'Пожалуйста, введите ваш Tavily API Key', + tavilyApiKeyMessage: 'Введите Tavily API Key', tavilyApiKeyHelp: 'Как его получить?', crossLanguage: 'Кросс-языковой поиск', - crossLanguageTip: `Выберите один или несколько языков для кросс-языкового поиска. Если язык не выбран, система выполняет поиск с исходным запросом.`, + crossLanguagePlaceholder: 'Выберите значение', + crossLanguageTip: `Выберите один или несколько языков для кросс-языкового поиска. Если не выбрано — поиск по исходному запросу.`, createChat: 'Создать чат', metadata: 'Метаданные', metadataTip: 'Фильтрация по метаданным - это процесс использования атрибутов метаданных (таких как теги, категории или права доступа) для уточнения и контроля извлечения релевантной информации в системе.', conditions: 'Условия', + metadataKeys: 'Фильтруемые поля', addCondition: 'Добавить условие', meta: { disabled: 'Выключено', auto: 'Автоматически', manual: 'Вручную', + semi_auto: 'Полуавтоматически', }, cancel: 'Отмена', chatSetting: 'Настройки чата', tocEnhance: 'Улучшение оглавлением', tocEnhanceTip: ` Во время парсинга документа была сгенерирована информация оглавления (см. опцию 'Включить извлечение оглавления' в методе General). Это позволяет большой модели возвращать элементы оглавления, релевантные запросу пользователя, тем самым используя эти элементы для извлечения связанных чанков и применения весов к этим чанкам в процессе сортировки. Этот подход получен из имитации поведенческой логики того, как люди ищут знания в книгах.`, + deleteSelectedConfirm: 'Удалить выбранные сеансы ({{count}})?', }, setting: { + Verify: 'Проверить', + keyValid: 'Ваш API ключ действителен.', + keyInvalid: 'Ваш API ключ недействителен.', + deleteModel: 'Удалить модель', + bedrockCredentialsHint: + 'Подсказка: оставьте Access Key / Secret Key пустыми для аутентификации AWS IAM.', + awsAuthModeAccessKeySecret: 'Ключ доступа (Access Key)', + awsAuthModeIamRole: 'Роль IAM', + awsAuthModeAssumeRole: 'Assume role', + awsAccessKeyId: 'AWS Access Key ID', + awsSecretAccessKey: 'AWS Secret Access Key', + awsRoleArn: 'AWS Role ARN', + awsRoleArnMessage: 'Введите AWS Role ARN', + awsAssumeRoleTip: + 'В этом режиме экземпляр EC2 использует свою роль для доступа к AWS. Дополнительные учётные данные не нужны.', + modelEmptyTip: + 'Нет доступных моделей.
Добавьте модели в панели справа.', + sourceEmptyTip: + 'Источники данных ещё не добавлены. Выберите ниже, чтобы подключить.', + seconds: 'сек.', + minutes: 'мин.', edit: 'Редактировать', cropTip: 'Перетащите область выбора, чтобы выбрать позицию обрезки изображения, и прокрутите для увеличения/уменьшения', cropImage: 'Обрезать изображение', selectModelPlaceholder: 'Выберите модель', configureModelTitle: 'Настроить модель', + connectorNameTip: 'Укажите понятное имя для коннектора', confluenceIsCloudTip: 'Отметьте, если это экземпляр Confluence Cloud, снимите для Confluence Server/Data Center', confluenceWikiBaseUrlTip: @@ -765,35 +1005,59 @@ export default { newDocs: 'Новые документы', timeStarted: 'Время начала', log: 'Лог', - connectorNameTip: 'Укажите понятное имя для коннектора', + rssDescription: + 'Подключение к публичной ленте RSS или Atom и синхронизация записей в базу знаний.', confluenceDescription: 'Интегрируйте ваше рабочее пространство Confluence для поиска документации.', s3Description: 'Подключитесь к вашему AWS S3 бакету для импорта и синхронизации хранимых файлов.', - oci_storageDescription: - 'Подключите бакет Oracle Cloud Object Storage для импорта и синхронизации файлов.', - r2Description: - 'Подключите ваш бакет Cloudflare R2 для импорта и синхронизации файлов.', google_cloud_storageDescription: 'Подключите бакет Google Cloud Storage для импорта и синхронизации файлов.', + r2Description: + 'Подключите ваш бакет Cloudflare R2 для импорта и синхронизации файлов.', + oci_storageDescription: + 'Подключите бакет Oracle Cloud Object Storage для импорта и синхронизации файлов.', discordDescription: 'Свяжите ваш Discord сервер для доступа и анализа данных чата.', notionDescription: 'Синхронизируйте страницы и базы данных из Notion для извлечения знаний.', - boxDescription: - 'Подключите ваш диск Box для синхронизации файлов и папок.', - bitbucketDescription: - 'Подключите Bitbucket для синхронизации содержимого PR.', + google_driveDescription: + 'Подключите ваш Google Drive через OAuth и синхронизируйте определенные папки или диски.', + gmailDescription: + 'Подключите ваш Gmail / Google Workspace аккаунт для синхронизации писем и их метаданных, чтобы построить корпоративную почтовую базу знаний и поиск с учетом прав доступа.', + webdavDescription: + 'Подключение к серверам WebDAV для синхронизации файлов.', + webdavRemotePathTip: + 'Необязательно: укажите путь к папке на сервере WebDAV (например, /Documents). Оставьте пустым для синхронизации с корня.', + google_driveTokenTip: + 'Загрузите JSON токена OAuth, сгенерированный из помощника OAuth или Google Cloud Console. Вы также можете загрузить client_secret JSON из "установленного" или "веб" приложения. Если это ваша первая синхронизация, откроется окно браузера для завершения согласия OAuth. Если JSON уже содержит токен обновления, он будет автоматически повторно использован.', + google_drivePrimaryAdminTip: + 'Адрес электронной почты, который имеет доступ к содержимому Диска, которое синхронизируется.', zendeskDescription: 'Подключите Zendesk для синхронизации тикетов, статей и другого контента.', + google_driveMyDriveEmailsTip: + 'Электронные почты через запятую, чье содержимое "Мой диск" должно индексироваться (включите основного администратора).', + google_driveSharedFoldersTip: + 'Ссылки на папки Google Drive через запятую для обхода.', + gmailPrimaryAdminTip: + 'Основной административный email с доступом к Gmail / Workspace, используется для перечисления пользователей домена и как аккаунт синхронизации по умолчанию.', + gmailTokenTip: + 'Загрузите OAuth JSON, сгенерированный в Google Console. Если он содержит только учетные данные клиента, выполните одноразовое подтверждение в браузере, чтобы получить долгоживущие токены обновления.', + dropboxDescription: + 'Подключите ваш Dropbox для синхронизации файлов и папок из выбранного аккаунта.', + bitbucketDescription: + 'Подключите Bitbucket для синхронизации содержимого PR.', bitbucketTopWorkspaceTip: 'Рабочее пространство Bitbucket для индексации (например, "atlassian" из https://bitbucket.org/atlassian/workspace )', - bitbucketWorkspaceTip: - 'Этот коннектор проиндексирует все репозитории в рабочем пространстве.', - bitbucketProjectsTip: - 'Ключи проектов через запятую, например: PROJ1,PROJ2', bitbucketRepositorySlugsTip: 'Слоги репозиториев через запятую, например: repo-one,repo-two', + bitbucketProjectsTip: + 'Ключи проектов через запятую, например: PROJ1,PROJ2', + bitbucketWorkspaceTip: + 'Этот коннектор проиндексирует все репозитории в рабочем пространстве.', + boxDescription: + 'Подключите ваш диск Box для синхронизации файлов и папок.', + githubDescription: 'Подключите GitHub для синхронизации содержимого Pull Request и Issue для поиска.', airtableDescription: @@ -806,22 +1070,65 @@ export default { 'Подключите Asana и синхронизируйте файлы из рабочего пространства.', imapDescription: 'Подключите почтовый ящик IMAP для синхронизации писем из указанных почтовых ящиков (mailboxes) с целью поиска и анализа знаний.', - google_driveDescription: - 'Подключите ваш Google Drive через OAuth и синхронизируйте определенные папки или диски.', - gmailDescription: - 'Подключите ваш Gmail / Google Workspace аккаунт для синхронизации писем и их метаданных, чтобы построить корпоративную почтовую базу знаний и поиск с учетом прав доступа.', - google_driveTokenTip: - 'Загрузите JSON токена OAuth, сгенерированный из помощника OAuth или Google Cloud Console. Вы также можете загрузить client_secret JSON из "установленного" или "веб" приложения. Если это ваша первая синхронизация, откроется окно браузера для завершения согласия OAuth. Если JSON уже содержит токен обновления, он будет автоматически повторно использован.', - google_drivePrimaryAdminTip: - 'Адрес электронной почты, который имеет доступ к содержимому Диска, которое синхронизируется.', - google_driveMyDriveEmailsTip: - 'Электронные почты через запятую, чье содержимое "Мой диск" должно индексироваться (включите основного администратора).', - google_driveSharedFoldersTip: - 'Ссылки на папки Google Drive через запятую для обхода.', - gmailPrimaryAdminTip: - 'Основной административный email с доступом к Gmail / Workspace, используется для перечисления пользователей домена и как аккаунт синхронизации по умолчанию.', - gmailTokenTip: - 'Загрузите OAuth JSON, сгенерированный в Google Console. Если он содержит только учетные данные клиента, выполните одноразовое подтверждение в браузере, чтобы получить долгоживущие токены обновления.', + dropboxAccessTokenTip: + 'Создайте долгоживущий токен доступа в консоли приложений Dropbox с областями files.metadata.read, files.content.read и sharing.read.', + moodleDescription: + 'Подключитесь к Moodle LMS для синхронизации курсов, форумов и материалов.', + moodleUrlTip: + 'Базовый URL вашего Moodle (например, https://moodle.university.edu). Не указывайте /webservice или /login.', + moodleTokenTip: + 'Создайте токен веб-службы в Moodle: Администрирование сайта → Сервер → Веб-службы → Управление токенами. Пользователь должен быть зачислен на курсы, которые вы синхронизируете.', + seafileDescription: + 'Подключитесь к серверу SeaFile для синхронизации файлов и документов из библиотек.', + seafileUrlTip: + 'Полный URL сервера SeaFile с протоколом. Пример: https://seafile.example.com — без завершающего слэша и пути после домена.', + seafileAccountScopeTip: + 'Синхронизирует все библиотеки, видимые для указанного ниже токена API аккаунта.', + seafileTokenPanelHeading: 'Укажите один из способов аутентификации:', + seafileTokenPanelAccountBullet: + '— доступ ко всем вашим библиотекам.', + seafileTokenPanelLibraryBullet: + '— только к одной библиотеке (безопаснее).', + seafileValidationAccountTokenRequired: + 'Для области «Весь аккаунт» требуется токен API аккаунта', + seafileValidationTokenRequired: + 'Укажите токен API аккаунта или токен библиотеки', + seafileValidationLibraryIdRequired: 'Требуется ID библиотеки', + seafileValidationDirectoryPathRequired: 'Требуется путь к каталогу', + seafileSyncScopeTip: + 'Что синхронизировать: ' + + '(1) Весь аккаунт — все библиотеки, доступные токену. Нужен токен API аккаунта. ' + + '(2) Одна библиотека — все файлы в одной библиотеке. Нужны ID библиотеки и токен API аккаунта или токен библиотеки. ' + + '(3) Конкретный каталог — только файлы в папке. Нужны ID библиотеки, путь к папке и токен API аккаунта или токен библиотеки.', + seafileTokenTip: + 'Токен API уровня аккаунта SeaFile. ' + + 'Даёт доступ ко всем видимым библиотекам. ' + + 'Обязателен при области «Весь аккаунт». ' + + 'Для «Одна библиотека» или «Конкретный каталог» можно использовать этот токен или токен библиотеки.', + seafileRepoTokenTip: + 'Токен API уровня библиотеки — доступ только к одной библиотеке. ' + + 'Можно вместо токена аккаунта для областей «Одна библиотека» и «Конкретный каталог».', + seafileRepoIdTip: + 'Уникальный идентификатор (UUID) библиотеки SeaFile. ' + + 'Смотрите в адресной строке браузера при открытии библиотеки в веб-интерфейсе. ' + + 'Пример: 7a9e1b3c-4d5f-6a7b-8c9d-0e1f2a3b4c5d. ' + + 'Обязателен для «Одна библиотека» или «Конкретный каталог».', + seafileSyncPathTip: + 'Абсолютный путь к папке внутри библиотеки по указанному выше ID. ' + + 'Должен начинаться с /. ' + + 'Рекурсивно включаются все файлы и подпапки. ' + + 'Пример: /Documents/Reports. ' + + 'Папка должна существовать внутри библиотеки. ' + + 'Пути вне библиотеки не поддерживаются. ' + + 'Только для области «Конкретный каталог».', + seafileIncludeSharedTip: + 'Если включено, в синхронизацию попадают библиотеки, которыми с вами поделились. ' + + 'Если выключено — только ваши библиотеки. ' + + 'Только для области «Весь аккаунт».', + seafileBatchSizeTip: + 'Число документов в одном пакете при синхронизации. ' + + 'Меньше значение — меньше памяти, но может быть медленнее. ' + + 'По умолчанию: 100.', jiraDescription: 'Подключите ваше рабочее пространство Jira для синхронизации задач, комментариев и вложений.', jiraBaseUrlTip: @@ -848,6 +1155,30 @@ export default { jiraTokenTip: 'API токен, сгенерированный из https://id.atlassian.com/manage-profile/security/api-tokens.', jiraPasswordTip: 'Опциональный пароль для сред Jira Server/Data Center.', + mysqlDescription: + 'Подключение к MySQL для синхронизации данных из таблиц через SQL-запросы.', + mysqlQueryTip: + 'SQL-запрос для выборки данных (например, SELECT * FROM products WHERE status = "active").', + mysqlContentColumnsTip: + 'Столбцы через запятую, значения которых объединяются в содержимое документа для векторизации.', + mysqlMetadataColumnsTip: + 'Столбцы через запятую для метаданных документа (не векторизуются, но доступны для поиска).', + mysqlIdColumnTip: + 'Столбец уникального ID документа. Если не указан — используется хэш содержимого.', + mysqlTimestampColumnTip: + 'Столбец даты/времени для инкрементальной синхронизации. Подтягиваются строки, изменённые после последней синхронизации.', + postgresqlDescription: + 'Подключение к PostgreSQL для синхронизации данных из таблиц через SQL-запросы.', + postgresqlQueryTip: + "SQL-запрос для выборки данных (например, SELECT * FROM products WHERE status = 'active').", + postgresqlContentColumnsTip: + 'Столбцы через запятую, значения которых объединяются в содержимое документа для векторизации.', + postgresqlMetadataColumnsTip: + 'Столбцы через запятую для метаданных документа (не векторизуются, но доступны для поиска).', + postgresqlIdColumnTip: + 'Столбец уникального ID документа. Если не указан — используется хэш содержимого.', + postgresqlTimestampColumnTip: + 'Столбец даты/времени для инкрементальной синхронизации. Подтягиваются строки, изменённые после последней синхронизации.', availableSourcesDescription: 'Выберите источник данных для добавления', availableSources: 'Доступные источники', datasourceDescription: @@ -863,8 +1194,8 @@ export default { maxTokensMessage: 'Макс. Токенов обязательно', maxTokensTip: `Максимальный размер контекста mодель; недопустимое или неверное значение приведёт к ошибке. По умолчанию 512.`, maxTokensInvalidMessage: - 'Пожалуйста, введите действительное число для Макс. Токенов.', - maxTokensMinMessage: 'Макс. Токенов не может быть меньше 0.', + 'Пожалуйста, введите действительное число для максимального количества токенов.', + maxTokensMinMessage: 'Максимальное количество токенов не может быть меньше 0.', password: 'Пароль', passwordDescription: 'Пожалуйста, введите ваш текущий пароль, чтобы изменить ваш пароль.', @@ -955,6 +1286,18 @@ export default { modelTypeMessage: 'Пожалуйста, введите тип вашей модели!', addLlmBaseUrl: 'Базовый url', baseUrlNameMessage: 'Пожалуйста, введите ваш базовый url!', + paddleocr: { + apiUrl: 'URL API PaddleOCR', + apiUrlPlaceholder: + 'Например: https://paddleocr-server.com/layout-parsing', + accessToken: 'Токен доступа AI Studio', + accessTokenPlaceholder: 'Ваш токен AI Studio (необязательно)', + algorithm: 'Алгоритм PaddleOCR', + selectAlgorithm: 'Выбрать алгоритм', + modelNamePlaceholder: 'Например: paddleocr-from-env-1', + modelNameRequired: 'Имя модели является обязательным', + apiUrlRequired: 'URL API PaddleOCR является обязательным', + }, vision: 'Поддерживает ли Vision?', ollamaLink: 'Как интегрировать {{name}}', FishAudioLink: 'Как использовать FishAudio', @@ -1012,13 +1355,13 @@ export default { TencentCloudSKMessage: 'Пожалуйста, введите ваш Secret Key', SparkModelNameMessage: 'Пожалуйста, выберите модель Spark', addSparkAPIPassword: 'Spark APIPassword', - SparkAPIPasswordMessage: 'пожалуйста, введите ваш APIPassword', + SparkAPIPasswordMessage: 'Пожалуйста, введите ваш APIPassword', addSparkAPPID: 'Spark APP ID', - SparkAPPIDMessage: 'пожалуйста, введите ваш APP ID', + SparkAPPIDMessage: 'Пожалуйста, введите ваш APP ID', addSparkAPISecret: 'Spark APISecret', - SparkAPISecretMessage: 'пожалуйста, введите ваш APISecret', + SparkAPISecretMessage: 'Пожалуйста, введите ваш APISecret', addSparkAPIKey: 'Spark APIKey', - SparkAPIKeyMessage: 'пожалуйста, введите ваш APIKey', + SparkAPIKeyMessage: 'Пожалуйста, введите ваш APIKey', yiyanModelNameMessage: 'Пожалуйста, введите название модели', addyiyanAK: 'yiyan API KEY', yiyanAKMessage: 'Пожалуйста, введите ваш API KEY', @@ -1068,18 +1411,40 @@ export default { modelsToBeAddedTooltip: 'Если ваш провайдер моделей не указан, но заявляет о "совместимости с OpenAI-API", выберите карточку OpenAI-API-compatible, чтобы добавить соответствующие модели. ', mcp: 'MCP', - paddleocr: { - apiUrl: 'URL API PaddleOCR', - apiUrlPlaceholder: - 'Например: https://paddleocr-server.com/layout-parsing', - accessToken: 'Токен доступа AI Studio', - accessTokenPlaceholder: 'Ваш токен AI Studio (необязательно)', - algorithm: 'Алгоритм PaddleOCR', - selectAlgorithm: 'Выбрать алгоритм', - modelNamePlaceholder: 'Например: paddleocr-from-env-1', - modelNameRequired: 'Имя модели является обязательным', - apiUrlRequired: 'URL API PaddleOCR является обязательным', + mineru: { + modelNameRequired: 'Имя модели обязательно', + apiServerRequired: 'Требуется конфигурация сервера MinerU API', + serverUrlBackendLimit: + 'URL сервера MinerU доступен только для бэкенда HTTP-клиента', + apiserver: 'Конфигурация сервера MinerU API', + outputDir: 'Путь к каталогу вывода MinerU', + backend: 'Тип бэкенда обработки MinerU', + serverUrl: 'Адрес URL сервера MinerU', + deleteOutput: 'Удалять выходные файлы после обработки', + selectBackend: 'Выберите бэкенд обработки', + backendOptions: { + pipeline: 'Стандартный конвейер обработки', + vlmTransformers: 'Vision Language Model с Transformers', + vlmVllmEngine: 'Vision Language Model с движком vLLM', + vlmHttpClient: 'Vision Language Model через HTTP-клиент', + vlmMlxEngine: 'Vision Language Model с движком MLX', + vlmVllmAsyncEngine: + 'Vision Language Model с асинхронным vLLM (экспериментально)', + vlmLmdeployEngine: + 'Vision Language Model с LMDeploy (экспериментально)', + }, }, + modelTypes: { + chat: 'Чат', + embedding: 'Эмбеддинг', + rerank: 'Rerank', + sequence2text: 'sequence2text', + tts: 'TTS', + image2text: 'OCR', + speech2text: 'ASR', + }, + showToc: 'Показать содержание', + hideToc: 'Скрыть содержание', }, message: { registered: 'Зарегистрирован!', @@ -1117,10 +1482,12 @@ export default { hint: 'подсказка', }, fileManager: { + uploadFolderTitle: 'Загрузить папку', + folder: 'Папка', files: 'Файлы', name: 'Название', uploadDate: 'Дата загрузки', - knowledgeBase: 'Датасет', + knowledgeBase: 'База знаний', size: 'Размер', action: 'Действие', addToKnowledge: 'Связать с Базой Знаний', @@ -1143,6 +1510,14 @@ export default { pleaseUploadAtLeastOneFile: 'Пожалуйста, загрузите хотя бы один файл', }, flow: { + preprocess: { + preprocess: 'Предобработка', + mainContent: 'Основное содержимое', + abstract: 'Аннотация', + author: 'Автор', + sectionTitle: 'Заголовок раздела', + }, + autoPlay: 'Автовоспроизведение аудио', downloadFileTypeTip: 'Тип файла для скачивания', downloadFileType: 'Тип скачиваемого файла', formatTypeError: 'Ошибка формата или типа', @@ -1158,6 +1533,7 @@ export default { other: 'Другое', ingestionPipeline: 'Пайплайн обработки', agents: 'Агенты', + publishedAt: 'Дата публикации', days: 'Дни', beginInput: 'Начальный ввод', ref: 'Переменная', @@ -1189,6 +1565,7 @@ export default { tab: 'Табуляция', space: 'Пробел', delimiters: 'Разделители', + enableChildrenDelimiters: 'Дочерние чанки используются для извлечения', merge: 'Объединить', split: 'Разделить', script: 'Скрипт', @@ -1204,9 +1581,9 @@ export default { builtIn: 'Встроенный', ExceptionDefaultValue: 'Значение по умолчанию при исключении', exceptionMethod: 'Метод обработки исключений', - maxRounds: 'Макс. раундов рефлексии', + maxRounds: 'Максимальное количество раундов рефлексии', delayAfterError: 'Задержка после ошибки', - maxRetries: 'Макс. попыток повтора', + maxRetries: 'Максимальное количество попыток повтора', advancedSettings: 'Расширенные настройки', addTools: 'Добавить инструменты', sysPromptDefaultValue: ` @@ -1238,6 +1615,7 @@ export default { citeTip: 'Подсказка цитирования', name: 'Название', nameMessage: 'Пожалуйста, введите название', + lastSavedAt: 'Последнее сохранение', description: 'Описание', descriptionMessage: 'Это агент для конкретной задачи.', examples: 'Примеры', @@ -1250,8 +1628,13 @@ export default { addField: 'Добавить опцию', addMessage: 'Добавить сообщение', loop: 'Цикл', - loopTip: - 'Цикл - это верхний предел количества циклов текущего компонента, когда количество циклов превышает значение цикла, это означает, что компонент не может выполнить текущую задачу, пожалуйста, повторно оптимизируйте агента', + loopDescription: + 'Цикл — верхний предел числа итераций текущего компонента; если число итераций превышает значение цикла, компонент не может завершить задачу — оптимизируйте агента', + exitLoop: 'Выход из цикла', + exitLoopDescription: `Эквивалентно «break». У этого узла нет настроек. Когда тело цикла достигает этого узла, цикл завершается.`, + loopVariables: 'Переменные цикла', + maximumLoopCount: 'Максимальное число итераций', + loopTerminationCondition: 'Условие завершения цикла', yes: 'Да', no: 'Нет', key: 'Ключ', @@ -1263,7 +1646,7 @@ export default { title: 'ID:', beginDescription: 'Здесь начинается поток.', answerDescription: `Компонент, который служит интерфейсом между человеком и ботом, получает пользовательские вводы и отображает ответы агента.`, - retrievalDescription: `Компонент, который извлекает информацию из указанных баз знаний (датасетов). Убедитесь, что выбранные вами базы знаний используют одну и ту же модель эмбеддингов.`, + retrievalDescription: `Компонент, который извлекает информацию из указанных баз знаний (баз знаний). Убедитесь, что выбранные вами базы знаний используют одну и ту же модель эмбеддингов.`, generateDescription: `Компонент, который побуждает LLM генерировать ответы. Убедитесь, что промпт установлен правильно.`, categorizeDescription: `Компонент, который использует LLM для классификации пользовательских вводов в предопределенные категории. Убедитесь, что вы указали название, описание и примеры для каждой категории, вместе с соответствующим следующим компонентом.`, relevantDescription: `Компонент, который использует LLM для оценки, релевантен ли вывод вышестоящего компонента последнему запросу пользователя. Убедитесь, что вы указали следующий компонент для каждого результата оценки.`, @@ -1282,8 +1665,7 @@ export default { generate: 'Генерация', answer: 'Взаимодействие', categorize: 'Классификация', - relevant: 'Релевантность', - rewriteQuestion: 'Переписать', + rewriteQuestion: 'Переписать вопрос', rewrite: 'Переписать', begin: 'Начало', message: 'Сообщение', @@ -1348,7 +1730,7 @@ export default { google: 'Google', googleDescription: 'Компонент, который выполняет поиск на https://www.google.com/, позволяя вам указать количество результатов поиска с помощью TopN. Он дополняет существующие базы знаний. Обратите внимание, что для этого требуется API ключ от serpapi.com.', - bing: 'Bing', + bing: 'Microsoft Bing', bingDescription: 'Компонент, который выполняет поиск на https://www.bing.com/, позволяя вам указать количество результатов поиска с помощью TopN. Он дополняет существующие базы знаний. Обратите внимание, что для этого требуется API ключ от microsoft.com.', apiKey: 'API KEY', @@ -1490,6 +1872,7 @@ export default { dbType: 'Тип базы данных', database: 'База данных', username: 'Имя пользователя', + userId: 'ID пользователя', host: 'Хост', port: 'Порт', password: 'Пароль', @@ -1508,6 +1891,10 @@ export default { endWith: 'Заканчивается на', empty: 'Пусто', notEmpty: 'Не пусто', + in: 'Входит в', + notIn: 'Не входит в', + is: 'Соответствует', + isNot: 'Не соответствует', }, switchLogicOperatorOptions: { and: 'И', @@ -1539,7 +1926,7 @@ export default { yahooFinance: 'YahooFinance', yahooFinanceDescription: 'Компонент, который запрашивает информацию о публично торгуемой компании, используя ее тикер.', - crawler: 'Веб-краулер', + crawler: 'Поисковый робот', crawlerDescription: 'Компонент, который сканирует HTML исходный код с указанного URL.', proxy: 'Прокси', @@ -1691,6 +2078,7 @@ export default { variableSettings: 'Настройки переменных', systemPrompt: 'Системный промпт', userPrompt: 'Пользовательский промпт', + tocDataSource: 'Источник данных', addCategory: 'Добавить категорию', categoryName: 'Название категории', nextStep: 'Следующий шаг', @@ -1773,6 +2161,8 @@ export default { beginInputTip: 'Параметры ввода, определённые здесь, могут быть доступны компонентам в последующем рабочем процессе.', query: 'Переменные запроса', + switchPromptMessage: + 'Промпты изменятся. Подтвердите, что хотите отменить существующие промпты?', queryRequired: 'Запрос обязателен', queryTip: 'Выберите переменную, которую хотите использовать', agent: 'Агент', @@ -1783,13 +2173,13 @@ export default { createAgent: 'Поток агента', stringTransform: 'Обработка текста', userFillUp: 'Ожидание ответа', - userFillUpDescription: `Приостанавливает рабочий процесс и ждет сообщение пользователя перед продолжением.`, + userFillUpDescription: `Приостанавливает рабочий процесс и ждёт сообщения пользователя перед продолжением.`, codeExec: 'Код', tavilySearch: 'Поиск Tavily', tavilySearchDescription: 'Результаты поиска через сервис Tavily.', tavilyExtract: 'Извлечение Tavily', - tavilyExtractDescription: 'Извлечение Tavily', - log: 'Лог', + tavilyExtractDescription: 'Tavily Extract', + log: 'Журнал', management: 'Управление', import: 'Импорт', export: 'Экспорт', @@ -1800,72 +2190,81 @@ export default { descriptionPlaceholder: 'Пожалуйста, введите описание', line: 'Однострочный текст', paragraph: 'Текст абзаца', - options: 'Выпадающие опции', + options: 'Варианты выпадающего списка', file: 'Загрузка файла', integer: 'Число', - boolean: 'Булево значение', + boolean: 'Логический', logTimeline: { begin: 'Готов к началу', - agent: 'Агент думает', - userFillUp: 'Ожидание вас', - retrieval: 'Поиск знаний', - message: 'Агент говорит', - awaitResponse: 'Ожидание вас', + agent: 'Агент размышляет', + userFillUp: 'Ждём вас', + retrieval: 'Поиск в базе знаний', + message: 'Ответ агента', + awaitResponse: 'Ждём вас', switch: 'Выбор лучшего пути', iteration: 'Пакетная обработка', - categorize: 'Классификация информации', - code: 'Запуск быстрого скрипта', - textProcessing: 'Упорядочивание текста', - tavilySearch: 'Поиск в вебе', + categorize: 'Классификация', + code: 'Запуск скрипта', + textProcessing: 'Обработка текста', + tavilySearch: 'Поиск в интернете', tavilyExtract: 'Чтение страницы', - exeSQL: 'Запрос к базе данных', - google: 'Поиск в вебе', + exeSQL: 'Запрос к БД', + google: 'Поиск в интернете', wikipedia: 'Поиск в Wikipedia', googleScholar: 'Академический поиск', gitHub: 'Поиск в GitHub', email: 'Отправка email', httpRequest: 'Вызов API', - wenCai: 'Запрос финансовых данных', + wenCai: 'Финансовые данные', }, - goto: 'Ветка неудачи', + goto: 'Ветка ошибки', comment: 'Значение по умолчанию', - sqlStatement: 'SQL Запрос', + sqlStatement: 'SQL-запрос', sqlStatementTip: - 'Напишите ваш SQL запрос здесь. Вы можете использовать переменные, чистый SQL или смешивать оба, используя синтаксис переменных.', + 'Напишите SQL-запрос здесь. Можно использовать переменные, сырой SQL или смешивать оба через синтаксис переменных.', frameworkPrompts: 'Фреймворк', release: 'Опубликовать', - createFromBlank: 'Создать с чистого листа', + production: 'Продакшн', + productionTooltip: + 'Эта версия опубликована в продакшн. Доступ через API или встроенную страницу.', + confirmPublish: 'Подтвердить публикацию', + publishIngestionPipeline: + 'Вы собираетесь опубликовать этот пайплайн обработки.', + publishAgent: 'Вы собираетесь опубликовать этого агента', + linkedDataset: 'Связанная база знаний:', + lastPublished: 'Последняя публикация', + createFromBlank: 'Создать с нуля', createFromTemplate: 'Создать из шаблона', - importJsonFile: 'Импортировать JSON файл', - ceateAgent: 'Поток агента', + importJsonFile: 'Импорт JSON файла', + ceateAgent: 'Рабочий процесс', createPipeline: 'Пайплайн обработки', - chooseAgentType: 'Выберите тип агента', + chooseAgentType: 'Тип агента', parser: 'Парсер', parserDescription: - 'Извлекает исходный текст и структуру из файлов для последующей обработки.', + 'Извлекает сырой текст и структуру из файлов для последующей обработки.', tokenizer: 'Индексатор', - tokenizerRequired: 'Пожалуйста, сначала добавьте узел Индексатора', + tokenizerRequired: 'Сначала добавьте узел индексатора', tokenizerDescription: - 'Преобразует текст в требуемую структуру данных (например, векторные эмбеддинги для поиска по эмбеддингам) в зависимости от выбранного метода поиска.', + 'Преобразует текст в нужную структуру данных (например, векторные эмбеддинги для embedding-поиска) в зависимости от выбранного метода поиска.', splitter: 'Токен', splitterDescription: - 'Разделяет текст на чанки по длине токена с опциональными разделителями и перекрытием.', + 'Разбивает текст на чанки по длине токенов с опциональными разделителями и перекрытием.', hierarchicalMergerDescription: - 'Разделяет документы на разделы по иерархии заголовков с regex правилами для более точного контроля.', + 'Разбивает документы на секции по иерархии заголовков с regex для точного контроля.', hierarchicalMerger: 'Заголовок', extractor: 'Трансформер', extractorDescription: - 'Использует LLM для извлечения структурированных инсайтов из чанков документов - таких как резюме, классификации и т.д.', + 'Использует LLM для извлечения структурированных данных из чанков — резюме, классификаций и т.д.', outputFormat: 'Формат вывода', fileFormats: 'Тип файла', fileFormatOptions: { pdf: 'PDF', spreadsheet: 'Электронная таблица', image: 'Изображение', - email: 'Email', + email: 'Электронная почта', 'text&markdown': 'Текст и разметка', - word: 'Word', + word: 'Word файл', slides: 'PPTX', audio: 'Аудио', video: 'Видео', @@ -1876,20 +2275,23 @@ export default { regularExpressions: 'Регулярные выражения', overlappedPercent: 'Процент перекрытия (%)', searchMethod: 'Метод поиска', - searchMethodTip: `Определяет, как можно искать контент — по полному тексту, эмбеддингам или обоим способам. -Индексатор будет хранить контент в соответствующих структурах данных для выбранных методов.`, - // file: 'Файл', - parserMethod: 'PDF парсер', - // systemPrompt: 'Системный Промпт', + searchMethodTip: `Определяет, как ищется контент — полнотекстом, эмбеддингами или обоими способами. +Индексатор сохранит контент в соответствующих структурах данных для выбранных методов.`, + // file: 'File', + parserMethod: 'Парсер PDF', + tableResultType: 'Тип результата таблицы', + markdownImageResponseType: 'Тип ответа изображения в Markdown', + // systemPrompt: 'System Prompt', systemPromptPlaceholder: - 'Введите системный промпт для анализа изображений, если пусто, будет использовано системное значение по умолчанию', - exportJson: 'Экспортировать JSON', - viewResult: 'Просмотреть результат', + 'Системный промпт для анализа изображений; если пусто — используется значение по умолчанию', + exportJson: 'Экспорт JSON', + viewResult: 'Результат', running: 'Выполняется', - summary: 'Резюме', + summary: 'Сводка', keywords: 'Ключевые слова', questions: 'Вопросы', metadata: 'Метаданные', + toc: 'PageIndex', fieldName: 'Назначение результата', prompts: { system: { @@ -1927,6 +2329,7 @@ export default { metadata: `Извлеките важную структурированную информацию из данного содержимого. Выводите ТОЛЬКО действительную JSON строку без дополнительного текста. Если важная структурированная информация не найдена, выведите пустой JSON объект: {}. Важная структурированная информация может включать: имена, даты, местоположения, события, ключевые факты, числовые данные или другие извлекаемые сущности.`, + toc: '', }, user: { keywords: `Текстовое содержимое @@ -1936,6 +2339,7 @@ export default { summary: `Текст для обобщения: [Вставьте текст здесь]`, metadata: `Содержимое: [ВСТАВЬТЕ СОДЕРЖИМОЕ ЗДЕСЬ]`, + toc: '[Вставьте текст здесь]', }, }, cancel: 'Отмена', @@ -1986,15 +2390,67 @@ export default { overwrite: 'Перезаписано', clear: 'Очистить', set: 'Установить', - '+=': 'Добавить', - '-=': 'Вычесть', - '*=': 'Умножить', - '/=': 'Разделить', - append: 'Добавить', + add: 'Добавить', + subtract: 'Вычесть', + multiply: 'Умножить', + divide: 'Разделить', + append: 'Добавить в список', extend: 'Расширить', removeFirst: 'Удалить первый', removeLast: 'Удалить последний', }, + webhook: { + name: 'Вебхук', + methods: 'Методы', + contentTypes: 'Типы содержимого', + security: 'Безопасность', + schema: 'Схема', + response: 'Ответ', + executionMode: 'Режим выполнения', + executionModeTip: + 'Подтверждение: система сразу возвращает подтверждение после проверки запроса, рабочий процесс продолжается асинхронно в фоне. / Финальный ответ: система возвращает ответ только после завершения выполнения процесса.', + authMethods: 'Методы аутентификации', + authType: 'Тип аутентификации', + limit: 'Ограничение частоты запросов', + per: 'Период времени', + maxBodySize: 'Максимальный размер тела', + ipWhitelist: 'Белый список IP', + tokenHeader: 'Заголовок токена', + tokenValue: 'Значение токена', + username: 'Имя пользователя', + password: 'Пароль', + algorithm: 'Алгоритм', + secret: 'Секрет', + issuer: 'Издатель', + audience: 'Аудитория', + requiredClaims: 'Обязательные claims', + header: 'Заголовок', + status: 'Статус', + headersTemplate: 'Шаблон заголовков', + bodyTemplate: 'Шаблон тела', + basic: 'Basic', + bearer: 'Bearer', + apiKey: 'API-ключ', + queryParameters: 'Параметры запроса', + headerParameters: 'Параметры заголовка', + requestBodyParameters: 'Параметры тела запроса', + immediately: 'Подтверждение получено', + streaming: 'Финальный ответ', + overview: 'Обзор', + logs: 'Журналы', + agentStatus: 'Статус агента:', + }, + saveToMemory: 'Сохранить в память', + retrievalFrom: 'Извлечение из', + id: 'ID', + state: 'Состояние', + number: 'Число', + latestDate: 'Последняя дата', + createDate: 'Дата создания', + noDataToExport: 'Нет данных для экспорта', + success: 'Успех', + failed: 'Ошибка', + logTitle: 'Заголовок', }, llmTools: { bad_calculator: { @@ -2020,6 +2476,7 @@ export default { editMCP: 'Редактировать MCP', toolsAvailable: 'доступные инструменты', mcpServers: 'MCP серверы', + mcpServer: 'MCP сервер', customizeTheListOfMcpServers: 'Настроить список MCP серверов', cachedTools: 'кэшированные инструменты', bulkManage: 'Пакетное управление', @@ -2119,7 +2576,36 @@ export default { processingSuccessTip: 'Всего успешно обработанных файлов', processingFailedTip: 'Всего неудачных обработок', processing: 'Обработка', + noData: 'Пока нет записей в логе', }, + + deleteModal: { + delAgent: 'Удалить агента', + delDataset: 'Удалить датасет', + delSearch: 'Удалить поиск', + delFile: 'Удалить файл', + delFiles: 'Удалить файлы', + delFilesContent: 'Выбрано файлов: {{count}}', + delChat: 'Удалить чат', + delMember: 'Удалить участника', + delMemory: 'Удалить память', + }, + + empty: { + noMCP: 'Нет доступных MCP-серверов', + agentTitle: 'Приложение агента ещё не создано', + notFoundAgent: 'Приложение агента не найдено', + datasetTitle: 'Датасет ещё не создан', + notFoundDataset: 'Датасет не найден', + chatTitle: 'Чат-приложение ещё не создано', + notFoundChat: 'Чат-приложение не найдено', + searchTitle: 'Поисковое приложение ещё не создано', + notFoundSearch: 'Поисковое приложение не найдено', + memoryTitle: 'Память ещё не создана', + notFoundMemory: 'Память не найдена', + addNow: 'Добавить сейчас', + }, + admin: { loginTitle: 'Административная консоль', title: 'RAGFlow', @@ -2133,6 +2619,7 @@ export default { import: 'Импорт', description: 'Описание', noDescription: 'Нет описания', + none: 'Нет', resourceType: { dataset: 'Датасет', @@ -2153,10 +2640,44 @@ export default { serviceStatus: 'Статус сервиса', userManagement: 'Управление пользователями', + sandboxSettings: 'Настройки песочницы', registrationWhitelist: 'Белый список регистрации', roles: 'Роли', monitoring: 'Мониторинг', + sandboxSettingsPage: { + description: + 'Настройте провайдера песочницы для выполнения кода. Песочница используется компонентом Code в агентах.', + providerSelection: 'Выбор провайдера', + providerSelectionDescription: + 'Выберите провайдера песочницы для выполнения кода', + + namedProviderConfiguration: 'Конфигурация {{name}}', + namedProviderConfigurationDescription: + 'Настройте подключение для {{name}}.', + + saveConfiguration: 'Сохранить конфигурацию', + saving: 'Сохранение...', + + testConnectionResultModal: { + title: 'Результат проверки соединения', + testing: 'Проверка соединения с провайдером песочницы...', + success: 'Успешно подключено к провайдеру песочницы', + failed: 'Не удалось подключиться к провайдеру песочницы', + + exitCode: 'Код выхода', + executionTime: 'Время выполнения', + stdout: 'Стандартный вывод', + stderr: 'Ошибка / трассировка стека', + }, + + testConnection: 'Проверить соединение', + testing: 'Проверка...', + }, + + selectFile: 'Выберите файл', + noFileSelected: 'Файл не выбран', + back: 'Назад', active: 'Активный', inactive: 'Неактивный', @@ -2176,7 +2697,9 @@ export default { role: 'Роль', user: 'Пользователь', + userType: 'Тип пользователя', superuser: 'Суперпользователь', + normalUser: 'Обычный', createTime: 'Время создания', lastLoginTime: 'Время последнего входа', @@ -2255,5 +2778,23 @@ export default { timeout: 'Таймаут', fail: 'Неудача', }, + explore: { + title: 'Запуск', + canvasList: 'Список канвасов', + sessions: 'Сессии', + newSession: 'Новая сессия', + newSessionLabel: 'Начать новый разговор', + deleteSession: 'Удалить сессию', + searchCanvas: 'Поиск по канвасу...', + searchSessions: 'Поиск по сессиям...', + noCanvasSelected: 'Выберите канвас', + noSessionSelected: 'Выберите сессию или создайте новую', + noSessionsFound: 'Сессии не найдены', + createFirstSession: 'Создайте первую сессию', + noCanvasFound: 'Канвасы не найдены', + deleteSelectedConfirm: + 'Удалить выбранные сеансы ({{count}})?', + batchDeleteSessions: 'Удалить сессии', + }, }, };