export default {
  translation: {
    common: {
      confirm: 'Подтвердить',
      back: 'Назад',
      noResults: 'Результатов нет.',
      selectPlaceholder: 'выберите значение',
      selectAll: 'Выбрать все',
      delete: 'Удалить',
      deleteModalTitle: 'Вы уверены, что хотите удалить этот элемент?',
      deleteThem: 'Вы уверены, что хотите удалить выбранные элементы?',
      ok: 'Ок',
      cancel: 'Отмена',
      yes: 'Да',
      no: 'Нет',
      total: 'Всего',
      rename: 'Переименовать',
      name: 'Название',
      save: 'Сохранить',
      namePlaceholder: 'Введите название',
      next: 'Далее',
      create: 'Создать',
      edit: 'Редактировать',
      upload: 'Загрузить',
      english: 'Английский',
      portugueseBr: 'Португальский (Бразилия)',
      chinese: 'Китайский упрощенный',
      traditionalChinese: 'Китайский традиционный',
      russian: 'Русский',
      indonesian: 'Индонезийский',
      indonesia: 'Индонезийский',
      spanish: 'Испанский',
      vietnamese: 'Вьетнамский',
      japanese: 'Японский',
      german: 'Немецкий',
      french: 'Французский',
      italian: 'Итальянский',
      bulgarian: 'Болгарский',
      arabic: 'Арабский',
      turkish: 'Турецкий',
      language: 'Язык',
      languageMessage: 'Пожалуйста, укажите ваш язык!',
      languagePlaceholder: 'выберите ваш язык',
      copy: 'Копировать',
      copied: 'Скопировано',
      comingSoon: 'Скоро будет',
      download: 'Скачать',
      close: 'Закрыть',
      preview: 'Предпросмотр',
      move: 'Переместить',
      warn: 'Предупреждение',
      action: 'Действие',
      s: 'С',
      pleaseSelect: 'Пожалуйста, выберите',
      pleaseInput: 'Пожалуйста, введите',
      submit: 'Отправить',
      clear: 'Очистить',
      embedIntoSite: 'Встроить на веб-страницу',
      openInNewTab: 'Открыть в новой вкладке',
      previousPage: 'Назад',
      nextPage: 'Вперед',
      add: 'Добавить',
      remove: 'Удалить',
      search: 'Поиск',
      noDataFound: 'Данные не найдены.',
      noData: 'Нет данных',
      promptPlaceholder: `Введите текст или используйте / для быстрой вставки переменных.`,
      mcp: {
        namePlaceholder: 'Мой MCP Сервер',
        nameRequired:
          'Длина должна быть от 1 до 64 символов и может содержать только буквы, цифры, дефисы и подчеркивания.',
        urlPlaceholder: 'https://api.example.com/v1/mcp',
        tokenPlaceholder: 'например, eyJhbGciOiJIUzI1Ni...',
      },
      selected: 'Выбрано',
      seeAll: 'Показать все',
      bulkOperate: 'Массовые операции',
      owner: 'Владелец',
    },
    login: {
      loginTitle: 'Войдите в свою учетную запись',
      signUpTitle: 'Создать учетную запись',
      login: 'Войти',
      signUp: 'Зарегистрироваться',
      loginDescription: 'Мы рады снова видеть вас!',
      registerDescription: 'Рады приветствовать вас на борту!',
      emailLabel: 'Email',
      emailPlaceholder: 'Введите email',
      passwordLabel: 'Пароль',
      passwordPlaceholder: 'Введите пароль',
      rememberMe: 'Запомнить меня',
      signInTip: 'Нет учетной записи?',
      signUpTip: 'Уже есть учетная запись?',
      nicknameLabel: 'Никнейм',
      nicknamePlaceholder: 'Введите никнейм',
      register: 'Создать учетную запись',
      continue: 'Продолжить',
      title: 'Ведущий RAG-движок для контекста LLM',
      start: 'Давайте начнем',
      description:
        'Зарегистрируйтесь бесплатно, чтобы изучить передовые RAG-технологии. Создавайте базы знаний и ИИ для развития вашего бизнеса.',
      review: 'на основе 500+ отзывов',
      seeAll: 'Показать все',
    },
    header: {
      knowledgeBase: 'База знаний',
      chat: 'Чат',
      register: 'Регистрация',
      signin: 'Войти',
      home: 'Главная',
      setting: 'Настройки пользователя',
      logout: 'Выйти',
      fileManager: 'Управление файлами',
      flow: 'Агент',
      search: 'Поиск',
      welcome: 'Добро пожаловать в',
      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: 'Какие базы знаний вы будете использовать сегодня?',
      createKnowledgeBase: 'Создать Датасет',
      name: 'Название',
      namePlaceholder: 'Пожалуйста, введите название.',
      doc: 'Документы',
      searchKnowledgePlaceholder: 'Поиск',
      noMoreData: `Это всё. Больше ничего нет.`,
      parserRequired: 'Необходимо указать метод чанкирования',
    },
    knowledgeDetails: {
      metadata: {
        fields: 'поля',
        selectFiles: 'Выбрано файлов: {{count}}',
        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: 'Поле',
        type: 'Тип',
        description: 'Описание',
        fieldName: 'Имя поля',
        editMetadata: 'Редактировать метаданные',
        addMetadata: 'Добавить метаданные',
        deleteWarn: 'Поле «{{field}}» будет удалено из всех связанных файлов',
        deleteManageFieldAllWarn:
          'Это поле и все его значения будут удалены из всех связанных файлов.',
        deleteManageValueAllWarn:
          'Это значение будет удалено из всех связанных файлов.',
        deleteManageFieldSingleWarn:
          'Это поле и все его значения будут удалены из этих файлов.',
        deleteManageValueSingleWarn:
          'Это значение будет удалено из этих файлов.',
        deleteSettingFieldWarn: `Поле будет удалено; существующие метаданные не затронуты.`,
        deleteSettingValueWarn: `Значение будет удалено; существующие метаданные не затронуты.`,
      },
      redoAll: 'Очистите существующие фрагменты',
      applyAutoMetadataSettings:
        'Применить глобальные настройки авто-метаданных',
      parseFileTip: 'Запустить парсинг?',
      parseFile: 'Парсить файл',
      emptyMetadata: 'Нет метаданных',
      metadataField: 'Поле метаданных',
      systemAttribute: 'Системный атрибут',
      localUpload: 'Локальная загрузка',
      fileSize: 'Размер файла',
      fileType: 'Тип файла',
      uploadedBy: 'Загружено',
      notGenerated: 'Не сгенерировано',
      generatedOn: 'Сгенерировано ',
      subbarFiles: 'Файлы',
      generateKnowledgeGraph:
        'Это извлечет сущности и отношения из всех ваших документов в этом наборе данных. Процесс может занять некоторое время.',
      generateRaptor:
        'Выполняет рекурсивную кластеризацию и суммаризацию фрагментов документов для построения иерархической древовидной структуры, обеспечивая более осознанное извлечение контекста в длинных документах.',
      generate: 'Сгенерировать',
      raptor: 'RAPTOR',
      processingType: 'Тип обработки',
      dataPipeline: 'Переключить или настроить конвейер приема данных.',
      operations: 'Операции',
      taskId: 'ID задачи',
      duration: 'Продолжительность',
      details: 'Детали',
      status: 'Статус',
      task: 'Задача',
      startDate: 'Дата начала',
      source: 'Источник',
      fileName: 'Имя файла',
      datasetLogs: 'Датасет',
      fileLogs: 'Файл',
      overview: 'Логи',
      success: 'Успешно',
      failed: 'Неудача',
      completed: 'Завершено',
      datasetLog: 'Лог Датасета',
      created: 'Создано',
      learnMore: 'Введение во встроенный пайплайн',
      general: 'Общие',
      chunkMethodTab: 'Метод чанкинга',
      testResults: 'Результаты теста',
      testSetting: 'Настройки теста',
      retrievalTesting: 'Тестирование извлечения',
      retrievalTestingDescription:
        'Проведите тест извлечения, чтобы проверить, может ли RAGFlow восстановить целевой контент для LLM.',
      Parse: 'Парсинг',
      dataset: 'Датасет',
      testing: 'Тестирование извлечения',
      files: 'файлы',
      configuration: 'Конфигурация',
      knowledgeGraph: 'Граф знаний',
      name: 'Название',
      namePlaceholder: 'Пожалуйста, введите название!',
      doc: 'Документы',
      datasetDescription:
        'Пожалуйста, дождитесь завершения парсинга ваших файлов, прежде чем начинать чат с ИИ.',
      addFile: 'Добавить файл',
      searchFiles: 'Поиск по вашим файлам',
      localFiles: 'Локальные файлы',
      emptyFiles: 'Создать пустой файл',
      webCrawl: 'Поисковый робот',
      chunkNumber: 'Количество чанков',
      uploadDate: 'Дата загрузки',
      chunkMethod: 'Метод чанкинга',
      enabled: 'Включено',
      disabled: 'Выключено',
      action: 'Действие',
      parsingStatus: 'Статус парсинга',
      parsingStatusTip:
        'Время парсинга документа варьируется в зависимости от нескольких факторов. Включение таких функций, как Граф знаний, RAPTOR, Автоизвлечение вопросов или Автоизвлечение ключевых слов, значительно увеличит время обработки. Если индикатор выполнения завис, обратитесь к этим двум FAQ: https://ragflow.io/docs/dev/faq#why-does-my-document-parsing-stall-at-under-one-percent.',
      processBeginAt: 'Начало в',
      processDuration: 'Продолжительность',
      progressMsg: 'Прогресс',
      noTestResultsForRuned:
        'Релевантные результаты не найдены. Попробуйте изменить запрос или параметры.',
      noTestResultsForNotRuned:
        'Тест еще не проводился. Результаты появятся здесь.',
      testingDescription:
        'Проведите тест извлечения, чтобы проверить, может ли RAGFlow восстановить целевой контент для LLM. Если вы изменили настройки по умолчанию, такие как вес ключевого слова или порог схожести, для достижения оптимальных результатов, имейте в виду, что эти изменения не будут сохранены автоматически. Вы должны применить их в настройках вашего чат-ассистента или в настройках компонента Retrieval агента.',
      similarityThreshold: 'Порог схожести',
      similarityThresholdTip:
        'RAGFlow использует либо комбинацию взвешенной схожести по ключевым словам и взвешенного косинусного сходства векторов, либо комбинацию взвешенной схожести по ключевым словам и взвешенного reranking-счета при извлечении. Этот параметр устанавливает порог для схожести между пользовательским запросом и чанками. Любой чанк с оценкой схожести ниже этого порога будет исключен из результатов. По умолчанию порог установлен на 0.2. Это означает, что будут извлекаться только чанки с комбинированной оценкой схожести 20 или выше.',
      vectorSimilarityWeight: 'Вес векторной схожести',
      vectorSimilarityWeightTip:
        'Это устанавливает вес векторной схожести в комбинированной оценке схожести, используемой либо с косинусным сходством векторов, либо с reranking-счетом. Сумма двух весов должна быть равна 1.0.',
      keywordSimilarityWeight: 'Вес схожести по ключевым словам',
      keywordSimilarityWeightTip:
        'Это устанавливает вес схожести по ключевым словам в комбинированной оценке схожести, используемой либо с косинусным сходством векторов, либо с reranking-счетом. Сумма двух весов должна быть равна 1.0.',
      testText: 'Тестовый текст',
      testTextPlaceholder: 'Введите ваш вопрос здесь!',
      testingLabel: 'Запустить',
      similarity: 'Комбинированная схожесть',
      termSimilarity: 'Схожесть терминов',
      vectorSimilarity: 'Векторная схожесть',
      hits: 'Результаты',
      view: 'Просмотр',
      filesSelected: 'Файлов выбрано',
      upload: 'Загрузить',
      run: 'Парсить',
      runningStatus0: 'ОЖИДАНИЕ',
      runningStatus1: 'ПАРСИНГ',
      runningStatus2: 'ОТМЕНЕНО',
      runningStatus3: 'УСПЕХ',
      runningStatus4: 'НЕУДАЧА',
      pageRanges: 'Диапазон страниц',
      pageRangesTip:
        'Диапазон страниц для парсинга; страницы вне этого диапазона обрабатываться не будут.',
      fromPlaceholder: 'от',
      fromMessage: 'Отсутствует номер начальной страницы',
      toPlaceholder: 'до',
      toMessage: 'Отсутствует номер конечной страницы (исключительно)',
      layoutRecognize: 'PDF парсер',
      layoutRecognizeTip:
        'Используйте визуальную модель для анализа макета PDF для эффективного определения заголовков документов, текстовых блоков, изображений и таблиц. Если выбран наивный вариант, будет извлекаться только простой текст из PDF. Обратите внимание, что эта опция в настоящее время работает ТОЛЬКО для PDF-документов.',
      taskPageSize: 'Размер страницы задачи',
      taskPageSizeMessage: 'Пожалуйста, введите размер страницы задачи!',
      taskPageSizeTip: `Во время распознавания макета PDF-файл разбивается на части и обрабатывается параллельно для увеличения скорости обработки. Этот параметр устанавливает размер каждой части. Больший размер части снижает вероятность разделения непрерывного текста между страницами.`,
      addPage: 'Добавить страницу',
      greaterThan: 'Текущее значение должно быть больше, чем "до"!',
      greaterThanPrevious:
        'Текущее значение должно быть больше предыдущего значения "до"!',
      selectFiles: 'Выбрать файлы',
      changeSpecificCategory: 'Изменить конкретную категорию',
      uploadTitle: 'Перетащите ваш файл сюда для загрузки',
      uploadDescription:
        'Поддерживает одиночную или пакетную загрузку файлов. Для локально развернутого RAGFlow: общий ограничение размера файлов за одну загрузку составляет 1 ГБ, с ограничением пакетной загрузки в 32 файла. Нет ограничения на общее количество файлов на аккаунт. Для cloud.ragflow.io общий ограничение размера файлов за одну загрузку составляет 10 МБ, каждый файл не должен превышать 10 МБ, максимум 128 файлов на аккаунт.',
      chunk: 'Чанк',
      bulk: 'Пакетно',
      cancel: 'Отмена',
      close: 'Закрыть',
      rerankModel: 'Rerank модель',
      rerankPlaceholder: 'Пожалуйста, выберите',
      rerankTip: `Опционально. Если оставить пустым, RAGFlow будет использовать комбинацию взвешенной схожести по ключевым словам и взвешенного косинусного сходства векторов; если выбрана rerank модель, взвешенный reranking счет заменит взвешенное косинусное сходство векторов. Имейте в виду, что использование rerank модели значительно увеличит время отклика системы. Если вы хотите использовать rerank модель, убедитесь, что вы используете SaaS reranker; если вы предпочитаете локально развернутую rerank модель, убедитесь, что вы запускаете RAGFlow с помощью docker-compose-gpu.yml.`,
      topK: 'Топ-K',
      topKTip: `Используется вместе с Rerank моделью, эта настройка определяет количество текстовых чанков, которые будут отправлены в указанную rerank модель.`,
      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: 'Авто-ключевые слова',
      autoKeywordsTip: `Автоматически извлекает N ключевых слов для каждого чанка, чтобы повысить их рейтинг для запросов, содержащих эти ключевые слова. Имейте в виду, что дополнительные токены будут потребляться чат-моделью, указанной в 'Системных настройках модели'. Вы можете проверить или обновить добавленные ключевые слова для чанка из списка чанков. Подробности см. на https://ragflow.io/docs/dev/autokeyword_autoquestion.`,
      autoQuestions: 'Авто-вопросы',
      autoQuestionsTip: `Автоматически извлекает N вопросов для каждого чанка, чтобы повысить их рейтинг для запросов, содержащих эти вопросы. Вы можете проверить или обновить добавленные вопросы для чанка из списка чанков. Эта функция не нарушит процесс чанкинга в случае ошибки, за исключением того, что может добавить пустой результат в исходный чанк. Имейте в виду, что дополнительные токены будут потребляться LLM, указанной в 'Системных настройках модели'. Подробности см. на https://ragflow.io/docs/dev/autokeyword_autoquestion.`,
      redo: 'Вы хотите очистить существующие {{chunkNum}} чанков?',
      setMetaData: 'Установить Метаданные',
      pleaseInputJson: 'Пожалуйста, введите JSON',
      documentMetaTips: `<p>Метаданные представлены в формате Json (они не доступны для поиска). Они будут добавлены в промпт для LLM, если какие-либо чанки этого документа включены в промпт.</p>
<p>Примеры:</p>
<b>Метаданные:</b><br>
<code>
  {
      "Автор": "Алекс Доусон",
      "Дата": "2024-11-12"
  }
</code><br>
<b>Промпт будет:</b><br>
<p>Документ: имя_документа</p>
<p>Автор: Алекс Доусон</p>
<p>Дата: 2024-11-12</p>
<p>Релевантные фрагменты следующие:</p>
<ul>
<li>  Здесь содержимое чанка....</li>
<li>  Здесь содержимое чанка....</li>
</ul>
`,
      metaData: 'Метаданные',
      deleteDocumentConfirmContent:
        'Документ связан с графом знаний. После удаления связанная информация об узлах и отношениях будет удалена, но граф не будет обновлен немедленно. Действие обновления графа выполняется в процессе парсинга нового документа, который несет задачу извлечения графа знаний.',
      plainText: 'Наивный',
      reRankModelWaring: 'Rerank модель очень требовательна ко времени.',
    },
    knowledgeConfiguration: {
      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: 'Один файл',
      autoParse: 'Авто-парсинг',
      rebuildTip:
        'Повторно загружает файлы из связанного источника данных и снова их парсит.',
      baseInfo: 'Основная информация',
      globalIndex: 'Глобальный индекс',
      dataSource: 'Источник данных',
      linkSourceSetTip:
        'Управление связью источника данных с этим набором данных',
      linkDataSource: 'Связать источник данных',
      tocExtraction: 'Улучшение оглавлением',
      tocExtractionTip:
        'Для существующих чанков генерируется иерархическое оглавление (одна директория на файл). При запросах, когда активировано улучшение по оглавлению, система использует большую модель, чтобы определить релевантные пункты оглавления вопросу пользователя и выделить нужные чанки.',
      deleteGenerateModalContent: `
        <p>Удаление сгенерированных результатов <strong class='text-text-primary'>{{type}}</strong>
        удалит все производные сущности и отношения из этого набора данных.
        Ваши исходные файлы останутся нетронутыми.<p>
        <br/>
        Вы хотите продолжить?
      `,
      extractRaptor: 'Извлечь с Raptor',
      extractKnowledgeGraph: 'Извлечь граф знаний',
      filterPlaceholder: 'пожалуйста, введите фильтр',
      fileFilterTip: '',
      fileFilter: 'Фильтр файлов',
      setDefaultTip: '',
      setDefault: 'Установить по умолчанию',
      editLinkDataPipeline: 'Редактировать пайплайн обработки',
      linkPipelineSetTip:
        'Управление связью пайплайна обработки с этим набором данных',
      default: 'По умолчанию',
      dataPipeline: 'Переключить или настроить конвейер приема данных',
      linkDataPipeline: 'Связать пайплайн обработки',
      enableAutoGenerate: 'Включить авто-генерацию',
      teamPlaceholder: 'Пожалуйста, выберите команду.',
      dataFlowPlaceholder: 'Пожалуйста, выберите пайплайн.',
      buildItFromScratch: 'Построить с нуля',
      dataFlow: 'Пайплайн',
      parseType: 'Тип парсинга',
      manualSetup: 'Выбрать пайплайн',
      builtIn: 'Встроенный',
      titleDescription:
        'Обновите конфигурацию базы знаний здесь, в частности LLM и промпты.',
      name: 'Название базы знаний',
      photo: 'Иконка базы знаний',
      photoTip: 'Вы можете загрузить изображение до 4 МБ.',
      description: 'Описание',
      language: 'Язык документа',
      languageMessage: 'Пожалуйста, укажите ваш язык!',
      languagePlaceholder: 'Пожалуйста, укажите ваш язык!',
      permissions: 'Права доступа',
      embeddingModel: 'Модель эмбеддингов',
      chunkTokenNumber: 'Рекомендуемый размер чанка',
      chunkTokenNumberMessage: 'Требуется количество токенов чанка для текста',
      embeddingModelTip:
        'Модель эмбеддингов по умолчанию для базы знаний. После появления чанков при смене модели система случайно выбирает несколько чанков для проверки совместимости, перекодирует их новой моделью и вычисляет косинусное сходство. Переключение возможно только если среднее сходство ≥ 0.9. Иначе удалите все чанки в датасете.',
      permissionsTip:
        'Если установлено значение «Команда», все члены команды смогут управлять базой знаний.',
      chunkTokenNumberTip:
        'Это своего рода устанавливает порог токенов для создания чанка. Сегмент с меньшим количеством токенов, чем этот порог, будет объединен со следующими сегментами до тех пор, пока количество токенов не превысит порог, после чего будет создан чанк. Новый чанк не создается, если не встречен разделитель, даже если порог превышен.',
      chunkMethod: 'Метод чанкинга',
      chunkMethodTip: 'Смотрите подсказки справа.',
      upload: 'Загрузить',
      english: 'Английский',
      chinese: 'Китайский',
      portugueseBr: 'Португальский (Бразилия)',
      embeddingModelPlaceholder: 'Пожалуйста, выберите модель эмбеддингов.',
      chunkMethodPlaceholder: 'Пожалуйста, выберите метод чанкинга.',
      parserLabel: {
        naive: 'Общий',
        qa: 'Вопрос–ответ',
        resume: 'Резюме',
        manual: 'Руководство',
        table: 'Таблица',
        paper: 'Статья',
        book: 'Книга',
        laws: 'Законы',
        presentation: 'Презентация',
        picture: 'Изображение',
        one: 'Один',
        audio: 'Аудио',
        email: 'Email',
        tag: 'Тег',
      },
      save: 'Сохранить',
      me: 'Только мне',
      team: 'Команда',
      cancel: 'Отмена',
      methodTitle: 'Описание метода чанкинга',
      methodExamples: 'Примеры',
      methodExamplesDescription:
        'Для наглядности предоставлены следующие скриншоты.',
      dialogueExamplesTitle: 'просмотр',
      methodEmpty:
        'Здесь будет отображено визуальное объяснение категорий базы знаний',
      book: `<p>Поддерживаемые форматы файлов: <b>DOCX</b>, <b>PDF</b>, <b>TXT</b>.</p><p>
      Для каждой книги в PDF, пожалуйста, установите <i>диапазон страниц</i>, чтобы удалить нежелательную информацию и сократить время анализа.</p>`,
      laws: `<p>Поддерживаемые форматы файлов: <b>DOCX</b>, <b>PDF</b>, <b>TXT</b>.</p><p>
      Юридические документы обычно следуют строгому формату написания. Мы используем особенности текста для определения точек разделения.
      </p><p>
      Чанк имеет гранулярность, соответствующую «СТАТЬЕ», обеспечивая включение всего текста верхнего уровня в чанк.
      </p>`,
      manual: `<p>Поддерживается только <b>PDF</b>.</p><p>
      Мы предполагаем, что руководство имеет иерархическую структуру разделов, используя заголовки самых низких разделов в качестве базовой единицы для чанкинга документов. Поэтому рисунки и таблицы в одном разделе не будут разделены, что может привести к большему размеру чанков.
      </p>`,
      naive: `<p>Поддерживаемые форматы файлов: <b>MD, MDX, DOCX, XLSX, XLS (Excel 97-2003), PPTX, PDF, TXT, JPEG, JPG, PNG, TIF, GIF, CSV, JSON, EML, HTML</b>.</p>
      <p>Этот метод разбивает файлы «наивным» способом: </p>
      <p>
      <ul>
      <li>Использует модель визуального обнаружения для разделения текстов на меньшие сегменты.</li>
      <li>Затем объединяет соседние сегменты до тех пор, пока количество токенов не превысит порог, указанный в «Количестве токенов чанка для текста», после чего создается чанк.</li></ul></p>`,
      paper: `<p>Поддерживается только <b>PDF</b> файл.</p><p>
      Статьи будут разделены по разделам, таким как <i>аннотация, 1.1, 1.2</i>. </p><p>
      Этот подход позволяет LLM более эффективно суммировать статью и предоставлять более полные, понятные ответы.
      Однако это также увеличивает контекст для разговоров с ИИ и добавляет вычислительные затраты для LLM. Поэтому во время разговора рассмотрите возможность уменьшения значения «<b>topN</b>».</p>`,
      presentation: `<p>Поддерживаемые форматы файлов: <b>PDF</b>, <b>PPTX</b>.</p><p>
      Каждая страница в слайдах рассматривается как чанк, с сохранением ее уменьшенного изображения.</p><p>
      <i>Этот метод чанкинга автоматически применяется ко всем загруженным PPT файлам, поэтому вам не нужно указывать его вручную.</i></p>`,
      qa: `
      <p>
      Этот метод чанкинга поддерживает форматы файлов <b>XLSX</b> и <b>CSV/TXT</b>.
    </p>
    <ul>
    <li>
      Если файл в формате <b>XLSX</b> или <b>XLS (Excel 97-2003)</b>, он должен содержать два столбца без заголовков: один для вопросов, другой для ответов, причем столбец с вопросами предшествует столбцу с ответами. Несколько листов
      допустимы, при условии, что столбцы правильно структурированы.
    </li>
    <li>
      Если файл в формате <b>CSV/TXT</b>, он должен быть закодирован в UTF-8 с TAB в качестве разделителя для разделения вопросов и ответов.
    </li>
    </ul>
    <p>
      <i>
        Строки текста, не следующие приведенным выше правилам, будут проигнорированы, и
        каждая пара Вопрос-Ответ будет считаться отдельным чанком.
      </i>
    </p>
      `,
      resume: `<p>Поддерживаемые форматы файлов: <b>DOCX</b>, <b>PDF</b>, <b>TXT</b>.
      </p><p>
      Резюме различных форм анализируются и организуются в структурированные данные для облегчения поиска кандидатов для рекрутеров.
      </p>
      `,
      table: `<p>Поддерживаемые форматы файлов: <b>XLSX</b> и <b>CSV/TXT</b>.</p><p>
      Вот некоторые предварительные условия и советы:
      <ul>
    <li>Для CSV или TXT файла, разделитель между столбцами должен быть <em><b>TAB</b></em>.</li>
    <li>Первая строка должна быть заголовками столбцов.</li>
    <li>Заголовки столбцов должны быть содержательными терминами, чтобы помочь вашему LLM в понимании.
    Хорошей практикой является размещение синонимов через косую черту <i>'/'</i> и перечисление значений с использованием скобок, например: <i>'Пол/Секс (мужской, женский)'</i>.<p>
    Вот несколько примеров заголовков:<ol>
        <li>поставщик/вендор<b>'TAB'</b>Цвет (Желтый, Синий, Коричневый)<b>'TAB'</b>Пол/Секс (мужской, женский)<b>'TAB'</b>размер (M, L, XL, XXL)</li>
        </ol>
        </p>
    </li>
    <li>Каждая строка в таблице будет рассматриваться как чанк.</li>
    </ul>`,
      picture: `
    <p>Поддерживаются файлы изображений, поддержка видео скоро появится.</p><p>
    Этот метод использует модель OCR для извлечения текстов из изображений.
    </p><p>
    Если текст, извлеченный моделью OCR, считается недостаточным, указанная визуальная LLM будет использована для предоставления описания изображения.
    </p>`,
      one: `
    <p>Поддерживаемые форматы файлов: <b>DOCX, XLSX, XLS (Excel 97-2003), PDF, TXT</b>.
    </p><p>
    Этот метод рассматривает каждый документ целиком как один чанк.
    </p><p>
    Применимо, когда вы требуете, чтобы LLM суммировал весь документ, при условии, что он может обработать такой объем контекста.
    </p>`,
      knowledgeGraph: `<p>Поддерживаемые форматы файлов: <b>DOCX, EXCEL, PPT, IMAGE, PDF, TXT, MD, JSON, EML</b>

<p>Этот подход разбивает файлы, используя «наивный»/«Общий» метод. Он разделяет документ на сегменты, а затем объединяет соседние сегменты до тех пор, пока количество токенов не превысит порог, указанный в «Количестве токенов чанка для текста», после чего создается чанк.</p>
<p>Затем чанки передаются в LLM для извлечения сущностей и отношений для графа знаний и ментальной карты.</p>
<p>Убедитесь, что вы установили <b>Типы сущностей</b>.</p>`,
      tag: `<p>База знаний с методом чанкинга «Тег» функционирует как набор тегов. Другие базы знаний используют его для тегирования чанков, и запросы к ним также тегируются этим набором.</p>
<p>Набор тегов <b>НЕ</b> будет напрямую участвовать в процессе RAG.</p>
<p>Каждый чанк в этой базе знаний — независимая пара описание-тег.</p>
<p>Поддерживаемые форматы: <b>XLSX</b> и <b>CSV/TXT</b>:</p>
<p>Если файл в формате <b>XLSX</b>, он должен содержать два столбца без заголовков: один для описаний тегов, другой для имен тегов, причем столбец с описанием предшествует столбцу с тегом.</p>
<p>Если файл в формате <b>CSV/TXT</b>, он должен быть UTF-8 с TAB как разделителем между описанием и тегом.</p>
<p>В столбце Тег <b>запятая</b> используется для разделения тегов.</p>
<i>Строки текста, не следующие приведенным выше правилам, будут проигнорированы.</i>
`,
      useRaptor: 'RAPTOR',
      useRaptorTip:
        'RAPTOR можно использовать для многошаговых вопросно-ответных задач. Перейдите на страницу Файлы, нажмите Сгенерировать > RAPTOR. Подробности: https://ragflow.io/docs/dev/enable_raptor',
      prompt: 'Промпт',
      promptTip:
        'Используйте системный промпт, чтобы описать задачу для LLM, указать, как она должна отвечать, и очертить другие требования. Системный промпт часто используется вместе с ключами (переменными). Используйте `/` или кнопку (x), чтобы показать ключи.',
      promptMessage: 'Промпт обязателен',
      promptText: `Пожалуйста, суммаризируйте следующие параграфы. Будьте внимательны с числами, не выдумывайте. Параграфы следующие:
      {cluster_content}
Выше приведено содержимое, которое вам нужно суммировать.`,
      maxToken: 'Макс. токенов',
      maxTokenTip:
        'Максимальное количество токенов на генерируемый суммаризированный чанк.',
      maxTokenMessage: 'Макс. токенов обязательно',
      threshold: 'Порог',
      thresholdTip:
        'В RAPTOR чанки кластеризуются по семантическому сходству. Параметр Порог задаёт минимальное сходство для группировки. Более высокий порог — меньше чанков в кластере, более низкий — больше.',
      thresholdMessage: 'Порог обязателен',
      maxCluster: 'Макс. кластеров',
      maxClusterTip: 'Максимальное количество создаваемых кластеров.',
      maxClusterMessage: 'Макс. кластеров обязательно',
      randomSeed: 'Случайное начальное число',
      randomSeedMessage: 'Случайное начальное число обязательно',
      entityTypes: 'Типы сущностей',
      vietnamese: 'Вьетнамский',
      pageRank: 'Page rank',
      pageRankTip: `Вы можете назначить более высокий балл PageRank определённым базам знаний при извлечении. Соответствующий балл добавляется к комбинированным оценкам схожести извлечённых чанков, повышая их рейтинг. Подробности: https://ragflow.io/docs/dev/set_page_rank`,
      tagName: 'Тег',
      frequency: 'Частота',
      searchTags: 'Поиск тегов',
      tagCloud: 'Облако',
      tagTable: 'Таблица',
      tagSet: 'Наборы тегов',
      tagSetTip: `
     <p> Выберите одну или несколько баз тегов для автоматического тегирования чанков. Подробности: https://ragflow.io/docs/dev/use_tag_sets</p>
<p>Пользовательский запрос также будет автоматически тегирован.</p>
Авто-тегирование улучшает извлечение, добавляя ещё один уровень предметных знаний.
<p>Разница между авто-тегом и авто-ключевым словом:</p>
<ul>
  <li>База тегов — заданный пользователем закрытый набор; ключевые слова от LLM — открытый набор.</li>
  <li>Нужно загрузить наборы тегов в указанных форматах перед запуском авто-тега.</li>
  <li>Авто-ключевые слова зависят от LLM и потребляют много токенов.</li>
</ul>
      `,
      topnTags: 'Топ-N тегов',
      tags: 'Теги',
      addTag: 'Добавить тег',
      useGraphRag: 'Граф знаний',
      useGraphRagTip:
        'Строит граф знаний поверх чанков файлов текущей базы знаний для многошагового Q&A с вложенной логикой. Подробности: https://ragflow.io/docs/dev/construct_knowledge_graph',
      graphRagMethod: 'Метод',
      graphRagMethodTip: `
      Light: (по умолчанию) Промпты github.com/HKUDS/LightRAG для извлечения сущностей и связей. Меньше токенов, памяти и вычислений.</br>
      General: Промпты github.com/microsoft/graphrag.</br>
      NER: Использует spaCy NER и извлечение ключевых слов на основе правил для извлечения сущностей и связей. LLM не требуется для самого извлечения, что делает его быстрым и эффективным.`,
      resolution: 'Разрешение сущностей',
      resolutionTip: `Переключатель дедубликации сущностей. Когда включен, LLM объединяет похожие сущности (например «2025» и «год 2025») для более точного графа`,
      community: 'Отчёты сообществ',
      communityTip:
        'В графе знаний сообщество — кластер сущностей, связанных отношениями. LLM может сгенерировать аннотацию для каждого сообщества (отчёт сообщества). Подробнее: https://www.microsoft.com/en-us/research/blog/graphrag-improving-global-search-via-dynamic-community-selection/',
      theDocumentBeingParsedCannotBeDeleted:
        'Документ, который в данный момент парсится, не может быть удалён',
      lastWeek: 'за прошлую неделю',
    },
    chunk: {
      type: 'Тип',
      docType: {
        image: 'Изображение',
        table: 'Таблица',
        text: 'Текст',
      },
      size: 'Размер',
      uploadedTime: 'Время загрузки',
      chunk: 'Чанк',
      createChunk: 'Создать чанк',
      editChunk: 'Редактировать чанк',
      bulk: 'Пакетно',
      selectAll: 'Выбрать все',
      enabledSelected: 'Включить выбранные',
      disabledSelected: 'Выключить выбранные',
      deleteSelected: 'Удалить выбранные',
      search: 'Поиск',
      all: 'Все',
      enabled: 'Включено',
      disabled: 'Выключено',
      keyword: 'Ключевое слово',
      image: 'Изображение',
      imageUploaderTitle:
        'Загрузите новое изображение, чтобы обновить этот чанк',
      function: 'Функция',
      chunkMessage: 'Пожалуйста, введите значение!',
      full: 'Полный текст',
      ellipse: 'Сокращение',
      graph: 'Граф знаний',
      mind: 'Ментальная карта',
      question: 'Вопрос',
      questionTip: `Если есть заданные вопросы, эмбеддинг чанка будет основан на них.`,
      chunkResult: 'Результат чанка',
      chunkResultTip: `Просмотр сегментов чанков, используемых для эмбеддинга и извлечения.`,
      enable: 'Включить',
      disable: 'Выключить',
      delete: 'Удалить',
    },
    chat: {
      chatSupport: 'Чат-поддержка',
      replyInstantly: 'Обычно мы отвечаем мгновенно',
      typeYourMessage: 'Введите сообщение...',
      messagePlaceholder: 'Введите ваше сообщение здесь...',
      exit: 'Выход',
      multipleModels: 'Несколько моделей',
      applyModelConfigs: 'Применить настройки моделей',
      conversations: 'Диалоги',
      chatApps: 'Чат-приложения',
      newConversation: 'Новый диалог',
      createAssistant: 'Создать ассистента',
      assistantSetting: 'Настройки ассистента',
      promptEngine: 'Промпт-движок',
      modelSetting: 'Настройки модели',
      chat: 'Чат',
      newChat: 'Новый чат',
      send: 'Отправить',
      sendPlaceholder: 'Сообщение ассистенту...',
      chatConfiguration: 'Конфигурация чата',
      chatConfigurationDescription:
        ' Настройте чат-ассистента для ваших выбранных баз знаний здесь! 💕',
      assistantName: 'Имя ассистента',
      assistantNameMessage: 'Имя ассистента обязательно',
      namePlaceholder: 'например, Резюме Джарвис',
      assistantAvatar: 'Аватар ассистента',
      language: 'Язык',
      emptyResponse: 'Пустой ответ',
      emptyResponseTip: `Установите это как ответ, если по вашему запросу не найдено результатов из базы знаний, или оставьте поле пустым, чтобы LLM импровизировала, когда ничего не найдено.`,
      emptyResponseMessage: `Пустой ответ сработает, когда ничего релевантного не извлечено из базы знаний. Очистите поле «Пустой ответ», если база знаний не выбрана.`,
      emptyResponsePlaceholder:
        'Ответ, который вы ищете, не найден в базе знаний!',
      setAnOpener: 'Приветственное сообщение',
      setAnOpenerInitial: `Привет! Я ваш ассистент. Чем могу помочь?`,
      setAnOpenerTip: 'Установите приветственное сообщение для пользователей.',
      knowledgeBases: 'Базы знаний',
      knowledgeBasesPlaceholder: 'Выберите значение',
      knowledgeBasesMessage: 'Пожалуйста, выберите',
      knowledgeBasesTip:
        'Выберите базы знаний для связи с этим чат-ассистентом. Пустая база знаний не появится в списке.',
      system: 'Системный промпт',
      systemPlaceholder: `Вы — интеллектуальный ассистент. Ваша задача — отвечать на вопросы строго на основе предоставленной базы знаний.

**Основные правила:**
  - Ответ должен опираться **только** на эту базу знаний: {knowledge}.
  - **Если информация есть**: кратко изложите содержание и дайте развёрнутый ответ.
  - **Если информации нет**: ответ должен содержать точную фразу: «Ответ, который вы ищете, не найден в базе знаний!»
  - **Всегда учитывайте** всю историю диалога.`,
      systemInitialValue: `Вы - интеллектуальный ассистент. Пожалуйста, обобщите содержание базы знаний, чтобы ответить на вопрос. Пожалуйста, перечислите данные в базе знаний и ответьте подробно. Когда все содержимое базы знаний не релевантно вопросу, ваш ответ должен включать фразу "Ответ, который вы ищете, не найден в базе знаний!" Ответы должны учитывать историю чата.
      Вот база знаний:
      {knowledge}
      Выше приведена база знаний.`,
      systemMessage: 'Пожалуйста, введите!',
      systemTip:
        'Ваши промпты или инструкции для LLM: роль, длина, тон и язык ответов. Если модель поддерживает рассуждения, добавьте //no_thinking в промпт, чтобы отключить рассуждения.',
      topN: 'Топ N',
      topNTip: `Не все чанки с оценкой схожести выше 'порога схожести' будут отправлены в LLM. Это выбирает 'Топ N' чанков из извлеченных.`,
      variable: 'Переменная',
      variableTip: `Используется вместе с API управления чат-ассистентами RAGFlow, переменные помогают строить гибкие стратегии системных промптов. {knowledge} — зарезервированная переменная для чанков из указанных баз знаний; все переменные в фигурных скобках {} в «Системном промпте». Подробнее: https://ragflow.io/docs/dev/set_chat_variables`,
      add: 'Добавить',
      key: 'Ключ',
      optional: 'Опционально',
      operation: 'Операция',
      model: 'Модель',
      modelTip: 'Большая языковая чат-модель',
      modelMessage: 'Пожалуйста, выберите!',
      modelEnabledTools: 'Включенные инструменты',
      modelEnabledToolsTip:
        'Выберите один или несколько инструментов для чат-модели. Не действует для моделей без вызова инструментов.',
      freedom: 'Креативность',
      improvise: 'Импровизация',
      precise: 'Точно',
      balance: 'Баланс',
      custom: 'Пользовательский',
      freedomTip: `Ярлык для настроек 'Температура', 'Top P', 'Штраф за присутствие' и 'Штраф за частоту', указывающий уровень свободы модели. Этот параметр имеет три варианта: Выберите 'Импровизировать' для получения более творческих ответов; выберите 'Точно' (по умолчанию) для получения более консервативных ответов; 'Баланс' - это золотая середина между 'Импровизировать' и 'Точно'.`,
      temperature: 'Температура',
      temperatureMessage: 'Температура обязательна',
      temperatureTip: `Контролирует случайность предсказаний модели. Ниже температура — консервативнее; выше — разнообразнее.`,
      topP: 'Top P',
      topPMessage: 'Top P обязателен',
      topPTip:
        'Также известный как "ядерная выборка", этот параметр устанавливает порог для выбора меньшего набора наиболее вероятных слов для выборки, отсекая менее вероятные.',
      presencePenalty: 'Штраф за присутствие',
      presencePenaltyMessage: 'Штраф за присутствие обязателен',
      presencePenaltyTip:
        'Снижает повторение той же информации, штрафуя уже встречавшиеся слова.',
      frequencyPenalty: 'Штраф за частоту',
      frequencyPenaltyMessage: 'Штраф за частоту обязателен',
      frequencyPenaltyTip:
        'Подобно штрафу за присутствие, это снижает тенденцию модели часто повторять одни и те же слова.',
      maxTokens: 'Макс. токенов',
      maxTokensMessage: 'Максимальное количество токенов обязательно',
      maxTokensTip: `Максимальный размер контекста модели; неверное значение вызовет ошибку. По умолчанию 512.`,
      maxTokensInvalidMessage:
        'Пожалуйста, введите действительное число для макс. токенов.',
      maxTokensMinMessage:
        'Максимальное количество токенов не может быть меньше 0.',
      quote: 'Показать цитату',
      quoteTip: 'Отображать ли исходный текст как ссылку.',
      selfRag: 'Self-RAG',
      selfRagTip: 'См. https://huggingface.co/papers/2310.11511',
      overview: 'ID чата',
      pv: 'Количество сообщений',
      uv: 'Количество активных пользователей',
      speed: 'Скорость вывода токенов',
      tokens: 'Потреблено токенов',
      round: 'Количество взаимодействий в сессии',
      thumbUp: 'Удовлетворенность клиентов',
      preview: 'Предпросмотр',
      embedded: 'Встроенный',
      serviceApiEndpoint: 'Конечная точка сервисного API',
      apiKey: 'API Key',
      apiReference: 'Документация API',
      dateRange: 'Диапазон дат:',
      backendServiceApi: 'API Сервер',
      createNewKey: 'Создать новый ключ',
      created: 'Создано',
      action: 'Действие',
      embedModalTitle: 'Встроить на веб-страницу',
      published: 'Опубликовано',
      publishedTooltip:
        'Использовать опубликованную версию для встраивания. В URL будет release=true.',
      embedType: 'Тип встраивания',
      fullscreenChat: 'Полноэкранный чат (классический iframe)',
      floatingWidget: 'Плавающий виджет (стиль Intercom)',
      theme: 'Тема',
      light: 'Светлая',
      dark: 'Тёмная',
      enableStreaming: 'Включить потоковые ответы',
      comingSoon: 'Скоро будет',
      fullScreenTitle: 'Полное встраивание',
      fullScreenDescription:
        'Встройте следующий iframe на ваш веб-сайт в желаемом месте',
      partialTitle: 'Частичное встраивание',
      extensionTitle: 'Расширение Chrome',
      tokenError: 'Пожалуйста, сначала создайте API ключ.',
      betaError:
        'Пожалуйста, сначала получите RAGFlow API ключ на странице Системных настроек.',
      searching: 'Поиск...',
      parsing: 'Парсинг',
      uploading: 'Загрузка',
      uploadFailed: 'Ошибка загрузки',
      regenerate: 'Перегенерировать',
      read: 'Прочитать содержимое',
      tts: 'Текст в речь',
      ttsTip:
        'Убедитесь, что вы выбрали модель TTS на странице Настройки, прежде чем включать этот переключатель для воспроизведения текста в виде аудио.',
      relatedQuestion: 'Связанный вопрос',
      answerTitle: 'R',
      multiTurn: 'Многошаговая оптимизация',
      multiTurnTip:
        'Это оптимизирует пользовательские запросы с использованием контекста в многораундовом разговоре. Когда включено, будет потреблять дополнительные токены LLM.',
      howUseId: 'Как использовать ID чата?',
      description: 'Описание ассистента',
      descriptionPlaceholder: 'Я чат-ассистент.',
      useKnowledgeGraph: 'Использовать граф знаний',
      useKnowledgeGraphTip:
        'Использовать ли граф(ы) знаний в указанных базах знаний во время извлечения для многошагового вопросно-ответа. Когда включено, это будет включать итеративные поиски по сущностям, отношениям и чанкам отчетов сообществ, значительно увеличивая время извлечения.',
      keyword: 'Анализ ключевых слов',
      keywordTip: `LLM анализирует вопросы пользователя и извлекает ключевые слова для релевантности. Хорошо для длинных запросов, увеличивает время ответа.`,
      languageTip:
        'Переписывание на указанном языке или по умолчанию язык последнего вопроса.',
      avatarHidden: 'Скрыть аватар',
      locale: 'Локально',
      selectLanguage: 'Выберите язык',
      reasoning: 'Рассуждение',
      reasoningTip: `Включать ли рабочий процесс рассуждений во время вопросно-ответа, как в моделях типа Deepseek-R1 или OpenAI o1. Когда включено, это позволяет модели получать доступ к внешним знаниям и решать сложные вопросы шаг за шагом, используя такие методы, как цепочка рассуждений. Этот подход улучшает способность модели предоставлять точные ответы, разбивая проблемы на управляемые шаги, улучшая производительность на задачах, требующих логического мышления и многошагового подхода.`,
      tavilyApiKeyTip:
        'Если здесь правильно установлен API ключ, для дополнения извлечения из базы знаний будут использоваться веб-поиски на основе Tavily.',
      tavilyApiKeyMessage: 'Введите Tavily API Key',
      tavilyApiKeyHelp: 'Как его получить?',
      crossLanguage: 'Кросс-языковой поиск',
      crossLanguagePlaceholder: 'Выберите значение',
      crossLanguageTip: `Выберите один или несколько языков для кросс-языкового поиска. Если не выбрано — поиск по исходному запросу.`,
      createChat: 'Создать чат',
      metadata: 'Метаданные',
      metadataTip:
        'Фильтрация по метаданным - это процесс использования атрибутов метаданных (таких как теги, категории или права доступа) для уточнения и контроля извлечения релевантной информации в системе.',
      conditions: 'Условия',
      metadataKeys: 'Фильтруемые поля',
      addCondition: 'Добавить условие',
      meta: {
        disabled: 'Выключено',
        auto: 'Автоматически',
        manual: 'Вручную',
        semi_auto: 'Полуавтоматически',
      },
      cancel: 'Отмена',
      chatSetting: 'Настройки чата',
      tocEnhance: 'Улучшение оглавлением',
      tocEnhanceTip: ` Во время парсинга документа была сгенерирована информация оглавления (см. опцию 'Включить извлечение оглавления' в методе General). Это позволяет большой модели возвращать элементы оглавления, релевантные запросу пользователя, тем самым используя эти элементы для извлечения связанных чанков и применения весов к этим чанкам в процессе сортировки. Этот подход получен из имитации поведенческой логики того, как люди ищут знания в книгах.`,
      deleteSelectedConfirm: 'Удалить выбранные сеансы ({{count}})?',
      showChunkMetadata: 'Показать метаданные чанка',
      showChunkMetadataTip:
        'Отображать метаданные документа (заголовок, номер страницы, дата загрузки и т.д.) рядом с извлечёнными текстовыми чанками',
      metadataFields: 'Поля метаданных',
      metadataFieldsTip:
        'Выберите поля метаданных для отображения рядом с каждым чанком',
    },
    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:
        'Нет доступных моделей. <br>Добавьте модели в панели справа.',
      sourceEmptyTip:
        'Источники данных ещё не добавлены. Выберите ниже, чтобы подключить.',
      seconds: 'сек.',
      minutes: 'мин.',
      edit: 'Редактировать',
      cropTip:
        'Перетащите область выбора, чтобы выбрать позицию обрезки изображения, и прокрутите для увеличения/уменьшения',
      cropImage: 'Обрезать изображение',
      selectModelPlaceholder: 'Выберите модель',
      configureModelTitle: 'Настроить модель',
      connectorNameTip: 'Укажите понятное имя для коннектора',
      syncDeletedFiles: 'Синхронизировать удалённые файлы',
      confluenceIsCloudTip:
        'Отметьте, если это экземпляр Confluence Cloud, снимите для Confluence Server/Data Center',
      confluenceWikiBaseUrlTip:
        'Базовый URL вашего экземпляра Confluence (например, https://your-domain.atlassian.net/wiki)',
      confluenceSpaceKeyTip:
        'Необязательно: Укажите ключ пространства для синхронизации только определенного пространства. Оставьте пустым для синхронизации всех доступных пространств. Для нескольких пространств разделите запятыми (например, DEV,DOCS,HR)',
      s3PrefixTip: `Укажите путь к папке в вашем S3 бакете для получения файлов.
Пример: general/v2/`,
      S3CompatibleEndpointUrlTip: `Требуется для S3 совместимого Storage Box. Укажите URL конечной точки, совместимой с S3.
Пример: https://fsn1.your-objectstorage.com`,
      S3CompatibleAddressingStyleTip: `Требуется для S3 совместимого Storage Box. Укажите стиль адресации, совместимый с S3.
Пример: Virtual Hosted Style`,
      addDataSourceModalTitle: 'Создайте ваш коннектор {{name}}',
      deleteSourceModalTitle: 'Удалить источник данных',
      deleteSourceModalContent: `
      <p>Вы уверены, что хотите удалить эту ссылку на источник данных?</p>`,
      deleteSourceModalConfirmText: 'Подтвердить',
      errorMsg: 'Сообщение об ошибке',
      newDocs: 'Новые документы',
      timeStarted: 'Время начала',
      log: 'Лог',
      rssDescription:
        'Подключение к публичной ленте RSS или Atom и синхронизация записей в базу знаний.',
      confluenceDescription:
        'Интегрируйте ваше рабочее пространство Confluence для поиска документации.',
      s3Description:
        'Подключитесь к вашему AWS S3 бакету для импорта и синхронизации хранимых файлов.',
      google_cloud_storageDescription:
        'Подключите бакет Google Cloud Storage для импорта и синхронизации файлов.',
      r2Description:
        'Подключите ваш бакет Cloudflare R2 для импорта и синхронизации файлов.',
      oci_storageDescription:
        'Подключите бакет Oracle Cloud Object Storage для импорта и синхронизации файлов.',
      discordDescription:
        'Свяжите ваш Discord сервер для доступа и анализа данных чата.',
      notionDescription:
        'Синхронизируйте страницы и базы данных из Notion для извлечения знаний.',
      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 )',
      bitbucketRepositorySlugsTip:
        'Слоги репозиториев через запятую, например: repo-one,repo-two',
      bitbucketProjectsTip:
        'Ключи проектов через запятую, например: PROJ1,PROJ2',
      bitbucketWorkspaceTip:
        'Этот коннектор проиндексирует все репозитории в рабочем пространстве.',
      boxDescription:
        'Подключите ваш диск Box для синхронизации файлов и папок.',

      githubDescription:
        'Подключите GitHub для синхронизации содержимого Pull Request и Issue для поиска.',
      airtableDescription:
        'Подключите Airtable и синхронизируйте файлы из указанной таблицы в заданном рабочем пространстве.',
      dingtalkAITableDescription:
        'Подключите Dingtalk AI Table и синхронизируйте записи из указанной таблицы.',
      gitlabDescription:
        'Подключите GitLab для синхронизации репозиториев, задач, merge requests и связанной документации.',
      asanaDescription:
        'Подключите Asana и синхронизируйте файлы из рабочего пространства.',
      imapDescription:
        'Подключите почтовый ящик IMAP для синхронизации писем из указанных почтовых ящиков (mailboxes) с целью поиска и анализа знаний.',
      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:
        'Базовый URL вашего сайта Jira (например, https://your-domain.atlassian.net).',
      jiraProjectKeyTip:
        'Опционально: ограничьте синхронизацию одним ключом проекта (например, ENG).',
      jiraJqlTip:
        'Опциональный фильтр JQL. Оставьте пустым, чтобы полагаться на фильтры проекта/времени.',
      jiraBatchSizeTip:
        'Максимальное количество задач, запрашиваемых из Jira за пакет.',
      jiraCommentsTip:
        'Включить комментарии Jira в сгенерированный markdown документ.',
      jiraAttachmentsTip:
        'Загружать вложения как отдельные документы во время синхронизации.',
      jiraAttachmentSizeTip:
        'Вложения размером больше этого количества байт будут пропущены.',
      jiraLabelsTip:
        'Метки, которые должны быть пропущены при индексации (через запятую).',
      jiraBlacklistTip:
        'Комментарии, автор которых соответствует этим записям, будут игнорироваться.',
      jiraScopedTokenTip:
        'Включите это при использовании ограниченных токенов Atlassian (api.atlassian.com).',
      jiraEmailTip: 'Email, связанный с учетной записью/API токеном Jira.',
      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:
        'Управляйте вашими источниками данных и подключениями',
      save: 'Сохранить',
      search: 'Поиск',
      availableModels: 'Доступные модели',
      profile: 'Профиль',
      avatar: 'Аватар',
      avatarTip: 'Это будет отображаться в вашем профиле.',
      profileDescription: 'Обновите ваше фото и личные данные здесь.',
      maxTokens: 'Макс. Токенов',
      maxTokensMessage: 'Макс. Токенов обязательно',
      maxTokensTip: `Максимальный размер контекста mодель; недопустимое или неверное значение приведёт к ошибке. По умолчанию 512.`,
      maxTokensInvalidMessage:
        'Пожалуйста, введите действительное число для максимального количества токенов.',
      maxTokensMinMessage:
        'Максимальное количество токенов не может быть меньше 0.',
      password: 'Пароль',
      passwordDescription:
        'Пожалуйста, введите ваш текущий пароль, чтобы изменить ваш пароль.',
      model: 'Провайдеры моделей',
      systemModelDescription:
        'Пожалуйста, завершите эти настройки перед началом',
      dataSources: 'Источники данных',
      team: 'Команда',
      system: 'Система',
      logout: 'Выйти',
      api: 'API',
      username: 'Имя',
      usernameMessage: 'Пожалуйста, введите ваше имя!',
      photo: 'Ваше фото',
      photoDescription: 'Это будет отображаться в вашем профиле.',
      colorSchema: 'Цветовая схема',
      colorSchemaMessage: 'Пожалуйста, выберите вашу цветовую схему!',
      colorSchemaPlaceholder: 'выберите вашу цветовую схему',
      bright: 'Светлая',
      dark: 'Темная',
      timezone: 'Часовой пояс',
      timezoneMessage: 'Пожалуйста, укажите ваш часовой пояс!',
      timezonePlaceholder: 'выберите ваш часовой пояс',
      email: 'Email',
      emailDescription: 'После регистрации Email нельзя изменить.',
      currentPassword: 'Текущий пароль',
      currentPasswordMessage: 'Пожалуйста, введите ваш пароль!',
      newPassword: 'Новый пароль',
      changePassword: 'Изменить пароль',
      newPasswordMessage: 'Пожалуйста, введите ваш пароль!',
      newPasswordDescription:
        'Ваш новый пароль должен быть длиннее 8 символов.',
      confirmPassword: 'Подтвердите новый пароль',
      confirmPasswordMessage: 'Пожалуйста, подтвердите ваш пароль!',
      confirmPasswordNonMatchMessage:
        'Введенные вами новые пароли не совпадают!',
      cancel: 'Отмена',
      addedModels: 'Добавленные модели',
      modelsToBeAdded: 'Модели для добавления',
      addTheModel: 'Добавить',
      apiKey: 'API Key',
      apiKeyMessage: 'Пожалуйста, введите API ключ',
      apiKeyTip:
        'API ключ можно получить, зарегистрировавшись у соответствующего поставщика LLM.',
      showMoreModels: 'Показать модели',
      hideModels: 'Скрыть модели',
      baseUrl: 'Base URL',
      baseUrlTip:
        'Если ваш API ключ от OpenAI, просто проигнорируйте это. Любые другие промежуточные провайдеры дадут этот базовый url вместе с API ключом.',
      tongyiBaseUrlTip:
        'Для китайских пользователей не нужно заполнять или используйте https://dashscope.aliyuncs.com/compatible-mode/v1. Для международных пользователей используйте https://dashscope-intl.aliyuncs.com/compatible-mode/v1',
      siliconBaseUrlTip:
        'Для китайских пользователей не нужно заполнять или используйте https://api.siliconflow.cn/v1. Для международных пользователей используйте https://api.siliconflow.com/v1',
      tongyiBaseUrlPlaceholder:
        '(Только для международных пользователей, см. подсказку)',
      minimaxBaseUrlTip:
        'Только для международных пользователей: используйте https://api.minimax.io/v1.',
      minimaxBaseUrlPlaceholder:
        '(Только для международных пользователей, введите https://api.minimax.io/v1)',
      modify: 'Изменить',
      systemModelSettings: 'Установить модели по умолчанию',
      chatModel: 'LLM',
      chatModelTip: 'LLM по умолчанию для каждой новой созданной базы знаний.',
      embeddingModel: 'Эмбеддинг',
      embeddingModelTip:
        'Модель эмбеддингов по умолчанию для каждой новой созданной базы знаний. Если вы не можете найти модель эмбеддингов в выпадающем списке, проверьте, используете ли вы облегченную версию RAGFlow (которая не включает модели эмбеддингов) или проверьте https://ragflow.io/docs/dev/supported_models, чтобы узнать, поддерживает ли ваш провайдер моделей эту модель.',
      img2txtModel: 'VLM',
      img2txtModelTip:
        'VLM по умолчанию для каждой новой созданной базы знаний. Она описывает изображение или видео. Если вы не можете найти модель в выпадающем списке, проверьте https://ragflow.io/docs/dev/supported_models, чтобы узнать, поддерживает ли ваш провайдер моделей эту модель.',
      sequence2txtModel: 'ASR',
      sequence2txtModelTip:
        'Модель ASR по умолчанию для каждой новой созданной базы знаний. Используйте эту модель для преобразования голоса в соответствующий текст.',
      rerankModel: 'Rerank',
      rerankModelTip: `Модель rerank по умолчанию для переранжирования чанков. Если вы не можете найти модель в выпадающем списке, проверьте https://ragflow.io/docs/dev/supported_models, чтобы узнать, поддерживает ли ваш провайдер моделей эту модель.`,
      ttsModel: 'TTS',
      ttsModelTip:
        'Модель преобразования текста в речь по умолчанию. Если вы не можете найти модель в выпадающем списке, проверьте https://ragflow.io/docs/dev/supported_models, чтобы узнать, поддерживает ли ваш провайдер моделей эту модель.',
      workspace: 'рабочее пространство',
      upgrade: 'Обновить',
      addLlmTitle: 'Добавить LLM',
      editLlmTitle: 'Редактировать модель {{name}}',
      editModel: 'Редактировать модель',
      modelName: 'Название модели',
      modelID: 'ID модели',
      modelUid: 'UID модели',
      modelNameMessage: 'Пожалуйста, введите название вашей модели!',
      modelType: 'Тип модели',
      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',
      TencentCloudLink: 'Как использовать TencentCloud ASR',
      volcModelNameMessage: 'Пожалуйста, введите название вашей модели!',
      addEndpointID: 'Model ID',
      endpointIDMessage: 'Пожалуйста, введите Model ID модели',
      addArkApiKey: 'VOLC ARK_API_KEY',
      ArkApiKeyMessage: 'Пожалуйста, введите ваш ARK_API_KEY',
      bedrockModelNameMessage: 'Пожалуйста, введите название вашей модели',
      addBedrockEngineAK: 'ACCESS KEY',
      bedrockAKMessage: 'Пожалуйста, введите ваш ACCESS KEY',
      addBedrockSK: 'SECRET KEY',
      bedrockSKMessage: 'Пожалуйста, введите ваш SECRET KEY',
      bedrockRegion: 'AWS Регион',
      bedrockRegionMessage: 'Пожалуйста, выберите',
      'us-east-2': 'US East (Огайо)',
      'us-east-1': 'US East (Северная Вирджиния)',
      'us-west-1': 'US West (Северная Калифорния)',
      'us-west-2': 'US West (Орегон)',
      'af-south-1': 'Африка (Кейптаун)',
      'ap-east-1': 'Азия-Тихоокеанский регион (Гонконг)',
      'ap-south-2': 'Азия-Тихоокеанский регион (Хайдарабад)',
      'ap-southeast-3': 'Азия-Тихоокеанский регион (Джакарта)',
      'ap-southeast-5': 'Азия-Тихоокеанский регион (Малайзия)',
      'ap-southeast-4': 'Азия-Тихоокеанский регион (Мельбурн)',
      'ap-south-1': 'Азия-Тихоокеанский регион (Мумбаи)',
      'ap-northeast-3': 'Азия-Тихоокеанский регион (Осака)',
      'ap-northeast-2': 'Азия-Тихоокеанский регион (Сеул)',
      'ap-southeast-1': 'Азия-Тихоокеанский регион (Сингапур)',
      'ap-southeast-2': 'Азия-Тихоокеанский регион (Сидней)',
      'ap-east-2': 'Азия-Тихоокеанский регион (Тайбэй)',
      'ap-southeast-7': 'Азия-Тихоокеанский регион (Таиланд)',
      'ap-northeast-1': 'Азия-Тихоокеанский регион (Токио)',
      'ca-central-1': 'Канада (Центральная)',
      'ca-west-1': 'Канада Запад (Калгари)',
      'eu-central-1': 'Европа (Франкфурт)',
      'eu-west-1': 'Европа (Ирландия)',
      'eu-west-2': 'Европа (Лондон)',
      'eu-south-1': 'Европа (Милан)',
      'eu-west-3': 'Европа (Париж)',
      'eu-south-2': 'Европа (Испания)',
      'eu-north-1': 'Европа (Стокгольм)',
      'eu-central-2': 'Европа (Цюрих)',
      'il-central-1': 'Израиль (Тель-Авив)',
      'mx-central-1': 'Мексика (Центральная)',
      'me-south-1': 'Ближний Восток (Бахрейн)',
      'me-central-1': 'Ближний Восток (ОАЭ)',
      'sa-east-1': 'Южная Америка (Сан-Паулу)',
      'us-gov-east-1': 'AWS GovCloud (US-East)',
      'us-gov-west-1': 'AWS GovCloud (US-West)',
      addTencentCloudSID: 'TencentCloud Secret ID',
      TencentCloudSIDMessage: 'Пожалуйста, введите ваш Secret ID',
      addTencentCloudSK: 'TencentCloud SECRET KEY',
      TencentCloudSKMessage: 'Пожалуйста, введите ваш SECRET KEY',
      SparkModelNameMessage: 'Пожалуйста, выберите модель Spark',
      addSparkAPIPassword: 'Spark APIPassword',
      SparkAPIPasswordMessage: 'Пожалуйста, введите ваш APIPassword',
      addSparkAPPID: 'Spark APP ID',
      SparkAPPIDMessage: 'Пожалуйста, введите ваш APP ID',
      addSparkAPISecret: 'Spark API SECRET',
      SparkAPISecretMessage: 'Пожалуйста, введите ваш API SECRET',
      addSparkAPIKey: 'Spark APIKey',
      SparkAPIKeyMessage: 'Пожалуйста, введите ваш APIKey',
      yiyanModelNameMessage: 'Пожалуйста, введите название модели',
      addyiyanAK: 'yiyan API Key',
      yiyanAKMessage: 'Пожалуйста, введите ваш API Key',
      addyiyanSK: 'yiyan SECRET KEY',
      yiyanSKMessage: 'Пожалуйста, введите ваш SECRET KEY',
      FishAudioModelNameMessage:
        'Пожалуйста, дайте вашей модели синтеза речи название',
      addFishAudioAK: 'Fish Audio API Key',
      addFishAudioAKMessage: 'Пожалуйста, введите ваш API Key',
      addFishAudioRefID: 'FishAudio Reference ID',
      addFishAudioRefIDMessage:
        'Пожалуйста, введите Reference ID (оставьте пустым для использования модели по умолчанию).',
      GoogleModelIDMessage: 'Пожалуйста, введите ваш ID модели!',
      addGoogleProjectID: 'Project ID',
      GoogleProjectIDMessage: 'Пожалуйста, введите ваш Project ID',
      addGoogleServiceAccountKey:
        'Service Account Key(Оставьте пустым, если используете Application Default Credentials)',
      GoogleServiceAccountKeyMessage:
        'Пожалуйста, введите Google Cloud Service Account Key в формате base64',
      addGoogleRegion: 'Google Cloud Region',
      GoogleRegionMessage: 'Пожалуйста, введите Google Cloud Region',
      modelProvidersWarn: `Пожалуйста, сначала добавьте как модель эмбеддингов, так и LLM в <b>Настройки > Провайдеры моделей</b>. Затем установите их в 'Установить модели по умолчанию'.`,
      apiVersion: 'API-Версия',
      apiVersionMessage: 'Пожалуйста, введите версию API',
      add: 'Добавить',
      updateDate: 'Дата',
      role: 'Статус',
      invite: 'Пригласить участника',
      agree: 'Принять',
      refuse: 'Отклонить',
      teamMembers: 'Участники команды',
      joinedTeams: 'Присоединенные команды',
      sureDelete: 'Вы уверены, что хотите удалить этого участника?',
      quit: 'Выйти',
      sureQuit:
        'Вы уверены, что хотите выйти из команды, к которой присоединились?',
      secretKey: 'Секретный ключ',
      publicKey: 'Публичный ключ',
      secretKeyMessage: 'Пожалуйста, введите секретный ключ',
      publicKeyMessage: 'Пожалуйста, введите публичный ключ',
      hostMessage: 'Пожалуйста, введите хост',
      configuration: 'Конфигурация',
      langfuseDescription:
        'Трассировки, оценки, управление промптами и метрики для отладки и улучшения вашего LLM приложения.',
      viewLangfuseSDocumentation: 'Посмотреть документацию Langfuse',
      view: 'Просмотр',
      modelsToBeAddedTooltip:
        'Если ваш провайдер моделей не указан, но заявляет о "совместимости с OpenAI-API", выберите карточку OpenAI-API-compatible, чтобы добавить соответствующие модели. ',
      mcp: 'MCP',
      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: 'Зарегистрирован!',
      logout: 'выход',
      logged: 'вошел в систему!',
      pleaseSelectChunk: 'Пожалуйста, выберите чанк!',
      registerDisabled: 'Регистрация пользователей отключена',
      modified: 'Изменено',
      created: 'Создано',
      deleted: 'Удалено',
      renamed: 'Переименовано',
      operated: 'Выполнено',
      updated: 'Обновлено',
      uploaded: 'Загружено',
      200: 'Сервер успешно возвращает запрошенные данные.',
      201: 'Данные успешно созданы или изменены.',
      202: 'Запрос был поставлен в очередь в фоновом режиме (асинхронная задача).',
      204: 'Данные успешно удалены.',
      400: 'В отправленном запросе была ошибка, и сервер не создал и не изменил данные.',
      401: 'Пожалуйста, войдите снова.',
      403: 'Пользователь авторизован, но доступ запрещен.',
      404: 'Запрос был сделан для несуществующей записи, и сервер не выполнил операцию.',
      406: 'Запрашиваемый формат недоступен.',
      410: 'Запрошенный ресурс был окончательно удален и больше не будет доступен.',
      413: 'Общий размер файлов, загружаемых за один раз, слишком велик.',
      422: 'При создании объекта произошла ошибка валидации.',
      500: 'Произошла ошибка сервера, пожалуйста, проверьте сервер.',
      502: 'Ошибка шлюза.',
      503: 'Сервис недоступен, сервер временно перегружен или находится на техническом обслуживании.',
      504: 'Таймаут шлюза.',
      requestError: 'Ошибка запроса',
      networkAnomalyDescription:
        'В вашей сети есть аномалия, и вы не можете подключиться к серверу.',
      networkAnomaly: 'сетевая аномалия',
      hint: 'подсказка',
    },
    fileManager: {
      uploadFolderTitle: 'Загрузить папку',
      folder: 'Папка',
      files: 'Файлы',
      name: 'Название',
      uploadDate: 'Дата загрузки',
      knowledgeBase: 'База знаний',
      size: 'Размер',
      action: 'Действие',
      addToKnowledge: 'Связать с Базой Знаний',
      pleaseSelect: 'Пожалуйста, выберите',
      newFolder: 'Новая папка',
      file: 'Файл',
      uploadFile: 'Загрузить файл',
      parseOnCreation: 'Парсить при создании',
      directory: 'Директория',
      uploadTitle: 'Перетащите ваш файл сюда для загрузки',
      uploadDescription:
        'Поддерживает одиночную или пакетную загрузку файлов. Для локально развернутого RAGFlow: общий ограничение размера файлов за одну загрузку составляет 1 ГБ, с ограничением пакетной загрузки в 32 файла. Нет ограничения на общее количество файлов на аккаунт. Для cloud.ragflow.io общий ограничение размера файлов за одну загрузку составляет 10 МБ, каждый файл не должен превышать 10 МБ, максимум 128 файлов на аккаунт.',
      local: 'Локальные загрузки',
      s3: 'S3 загрузки',
      preview: 'Предпросмотр',
      fileError: 'Ошибка файла',
      uploadLimit:
        'Каждый файл не должен превышать 10 МБ, и общее количество файлов не должно превышать 128.',
      destinationFolder: 'Целевая папка',
      pleaseUploadAtLeastOneFile: 'Пожалуйста, загрузите хотя бы один файл',
    },
    flow: {
      preprocess: {
        preprocess: 'Предобработка',
        mainContent: 'Основное содержимое',
        abstract: 'Аннотация',
        author: 'Автор',
        sectionTitle: 'Заголовок раздела',
      },
      autoPlay: 'Автовоспроизведение аудио',
      downloadFileTypeTip: 'Тип файла для скачивания',
      downloadFileType: 'Тип скачиваемого файла',
      formatTypeError: 'Ошибка формата или типа',
      variableNameMessage:
        'Имя переменной может содержать только буквы и подчеркивания',
      variableDescription: 'Описание переменной',
      defaultValue: 'Значение по умолчанию',
      conversationVariable: 'Переменная диалога',
      recommended: 'Рекомендуемые',
      customerSupport: 'Поддержка клиентов',
      marketing: 'Маркетинг',
      consumerApp: 'Потребительские приложения',
      other: 'Другое',
      ingestionPipeline: 'Пайплайн обработки',
      agents: 'Агенты',
      publishedAt: 'Дата публикации',
      days: 'Дни',
      beginInput: 'Начальный ввод',
      ref: 'Переменная',
      stockCode: 'Код акции',
      apiKeyPlaceholder:
        'YOUR_API_KEY (полученный с https://serpapi.com/manage-api-key)',
      flowStart: 'Старт',
      flowNum: 'N',
      test: 'Тест',
      extractDepth: 'Глубина извлечения',
      format: 'Формат',
      basic: 'базовый',
      advanced: 'продвинутый',
      general: 'общий',
      searchDepth: 'Глубина поиска',
      tavilyTopic: 'Тема Tavily',
      maxResults: 'Макс. результатов',
      includeAnswer: 'Включать ответ',
      includeRawContent: 'Включать исходное содержимое',
      includeImages: 'Включать изображения',
      includeImageDescriptions: 'Включать описания изображений',
      includeDomains: 'Включать домены',
      ExcludeDomains: 'Исключать домены',
      Days: 'Дни',
      comma: 'Запятая',
      semicolon: 'Точка с запятой',
      period: 'Точка',
      lineBreak: 'Разрыв строки',
      tab: 'Табуляция',
      space: 'Пробел',
      delimiters: 'Разделители',
      enableChildrenDelimiters: 'Дочерние чанки используются для извлечения',
      merge: 'Объединить',
      split: 'Разделить',
      script: 'Скрипт',
      iterationItemDescription:
        'Представляет текущий элемент в итерации, который может быть использован и обработан на последующих шагах.',
      guidingQuestion: 'Направляющий вопрос',
      onFailure: 'При неудаче',
      userPromptDefaultValue: 'Это заказ, который вам нужно отправить агенту.',
      search: 'Поиск',
      communication: 'Коммуникация',
      developer: 'Разработчик',
      typeCommandORsearch: 'Введите команду или поиск...',
      builtIn: 'Встроенный',
      ExceptionDefaultValue: 'Значение по умолчанию при исключении',
      exceptionMethod: 'Метод обработки исключений',
      maxRounds: 'Максимальное количество раундов рефлексии',
      delayAfterError: 'Задержка после ошибки',
      maxRetries: 'Максимальное количество попыток повтора',
      advancedSettings: 'Расширенные настройки',
      addTools: 'Добавить инструменты',
      sysPromptDefaultValue: `
      <role>
        Вы - полезный ассистент, ИИ-ассистент, специализирующийся на решении проблем для пользователя.
        Если предоставлена конкретная область, адаптируйте вашу экспертизу к этой области; в противном случае действуйте как универсал.
      </role>
      <instructions>
        1. Поймите запрос пользователя.
        2. Разбейте его на логические подзадачи.
        3. Выполните каждую подзадачу шаг за шагом, рассуждая прозрачно.
        4. Проверьте точность и согласованность.
        5. Четко обобщите окончательный результат.
      </instructions>`,
      singleLineText: 'Однострочный текст',
      multimodalModels: 'Мультимодальные модели',
      textOnlyModels: 'Только текстовые модели',
      allModels: 'Все модели',
      codeExecDescription:
        'Напишите вашу пользовательскую логику на Python или Javascript.',
      stringTransformDescription:
        'Изменяет текстовое содержимое. В настоящее время поддерживает: Разделение или объединение текста.',
      foundation: 'Основа',
      tools: 'Инструменты',
      dataManipulation: 'Манипуляция данными',
      flow: 'Поток',
      dialog: 'Диалог',
      cite: 'Цитировать',
      citeTip: 'Подсказка цитирования',
      name: 'Название',
      nameMessage: 'Пожалуйста, введите название',
      lastSavedAt: 'Последнее сохранение',
      description: 'Описание',
      descriptionMessage: 'Это агент для конкретной задачи.',
      examples: 'Примеры',
      to: 'Кому',
      msg: 'Сообщения',
      msgTip:
        'Выводит содержимое переменной вышестоящего компонента или введенный вами текст.',
      messagePlaceholder: `Пожалуйста, введите содержимое вашего сообщения, используйте '/' для быстрой вставки переменных.`,
      messageMsg: 'Пожалуйста, введите сообщение или удалите это поле.',
      addField: 'Добавить опцию',
      addMessage: 'Добавить сообщение',
      loop: 'Цикл',
      loopDescription:
        'Цикл — верхний предел числа итераций текущего компонента; если число итераций превышает значение цикла, компонент не может завершить задачу — оптимизируйте агента',
      exitLoop: 'Выход из цикла',
      exitLoopDescription: `Эквивалентно «break». У этого узла нет настроек. Когда тело цикла достигает этого узла, цикл завершается.`,
      loopVariables: 'Переменные цикла',
      maximumLoopCount: 'Максимальное число итераций',
      loopTerminationCondition: 'Условие завершения цикла',
      yes: 'Да',
      no: 'Нет',
      key: 'Ключ',
      componentId: 'ID компонента',
      add: 'Добавить',
      operation: 'операция',
      run: 'Запустить',
      save: 'Сохранить',
      title: 'ID:',
      beginDescription: 'Здесь начинается поток.',
      answerDescription: `Компонент, который служит интерфейсом между человеком и ботом, получает пользовательские вводы и отображает ответы агента.`,
      retrievalDescription: `Компонент, который извлекает информацию из указанных баз знаний (баз знаний). Убедитесь, что выбранные вами базы знаний используют одну и ту же модель эмбеддингов.`,
      generateDescription: `Компонент, который побуждает LLM генерировать ответы. Убедитесь, что промпт установлен правильно.`,
      categorizeDescription: `Компонент, который использует LLM для классификации пользовательских вводов в предопределенные категории. Убедитесь, что вы указали название, описание и примеры для каждой категории, вместе с соответствующим следующим компонентом.`,
      relevantDescription: `Компонент, который использует LLM для оценки, релевантен ли вывод вышестоящего компонента последнему запросу пользователя. Убедитесь, что вы указали следующий компонент для каждого результата оценки.`,
      rewriteQuestionDescription: `Компонент, который переписывает пользовательский запрос из компонента Взаимодействие, на основе контекста предыдущих диалогов.`,
      messageDescription:
        'Этот компонент возвращает окончательный вывод данных рабочего процесса вместе с предопределенным содержимым сообщения. ',
      keywordDescription: `Компонент, который извлекает топ N результатов поиска из ввода пользователя. Убедитесь, что значение TopN установлено правильно перед использованием.`,
      switchDescription: `Компонент, который оценивает условия на основе вывода предыдущих компонентов и направляет поток выполнения соответственно. Он позволяет сложную логику ветвления, определяя случаи и указывая действия для каждого случая или действие по умолчанию, если условия не выполнены.`,
      wikipediaDescription: `Компонент, который выполняет поиск на wikipedia.org, используя TopN для указания количества результатов поиска. Он дополняет существующие базы знаний.`,
      promptText: `Пожалуйста, обобщите следующие параграфы. Будьте внимательны с числами, не выдумывайте. Параграфы следующие:
        {input}
  Выше приведено содержимое, которое вам нужно обобщить.`,
      createGraph: 'Создать агента',
      createFromTemplates: 'Создать из шаблона',
      retrieval: 'Извлечение',
      generate: 'Генерация',
      answer: 'Взаимодействие',
      categorize: 'Классификация',
      rewriteQuestion: 'Переписать вопрос',
      rewrite: 'Переписать',
      begin: 'Начало',
      message: 'Сообщение',
      blank: 'Пустой',
      createFromNothing: 'Создайте вашего агента с нуля',
      addItem: 'Добавить элемент',
      addSubItem: 'Добавить подэлемент',
      nameRequiredMsg: 'Название обязательно',
      nameRepeatedMsg: 'Название не может повторяться',
      keywordExtract: 'Ключевое слово',
      keywordExtractDescription: `Компонент, который извлекает ключевые слова из пользовательского запроса, с Top N, указывающим количество извлекаемых ключевых слов.`,
      baidu: 'Baidu',
      baiduDescription: `Компонент, который выполняет поиск на baidu.com, используя TopN для указания количества результатов поиска. Он дополняет существующие базы знаний.`,
      duckDuckGo: 'DuckDuckGo',
      duckDuckGoDescription:
        'Компонент, который выполняет поиск на duckduckgo.com, позволяя вам указать количество результатов поиска с помощью TopN. Он дополняет существующие базы знаний.',
      searXNG: 'SearXNG',
      searXNGDescription:
        'Компонент, который выполняет поиск через ваш предоставленный URL экземпляра SearXNG. Укажите TopN и URL экземпляра.',
      docGenerator: 'Генератор документов',
      docGeneratorDescription: `Создает файл из содержимого Markdown.`,
      subtitle: 'Подзаголовок',
      logoImage: 'Изображение логотипа',
      logoPosition: 'Позиция логотипа',
      logoWidth: 'Ширина логотипа',
      logoHeight: 'Высота логотипа',
      fontFamily: 'Семейство шрифтов',
      fontSize: 'Размер шрифта',
      titleFontSize: 'Размер шрифта заголовка',
      pageSize: 'Размер страницы',
      orientation: 'Ориентация',
      marginTop: 'Верхний отступ',
      marginBottom: 'Нижний отступ',
      filename: 'Имя файла',
      outputDirectory: 'Выходной каталог',
      addPageNumbers: 'Добавить номера страниц',
      addTimestamp: 'Добавить временную метку',
      watermarkText: 'Текст водяного знака',
      channel: 'Канал',
      channelTip: `Выполняет текстовый поиск или поиск новостей на входе компонента`,
      text: 'Текст',
      news: 'Новости',
      messageHistoryWindowSize: 'Размер окна истории сообщений',
      messageHistoryWindowSizeTip:
        'Размер окна истории разговоров, видимый LLM. Больше - лучше, но учитывайте максимальный лимит токенов LLM.',
      wikipedia: 'Wikipedia',
      pubMed: 'PubMed',
      pubMedDescription:
        'Компонент, который выполняет поиск на https://pubmed.ncbi.nlm.nih.gov/, позволяя вам указать количество результатов поиска с помощью TopN. Он дополняет существующие базы знаний.',
      email: 'Email',
      emailTip:
        'E-mail - обязательное поле. Вы должны ввести адрес электронной почты здесь.',
      arXiv: 'ArXiv',
      arXivDescription:
        'Компонент, который выполняет поиск на https://arxiv.org/, позволяя вам указать количество результатов поиска с помощью TopN. Он дополняет существующие базы знаний.',
      sortBy: 'Сортировать по',
      submittedDate: 'Дата отправки',
      lastUpdatedDate: 'Дата последнего обновления',
      relevance: 'Релевантность',
      google: 'Google',
      googleDescription:
        'Компонент, который выполняет поиск на https://www.google.com/, позволяя вам указать количество результатов поиска с помощью TopN. Он дополняет существующие базы знаний. Обратите внимание, что для этого требуется API ключ от serpapi.com.',
      bing: 'Microsoft Bing',
      bingDescription:
        'Компонент, который выполняет поиск на https://www.bing.com/, позволяя вам указать количество результатов поиска с помощью TopN. Он дополняет существующие базы знаний. Обратите внимание, что для этого требуется API ключ от microsoft.com.',
      apiKey: 'API Key',
      country: 'Страна и регион',
      language: 'Язык',
      googleScholar: 'Google Scholar',
      googleScholarDescription:
        'Компонент, который выполняет поиск на https://scholar.google.com/. Вы можете использовать Top N для указания количества результатов поиска.',
      yearLow: 'Год от',
      yearHigh: 'Год до',
      patents: 'Патенты',
      data: 'Данные',
      deepL: 'DeepL',
      deepLDescription:
        'Компонент, который получает более специализированные переводы с https://www.deepl.com/.',
      authKey: 'Ключ авторизации',
      sourceLang: 'Исходный язык',
      targetLang: 'Целевой язык',
      gitHub: 'GitHub',
      gitHubDescription:
        'Компонент, который ищет репозитории на https://github.com/. Вы можете использовать Top N для указания количества результатов поиска.',
      baiduFanyi: 'BaiduFanyi',
      baiduFanyiDescription:
        'Компонент, который получает специализированные переводы с https://fanyi.baidu.com/.',
      appid: 'App ID',
      secretKey: 'Секретный ключ',
      domain: 'Домен',
      transType: 'Тип перевода',
      baiduSecretKeyOptions: {
        translate: 'Общий перевод',
        fieldtranslate: 'Тематический перевод',
      },
      baiduDomainOptions: {
        it: 'Информационные технологии',
        finance: 'Финансы и экономика',
        machinery: 'Машиностроение',
        senimed: 'Биомедицина',
        novel: 'Онлайн литература',
        academic: 'Академические статьи',
        aerospace: 'Аэрокосмическая отрасль',
        wiki: 'Гуманитарные и социальные науки',
        news: 'Новости и информация',
        law: 'Законы и нормативы',
        contract: 'Договоры',
      },
      baiduSourceLangOptions: {
        auto: 'Автоопределение',
        zh: 'Китайский',
        en: 'Английский',
        yue: 'Кантонский',
        wyw: 'Классический китайский',
        jp: 'Японский',
        kor: 'Корейский',
        fra: 'Французский',
        spa: 'Испанский',
        th: 'Тайский',
        ara: 'Арабский',
        ru: 'Русский',
        pt: 'Португальский',
        de: 'Немецкий',
        it: 'Итальянский',
        el: 'Греческий',
        nl: 'Нидерландский',
        pl: 'Польский',
        bul: 'Болгарский',
        est: 'Эстонский',
        dan: 'Датский',
        fin: 'Финский',
        cs: 'Чешский',
        rom: 'Румынский',
        slo: 'Словенский',
        swe: 'Шведский',
        hu: 'Венгерский',
        cht: 'Традиционный китайский',
        vie: 'Вьетнамский',
      },
      qWeather: 'QWeather',
      qWeatherDescription:
        'Компонент, который получает информацию о погоде, такую как температура и качество воздуха, с https://www.qweather.com/.',
      lang: 'Язык',
      type: 'Тип',
      webApiKey: 'Web API ключ',
      userType: 'Тип пользователя',
      timePeriod: 'Период времени',
      qWeatherLangOptions: {
        zh: 'Китайский упрощенный',
        'zh-hant': 'Китайский традиционный',
        en: 'Английский',
        de: 'Немецкий',
        es: 'Испанский',
        fr: 'Французский',
        it: 'Итальянский',
        ja: 'Японский',
        ko: 'Корейский',
        ru: 'Русский',
        hi: 'Хинди',
        th: 'Тайский',
        ar: 'Арабский',
        pt: 'Португальский',
        bn: 'Бенгальский',
        ms: 'Малайский',
        nl: 'Нидерландский',
        el: 'Греческий',
        la: 'Латинский',
        sv: 'Шведский',
        id: 'Индонезийский',
        pl: 'Польский',
        tr: 'Турецкий',
        cs: 'Чешский',
        et: 'Эстонский',
        vi: 'Вьетнамский',
        fil: 'Филиппинский',
        fi: 'Финский',
        he: 'Иврит',
        is: 'Исландский',
        nb: 'Норвежский',
      },
      qWeatherTypeOptions: {
        weather: 'Прогноз погоды',
        indices: 'Погодный индекс жизни',
        airquality: 'Качество воздуха',
      },
      qWeatherUserTypeOptions: {
        free: 'Бесплатный подписчик',
        paid: 'Платный подписчик',
      },
      qWeatherTimePeriodOptions: {
        now: 'Сейчас',
        '3d': '3 дня',
        '7d': '7 дней',
        '10d': '10 дней',
        '15d': '15 дней',
        '30d': '30 дней',
      },
      publish: 'API',
      exeSQL: 'Выполнить SQL',
      exeSQLDescription:
        'Компонент, который выполняет SQL запросы к реляционной базе данных, поддерживая запросы из MySQL, PostgreSQL или MariaDB.',
      dbType: 'Тип базы данных',
      database: 'База данных',
      username: 'Имя пользователя',
      userId: 'ID пользователя',
      host: 'Хост',
      port: 'Порт',
      password: 'Пароль',
      switch: 'Переключатель',
      logicalOperator: 'Логический оператор',
      switchOperatorOptions: {
        equal: 'Равно',
        notEqual: 'Не равно',
        gt: 'Больше чем',
        ge: 'Больше или равно',
        lt: 'Меньше чем',
        le: 'Меньше или равно',
        contains: 'Содержит',
        notContains: 'Не содержит',
        startWith: 'Начинается с',
        endWith: 'Заканчивается на',
        empty: 'Пусто',
        notEmpty: 'Не пусто',
        in: 'Входит в',
        notIn: 'Не входит в',
        is: 'Соответствует',
        isNot: 'Не соответствует',
      },
      switchLogicOperatorOptions: {
        and: 'И',
        or: 'ИЛИ',
      },
      operator: 'Оператор',
      value: 'Значение',
      useTemplate: 'Использовать',
      wenCai: 'WenCai',
      queryType: 'Тип запроса',
      wenCaiDescription:
        'Компонент, который получает финансовую информацию, включая цены акций и новости о финансировании, с широкого спектра финансовых веб-сайтов.',
      wenCaiQueryTypeOptions: {
        stock: 'акции',
        zhishu: 'индекс',
        fund: 'фонд',
        hkstock: 'Гонконгские акции',
        usstock: 'Американский фондовый рынок',
        threeboard: 'Новый внебиржевой рынок',
        conbond: 'Конвертируемые облигации',
        insurance: 'страхование',
        futures: 'фьючерсы',
        lccp: 'Финансирование',
        foreign_exchange: 'Иностранная валюта',
      },
      akShare: 'AkShare',
      akShareDescription:
        'Компонент, который получает новости об акциях с https://www.eastmoney.com/.',
      yahooFinance: 'YahooFinance',
      yahooFinanceDescription:
        'Компонент, который запрашивает информацию о публично торгуемой компании, используя ее тикер.',
      crawler: 'Поисковый робот',
      crawlerDescription:
        'Компонент, который сканирует HTML исходный код с указанного URL.',
      proxy: 'Прокси',
      crawlerResultOptions: {
        html: 'Html',
        markdown: 'Markdown',
        content: 'Содержимое',
      },
      extractType: 'Тип извлечения',
      info: 'Информация',
      history: 'История',
      financials: 'Финансы',
      balanceSheet: 'Балансовый отчет',
      cashFlowStatement: 'Отчет о движении денежных средств',
      jin10: 'Jin10',
      jin10Description:
        'Компонент, который получает финансовую информацию с платформы Jin10 Open Platform, включая обновления новостей, календари, котировки и ссылки.',
      flashType: 'Тип вспышки',
      filter: 'Фильтр',
      contain: 'Содержит',
      calendarType: 'Тип календаря',
      calendarDatashape: 'Форма данных календаря',
      symbolsDatatype: 'Тип данных символов',
      symbolsType: 'Тип символов',
      jin10TypeOptions: {
        flash: 'Быстрые новости',
        calendar: 'Календарь',
        symbols: 'котировки',
        news: 'ссылки',
      },
      jin10FlashTypeOptions: {
        '1': 'Рыночные новости',
        '2': ' Новости фьючерсов',
        '3': 'Новости США-Гонконг',
        '4': 'Новости акций Китая',
        '5': 'Новости товаров и форекс',
      },
      jin10CalendarTypeOptions: {
        cj: 'Календарь макроэкономических данных',
        qh: ' Календарь фьючерсов',
        hk: 'Календарь фондового рынка Гонконга',
        us: 'Календарь фондового рынка США',
      },
      jin10CalendarDatashapeOptions: {
        data: 'Данные',
        event: ' Событие',
        holiday: 'Праздник',
      },
      jin10SymbolsTypeOptions: {
        GOODS: 'Котировки товаров',
        FOREX: ' Форекс котировки',
        FUTURE: 'Котировки международного рынка',
        CRYPTO: 'Криптовалютные котировки',
      },
      jin10SymbolsDatatypeOptions: {
        symbols: 'Список товаров',
        quotes: ' Последние рыночные котировки',
      },
      concentrator: 'Концентратор',
      concentratorDescription:
        'Компонент, который получает вывод от вышестоящего компонента и передает его как вход для нижестоящих компонентов.',
      tuShare: 'TuShare',
      tuShareDescription:
        'Компонент, который получает краткие финансовые новости с основных финансовых веб-сайтов, помогая отраслевым и количественным исследованиям.',
      tuShareSrcOptions: {
        sina: 'Sina',
        wallstreetcn: 'wallstreetcn',
        '10jqka': 'Straight flush',
        eastmoney: 'Eastmoney',
        yuncaijing: 'YUNCAIJING',
        fenghuang: 'FENGHUANG',
        jinrongjie: 'JRJ',
      },
      token: 'Токен',
      src: 'Источник',
      startDate: 'Дата начала',
      endDate: 'Дата окончания',
      keyword: 'Ключевое слово',
      note: 'Примечание',
      noteDescription: 'Примечание',
      notePlaceholder: 'Пожалуйста, введите примечание',
      invoke: 'HTTP Запрос',
      invokeDescription: `Компонент, способный вызывать удаленные сервисы, используя выводы других компонентов или константы как входы.`,
      url: 'Url',
      method: 'Метод',
      timeout: 'Таймаут',
      headers: 'Заголовки',
      cleanHtml: 'Очистить HTML',
      cleanHtmlTip:
        'Если ответ в формате HTML и нужен только основной контент, пожалуйста, включите это.',
      invalidUrl:
        'Должен быть действительный URL или URL с заполнителями переменных в формате {variable_name} или {component@variable}',
      reference: 'Ссылка',
      input: 'Ввод',
      output: 'Вывод',
      parameter: 'Параметр',
      howUseId: 'Как использовать ID агента?',
      content: 'Содержимое',
      operationResults: 'Результаты операций',
      autosaved: 'Автосохранено',
      optional: 'Опционально',
      pasteFileLink: 'Вставить ссылку на файл',
      testRun: 'Тестовый запуск',
      template: 'Шаблон',
      templateDescription:
        'Компонент, который форматирует вывод других компонентов.1. Поддерживает шаблоны Jinja2, сначала преобразует вход в объект, а затем рендерит шаблон, 2. Одновременно сохраняет исходный метод использования замены строки {parameter}',
      emailComponent: 'Email',
      emailDescription: 'Отправить email на указанный адрес.',
      smtpServer: 'SMTP хост',
      smtpPort: 'SMTP порт',
      senderEmail: 'Адрес отправителя (From)',
      smtpUsername: 'Имя пользователя SMTP',
      authCode: 'Пароль SMTP / пароль приложения',
      senderName: 'Отображаемое имя отправителя',
      toEmail: 'Email получателя',
      ccEmail: 'Email копии',
      emailSubject: 'Тема',
      emailContent: 'Содержимое',
      smtpServerRequired: 'Пожалуйста, введите адрес SMTP сервера',
      senderEmailRequired: 'Пожалуйста, введите email отправителя',
      authCodeRequired: 'Пожалуйста, введите код авторизации',
      toEmailRequired: 'Пожалуйста, введите email получателя',
      emailContentRequired: 'Пожалуйста, введите содержимое email',
      emailSentSuccess: 'Email успешно отправлен',
      emailSentFailed: 'Не удалось отправить email',
      dynamicParameters: 'Динамические параметры',
      jsonFormatTip:
        'Вышестоящий компонент должен предоставить JSON строку в следующем формате:',
      toEmailTip: 'to_email: Email получателя (Обязательно)',
      ccEmailTip: 'cc_email: Email копии (Опционально)',
      subjectTip: 'subject: Тема email (Опционально)',
      contentTip: 'content: Содержимое email (Опционально)',
      jsonUploadTypeErrorMessage: 'Пожалуйста, загрузите json файл',
      jsonUploadContentErrorMessage: 'Ошибка json файла',
      iteration: 'Итерация',
      iterationDescription: `Циклический компонент, который итерируется по входному массиву и выполняет определенную логику для каждого элемента.`,
      delimiterTip: `
Этот разделитель используется для разделения входного текста на несколько текстовых частей, каждая из которых будет выполняться как входной элемент каждой итерации.`,
      delimiterOptions: {
        comma: 'Запятая',
        lineBreak: 'Разрыв строки',
        tab: 'Табуляция',
        underline: 'Подчеркивание',
        diagonal: 'Косая черта',
        minus: 'Тире',
        semicolon: 'Точка с запятой',
      },
      addVariable: 'Добавить переменную',
      variableSettings: 'Настройки переменных',
      systemPrompt: 'Системный промпт',
      userPrompt: 'Пользовательский промпт',
      tocDataSource: 'Источник данных',
      addCategory: 'Добавить категорию',
      categoryName: 'Название категории',
      nextStep: 'Следующий шаг',
      variableExtractDescription:
        'Извлечь информацию пользователя в глобальную переменную на протяжении всего разговора',
      variableExtract: 'Переменные',
      variables: 'Переменные',
      variablesTip: `Установите четкую json ключевую переменную со значением пусто. например.
      {
        "UserCode":"",
        "NumberPhone":""
      }`,
      datatype: 'MIME тип HTTP запроса',
      insertVariableTip: `Введите / Вставьте переменные`,
      historyVersion: 'История версий',
      version: {
        created: 'Создано',
        details: 'Детали версии',
        dsl: 'DSL',
        download: 'Скачать',
        version: 'Версия',
        select: 'Версия не выбрана',
      },
      setting: 'Настройки',
      settings: {
        agentSetting: 'Настройки агента',
        title: 'заголовок',
        description: 'описание',
        upload: 'Загрузить',
        photo: 'Фото',
        permissions: 'Права доступа',
        permissionsTip:
          'Вы можете установить права доступа участников команды здесь.',
        me: 'я',
        team: 'Команда',
      },
      noMoreData: 'Больше нет данных',
      searchAgentPlaceholder: 'Поиск агента',
      footer: {
        profile: 'Все права защищены @ React',
      },
      layout: {
        file: 'файл',
        knowledge: 'знания',
        chat: 'чат',
      },
      prompt: 'Промпт',
      promptTip:
        'Используйте системный промпт, чтобы описать задачу для LLM, указать, как она должна отвечать, и очертить другие различные требования. Системный промпт часто используется вместе с ключами (переменными), которые служат различными входными данными для LLM. Используйте прямую косую черту `/` или кнопку (x), чтобы показать ключи для использования.',
      promptMessage: 'Промпт обязателен',
      infor: 'Информационный запуск',
      knowledgeBasesTip:
        'Выберите базы знаний для связи с этим чат-ассистентом, или выберите переменные, содержащие ID баз знаний ниже.',
      knowledgeBaseVars: 'Переменные базы знаний',
      code: 'Код',
      codeDescription:
        'Позволяет разработчикам писать пользовательскую логику на Python.',
      dataOperations: 'Операции с данными',
      dataOperationsDescription:
        'Выполнять различные операции над объектом Data.',
      listOperations: 'Операции со списками',
      listOperationsDescription: 'Выполнять операции над списком.',
      variableAssigner: 'Назначитель переменных',
      variableAssignerDescription:
        'Этот компонент выполняет операции над объектами Data, включая извлечение, фильтрацию и редактирование ключей и значений в Data.',
      variableAggregator: 'Агрегатор переменных',
      variableAggregatorDescription: `Этот процесс агрегирует переменные из нескольких ветвей в одну переменную для достижения единой конфигурации для нижестоящих узлов.

Узел агрегации переменных (изначально узел назначения переменных) - это важный узел в рабочем процессе. Он отвечает за интеграцию выходных результатов разных ветвей, гарантируя, что независимо от того, какая ветвь выполнена, ее результат может быть ссылочно доступен через единую переменную. Это чрезвычайно полезно в сценариях с несколькими ветвями, так как он отображает переменные с той же функцией в разных ветвях на одну выходную переменную, избегая избыточных определений в нижестоящих узлах.`,
      inputVariables: 'Входные переменные',
      runningHintText: 'выполняется...🕞',
      openingSwitch: 'Переключатель приветствия',
      openingCopy: 'Приветственное сообщение',
      openingSwitchTip:
        'Ваши пользователи увидят это приветственное сообщение в начале.',
      modeTip: 'Режим определяет, как инициируется рабочий процесс.',
      mode: 'Режим',
      conversational: 'Диалоговый',
      task: 'Задача',
      beginInputTip:
        'Параметры ввода, определённые здесь, могут быть доступны компонентам в последующем рабочем процессе.',
      query: 'Переменные запроса',
      switchPromptMessage:
        'Промпты изменятся. Подтвердите, что хотите отменить существующие промпты?',
      queryRequired: 'Запрос обязателен',
      queryTip: 'Выберите переменную, которую хотите использовать',
      agent: 'Агент',
      addAgent: 'Добавить агента',
      agentDescription:
        'Строит компоненты агентов, оснащенные рассуждениями, использованием инструментов и многопользовательским взаимодействием. ',
      maxRecords: 'Макс. записей',
      createAgent: 'Поток агента',
      stringTransform: 'Обработка текста',
      userFillUp: 'Ожидание ответа',
      userFillUpDescription: `Приостанавливает рабочий процесс и ждёт сообщения пользователя перед продолжением.`,
      codeExec: 'Код',
      tavilySearch: 'Поиск Tavily',
      tavilySearchDescription: 'Результаты поиска через сервис Tavily.',
      tavilyExtract: 'Извлечение Tavily',
      tavilyExtractDescription: 'Tavily Extract',
      log: 'Журнал',
      management: 'Управление',
      import: 'Импорт',
      export: 'Экспорт',
      seconds: 'Секунды',
      subject: 'Тема',
      tag: 'Тег',
      tagPlaceholder: 'Пожалуйста, введите тег',
      descriptionPlaceholder: 'Пожалуйста, введите описание',
      line: 'Однострочный текст',
      paragraph: 'Текст абзаца',
      options: 'Варианты выпадающего списка',
      file: 'Загрузка файла',
      integer: 'Число',
      boolean: 'Логический',

      logTimeline: {
        begin: 'Готов к началу',
        agent: 'Агент размышляет',
        userFillUp: 'Ждём вас',
        retrieval: 'Поиск в базе знаний',
        message: 'Ответ агента',
        awaitResponse: 'Ждём вас',
        switch: 'Выбор лучшего пути',
        iteration: 'Пакетная обработка',
        categorize: 'Классификация',
        code: 'Запуск скрипта',
        textProcessing: 'Обработка текста',
        tavilySearch: 'Поиск в интернете',
        tavilyExtract: 'Чтение страницы',
        exeSQL: 'Запрос к БД',
        google: 'Поиск в интернете',
        wikipedia: 'Поиск в Wikipedia',
        googleScholar: 'Академический поиск',
        gitHub: 'Поиск в GitHub',
        email: 'Отправка email',
        httpRequest: 'Вызов API',
        wenCai: 'Финансовые данные',
      },
      goto: 'Ветка ошибки',
      comment: 'Значение по умолчанию',
      sqlStatement: 'SQL-запрос',
      sqlStatementTip:
        'Напишите SQL-запрос здесь. Можно использовать переменные, сырой SQL или смешивать оба через синтаксис переменных.',
      frameworkPrompts: 'Фреймворк',
      release: 'Опубликовать',
      production: 'Продакшн',
      productionTooltip:
        'Эта версия опубликована в продакшн. Доступ через API или встроенную страницу.',
      confirmPublish: 'Подтвердить публикацию',
      publishIngestionPipeline:
        'Вы собираетесь опубликовать этот пайплайн обработки.',
      publishAgent: 'Вы собираетесь опубликовать этого агента',
      linkedDataset: 'Связанная база знаний:',
      lastPublished: 'Последняя публикация',
      createFromBlank: 'Создать с нуля',
      createFromTemplate: 'Создать из шаблона',
      importJsonFile: 'Импорт JSON файла',
      ceateAgent: 'Рабочий процесс',
      createPipeline: 'Пайплайн обработки',
      chooseAgentType: 'Тип агента',
      parser: 'Парсер',
      parserDescription:
        'Извлекает сырой текст и структуру из файлов для последующей обработки.',
      tokenizer: 'Индексатор',
      tokenizerRequired: 'Сначала добавьте узел индексатора',
      tokenizerDescription:
        'Преобразует текст в нужную структуру данных (например, векторные эмбеддинги для embedding-поиска) в зависимости от выбранного метода поиска.',
      splitter: 'Токен',
      splitterDescription:
        'Разбивает текст на чанки по длине токенов с опциональными разделителями и перекрытием.',
      hierarchicalMergerDescription:
        'Разбивает документы на секции по иерархии заголовков с regex для точного контроля.',
      hierarchicalMerger: 'Заголовок',
      extractor: 'Трансформер',
      extractorDescription:
        'Использует LLM для извлечения структурированных данных из чанков — резюме, классификаций и т.д.',
      outputFormat: 'Формат вывода',
      fileFormats: 'Тип файла',
      fileFormatOptions: {
        pdf: 'PDF',
        spreadsheet: 'Электронная таблица',
        image: 'Изображение',
        email: 'Электронная почта',
        'text&markdown': 'Текст и разметка',
        word: 'Word файл',
        slides: 'PPTX',
        audio: 'Аудио',
        video: 'Видео',
      },
      fields: 'Поле',
      addParser: 'Добавить парсер',
      hierarchy: 'Иерархия',
      regularExpressions: 'Регулярные выражения',
      overlappedPercent: 'Процент перекрытия (%)',
      searchMethod: 'Метод поиска',
      searchMethodTip: `Определяет, как ищется контент — полнотекстом, эмбеддингами или обоими способами.
Индексатор сохранит контент в соответствующих структурах данных для выбранных методов.`,
      // file: 'File',
      parserMethod: 'Парсер PDF',
      tableResultType: 'Тип результата таблицы',
      markdownImageResponseType: 'Тип ответа изображения в Markdown',
      // systemPrompt: 'System Prompt',
      systemPromptPlaceholder:
        'Системный промпт для анализа изображений; если пусто — используется значение по умолчанию',
      exportJson: 'Экспорт JSON',
      viewResult: 'Результат',
      running: 'Выполняется',
      summary: 'Сводка',
      keywords: 'Ключевые слова',
      questions: 'Вопросы',
      metadata: 'Метаданные',
      toc: 'PageIndex',
      fieldName: 'Назначение результата',
      prompts: {
        system: {
          keywords: `Роль
Вы - анализатор текста.

Задача
Извлеките самые важные ключевые слова/фразы из данного фрагмента текстового содержимого.

Требования
- Обобщите текстовое содержимое и дайте топ 5 важных ключевых слов/фраз.
- Ключевые слова ДОЛЖНЫ быть на том же языке, что и данный фрагмент текстового содержимого.
- Ключевые слова разделены АНГЛИЙСКОЙ ЗАПЯТОЙ.
- Выводите ТОЛЬКО ключевые слова.`,
          questions: `Роль
Вы - анализатор текста.

Задача
Предложите 3 вопроса о данном фрагменте текстового содержимого.

Требования
- Поймите и обобщите текстовое содержимое и предложите топ 3 важных вопроса.
- Вопросы НЕ ДОЛЖНЫ иметь перекрывающихся значений.
- Вопросы ДОЛЖНЫ охватывать основное содержание текста как можно больше.
- Вопросы ДОЛЖНЫ быть на том же языке, что и данный фрагмент текстового содержимого.
- Один вопрос на строку.
- Выводите ТОЛЬКО вопросы.`,
          summary: `Действуйте как точный суммаризатор. Ваша задача - создать резюме предоставленного содержимого, которое является одновременно кратким и верным оригиналу.

Ключевые инструкции:
1. Точность: Строго основывайте резюме на предоставленной информации. Не вводите новые факты, выводы или интерпретации, которые явно не указаны.
2. Язык: Напишите резюме на том же языке, что и исходный текст.
3. Объективность: Представьте ключевые моменты без предвзятости, сохраняя первоначальный замысел и тон содержимого. Не редактируйте.
4. Краткость: Сосредоточьтесь на самых важных идеях, опуская незначительные детали и лишнее.`,
          metadata: `Извлеките важную структурированную информацию из данного содержимого. Выводите ТОЛЬКО действительную JSON строку без дополнительного текста. Если важная структурированная информация не найдена, выведите пустой JSON объект: {}.

Важная структурированная информация может включать: имена, даты, местоположения, события, ключевые факты, числовые данные или другие извлекаемые сущности.`,
          toc: '',
        },
        user: {
          keywords: `Текстовое содержимое
[Вставьте текст здесь]`,
          questions: `Текстовое содержимое
[Вставьте текст здесь]`,
          summary: `Текст для обобщения:
[Вставьте текст здесь]`,
          metadata: `Содержимое: [ВСТАВЬТЕ СОДЕРЖИМОЕ ЗДЕСЬ]`,
          toc: '[Вставьте текст здесь]',
        },
      },
      cancel: 'Отмена',
      swicthPromptMessage:
        'Промпт изменится. Пожалуйста, подтвердите, отказаться от существующего промпта?',
      tokenizerSearchMethodOptions: {
        full_text: 'Полный текст',
        embedding: 'Эмбеддинг',
      },
      filenameEmbeddingWeight: 'Вес эмбеддинга имени файла',
      tokenizerFieldsOptions: {
        text: 'Обработанный текст',
        keywords: 'Ключевые слова',
        questions: 'Вопросы',
        summary: 'Расширенный контекст',
      },
      imageParseMethodOptions: {
        ocr: 'OCR',
      },
      structuredOutput: {
        configuration: 'Конфигурация',
        structuredOutput: 'Структурированный вывод',
      },
      operations: 'Операции',
      operationsOptions: {
        selectKeys: 'Выбрать ключи',
        literalEval: 'Литеральная оценка',
        combine: 'Объединить',
        filterValues: 'Фильтровать значения',
        appendOrUpdate: 'Добавить или обновить',
        removeKeys: 'Удалить ключи',
        renameKeys: 'Переименовать ключи',
      },
      ListOperationsOptions: {
        topN: 'Топ N',
        head: 'Начало',
        tail: 'Конец',
        sort: 'Сортировать',
        filter: 'Фильтр',
        dropDuplicates: 'Удалить дубликаты',
      },
      sortMethod: 'Метод сортировки',
      SortMethodOptions: {
        asc: 'По возрастанию',
        desc: 'По убыванию',
      },
      variableAssignerLogicalOperatorOptions: {
        overwrite: 'Перезаписано',
        clear: 'Очистить',
        set: 'Установить',
        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 Key',
        queryParameters: 'Параметры запроса',
        headerParameters: 'Параметры заголовка',
        requestBodyParameters: 'Параметры тела запроса',
        immediately: 'Подтверждение получено',
        streaming: 'Финальный ответ',
        overview: 'Обзор',
        logs: 'Журналы',
        agentStatus: 'Статус агента:',
      },
      saveToMemory: 'Сохранить в память',
      retrievalFrom: 'Извлечение из',
      id: 'ID',
      state: 'Состояние',
      number: 'Число',
      latestDate: 'Последняя дата',
      createDate: 'Дата создания',
      noDataToExport: 'Нет данных для экспорта',
      success: 'Успех',
      failed: 'Ошибка',
      logTitle: 'Заголовок',
      tags: 'Теги',
      canvasCategory: 'Категория канваса',
    },
    llmTools: {
      bad_calculator: {
        name: 'Калькулятор',
        description:
          'Инструмент для вычисления суммы двух чисел (даст неправильный ответ)',
        params: {
          a: 'Первое число',
          b: 'Второе число',
        },
      },
    },
    modal: {
      okText: 'Подтвердить',
      cancelText: 'Отмена',
    },
    mcp: {
      export: 'Экспорт',
      import: 'Импорт',
      url: 'URL',
      serverType: 'Тип сервера',
      addMCP: 'Добавить MCP',
      editMCP: 'Редактировать MCP',
      toolsAvailable: 'доступные инструменты',
      mcpServers: 'MCP серверы',
      mcpServer: 'MCP сервер',
      customizeTheListOfMcpServers: 'Настроить список MCP серверов',
      cachedTools: 'кэшированные инструменты',
      bulkManage: 'Пакетное управление',
      exitBulkManage: 'Выйти из пакетного управления',
      selected: 'Выбрано',
    },
    search: {
      searchApps: 'Поисковые приложения',
      createSearch: 'Создать поиск',
      searchGreeting: 'Чем я могу вам помочь сегодня？',
      profile: 'Скрыть профиль',
      locale: 'Локаль',
      embedCode: 'Код для встраивания',
      id: 'ID',
      copySuccess: 'Успешно скопировано',
      welcomeBack: 'С возвращением',
      searchSettings: 'Настройки поиска',
      name: 'Название',
      avatar: 'Аватар',
      description: 'Описание',
      datasets: 'Датасеты',
      rerankModel: 'Rerank Модель',
      AISummary: 'ИИ-резюме',
      enableWebSearch: 'Включить веб-поиск',
      enableRelatedSearch: 'Включить связанный поиск',
      showQueryMindmap: 'Показать ментальную карту запроса',
      embedApp: 'Встроить приложение',
      relatedSearch: 'Связанный поиск',
      descriptionValue: 'Вы - интеллектуальный ассистент.',
      okText: 'Сохранить',
      cancelText: 'Отмена',
      chooseDataset: 'Пожалуйста, сначала выберите датасет',
      selectLocalePlaceholder: 'Выберите локаль',
    },
    language: {
      english: 'Английский',
      chinese: 'Китайский',
      spanish: 'Испанский',
      french: 'Французский',
      german: 'Немецкий',
      japanese: 'Японский',
      korean: 'Корейский',
      vietnamese: 'Вьетнамский',
      russian: 'Русский',
      bulgarian: 'Болгарский',
      arabic: 'Арабский',
      turkish: 'Турецкий',
    },
    pagination: {
      total: 'Всего {{total}}',
      page: '{{page}} /Страница',
    },
    dataflowParser: {
      result: 'Результат',
      parseSummary: 'Сводка парсинга',
      parseSummaryTip: 'Парсер：deepdoc',
      parserMethod: 'Метод парсинга',
      outputFormat: 'Формат вывода',
      rerunFromCurrentStep: 'Перезапустить с текущего шага',
      rerunFromCurrentStepTip: 'Обнаружены изменения. Нажмите для перезапуска.',
      confirmRerun: 'Подтвердить перезапуск процесса',
      confirmRerunModalContent: `
      <p class="text-sm text-text-disabled font-medium mb-2">
        Вы собираетесь перезапустить процесс, начиная с шага <span class="text-text-secondary">{{step}}</span>.
      </p>
      <p class="text-sm mb-3 text-text-disabled">Это:</p><br />
      <ul class="list-disc list-inside space-y-1 text-sm text-text-secondary">
        <li>• Перезапишет существующие результаты с текущего шага и далее</li>
        <li>• Создаст новую запись в логе для отслеживания</li>
        <li>• Предыдущие шаги останутся неизменными</li>
      </ul>`,
      changeStepModalTitle: 'Предупреждение о смене шага',
      changeStepModalContent: `
      <p>В настоящее время вы редактируете результаты этого этапа.</p>
      <p>Если вы переключитесь на более поздний этап, ваши изменения будут потеряны. </p>
      <p>Чтобы сохранить их, пожалуйста, нажмите Перезапустить, чтобы повторно запустить текущий этап.</p> `,
      changeStepModalConfirmText: 'Все равно переключить',
      changeStepModalCancelText: 'Отмена',
      unlinkPipelineModalTitle: 'Отвязать пайплайн обработки',
      unlinkPipelineModalConfirmText: 'Отвязать',
      unlinkPipelineModalContent: `
      <p>После отвязки этот Датасет больше не будет подключен к текущему пайплайну обработки.</p>
      <p>Файлы, которые уже парсятся, продолжат до завершения</p>
      <p>Файлы, которые еще не парсились, больше не будут обрабатываться</p> <br/>
      <p>Вы уверены, что хотите продолжить?</p> `,
      unlinkSourceModalTitle: 'Отвязать источник данных',
      unlinkSourceModalContent: `
      <p>Вы уверены, что хотите отвязать этот источник данных？</p>`,
      unlinkSourceModalConfirmText: 'Отвязать',
    },
    datasetOverview: {
      downloadTip: 'Файлы загружаются из источников данных. ',
      processingTip: 'Файлы обрабатываются пайплайном обработки.',
      totalFiles: 'Всего файлов',
      downloading: 'Загрузка',
      downloadSuccessTip: 'Всего успешных загрузок',
      downloadFailedTip: 'Всего неудачных загрузок',
      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',
      confirm: 'Подтвердить',
      close: 'Закрыть',
      yes: 'Да',
      no: 'Нет',
      delete: 'Удалить',
      cancel: 'Отмена',
      reset: 'Сбросить',
      import: 'Импорт',
      description: 'Описание',
      noDescription: 'Нет описания',
      none: 'Нет',

      resourceType: {
        dataset: 'Датасет',
        chat: 'Чат',
        agent: 'Агент',
        search: 'Поиск',
        file: 'Файл',
        team: 'Команда',
        memory: 'Память',
      },

      permissionType: {
        enable: 'Включить',
        read: 'Чтение',
        write: 'Запись',
        share: 'Поделиться',
      },

      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: 'Неактивный',
      enable: 'Включить',
      disable: 'Выключить',
      all: 'Все',
      actions: 'Действия',
      newUser: 'Новый пользователь',
      email: 'Email',
      name: 'Имя',
      nickname: 'Никнейм',
      status: 'Статус',
      id: 'ID',
      serviceType: 'Тип сервиса',
      host: 'Хост',
      port: 'Порт',

      role: 'Роль',
      user: 'Пользователь',
      userType: 'Тип пользователя',
      superuser: 'Суперпользователь',
      normalUser: 'Обычный',

      createTime: 'Время создания',
      lastLoginTime: 'Время последнего входа',
      lastUpdateTime: 'Время последнего обновления',

      isAnonymous: 'Анонимный',
      isSuperuser: 'Суперпользователь',

      deleteUser: 'Удалить пользователя',
      deleteUserConfirmation:
        'Вы уверены, что хотите удалить этого пользователя?',

      createNewUser: 'Создать нового пользователя',
      changePassword: 'Изменить пароль',
      newPassword: 'Новый пароль',
      confirmNewPassword: 'Подтвердите новый пароль',
      password: 'Пароль',
      confirmPassword: 'Подтвердите пароль',

      invalidEmail:
        'Пожалуйста, введите действительный адрес электронной почты!',
      passwordRequired: 'Пожалуйста, введите ваш пароль!',
      passwordMinLength: 'Пароль должен быть длиннее 8 символов.',
      confirmPasswordRequired: 'Пожалуйста, подтвердите ваш пароль!',
      confirmPasswordDoNotMatch: 'Введенные вами пароли не совпадают!',

      read: 'Чтение',
      write: 'Запись',
      share: 'Поделиться',
      create: 'Создать',

      extraInfo: 'Дополнительная информация',
      serviceDetail: `Детали сервиса {{name}}`,
      taskExecutorDetail: 'Детали исполнителя задачи',

      whitelistManagement: 'Управление белым списком',
      exportAsExcel: 'Экспорт в Excel',
      importFromExcel: 'Импорт из Excel',
      createEmail: 'Создать email',
      deleteEmail: 'Удалить email',
      editEmail: 'Редактировать email',
      deleteWhitelistEmailConfirmation:
        'Вы уверены, что хотите удалить этот email из белого списка? Это действие нельзя отменить.',

      importWhitelist: 'Импорт белого списка (Excel)',
      importSelectExcelFile: 'Excel файл (.xlsx)',
      importOverwriteExistingEmails: 'Перезаписать существующие emails',
      importInvalidExcelFile: 'Пожалуйста, выберите действительный Excel файл',
      importFileRequired: 'Пожалуйста, выберите файл для импорта',
      importFileTips:
        'Файл должен содержать один заголовочный столбец с именем <code>email</code>.',

      chunkNum: 'Чанки',
      docNum: 'Документы',
      tokenNum: 'Использовано токенов',
      language: 'Язык',
      createDate: 'Дата создания',
      updateDate: 'Дата обновления',
      permission: 'Права доступа',

      agentTitle: 'Название агента',
      canvasCategory: 'Категория канваса',

      newRole: 'Новая роль',
      addNewRole: 'Добавить новую роль',
      roleName: 'Название роли',
      roleNameRequired: 'Название роли обязательно',
      resources: 'Ресурсы',

      editRoleDescription: 'Редактировать описание роли',
      deleteRole: 'Удалить роль',
      deleteRoleConfirmation:
        'Вы уверены, что хотите удалить эту роль? Это действие нельзя отменить.',

      alive: 'Активен',
      timeout: 'Таймаут',
      fail: 'Неудача',
    },
    explore: {
      title: 'Запуск',
      canvasList: 'Список канвасов',
      sessions: 'Сессии',
      newSession: 'Новая сессия',
      newSessionLabel: 'Начать новый разговор',
      deleteSession: 'Удалить сессию',
      searchCanvas: 'Поиск по канвасу...',
      searchSessions: 'Поиск по сессиям...',
      noCanvasSelected: 'Выберите канвас',
      noSessionSelected: 'Выберите сессию или создайте новую',
      noSessionsFound: 'Сессии не найдены',
      createFirstSession: 'Создайте первую сессию',
      noCanvasFound: 'Канвасы не найдены',
      deleteSelectedConfirm: 'Удалить выбранные сеансы ({{count}})?',
      batchDeleteSessions: 'Удалить сессии',
    },
  },
};
