Initial commit

This commit is contained in:
2025-10-14 14:17:21 +08:00
commit ac715a8b88
35011 changed files with 3834178 additions and 0 deletions

View File

@@ -0,0 +1,87 @@
const translation = {
title: 'Аннотации',
name: 'Ответить на аннотацию',
editBy: 'Ответ отредактирован {{author}}',
noData: {
title: 'Нет аннотаций',
description: 'Вы можете редактировать аннотации во время отладки приложения или импортировать их массово здесь для получения качественного ответа.',
},
table: {
header: {
question: 'вопрос',
answer: 'ответ',
createdAt: 'создано',
hits: 'попаданий',
actions: 'действия',
addAnnotation: 'Добавить аннотацию',
bulkImport: 'Массовый импорт',
bulkExport: 'Массовый экспорт',
clearAll: 'Очистить все аннотации',
},
},
editModal: {
title: 'Редактировать ответ аннотации',
queryName: 'Запрос пользователя',
answerName: 'Storyteller Bot',
yourAnswer: 'Ваш ответ',
answerPlaceholder: 'Введите ваш ответ здесь',
yourQuery: 'Ваш запрос',
queryPlaceholder: 'Введите ваш запрос здесь',
removeThisCache: 'Удалить эту аннотацию',
createdAt: 'Создано',
},
addModal: {
title: 'Добавить ответ аннотации',
queryName: 'Вопрос',
answerName: 'Ответ',
answerPlaceholder: 'Введите ответ здесь',
queryPlaceholder: 'Введите вопрос здесь',
createNext: 'Добавить еще один аннотированный ответ',
},
batchModal: {
title: 'Массовый импорт',
csvUploadTitle: 'Перетащите сюда ваш CSV-файл или ',
browse: 'выберите файл',
tip: 'CSV-файл должен соответствовать следующей структуре:',
question: 'вопрос',
answer: 'ответ',
contentTitle: 'содержимое фрагмента',
content: 'содержимое',
template: 'Скачать шаблон здесь',
cancel: 'Отмена',
run: 'Запустить пакет',
runError: 'Ошибка запуска пакета',
processing: 'В процессе пакетной обработки',
completed: 'Импорт завершен',
error: 'Ошибка импорта',
ok: 'ОК',
},
errorMessage: {
answerRequired: 'Ответ обязателен',
queryRequired: 'Вопрос обязателен',
},
viewModal: {
annotatedResponse: 'Ответ аннотации',
hitHistory: 'История попаданий',
hit: 'Попадание',
hits: 'Попадания',
noHitHistory: 'Нет истории попаданий',
},
hitHistoryTable: {
query: 'Запрос',
match: 'Совпадение',
response: 'Ответ',
source: 'Источник',
score: 'Оценка',
time: 'Время',
},
initSetup: {
title: 'Начальная настройка ответа аннотации',
configTitle: 'Настройка ответа аннотации',
confirmBtn: 'Сохранить и включить',
configConfirmBtn: 'Сохранить',
},
embeddingModelSwitchTip: 'Модель векторизации текста аннотаций, переключение между моделями будет осуществлено повторно, что приведет к дополнительным затратам.',
}
export default translation

View File

@@ -0,0 +1,85 @@
const translation = {
apiServer: 'API Сервер',
apiKey: 'API Ключ',
status: 'Статус',
disabled: 'Отключено',
ok: 'В работе',
copy: 'Копировать',
copied: 'Скопировано',
play: 'Запустить',
pause: 'Приостановить',
playing: 'Запущено',
loading: 'Загрузка',
merMaid: {
rerender: 'Перезапустить рендеринг',
},
never: 'Никогда',
apiKeyModal: {
apiSecretKey: 'Секретный ключ API',
apiSecretKeyTips: 'Чтобы предотвратить злоупотребление API, защитите свой API ключ. Избегайте использования его в виде plain-текста во фронтенд-коде. :)',
createNewSecretKey: 'Создать новый секретный ключ',
secretKey: 'Секретный ключ',
created: 'СОЗДАН',
lastUsed: 'ПОСЛЕДНЕЕ ИСПОЛЬЗОВАНИЕ',
generateTips: 'Храните этот ключ в безопасном и доступном месте.',
},
actionMsg: {
deleteConfirmTitle: 'Удалить этот секретный ключ?',
deleteConfirmTips: 'Это действие необратимо.',
ok: 'ОК',
},
completionMode: {
title: 'API приложения',
info: 'Для высококачественной генерации текста, такой как статьи, резюме и переводы, используйте API completion-messages с пользовательским вводом. Генерация текста основана на параметрах модели и шаблонах подсказок, установленных в Dify Prompt Engineering.',
createCompletionApi: 'Создать completion-message',
createCompletionApiTip: 'Создайте completion-message для поддержки режима вопросов и ответов.',
inputsTips: '(Необязательно) Укажите поля пользовательского ввода в виде пар ключ-значение, соответствующих переменным в Prompt Eng. Ключ - это имя переменной, Значение - это значение параметра. Если тип поля - Выбор, отправленное Значение должно быть одним из предустановленных вариантов.',
queryTips: 'Текстовое содержимое пользовательского ввода.',
blocking: 'Блокирующий тип, ожидает завершения выполнения и возвращает результаты. (Запросы могут быть прерваны, если процесс длительный)',
streaming: ' Ответ в рамках потока. Реализация потоковой передачи ответов на основе SSE (Server-Sent Events).',
messageFeedbackApi: 'Обратная связь по сообщению (лайк)',
messageFeedbackApiTip: 'Оцените полученные сообщения от имени конечных пользователей с помощью лайков или дизлайков. Эти данные видны на странице Журналы и аннотации и используются для будущей тонкой настройки модели.',
messageIDTip: 'Идентификатор сообщения',
ratingTip: 'лайк или дизлайк, null - отмена',
parametersApi: 'Получить информацию о параметрах приложения',
parametersApiTip: 'Получить настроенные входные параметры, включая имена переменных, имена полей, типы и значения по умолчанию. Обычно используется для отображения этих полей в форме или заполнения значений по умолчанию после загрузки клиента.',
},
chatMode: {
title: 'API приложения чата',
info: 'Для универсальных диалоговых приложений, использующих формат вопросов и ответов, вызовите API chat-messages, чтобы начать диалог. Поддерживайте текущие разговоры, передавая возвращенный conversation_id. Параметры ответа и шаблоны зависят от настроек Dify Prompt Eng.',
createChatApi: 'Создать сообщение чата',
createChatApiTip: 'Создайте новое сообщение разговора или продолжите существующий диалог.',
inputsTips: '(Необязательно) Укажите поля пользовательского ввода в виде пар ключ-значение, соответствующих переменным в Prompt Eng. Ключ - это имя переменной, Значение - это значение параметра. Если тип поля - Выбор, отправленное Значение должно быть одним из предустановленных вариантов.',
queryTips: 'Содержимое пользовательского ввода/вопроса',
blocking: 'Блокирующий тип, ожидает завершения выполнения и возвращает результаты. (Запросы могут быть прерваны, если процесс длительный)',
streaming: 'потоковая передача возвращает. Реализация потоковой передачи возврата на основе SSE (Server-Sent Events).',
conversationIdTip: '(Необязательно) Идентификатор разговора: оставьте пустым для первого разговора; передайте conversation_id из контекста, чтобы продолжить диалог.',
messageFeedbackApi: 'Обратная связь конечного пользователя по сообщению, лайк',
messageFeedbackApiTip: 'Оцените полученные сообщения от имени конечных пользователей с помощью лайков или дизлайков. Эти данные видны на странице Журналы и аннотации и используются для будущей тонкой настройки модели.',
messageIDTip: 'Идентификатор сообщения',
ratingTip: 'лайк или дизлайк, null - отмена',
chatMsgHistoryApi: 'Получить историю сообщений чата',
chatMsgHistoryApiTip: 'Первая страница возвращает последние `limit` строк, которые находятся в обратном порядке.',
chatMsgHistoryConversationIdTip: 'Идентификатор разговора',
chatMsgHistoryFirstId: 'Идентификатор первой записи чата на текущей странице. По умолчанию - нет.',
chatMsgHistoryLimit: 'Сколько чатов возвращается за один запрос',
conversationsListApi: 'Получить список разговоров',
conversationsListApiTip: 'Получает список сеансов текущего пользователя. По умолчанию возвращаются последние 20 сеансов.',
conversationsListFirstIdTip: 'Идентификатор последней записи на текущей странице, по умолчанию - нет.',
conversationsListLimitTip: 'Сколько чатов возвращается за один запрос',
conversationRenamingApi: 'Переименование разговора',
conversationRenamingApiTip: 'Переименовать разговоры; имя отображается в многосессионных клиентских интерфейсах.',
conversationRenamingNameTip: 'Новое имя',
parametersApi: 'Получить информацию о параметрах приложения',
parametersApiTip: 'Получить настроенные входные параметры, включая имена переменных, имена полей, типы и значения по умолчанию. Обычно используется для отображения этих полей в форме или заполнения значений по умолчанию после загрузки клиента.',
},
develop: {
requestBody: 'Тело запроса',
pathParams: 'Параметры пути',
query: 'Запрос',
toc: 'Содержание',
},
regenerate: 'Регенерировать',
}
export default translation

View File

@@ -0,0 +1,463 @@
const translation = {
pageTitle: {
line1: 'PROMPT',
line2: 'Engineering',
},
orchestrate: 'Оркестрация',
promptMode: {
simple: 'Переключиться в экспертный режим для редактирования всего ПРОМПТА',
advanced: 'Экспертный режим',
switchBack: 'Переключиться обратно',
advancedWarning: {
title: 'Вы переключились в экспертный режим, и после изменения ПРОМПТА вы НЕ СМОЖЕТЕ вернуться в базовый режим.',
description: 'В экспертном режиме вы можете редактировать весь ПРОМПТ.',
learnMore: 'Узнать больше',
ok: 'ОК',
},
operation: {
addMessage: 'Добавить сообщение',
},
contextMissing: 'Отсутствует компонент контекста, эффективность промпта может быть невысокой.',
},
operation: {
applyConfig: 'Опубликовать',
resetConfig: 'Сбросить',
debugConfig: 'Отладка',
addFeature: 'Добавить функцию',
automatic: 'Сгенерировать',
stopResponding: 'Остановить ответ',
agree: 'лайк',
disagree: 'дизлайк',
cancelAgree: 'Отменить лайк',
cancelDisagree: 'Отменить дизлайк',
userAction: 'Пользователь ',
},
notSetAPIKey: {
title: 'Ключ поставщика LLM не установлен',
trailFinished: 'Пробный период закончен',
description: 'Ключ поставщика LLM не установлен, его необходимо установить перед отладкой.',
settingBtn: 'Перейти к настройкам',
},
trailUseGPT4Info: {
title: 'В настоящее время не поддерживается gpt-4',
description: 'Чтобы использовать gpt-4, пожалуйста, установите API ключ.',
},
feature: {
groupChat: {
title: 'Улучшение чата',
description: 'Добавление настроек предварительного разговора для приложений может улучшить пользовательский опыт.',
},
groupExperience: {
title: 'Улучшение опыта',
},
conversationOpener: {
title: 'Начальное сообщение',
description: 'В чат-приложении первое предложение, которое ИИ активно говорит пользователю, обычно используется в качестве приветствия.',
},
suggestedQuestionsAfterAnswer: {
title: 'Последующие вопросы',
description: 'Настройка предложения следующих вопросов может улучшить чат для пользователей.',
resDes: '3 предложения для следующего вопроса пользователя.',
tryToAsk: 'Попробуйте спросить',
},
moreLikeThis: {
title: 'Больше похожего',
description: 'Сгенерируйте несколько текстов одновременно, а затем отредактируйте и продолжайте генерировать',
generateNumTip: 'Количество генерируемых каждый раз',
tip: 'Использование этой функции приведет к дополнительным расходам токенов',
},
speechToText: {
title: 'Преобразование речи в текст',
description: 'После включения вы можете использовать голосовой ввод.',
resDes: 'Голосовой ввод включен',
},
textToSpeech: {
title: 'Преобразование текста в речь',
description: 'После включения текст можно преобразовать в речь.',
resDes: 'Преобразование текста в аудио включено',
},
citation: {
title: 'Цитаты и ссылки',
description: 'После включения отображается исходный документ и атрибутированная часть сгенерированного контента.',
resDes: 'Цитаты и ссылки включены',
},
annotation: {
title: 'Ответ аннотации',
description: 'Вы можете вручную добавить высококачественный ответ в кэш для приоритетного сопоставления с похожими вопросами пользователей.',
resDes: 'Ответ аннотации включен',
scoreThreshold: {
title: 'Порог оценки',
description: 'Используется для установки порога сходства для ответа аннотации.',
easyMatch: 'Простое совпадение',
accurateMatch: 'Точное совпадение',
},
matchVariable: {
title: 'Переменная соответствия',
choosePlaceholder: 'Выберите переменную соответствия',
},
cacheManagement: 'Аннотации',
cached: 'Аннотировано',
remove: 'Удалить',
removeConfirm: 'Удалить эту аннотацию?',
add: 'Добавить аннотацию',
edit: 'Редактировать аннотацию',
},
dataSet: {
title: 'Контекст',
noData: 'Вы можете импортировать знания в качестве контекста',
words: 'Слова',
textBlocks: 'Текстовые блоки',
selectTitle: 'Выберите справочные знания',
selected: 'Знания выбраны',
noDataSet: 'Знания не найдены',
toCreate: 'Перейти к созданию',
notSupportSelectMulti: 'В настоящее время поддерживаются только одни знания',
queryVariable: {
title: 'Переменная запроса',
tip: 'Эта переменная будет использоваться в качестве входных данных запроса для поиска контекста, получая информацию о контексте, связанную с вводом этой переменной.',
choosePlaceholder: 'Выберите переменную запроса',
noVar: 'Нет переменных',
noVarTip: 'пожалуйста, создайте переменную в разделе Переменные',
unableToQueryDataSet: 'Невозможно запросить знания',
unableToQueryDataSetTip: 'Не удалось успешно запросить знания, пожалуйста, выберите переменную запроса контекста в разделе контекста.',
ok: 'ОК',
contextVarNotEmpty: 'переменная запроса контекста не может быть пустой',
deleteContextVarTitle: 'Удалить переменную "{{varName}}"?',
deleteContextVarTip: 'Эта переменная была установлена в качестве переменной запроса контекста, и ее удаление повлияет на нормальное использование знаний. Если вам все еще нужно удалить ее, пожалуйста, выберите ее заново в разделе контекста.',
},
},
tools: {
title: 'Инструменты',
tips: 'Инструменты предоставляют стандартный метод вызова API, принимая пользовательский ввод или переменные в качестве параметров запроса для запроса внешних данных в качестве контекста.',
toolsInUse: '{{count}} инструментов используется',
modal: {
title: 'Инструмент',
toolType: {
title: 'Тип инструмента',
placeholder: 'Пожалуйста, выберите тип инструмента',
},
name: {
title: 'Имя',
placeholder: 'Пожалуйста, введите имя',
},
variableName: {
title: 'Имя переменной',
placeholder: 'Пожалуйста, введите имя переменной',
},
},
},
conversationHistory: {
title: 'История разговоров',
description: 'Установить префиксы имен для ролей разговора',
tip: 'История разговоров не включена, пожалуйста, добавьте <histories> в промпт выше.',
learnMore: 'Узнать больше',
editModal: {
title: 'Редактировать имена ролей разговора',
userPrefix: 'Префикс пользователя',
assistantPrefix: 'Префикс помощника',
},
},
toolbox: {
title: 'НАБОР ИНСТРУМЕНТОВ',
},
moderation: {
title: 'Модерация контента',
description: 'Обеспечьте безопасность выходных данных модели, используя API модерации или поддерживая список чувствительных слов.',
allEnabled: 'ВХОДНОЙ/ВЫХОДНОЙ контент включен',
inputEnabled: 'ВХОДНОЙ контент включен',
outputEnabled: 'ВЫХОДНОЙ контент включен',
modal: {
title: 'Настройки модерации контента',
provider: {
title: 'Поставщик',
openai: 'Модерация OpenAI',
openaiTip: {
prefix: 'Для модерации OpenAI требуется ключ API OpenAI, настроенный в ',
suffix: '.',
},
keywords: 'Ключевые слова',
},
keywords: {
tip: 'По одному на строку, разделенные разрывами строк. До 100 символов на строку.',
placeholder: 'По одному на строку, разделенные разрывами строк',
line: 'Строка',
},
content: {
input: 'Модерировать ВХОДНОЙ контент',
output: 'Модерировать ВЫХОДНОЙ контент',
preset: 'Предустановленные ответы',
placeholder: 'Здесь содержимое предустановленных ответов',
condition: 'Модерация ВХОДНОГО и ВЫХОДНОГО контента включена хотя бы одна',
fromApi: 'Предустановленные ответы возвращаются API',
errorMessage: 'Предустановленные ответы не могут быть пустыми',
supportMarkdown: 'Markdown поддерживается',
},
openaiNotConfig: {
before: 'Для модерации OpenAI требуется ключ API OpenAI, настроенный в',
after: '',
},
},
},
},
generate: {
title: 'Генератор промпта',
description: 'Генератор промпта использует настроенную модель для оптимизации промпта для повышения качества и улучшения структуры. Пожалуйста, напишите четкие и подробные инструкции.',
tryIt: 'Попробуйте',
instruction: 'Инструкции',
instructionPlaceHolder: 'Напишите четкие и конкретные инструкции.',
generate: 'Сгенерировать',
resTitle: 'Сгенерированный промпт',
noDataLine1: 'Опишите свой случай использования слева,',
noDataLine2: 'предварительный просмотр оркестрации будет показан здесь.',
apply: 'Применить',
loading: 'Оркестрация приложения для вас...',
overwriteTitle: 'Перезаписать существующую конфигурацию?',
overwriteMessage: 'Применение этого промпта перезапишет существующую конфигурацию.',
template: {
pythonDebugger: {
name: 'Отладчик Python',
instruction: 'Бот, который может генерировать и отлаживать ваш код на основе ваших инструкций',
},
translation: {
name: 'Переводчик',
instruction: 'Переводчик, который может переводить на несколько языков',
},
professionalAnalyst: {
name: 'Профессиональный аналитик',
instruction: 'Извлекайте информацию, выявляйте риски и извлекайте ключевую информацию из длинных отчетов в одну записку',
},
excelFormulaExpert: {
name: 'Эксперт по формулам Excel',
instruction: 'Чат-бот, который может помочь начинающим пользователям понять, использовать и создавать формулы Excel на основе инструкций пользователя',
},
travelPlanning: {
name: 'Планировщик путешествий',
instruction: 'Помощник по планированию путешествий - это интеллектуальный инструмент, разработанный, чтобы помочь пользователям без труда планировать свои поездки',
},
SQLSorcerer: {
name: 'SQL-ассистент',
instruction: 'Преобразуйте повседневный язык в SQL-запросы',
},
GitGud: {
name: 'Git gud',
instruction: 'Генерируйте соответствующие команды Git на основе описанных пользователем действий по управлению версиями',
},
meetingTakeaways: {
name: 'Итоги совещания',
instruction: 'Извлекайте из совещаний краткие резюме, включая темы обсуждения, ключевые выводы и элементы действий',
},
writingsPolisher: {
name: 'Редактор',
instruction: 'Используйте LLM, чтобы улучшить свои письменные работы',
},
},
},
resetConfig: {
title: 'Подтвердить сброс?',
message:
'Сброс отменяет изменения, восстанавливая последнюю опубликованную конфигурацию.',
},
errorMessage: {
nameOfKeyRequired: 'имя ключа: {{key}} обязательно',
valueOfVarRequired: 'значение {{key}} не может быть пустым',
queryRequired: 'Требуется текст запроса.',
waitForResponse:
'Пожалуйста, дождитесь завершения ответа на предыдущее сообщение.',
waitForBatchResponse:
'Пожалуйста, дождитесь завершения ответа на пакетное задание.',
notSelectModel: 'Пожалуйста, выберите модель',
waitForImgUpload: 'Пожалуйста, дождитесь загрузки изображения',
},
chatSubTitle: 'Инструкции',
completionSubTitle: 'Префикс Промпта',
promptTip:
'Промпт направляют ответы ИИ с помощью инструкций и ограничений. Вставьте переменные, такие как {{input}}. Этот Промпт не будет видна пользователям.',
formattingChangedTitle: 'Форматирование изменено',
formattingChangedText:
'Изменение форматирования приведет к сбросу области отладки, вы уверены?',
variableTitle: 'Переменные',
variableTip:
'Пользователи заполняют переменные в форме, автоматически заменяя переменные в промпте.',
notSetVar: 'Переменные позволяют пользователям вводить промпты или вступительные замечания при заполнении форм. Вы можете попробовать ввести "{{input}}" в промптах.',
autoAddVar: 'В предварительной промпте упоминаются неопределенные переменные, хотите ли вы добавить их в форму пользовательского ввода?',
variableTable: {
key: 'Ключ переменной',
name: 'Имя поля пользовательского ввода',
optional: 'Необязательно',
type: 'Тип ввода',
action: 'Действия',
typeString: 'Строка',
typeSelect: 'Выбор',
},
varKeyError: {
canNoBeEmpty: '{{key}} обязательно',
tooLong: '{{key}} слишком длинное. Не может быть длиннее 30 символов',
notValid: '{{key}} недействительно. Может содержать только буквы, цифры и подчеркивания',
notStartWithNumber: '{{key}} не может начинаться с цифры',
keyAlreadyExists: '{{key}} уже существует',
},
otherError: {
promptNoBeEmpty: 'Промпт не может быть пустой',
historyNoBeEmpty: 'История разговоров должна быть установлена в промпте',
queryNoBeEmpty: 'Запрос должен быть установлен в промпте',
},
variableConfig: {
'addModalTitle': 'Добавить поле ввода',
'editModalTitle': 'Редактировать поле ввода',
'description': 'Настройка для переменной {{varName}}',
'fieldType': 'Тип поля',
'string': 'Короткий текст',
'text-input': 'Короткий текст',
'paragraph': 'Абзац',
'select': 'Выбор',
'number': 'Число',
'notSet': 'Не задано, попробуйте ввести {{input}} в префикс промпта',
'stringTitle': 'Параметры текстового поля формы',
'maxLength': 'Максимальная длина',
'options': 'Варианты',
'addOption': 'Добавить вариант',
'apiBasedVar': 'Переменная на основе API',
'varName': 'Имя переменной',
'labelName': 'Имя метки',
'inputPlaceholder': 'Пожалуйста, введите',
'content': 'Содержимое',
'required': 'Обязательно',
'errorMsg': {
labelNameRequired: 'Имя метки обязательно',
varNameCanBeRepeat: 'Имя переменной не может повторяться',
atLeastOneOption: 'Требуется хотя бы один вариант',
optionRepeat: 'Есть повторяющиеся варианты',
},
},
vision: {
name: 'Зрение',
description: 'Включение зрения позволит модели принимать изображения и отвечать на вопросы о них.',
settings: 'Настройки',
visionSettings: {
title: 'Настройки зрения',
resolution: 'Разрешение',
resolutionTooltip: `Низкое разрешение позволит модели получать версию изображения с низким разрешением 512 x 512 и представлять изображение с бюджетом 65 токенов. Это позволяет API возвращать ответы быстрее и потреблять меньше входных токенов для случаев использования, не требующих высокой детализации.
\n
Высокое разрешение сначала позволит модели увидеть изображение с низким разрешением, а затем создаст детальные фрагменты входных изображений в виде квадратов 512 пикселей на основе размера входного изображения. Каждый из детальных фрагментов использует вдвое больший бюджет токенов, в общей сложности 129 токенов.`,
high: 'Высокое',
low: 'Низкое',
uploadMethod: 'Метод загрузки',
both: 'Оба',
localUpload: 'Локальная загрузка',
url: 'URL',
uploadLimit: 'Лимит загрузки',
},
},
voice: {
name: 'Голос',
defaultDisplay: 'Голос по умолчанию',
description: 'Настройки преобразования текста в речь',
settings: 'Настройки',
voiceSettings: {
title: 'Настройки голоса',
language: 'Язык',
resolutionTooltip: 'Язык, поддерживаемый преобразованием текста в речь.',
voice: 'Голос',
autoPlay: 'Автовоспроизведение',
autoPlayEnabled: 'Включить',
autoPlayDisabled: 'Выключить',
},
},
openingStatement: {
title: 'Начальное сообщение',
add: 'Добавить',
writeOpener: 'Написать начальное сообщение',
placeholder: 'Напишите здесь свое начальное сообщение, вы можете использовать переменные, попробуйте ввести {{variable}}.',
openingQuestion: 'Начальные вопросы',
noDataPlaceHolder:
'Начало разговора с пользователем может помочь ИИ установить более тесную связь с ним в диалоговых приложениях.',
varTip: 'Вы можете использовать переменные, попробуйте ввести {{variable}}',
tooShort: 'Для генерации вступительного замечания к разговору требуется не менее 20 слов начального промпта.',
notIncludeKey: 'Начальный промпт не включает переменную: {{key}}. Пожалуйста, добавьте её в начальную промпт.',
},
modelConfig: {
model: 'Модель',
setTone: 'Установить тон ответов',
title: 'Модель и параметры',
modeType: {
chat: 'Чат',
completion: 'Завершение',
},
},
inputs: {
title: 'Отладка и предварительный просмотр',
noPrompt: 'Попробуйте написать промпт во входных данных предварительного промпта',
userInputField: 'Поле пользовательского ввода',
noVar: 'Заполните значение переменной, которое будет автоматически заменяться в промпте каждый раз при запуске нового сеанса.',
chatVarTip:
'Заполните значение переменной, которое будет автоматически заменяться в промпте каждый раз при запуске нового сеанса',
completionVarTip:
'Заполните значение переменной, которое будет автоматически заменяться в промпте каждый раз при отправке вопроса.',
previewTitle: 'Предварительный просмотр промпта',
queryTitle: 'Содержимое запроса',
queryPlaceholder: 'Пожалуйста, введите текст запроса.',
run: 'ЗАПУСТИТЬ',
},
result: 'Выходной текст',
datasetConfig: {
settingTitle: 'Настройки поиска',
knowledgeTip: 'Нажмите кнопку "+", чтобы добавить знания',
retrieveOneWay: {
title: 'Поиск N-к-1',
description: 'На основе намерения пользователя и описаний знаний агент автономно выбирает наилучшие знания для запроса. Лучше всего подходит для приложений с различными, ограниченными знаниями.',
},
retrieveMultiWay: {
title: 'Многопутный поиск',
description: 'На основе намерения пользователя выполняет запросы по всем знаниям, извлекает соответствующий текст из нескольких источников и выбирает наилучшие результаты, соответствующие запросу пользователя, после повторного ранжирования.',
},
rerankModelRequired: 'Требуется rerank-модель ',
params: 'Параметры',
top_k: 'Top K',
top_kTip: 'Используется для фильтрации фрагментов, наиболее похожих на вопросы пользователей. Система также будет динамически корректировать значение Top K в зависимости от max_tokens выбранной модели.',
score_threshold: 'Порог оценки',
score_thresholdTip: 'Используется для установки порога сходства для фильтрации фрагментов.',
retrieveChangeTip: 'Изменение режима индексации и режима поиска может повлиять на приложения, связанные с этими знаниями.',
},
debugAsSingleModel: 'Отладка как одной модели',
debugAsMultipleModel: 'Отладка как нескольких моделей',
duplicateModel: 'Дублировать',
publishAs: 'Опубликовать как',
assistantType: {
name: 'Тип помощника',
chatAssistant: {
name: 'Базовый помощник',
description: 'Создайте помощника на основе чата, используя большую языковую модель',
},
agentAssistant: {
name: 'Агент-помощник',
description: 'Создайте интеллектуального агента, который может автономно выбирать инструменты для выполнения задач',
},
},
agent: {
agentMode: 'Режим агента',
agentModeDes: 'Установите тип режима вывода для агента',
agentModeType: {
ReACT: 'ReAct',
functionCall: 'Вызов функции',
},
setting: {
name: 'Настройки агента',
description: 'Настройки агента-помощника позволяют установить режим агента и расширенные функции, такие как встроенные промпты, доступные только в типе агента.',
maximumIterations: {
name: 'Максимальное количество итераций',
description: 'Ограничьте количество итераций, которые может выполнить агент-помощник',
},
},
buildInPrompt: 'Встроенный промпт',
firstPrompt: 'Первый промпт',
nextIteration: 'Следующая итерация',
promptPlaceholder: 'Напишите здесь свой первый промпт',
tools: {
name: 'Инструменты',
description: 'Использование инструментов может расширить возможности LLM, такие как поиск в Интернете или выполнение научных расчетов',
enabled: 'Включено',
},
},
}
export default translation

View File

@@ -0,0 +1,98 @@
const translation = {
title: 'Логирование',
description: 'В логах записывается состояние работы приложения, включая пользовательский ввод и ответы ИИ.',
dateTimeFormat: 'DD.MM.YYYY HH:mm',
table: {
header: {
updatedTime: 'Время обновления',
time: 'Время создания',
endUser: 'Конечный пользователь или аккаунт',
input: 'Ввод',
output: 'Вывод',
summary: 'Заголовок',
messageCount: 'Количество сообщений',
userRate: 'Оценка пользователя',
adminRate: 'Оценка оп.',
startTime: 'ВРЕМЯ НАЧАЛА',
status: 'СТАТУС',
runtime: 'ВРЕМЯ ВЫПОЛНЕНИЯ',
tokens: 'ТОКЕНЫ',
user: 'Конечный пользователь или аккаунт',
version: 'ВЕРСИЯ',
},
pagination: {
previous: 'Предыдущий',
next: 'Следующий',
},
empty: {
noChat: 'Еще нет чатов',
noOutput: 'Нет вывода',
element: {
title: 'Есть кто-нибудь?',
content: 'Наблюдайте и аннотируйте взаимодействия между конечными пользователями и приложениями ИИ здесь, чтобы постоянно повышать точность ИИ. Вы можете попробовать <shareLink>поделиться</shareLink> или <testLink>протестировать</testLink> веб-приложение самостоятельно, а затем вернуться на эту страницу.',
},
},
},
detail: {
time: 'Время',
conversationId: 'Идентификатор разговора',
promptTemplate: 'Шаблон подсказки',
promptTemplateBeforeChat: 'Шаблон подсказки перед чатом · Как системное сообщение',
annotationTip: 'Улучшения, отмеченные {{user}}',
timeConsuming: '',
second: 'с',
tokenCost: 'Потрачено токенов',
loading: 'загрузка',
operation: {
like: 'лайк',
dislike: 'дизлайк',
addAnnotation: 'Добавить улучшение',
editAnnotation: 'Редактировать улучшение',
annotationPlaceholder: 'Введите ожидаемый ответ, который вы хотите получить от ИИ, который может быть использован для тонкой настройки модели и постоянного улучшения качества генерации текста в будущем.',
},
variables: 'Переменные',
uploadImages: 'Загруженные изображения',
modelParams: 'Параметры модели',
},
filter: {
period: {
today: 'Сегодня',
last7days: 'Последние 7 дней',
last4weeks: 'Последние 4 недели',
last3months: 'Последние 3 месяца',
last12months: 'Последние 12 месяцев',
monthToDate: 'С начала месяца',
quarterToDate: 'С начала квартала',
yearToDate: 'С начала года',
allTime: 'Все время',
},
annotation: {
all: 'Все',
annotated: 'Аннотированные улучшения ({{count}} элементов)',
not_annotated: 'Не аннотировано',
},
sortBy: 'Сортировать по:',
descending: 'по убыванию',
ascending: 'по возрастанию',
},
workflowTitle: 'Журналы рабочих процессов',
workflowSubtitle: 'Журнал записал работу Automate.',
runDetail: {
title: 'Журнал разговоров',
workflowTitle: 'Подробная информация о журнале',
fileListLabel: 'Сведения о файле',
fileListDetail: 'Подробность',
},
promptLog: 'Журнал подсказок',
agentLog: 'Журнал агента',
viewLog: 'Просмотреть журнал',
agentLogDetail: {
agentMode: 'Режим агента',
toolUsed: 'Использованный инструмент',
iterations: 'Итерации',
iteration: 'Итерация',
finalProcessing: 'Окончательная обработка',
},
}
export default translation

View File

@@ -0,0 +1,172 @@
const translation = {
welcome: {
firstStepTip: 'Чтобы начать,',
enterKeyTip: 'введите свой ключ API OpenAI ниже',
getKeyTip: 'Получите свой ключ API на панели инструментов OpenAI',
placeholder: 'Ваш ключ API OpenAI (например, sk-xxxx)',
},
apiKeyInfo: {
cloud: {
trial: {
title: 'Вы используете пробную квоту {{providerName}}.',
description: 'Пробная квота предоставляется для тестирования. Прежде чем пробная квота будет исчерпана, пожалуйста, настройте своего собственного поставщика модели или приобретите дополнительную квоту.',
},
exhausted: {
title: 'Ваша пробная квота была исчерпана, пожалуйста, настройте свой APIKey.',
description: 'Вы исчерпали свою пробную квоту. Пожалуйста, настройте своего собственного поставщика модели или приобретите дополнительную квоту.',
},
},
selfHost: {
title: {
row1: 'Чтобы начать,',
row2: 'сначала настройте своего поставщика модели.',
},
},
callTimes: 'Количество вызовов',
usedToken: 'Использованные токены',
setAPIBtn: 'Перейти к настройке поставщика модели',
tryCloud: 'Или попробуйте облачную версию Dify с бесплатной квотой',
},
overview: {
title: 'Обзор',
appInfo: {
explanation: 'Готовое к использованию веб-приложение ИИ',
accessibleAddress: 'Публичный URL',
preview: 'Предварительный просмотр',
regenerate: 'Перегенерировать',
regenerateNotice: 'Вы хотите перегенерировать публичный URL?',
preUseReminder: 'Пожалуйста, включите веб-приложение перед продолжением.',
settings: {
entry: 'Настройки',
title: 'Настройки веб-приложения',
webName: 'Название веб-приложения',
webDesc: 'Описание веб-приложения',
webDescTip: 'Этот текст будет отображаться на стороне клиента, предоставляя базовые инструкции по использованию приложения',
webDescPlaceholder: 'Введите описание веб-приложения',
language: 'Язык',
workflow: {
title: 'Рабочий процесс',
subTitle: 'Подробности рабочего процесса',
show: 'Показать',
hide: 'Скрыть',
showDesc: 'Показать или скрыть подробности рабочего процесса в веб-приложении',
},
chatColorTheme: 'Цветовая тема чата',
chatColorThemeDesc: 'Установите цветовую тему чат-бота',
chatColorThemeInverted: 'Инвертированные цвета',
invalidHexMessage: 'Неверное HEX-значение',
sso: {
label: 'SSO аутентификация',
title: 'WebApp SSO',
description: 'Все пользователи должны войти в систему с помощью SSO перед использованием WebApp',
tooltip: 'Обратитесь к администратору, чтобы включить WebApp SSO',
},
more: {
entry: 'Показать больше настроек',
copyright: 'Авторские права',
copyRightPlaceholder: 'Введите имя автора или организации',
privacyPolicy: 'Политика конфиденциальности',
privacyPolicyPlaceholder: 'Введите ссылку на политику конфиденциальности',
privacyPolicyTip: 'Помогает посетителям понять, какие данные собирает приложение, см. <privacyPolicyLink>Политику конфиденциальности</privacyPolicyLink> Dify.',
customDisclaimer: 'Пользовательский отказ от ответственности',
customDisclaimerPlaceholder: 'Введите текст пользовательского отказа от ответственности',
customDisclaimerTip: 'Текст пользовательского отказа от ответственности будет отображаться на стороне клиента, предоставляя дополнительную информацию о приложении',
copyrightTooltip: 'Пожалуйста, перейдите на тарифный план Professional или выше',
copyrightTip: 'Отображение информации об авторских правах в веб-приложении',
},
modalTip: 'Настройки веб-приложения на стороне клиента.',
},
embedded: {
entry: 'Встраивание',
title: 'Встроить на веб-сайт',
explanation: 'Выберите способ встраивания чат-приложения на свой веб-сайт',
iframe: 'Чтобы добавить чат-приложение в любое место на вашем веб-сайте, добавьте этот iframe в свой HTML-код.',
scripts: 'Чтобы добавить чат-приложение в правый нижний угол вашего веб-сайта, добавьте этот код в свой HTML.',
chromePlugin: 'Установите расширение Dify Chatbot для Chrome',
copied: 'Скопировано',
copy: 'Копировать',
},
qrcode: {
title: 'QR-код ссылки',
scan: 'Сканировать, чтобы поделиться',
download: 'Скачать QR-код',
},
customize: {
way: 'способ',
entry: 'Настроить',
title: 'Настроить веб-приложение ИИ',
explanation: 'Вы можете настроить внешний интерфейс веб-приложения в соответствии со своими потребностями.',
way1: {
name: 'Создайте форк клиентского кода, измените его и разверните на Vercel (рекомендуется)',
step1: 'Создайте форк клиентского кода и измените его',
step1Tip: 'Нажмите здесь, чтобы создать форк исходного кода в своей учетной записи GitHub и изменить код',
step1Operation: 'Dify-WebClient',
step2: 'Развернуть на Vercel',
step2Tip: 'Нажмите здесь, чтобы импортировать репозиторий в Vercel и развернуть',
step2Operation: 'Импортировать репозиторий',
step3: 'Настроить переменные среды',
step3Tip: 'Добавьте следующие переменные среды в Vercel',
},
way2: {
name: 'Напишите клиентский код для вызова API и разверните его на сервере',
operation: 'Документация',
},
},
launch: 'Баркас',
},
apiInfo: {
title: 'API серверной части',
explanation: 'Легко интегрируется в ваше приложение',
accessibleAddress: 'Конечная точка API сервиса',
doc: 'Справочник по API',
},
status: {
running: 'В работе',
disable: 'Отключено',
},
},
analysis: {
title: 'Анализ',
ms: 'мс',
tokenPS: 'Токен/с',
totalMessages: {
title: 'Всего сообщений',
explanation: 'Ежедневное количество взаимодействий с ИИ.',
},
totalConversations: {
title: 'Всего чатов',
explanation: 'Ежедневное количество чатов с LLM; проектирование/отладка не учитываются.',
},
activeUsers: {
title: 'Активные пользователи',
explanation: 'Уникальные пользователи, участвующие в вопросах и ответах с LLM; проектирование/отладка не учитываются.',
},
tokenUsage: {
title: 'Использование токенов',
explanation: 'Отражает ежедневное использование токенов языковой модели для приложения, полезно для целей контроля затрат.',
consumed: 'Потрачено',
},
avgSessionInteractions: {
title: 'Среднее количество взаимодействий за сеанс',
explanation: 'Количество непрерывных взаимодействий пользователя с LLM; для приложений на основе чатов.',
},
avgUserInteractions: {
title: 'Среднее количество взаимодействий пользователя',
explanation: 'Отражает ежедневную частоту использования пользователями. Эта метрика отражает активность пользователей.',
},
userSatisfactionRate: {
title: 'Уровень удовлетворенности пользователей',
explanation: 'Количество лайков на 1000 сообщений. Это указывает на долю ответов, которыми пользователи довольны.',
},
avgResponseTime: {
title: 'Среднее время ответа',
explanation: 'Время (мс) для обработки/ответа LLM; для текстовых приложений.',
},
tps: {
title: 'Скорость вывода токенов',
explanation: 'Измерьте производительность LLM. Подсчитайте скорость вывода токенов LLM от начала запроса до завершения вывода.',
},
},
}
export default translation

View File

@@ -0,0 +1,199 @@
const translation = {
createApp: 'СОЗДАТЬ ПРИЛОЖЕНИЕ',
types: {
all: 'Все',
chatbot: 'Чат-бот',
agent: 'Агент',
workflow: 'Рабочий процесс',
completion: 'Завершение',
advanced: 'Чатфлоу',
basic: 'Основной',
},
duplicate: 'Дублировать',
duplicateTitle: 'Дублировать приложение',
export: 'Экспортировать DSL',
exportFailed: 'Ошибка экспорта DSL.',
importDSL: 'Импортировать файл DSL',
createFromConfigFile: 'Создать из файла DSL',
importFromDSL: 'Импортировать из DSL',
importFromDSLFile: 'Из файла DSL',
importFromDSLUrl: 'Из URL',
importFromDSLUrlPlaceholder: 'Вставьте ссылку DSL сюда',
deleteAppConfirmTitle: 'Удалить это приложение?',
deleteAppConfirmContent:
'Удаление приложения необратимо. Пользователи больше не смогут получить доступ к вашему приложению, и все настройки подсказок и журналы будут безвозвратно удалены.',
appDeleted: 'Приложение удалено',
appDeleteFailed: 'Не удалось удалить приложение',
join: 'Присоединяйтесь к сообществу',
communityIntro:
'Общайтесь с членами команды, участниками и разработчиками на разных каналах.',
roadmap: 'Посмотреть наш roadmap',
newApp: {
startFromBlank: 'Создать с нуля',
startFromTemplate: 'Создать из шаблона',
captionAppType: 'Какой тип приложения вы хотите создать?',
chatbotDescription: 'Создайте приложение на основе чата. Это приложение использует формат вопросов и ответов, позволяя общаться непрерывно.',
completionDescription: 'Создайте приложение, которое генерирует высококачественный текст на основе подсказок, например, генерирует статьи, резюме, переводы и многое другое.',
completionWarning: 'Этот тип приложения больше не будет поддерживаться.',
agentDescription: 'Создайте интеллектуального агента, который может автономно выбирать инструменты для выполнения задач',
workflowDescription: 'Создайте приложение, которое генерирует высококачественный текст на основе рабочего процесса, организованного с высокой степенью настройки. Подходит для опытных пользователей.',
workflowWarning: 'В настоящее время находится в бета-версии',
chatbotType: 'Метод организации чат-бота',
basic: 'Базовый',
basicTip: 'Для начинающих, можно переключиться на Chatflow позже',
basicFor: 'ДЛЯ НАЧИНАЮЩИХ',
basicDescription: 'Базовый конструктор позволяет создать приложение чат-бота с помощью простых настроек, без возможности изменять встроенные подсказки. Подходит для начинающих.',
advanced: 'Chatflow',
advancedFor: 'Для продвинутых пользователей',
advancedDescription: 'Организация рабочего процесса организует чат-ботов в виде рабочих процессов, предлагая высокую степень настройки, включая возможность редактирования встроенных подсказок. Подходит для опытных пользователей.',
captionName: 'Значок и название приложения',
appNamePlaceholder: 'Дайте вашему приложению имя',
captionDescription: 'Описание',
appDescriptionPlaceholder: 'Введите описание приложения',
useTemplate: 'Использовать этот шаблон',
previewDemo: 'Предварительный просмотр',
chatApp: 'Ассистент',
chatAppIntro:
'Я хочу создать приложение на основе чата. Это приложение использует формат вопросов и ответов, позволяя общаться непрерывно.',
agentAssistant: 'Новый Ассистент Агента',
completeApp: 'Генератор текста',
completeAppIntro:
'Я хочу создать приложение, которое генерирует высококачественный текст на основе подсказок, например, генерирует статьи, резюме, переводы и многое другое.',
showTemplates: 'Я хочу выбрать из шаблона',
hideTemplates: 'Вернуться к выбору режима',
Create: 'Создать',
Cancel: 'Отмена',
nameNotEmpty: 'Имя не может быть пустым',
appTemplateNotSelected: 'Пожалуйста, выберите шаблон',
appTypeRequired: 'Пожалуйста, выберите тип приложения',
appCreated: 'Приложение создано',
appCreateFailed: 'Не удалось создать приложение',
caution: 'Осторожность',
appCreateDSLErrorPart2: 'Хотите продолжить?',
Confirm: 'Подтверждать',
appCreateDSLErrorTitle: 'Несовместимость версий',
appCreateDSLErrorPart3: 'Актуальная версия приложения DSL:',
appCreateDSLErrorPart4: 'Поддерживаемая системой версия DSL:',
appCreateDSLWarning: 'Внимание: разница в версиях DSL может повлиять на некоторые функции',
appCreateDSLErrorPart1: 'Обнаружена существенная разница в версиях DSL. Принудительный импорт может привести к сбою в работе приложения.',
learnMore: 'Подробнее',
forAdvanced: 'ДЛЯ ПРОДВИНУТЫХ ПОЛЬЗОВАТЕЛЕЙ',
foundResults: '{{Количество}} Результаты',
optional: 'Необязательный',
chatbotShortDescription: 'Чат-бот на основе LLM с простой настройкой',
advancedShortDescription: 'Рабочий процесс для сложных диалогов с несколькими ходами с памятью',
foundResult: '{{Количество}} Результат',
workflowShortDescription: 'Оркестровка для задач автоматизации за один оборот',
advancedUserDescription: 'Оркестрация рабочих процессов для многораундовых сложных диалоговых задач с возможностями памяти.',
noAppsFound: 'Приложения не найдены',
agentUserDescription: 'Интеллектуальный агент, способный к итеративным рассуждениям и автономному использованию инструментов для достижения целей задачи.',
forBeginners: 'ДЛЯ НАЧИНАЮЩИХ',
chatbotUserDescription: 'Быстро создайте чат-бота на основе LLM с простой настройкой. Вы можете переключиться на Chatflow позже.',
noTemplateFound: 'Шаблоны не найдены',
completionShortDescription: 'AI-помощник для задач генерации текста',
noIdeaTip: 'Нет идей? Ознакомьтесь с нашими шаблонами',
chooseAppType: 'Выберите тип приложения',
agentShortDescription: 'Интеллектуальный агент с рассуждениями и автономным использованием инструментов',
noTemplateFoundTip: 'Попробуйте искать по разным ключевым словам.',
completionUserDescription: 'Быстро создайте помощника с искусственным интеллектом для задач генерации текста с простой настройкой.',
workflowUserDescription: 'Оркестрация рабочих процессов для однораундовых задач, таких как автоматизация и пакетная обработка.',
},
editApp: 'Редактировать информацию',
editAppTitle: 'Редактировать информацию о приложении',
editDone: 'Информация о приложении обновлена',
editFailed: 'Не удалось обновить информацию о приложении',
iconPicker: {
ok: 'ОК',
cancel: 'Отмена',
emoji: 'Эмодзи',
image: 'Изображение',
},
switch: 'Переключиться на Workflow',
switchTipStart: 'Для вас будет создана новая копия Workflow. Новая копия ',
switchTip: 'не позволит',
switchTipEnd: ' переключиться обратно на базовую организацию.',
switchLabel: 'Копия приложения, которая будет создана',
removeOriginal: 'Удалить исходное приложение',
switchStart: 'Переключиться',
typeSelector: {
all: 'ВСЕ типы',
chatbot: 'Чат-бот',
agent: 'Агент',
workflow: 'Рабочий процесс',
completion: 'Завершение',
advanced: 'Чатфлоу',
},
tracing: {
title: 'Отслеживание производительности приложения',
description: 'Настройка стороннего поставщика LLMOps и отслеживание производительности приложения.',
config: 'Настройка',
view: 'Просмотр',
collapse: 'Свернуть',
expand: 'Развернуть',
tracing: 'Отслеживание',
disabled: 'Отключено',
disabledTip: 'Пожалуйста, сначала настройте провайдера LLM',
enabled: 'В работе',
tracingDescription: 'Запись полного контекста выполнения приложения, включая вызовы LLM, контекст, подсказки, HTTP-запросы и многое другое, на стороннюю платформу трассировки.',
configProviderTitle: {
configured: 'Настроено',
notConfigured: 'Настройте провайдера, чтобы включить трассировку',
moreProvider: 'Больше провайдеров',
},
langsmith: {
title: 'LangSmith',
description: 'Универсальная платформа для разработчиков для каждого этапа жизненного цикла приложения на базе LLM.',
},
langfuse: {
title: 'Langfuse',
description: 'Трассировка, оценка, управление подсказками и метрики для отладки и улучшения вашего приложения LLM.',
},
inUse: 'Используется',
configProvider: {
title: 'Настройка ',
placeholder: 'Введите ваш {{key}}',
project: 'Проект',
publicKey: 'Публичный ключ',
secretKey: 'Секретный ключ',
viewDocsLink: 'Посмотреть документацию {{key}}',
removeConfirmTitle: 'Удалить конфигурацию {{key}}?',
removeConfirmContent: 'Текущая конфигурация используется, ее удаление отключит функцию трассировки.',
},
opik: {
title: 'Опик',
description: 'Opik — это платформа с открытым исходным кодом для оценки, тестирования и мониторинга LLM-приложений.',
},
},
answerIcon: {
title: 'Использование значка WebApp для замены 🤖',
description: 'Следует ли использовать значок WebApp для замены 🤖 в общем приложении',
descriptionInExplore: 'Следует ли использовать значок WebApp для замены 🤖 в разделе "Обзор"',
},
mermaid: {
handDrawn: 'Рисованный',
classic: 'Классический',
},
openInExplore: 'Открыть в разделе «Обзор»',
newAppFromTemplate: {
sidebar: {
HR: 'ЧАС',
Workflow: 'Рабочий процесс',
Recommended: 'Рекомендованный',
Agent: 'Агент',
Assistant: 'Помощник',
Writing: 'Пишущий',
Programming: 'Программирование',
},
searchAllTemplate: 'Поиск по всем шаблонам...',
byCategories: 'ПО КАТЕГОРИЯМ',
},
showMyCreatedAppsOnly: 'Показать только созданные мной приложения',
appSelector: {
label: 'ПРИЛОЖЕНИЕ',
noParams: 'Параметры не нужны',
placeholder: 'Выберите приложение...',
params: 'ПАРАМЕТРЫ ПРИЛОЖЕНИЯ',
},
}
export default translation

View File

@@ -0,0 +1,118 @@
const translation = {
currentPlan: 'Текущий тарифный план',
upgradeBtn: {
plain: 'Обновить тарифный план',
encourage: 'Обновить сейчас',
encourageShort: 'Обновить',
},
viewBilling: 'Управление счетами и подписками',
buyPermissionDeniedTip: 'Пожалуйста, свяжитесь с администратором вашей организации, чтобы подписаться',
plansCommon: {
title: 'Выберите тарифный план, который подходит именно вам',
yearlyTip: 'Получите 2 месяца бесплатно, подписавшись на год!',
mostPopular: 'Самый популярный',
planRange: {
monthly: 'Ежемесячно',
yearly: 'Ежегодно',
},
month: 'месяц',
year: 'год',
save: 'Сэкономить ',
free: 'Бесплатно',
currentPlan: 'Текущий тарифный план',
contractSales: 'Связаться с отделом продаж',
contractOwner: 'Связаться с руководителем команды',
startForFree: 'Начать бесплатно',
getStartedWith: 'Начать с ',
contactSales: 'Связаться с отделом продаж',
talkToSales: 'Поговорить с отделом продаж',
modelProviders: 'Поставщики моделей',
teamMembers: 'Участники команды',
annotationQuota: 'Квота аннотаций',
buildApps: 'Создать приложения',
vectorSpace: 'Векторное пространство',
vectorSpaceBillingTooltip: 'Каждый 1 МБ может хранить около 1,2 миллиона символов векторизованных данных (оценка с использованием Embeddings OpenAI, варьируется в зависимости от модели).',
vectorSpaceTooltip: 'Векторное пространство - это система долговременной памяти, необходимая LLM для понимания ваших данных.',
documentsUploadQuota: 'Квота загрузки документов',
documentProcessingPriority: 'Приоритет обработки документов',
documentProcessingPriorityTip: 'Для более высокого приоритета обработки документов, пожалуйста, обновите свой тарифный план.',
documentProcessingPriorityUpgrade: 'Обрабатывайте больше данных с большей точностью и на более высоких скоростях.',
priority: {
'standard': 'Стандартный',
'priority': 'Приоритетный',
'top-priority': 'Высокий приоритет',
},
logsHistory: 'История журналов',
customTools: 'Пользовательские инструменты',
unavailable: 'Недоступно',
days: 'дней',
unlimited: 'Неограниченно',
support: 'Поддержка',
supportItems: {
communityForums: 'Форумы сообщества',
emailSupport: 'Поддержка по электронной почте',
priorityEmail: 'Приоритетная поддержка по электронной почте и в чате',
logoChange: 'Изменение логотипа',
SSOAuthentication: 'SSO аутентификация',
personalizedSupport: 'Персональная поддержка',
dedicatedAPISupport: 'Выделенная поддержка API',
customIntegration: 'Пользовательская интеграция и поддержка',
ragAPIRequest: 'Запросы RAG API',
bulkUpload: 'Массовая загрузка документов',
agentMode: 'Режим агента',
workflow: 'Рабочий процесс',
llmLoadingBalancing: 'Балансировка нагрузки LLM',
llmLoadingBalancingTooltip: 'Добавьте несколько ключей API к моделям, эффективно обходя ограничения скорости API.',
},
comingSoon: 'Скоро',
member: 'Участник',
memberAfter: 'Участник',
messageRequest: {
title: 'Кредиты на сообщения',
tooltip: 'Квоты вызова сообщений для различных тарифных планов, использующих модели OpenAI (кроме gpt4). Сообщения, превышающие лимит, будут использовать ваш ключ API OpenAI.',
},
annotatedResponse: {
title: 'Ограничения квоты аннотаций',
tooltip: 'Ручное редактирование и аннотирование ответов обеспечивает настраиваемые высококачественные возможности ответов на вопросы для приложений. (Применимо только в чат-приложениях)',
},
ragAPIRequestTooltip: 'Относится к количеству вызовов API, вызывающих только возможности обработки базы знаний Dify.',
receiptInfo: 'Только владелец команды и администратор команды могут подписываться и просматривать информацию о выставлении счетов',
},
plans: {
sandbox: {
name: 'Песочница',
description: '200 бесплатных пробных использований GPT',
includesTitle: 'Включает:',
},
professional: {
name: 'Профессиональный',
description: 'Для частных лиц и небольших команд, чтобы разблокировать больше возможностей по доступной цене.',
includesTitle: 'Все в бесплатном плане, плюс:',
},
team: {
name: 'Команда',
description: 'Сотрудничайте без ограничений и наслаждайтесь высочайшей производительностью.',
includesTitle: 'Все в профессиональном плане, плюс:',
},
enterprise: {
name: 'Корпоративный',
description: 'Получите полный набор возможностей и поддержку для крупномасштабных критически важных систем.',
includesTitle: 'Все в командном плане, плюс:',
},
},
vectorSpace: {
fullTip: 'Векторное пространство заполнено.',
fullSolution: 'Обновите свой тарифный план, чтобы получить больше места.',
},
apps: {
fullTipLine1: 'Обновите свой тарифный план, чтобы',
fullTipLine2: 'создавать больше приложений.',
},
annotatedResponse: {
fullTipLine1: 'Обновите свой тарифный план, чтобы',
fullTipLine2: 'аннотировать больше разговоров.',
quotaTitle: 'Квота ответов аннотаций',
},
}
export default translation

View File

@@ -0,0 +1,642 @@
const translation = {
api: {
success: 'Успешно',
actionSuccess: 'Действие выполнено успешно',
saved: 'Сохранено',
create: 'Создано',
remove: 'Удалено',
},
operation: {
create: 'Создать',
confirm: 'Подтвердить',
cancel: 'Отмена',
clear: 'Очистить',
save: 'Сохранить',
saveAndEnable: 'Сохранить и включить',
edit: 'Редактировать',
add: 'Добавить',
added: 'Добавлено',
refresh: 'Перезапустить',
reset: 'Сбросить',
search: 'Поиск',
change: 'Изменить',
remove: 'Удалить',
send: 'Отправить',
copy: 'Копировать',
lineBreak: 'Разрыв строки',
sure: 'Я уверен',
download: 'Скачать',
delete: 'Удалить',
settings: 'Настройки',
setup: 'Настроить',
getForFree: 'Получить бесплатно',
reload: 'Перезагрузить',
ok: 'ОК',
log: 'Журнал',
learnMore: 'Узнать больше',
params: 'Параметры',
duplicate: 'Дублировать',
rename: 'Переименовать',
audioSourceUnavailable: 'AudioSource недоступен',
zoomIn: 'Увеличить',
zoomOut: 'Уменьшение масштаба',
openInNewTab: 'Открыть в новой вкладке',
copyImage: 'Скопировать изображение',
close: 'Закрывать',
regenerate: 'Регенерировать',
view: 'Вид',
viewMore: 'ПОДРОБНЕЕ',
saveAndRegenerate: 'Сохранение и повторное создание дочерних блоков',
submit: 'Отправить',
skip: 'Корабль',
imageCopied: 'Скопированное изображение',
deleteApp: 'Удалить приложение',
copied: 'Скопированы',
in: 'в',
viewDetails: 'Подробнее',
},
errorMsg: {
fieldRequired: '{{field}} обязательно',
urlError: 'URL должен начинаться с http:// или https://',
},
placeholder: {
input: 'Пожалуйста, введите',
select: 'Пожалуйста, выберите',
},
voice: {
language: {
zhHans: 'Китайский',
zhHant: 'Традиционный китайский',
enUS: 'Английский',
deDE: 'Немецкий',
frFR: 'Французский',
esES: 'Испанский',
itIT: 'Итальянский',
thTH: 'Тайский',
idID: 'Индонезийский',
jaJP: 'Японский',
koKR: 'Корейский',
ptBR: 'Португальский',
ruRU: 'Русский',
ukUA: 'Украинский',
viVN: 'Вьетнамский',
plPL: 'Польский',
roRO: 'Румынский',
hiIN: 'Хинди',
trTR: 'Турецкий',
faIR: 'Персидский',
},
},
unit: {
char: 'символов',
},
actionMsg: {
noModification: 'На данный момент нет изменений.',
modifiedSuccessfully: 'Изменено успешно',
modifiedUnsuccessfully: 'Изменено неудачно',
copySuccessfully: 'Скопировано успешно',
paySucceeded: 'Оплата прошла успешно',
payCancelled: 'Оплата отменена',
generatedSuccessfully: 'Сгенерировано успешно',
generatedUnsuccessfully: 'Сгенерировано неудачно',
},
model: {
params: {
temperature: 'Temperature',
temperatureTip:
'Контролирует случайность: более низкое значение приводит к менее случайным завершениям. По мере приближения температуры к нулю модель станет детерминированной и повторяющейся.',
top_p: 'Top P',
top_pTip:
'Контролирует разнообразие с помощью ядерной выборки: 0,5 означает, что рассматривается половина всех вариантов, взвешенных по вероятности.',
presence_penalty: 'Presence penalty',
presence_penaltyTip:
'Насколько штрафовать новые токены в зависимости от того, появляются ли они в тексте до сих пор.\nУвеличивает вероятность того, что модель будет говорить о новых темах.',
frequency_penalty: 'Frequency penalty',
frequency_penaltyTip:
'Насколько штрафовать новые токены в зависимости от их существующей частоты в тексте до сих пор.\nУменьшает вероятность того, что модель будет повторять одну и ту же строку дословно.',
max_tokens: 'Максимальное количество токенов',
max_tokensTip:
'Используется для ограничения максимальной длины ответа в токенах. \nБольшие значения могут ограничивать пространство, оставленное для подсказок, журналов чата и знаний. \nРекомендуется установить его ниже двух третей\ngpt-4-1106-preview, gpt-4-vision-preview max token (input 128k output 4k)',
maxTokenSettingTip: 'Ваша настройка максимального количества токенов высока, что потенциально ограничивает пространство для подсказок, запросов и данных. Подумайте о том, чтобы установить его ниже 2/3.',
setToCurrentModelMaxTokenTip: 'Максимальное количество токенов обновлено до 80% максимального количества токенов текущей модели {{maxToken}}.',
stop_sequences: 'Стоп-последовательности',
stop_sequencesTip: 'До четырех последовательностей, где API прекратит генерировать дальнейшие токены. Возвращаемый текст не будет содержать стоп-последовательность.',
stop_sequencesPlaceholder: 'Введите последовательность и нажмите Tab',
},
tone: {
Creative: 'Творческий',
Balanced: 'Сбалансированный',
Precise: 'Точный',
Custom: 'Пользовательский',
},
addMoreModel: 'Перейдите в настройки, чтобы добавить больше моделей',
capabilities: 'Мультимодальные возможности',
settingsLink: 'Настройки поставщика моделей',
},
menus: {
status: 'бета',
explore: 'Исследовать',
apps: 'Студия',
plugins: 'Плагины',
pluginsTips: 'Интегрируйте сторонние плагины или создавайте совместимые с ChatGPT AI-плагины.',
datasets: 'Знания',
datasetsTips: 'СКОРО: Импортируйте свои собственные текстовые данные или записывайте данные в режиме реального времени через Webhook для улучшения контекста LLM.',
newApp: 'Новое приложение',
newDataset: 'Создать знания',
tools: 'Инструменты',
exploreMarketplace: 'Подробнее о Marketplace',
},
userProfile: {
settings: 'Настройки',
emailSupport: 'Поддержка по электронной почте',
workspace: 'Рабочее пространство',
createWorkspace: 'Создать рабочее пространство',
helpCenter: 'Помощь',
communityFeedback: 'Обратная связь',
roadmap: 'План развития',
community: 'Сообщество',
about: 'О нас',
logout: 'Выйти',
},
settings: {
accountGroup: 'АККАУНТ',
workplaceGroup: 'РАБОЧЕЕ ПРОСТРАНСТВО',
account: 'Моя учетная запись',
members: 'Участники',
billing: 'Оплата',
integrations: 'Интеграции',
language: 'Язык',
provider: 'Поставщик модели',
dataSource: 'Источник данных',
plugin: 'Плагины',
apiBasedExtension: 'API расширение',
generalGroup: 'ОБЩЕЕ',
},
account: {
avatar: 'Аватар',
name: 'Имя',
email: 'Электронная почта',
password: 'Пароль',
passwordTip: 'Вы можете установить постоянный пароль, если не хотите использовать временные коды входа',
setPassword: 'Установить пароль',
resetPassword: 'Сбросить пароль',
currentPassword: 'Текущий пароль',
newPassword: 'Новый пароль',
confirmPassword: 'Подтвердите пароль',
notEqual: 'Два пароля различаются.',
langGeniusAccount: 'Учетная запись Dify',
langGeniusAccountTip: 'Ваша учетная запись Dify и связанные с ней пользовательские данные.',
editName: 'Редактировать имя',
showAppLength: 'Показать {{length}} приложений',
delete: 'Удалить учетную запись',
deleteTip: 'Удаление вашей учетной записи приведет к безвозвратному удалению всех ваших данных, и их невозможно будет восстановить.',
deleteConfirmTip: 'Для подтверждения, пожалуйста, отправьте следующее с вашего зарегистрированного адреса электронной почты на ',
account: 'Счет',
studio: 'Студия Dify',
myAccount: 'Моя учетная запись',
deletePrivacyLink: 'Политика конфиденциальности.',
deletePlaceholder: 'Пожалуйста, введите свой адрес электронной почты',
sendVerificationButton: 'Отправить код подтверждения',
verificationLabel: 'Проверочный код',
verificationPlaceholder: 'Вставьте 6-значный код',
feedbackTitle: 'Обратная связь',
feedbackLabel: 'Расскажите нам, почему вы удалили свой аккаунт?',
feedbackPlaceholder: 'Необязательный',
permanentlyDeleteButton: 'Окончательно удалить учетную запись',
deleteLabel: 'Для подтверждения, пожалуйста, введите свой адрес электронной почты ниже',
deleteSuccessTip: 'Вашему аккаунту требуется время, чтобы завершить удаление. Мы свяжемся с вами по электронной почте, когда все будет готово.',
deletePrivacyLinkTip: 'Для получения дополнительной информации о том, как мы обрабатываем ваши данные, ознакомьтесь с нашим',
},
members: {
team: 'Команда',
invite: 'Добавить',
name: 'ИМЯ',
lastActive: 'ПОСЛЕДНЯЯ АКТИВНОСТЬ',
role: 'РОЛИ',
pending: 'Ожидание...',
owner: 'Владелец',
admin: 'Администратор',
adminTip: 'Может создавать приложения и управлять настройками команды',
normal: 'Обычный',
normalTip: 'Может только использовать приложения, не может создавать приложения',
builder: 'Разработчик',
builderTip: 'Может создавать и редактировать собственные приложения',
editor: 'Редактор',
editorTip: 'Может создавать и редактировать приложения',
datasetOperator: 'Администратор знаний',
datasetOperatorTip: 'Может управлять только базой знаний',
inviteTeamMember: 'Добавить участника команды',
inviteTeamMemberTip: 'Они могут получить доступ к данным вашей команды сразу после входа в систему.',
emailNotSetup: 'Почтовый сервер не настроен, поэтому приглашения по электронной почте не могут быть отправлены. Пожалуйста, уведомите пользователей о ссылке для приглашения, которая будет выдана после приглашения.',
email: 'Электронная почта',
emailInvalid: 'Неверный формат электронной почты',
emailPlaceholder: 'Пожалуйста, введите адреса электронной почты',
sendInvite: 'Отправить приглашение',
invitedAsRole: 'Приглашен как пользователь с ролью {{role}}',
invitationSent: 'Приглашение отправлено',
invitationSentTip: 'Приглашение отправлено, и они могут войти в Dify, чтобы получить доступ к данным вашей команды.',
invitationLink: 'Ссылка для приглашения',
failedInvitationEmails: 'Следующие пользователи не были успешно приглашены',
ok: 'ОК',
removeFromTeam: 'Удалить из команды',
removeFromTeamTip: 'Удалить доступ к команде',
setAdmin: 'Назначить администратором',
setMember: 'Назначить обычным участником',
setBuilder: 'Назначить разработчиком',
setEditor: 'Назначить редактором',
disInvite: 'Отменить приглашение',
deleteMember: 'Удалить участника',
you: '(Вы)',
},
integrations: {
connected: 'Подключено',
google: 'Google',
googleAccount: 'Войти с помощью учетной записи Google',
github: 'GitHub',
githubAccount: 'Войти с помощью учетной записи GitHub',
connect: 'Подключить',
},
language: {
displayLanguage: 'Язык отображения',
timezone: 'Часовой пояс',
},
provider: {
apiKey: 'Ключ API',
enterYourKey: 'Введите свой ключ API здесь',
invalidKey: 'Неверный ключ API OpenAI',
validatedError: 'Ошибка валидации: ',
validating: 'Проверка ключа...',
saveFailed: 'Ошибка сохранения ключа API',
apiKeyExceedBill: 'Этот API-ключ не имеет доступной квоты, пожалуйста, прочитайте',
addKey: 'Добавить ключ',
comingSoon: 'Скоро',
editKey: 'Редактировать',
invalidApiKey: 'Неверный ключ API',
azure: {
apiBase: 'Базовый API',
apiBasePlaceholder: 'Базовый URL-адрес API вашей конечной точки Azure OpenAI.',
apiKey: 'Ключ API',
apiKeyPlaceholder: 'Введите свой ключ API здесь',
helpTip: 'Узнать о службе Azure OpenAI',
},
openaiHosted: {
openaiHosted: 'Размещенный OpenAI',
onTrial: 'ПРОБНАЯ ВЕРСИЯ',
exhausted: 'КВОТА ИСЧЕРПАНА',
desc: 'Хостинговая служба OpenAI, предоставляемая Dify, позволяет вам использовать такие модели, как GPT-3.5. Прежде чем ваша пробная квота будет исчерпана, вам необходимо настроить других поставщиков моделей.',
callTimes: 'Количество вызовов',
usedUp: 'Пробная квота исчерпана. Добавьте собственного поставщика модели.',
useYourModel: 'В настоящее время используется собственный поставщик модели.',
close: 'Закрыть',
},
anthropicHosted: {
anthropicHosted: 'Anthropic Claude',
onTrial: 'ПРОБНАЯ ВЕРСИЯ',
exhausted: 'КВОТА ИСЧЕРПАНА',
desc: 'Мощная модель, которая отлично справляется с широким спектром задач, от сложных диалогов и создания творческого контента до подробных инструкций.',
callTimes: 'Количество вызовов',
usedUp: 'Пробная квота исчерпана. Добавьте собственного поставщика модели.',
useYourModel: 'В настоящее время используется собственный поставщик модели.',
close: 'Закрыть',
trialQuotaTip: 'Ваша квота на пробную версию Anthropic истечет 11.03.2025 и больше не будет доступна. Пожалуйста, используйте его вовремя.',
},
anthropic: {
using: 'Возможность встраивания использует',
enableTip: 'Чтобы включить модель Anthropic, вам необходимо сначала привязаться к OpenAI или Azure OpenAI Service.',
notEnabled: 'Не включено',
keyFrom: 'Получите свой ключ API от Anthropic',
},
encrypted: {
front: 'Ваш API-ключ будет зашифрован и сохранен с использованием',
back: ' технологии.',
},
},
modelProvider: {
notConfigured: 'Системная модель еще не полностью настроена, и некоторые функции могут быть недоступны.',
systemModelSettings: 'Настройки системной модели',
systemModelSettingsLink: 'Зачем нужно настраивать системную модель?',
selectModel: 'Выберите свою модель',
setupModelFirst: 'Пожалуйста, сначала настройте свою модель',
systemReasoningModel: {
key: 'Модель системного мышления',
tip: 'Установите модель вывода по умолчанию, которая будет использоваться для создания приложений, а также такие функции, как генерация имени диалога и предложение следующего вопроса, также будут использовать модель вывода по умолчанию.',
},
embeddingModel: {
key: 'Модель встраивания',
tip: 'Установите модель по умолчанию для обработки встраивания документов знаний, как поиск, так и импорт знаний используют эту модель встраивания для обработки векторизации. Переключение приведет к несоответствию векторного измерения между импортированными знаниями и вопросом, что приведет к сбою поиска. Чтобы избежать сбоя поиска, пожалуйста, не переключайте эту модель по своему усмотрению.',
required: 'Модель встраивания обязательна',
},
speechToTextModel: {
key: 'Модель преобразования речи в текст',
tip: 'Установите модель по умолчанию для ввода речи в текст в разговоре.',
},
ttsModel: {
key: 'Модель преобразования текста в речь',
tip: 'Установите модель по умолчанию для ввода текста в речь в разговоре.',
},
rerankModel: {
key: 'Модель повторного ранжирования',
tip: 'Модель повторного ранжирования изменит порядок списка документов-кандидатов на основе семантического соответствия запросу пользователя, улучшая результаты семантического ранжирования',
},
apiKey: 'API-КЛЮЧ',
quota: 'Квота',
searchModel: 'Поиск модели',
noModelFound: 'Модель не найдена для {{model}}',
models: 'Модели',
showMoreModelProvider: 'Показать больше поставщиков моделей',
selector: {
tip: 'Эта модель была удалена. Пожалуйста, добавьте модель или выберите другую модель.',
emptyTip: 'Нет доступных моделей',
emptySetting: 'Пожалуйста, перейдите в настройки для настройки',
rerankTip: 'Пожалуйста, настройте модель повторного ранжирования',
},
card: {
quota: 'КВОТА',
onTrial: 'Пробная версия',
paid: 'Платный',
quotaExhausted: 'Квота исчерпана',
callTimes: 'Количество вызовов',
tokens: 'Токены',
buyQuota: 'Купить квоту',
priorityUse: 'Приоритетное использование',
removeKey: 'Удалить API-ключ',
tip: 'Приоритет будет отдаваться платной квоте. Пробная квота будет использоваться после исчерпания платной квоты.',
},
item: {
deleteDesc: '{{modelName}} используются в качестве моделей системного мышления. Некоторые функции будут недоступны после удаления. Пожалуйста, подтвердите.',
freeQuota: 'БЕСПЛАТНАЯ КВОТА',
},
addApiKey: 'Добавьте свой API-ключ',
invalidApiKey: 'Неверный API-ключ',
encrypted: {
front: 'Ваш API-ключ будет зашифрован и сохранен с использованием',
back: ' технологии.',
},
freeQuota: {
howToEarn: 'Как заработать',
},
addMoreModelProvider: 'ДОБАВИТЬ БОЛЬШЕ ПОСТАВЩИКОВ МОДЕЛЕЙ',
addModel: 'Добавить модель',
modelsNum: '{{num}} Моделей',
showModels: 'Показать модели',
showModelsNum: 'Показать {{num}} моделей',
collapse: 'Свернуть',
config: 'Настройка',
modelAndParameters: 'Модель и параметры',
model: 'Модель',
featureSupported: '{{feature}} поддерживается',
callTimes: 'Количество вызовов',
credits: 'Кредиты на сообщения',
buyQuota: 'Купить квоту',
getFreeTokens: 'Получить бесплатные токены',
priorityUsing: 'Приоритетное использование',
deprecated: 'Устаревший',
confirmDelete: 'Подтвердить удаление?',
quotaTip: 'Оставшиеся доступные бесплатные токены',
loadPresets: 'Загрузить предустановки',
parameters: 'ПАРАМЕТРЫ',
loadBalancing: 'Балансировка нагрузки',
loadBalancingDescription: 'Снизьте нагрузку с помощью нескольких наборов учетных данных.',
loadBalancingHeadline: 'Балансировка нагрузки',
configLoadBalancing: 'Настроить балансировку нагрузки',
modelHasBeenDeprecated: 'Эта модель устарела',
providerManaged: 'Управляется поставщиком',
providerManagedDescription: 'Используйте один набор учетных данных, предоставленный поставщиком модели.',
defaultConfig: 'Настройка по умолчанию',
apiKeyStatusNormal: 'Статус APIKey в норме',
apiKeyRateLimit: 'Достигнут предел скорости, доступен через {{seconds}}s',
addConfig: 'Добавить конфигурацию',
editConfig: 'Редактировать конфигурацию',
loadBalancingLeastKeyWarning: 'Для включения балансировки нагрузки необходимо включить не менее 2 ключей.',
loadBalancingInfo: 'По умолчанию балансировка нагрузки использует стратегию Round-robin. Если срабатывает ограничение скорости, будет применен 1-минутный период охлаждения.',
upgradeForLoadBalancing: 'Обновите свой тарифный план, чтобы включить балансировку нагрузки.',
emptyProviderTitle: 'Поставщик модели не настроен',
toBeConfigured: 'Подлежит настройке',
configureTip: 'Настройте api-ключ или добавьте модель для использования',
emptyProviderTip: 'Сначала установите поставщик модели.',
discoverMore: 'Узнайте больше в',
installProvider: 'Установка поставщиков моделей',
},
dataSource: {
add: 'Добавить источник данных',
connect: 'Подключить',
configure: 'Настроить',
notion: {
title: 'Notion',
description: 'Использование Notion в качестве источника данных для знаний.',
connectedWorkspace: 'Подключенное рабочее пространство',
addWorkspace: 'Добавить рабочее пространство',
connected: 'Подключено',
disconnected: 'Отключено',
changeAuthorizedPages: 'Изменить авторизованные страницы',
pagesAuthorized: 'Авторизованные страницы',
sync: 'Синхронизировать',
remove: 'Удалить',
selector: {
pageSelected: 'Выбранные страницы',
searchPages: 'Поиск страниц...',
noSearchResult: 'Нет результатов поиска',
addPages: 'Добавить страницы',
preview: 'ПРЕДПРОСМОТР',
},
},
website: {
title: 'Веб-сайт',
description: 'Импортировать контент с веб-сайтов с помощью веб-краулера.',
with: 'С',
configuredCrawlers: 'Настроенные краулеры',
active: 'Активный',
inactive: 'Неактивный',
},
},
plugin: {
serpapi: {
apiKey: 'Ключ API',
apiKeyPlaceholder: 'Введите свой ключ API',
keyFrom: 'Получите свой ключ SerpAPI на странице учетной записи SerpAPI',
},
},
apiBasedExtension: {
title: 'API-расширения обеспечивают централизованное управление API, упрощая настройку для удобного использования в приложениях Dify.',
link: 'Узнайте, как разработать собственное API-расширение.',
linkUrl: 'https://docs.dify.ai/features/extension/api_based_extension',
add: 'Добавить API Extension',
selector: {
title: 'API Extension',
placeholder: 'Пожалуйста, выберите API-расширение',
manage: 'Управление API-расширением',
},
modal: {
title: 'Добавить API-расширение',
editTitle: 'Редактировать API-расширение',
name: {
title: 'Имя',
placeholder: 'Пожалуйста, введите имя',
},
apiEndpoint: {
title: 'API Endpoint',
placeholder: 'Пожалуйста, введите конечную точку API',
},
apiKey: {
title: 'API-ключ',
placeholder: 'Пожалуйста, введите API-ключ',
lengthError: 'Длина API-ключа не может быть меньше 5 символов',
},
},
type: 'Тип',
},
about: {
changeLog: 'Журнал изменений',
updateNow: 'Обновить сейчас',
nowAvailable: 'Dify {{version}} теперь доступен.',
latestAvailable: 'Dify {{version}} - последняя доступная версия.',
},
appMenus: {
overview: 'Мониторинг',
promptEng: 'Оркестрация',
apiAccess: 'Доступ к API',
logAndAnn: 'Журналы и аннотации',
logs: 'Журналы',
},
environment: {
testing: 'ТЕСТИРОВАНИЕ',
development: 'РАЗРАБОТКА',
},
appModes: {
completionApp: 'Генератор текста',
chatApp: 'Чат-приложение',
},
datasetMenus: {
documents: 'Документы',
hitTesting: 'Тестирование поиска',
settings: 'Настройки',
emptyTip: 'Знания не были связаны, пожалуйста, перейдите в приложение или плагин, чтобы завершить связывание.',
viewDoc: 'Просмотреть документацию',
relatedApp: 'связанные приложения',
noRelatedApp: 'Нет связанных приложений',
},
voiceInput: {
speaking: 'Говорите сейчас...',
converting: 'Преобразование в текст...',
notAllow: 'микрофон не авторизован',
},
modelName: {
'gpt-3.5-turbo': 'GPT-3.5-Turbo',
'gpt-3.5-turbo-16k': 'GPT-3.5-Turbo-16K',
'gpt-4': 'GPT-4',
'gpt-4-32k': 'GPT-4-32K',
'text-davinci-003': 'Text-Davinci-003',
'text-embedding-ada-002': 'Text-Embedding-Ada-002',
'whisper-1': 'Whisper-1',
'claude-instant-1': 'Claude-Instant',
'claude-2': 'Claude-2',
},
chat: {
renameConversation: 'Переименовать разговор',
conversationName: 'Название разговора',
conversationNamePlaceholder: 'Пожалуйста, введите название разговора',
conversationNameCanNotEmpty: 'Название разговора обязательно',
citation: {
title: 'ЦИТАТЫ',
linkToDataset: 'Ссылка на знания',
characters: 'Символы:',
hitCount: 'Количество совпадений:',
vectorHash: 'Векторный хэш:',
hitScore: 'Оценка совпадения:',
},
inputPlaceholder: 'Поговорить с ботом',
thinking: 'Мыслящий...',
thought: 'Мысль',
},
promptEditor: {
placeholder: 'Напишите здесь свое ключевое слово подсказки, введите \'{\', чтобы вставить переменную, введите \'/\', чтобы вставить блок содержимого подсказки',
context: {
item: {
title: 'Контекст',
desc: 'Вставить шаблон контекста',
},
modal: {
title: '{{num}} знаний в контексте',
add: 'Добавить контекст ',
footer: 'Вы можете управлять контекстами в разделе «Контекст» ниже.',
},
},
history: {
item: {
title: 'История разговоров',
desc: 'Вставить шаблон исторического сообщения',
},
modal: {
title: 'ПРИМЕР',
user: 'Привет',
assistant: 'Привет! Как я могу вам помочь сегодня?',
edit: 'Редактировать имена ролей разговора',
},
},
variable: {
item: {
title: 'Переменные и внешние инструменты',
desc: 'Вставить переменные и внешние инструменты',
},
outputToolDisabledItem: {
title: 'Переменные',
desc: 'Вставить переменные',
},
modal: {
add: 'Новая переменная',
addTool: 'Новый инструмент',
},
},
query: {
item: {
title: 'Запрос',
desc: 'Вставить шаблон запроса пользователя',
},
},
existed: 'Уже существует в подсказке',
},
imageUploader: {
uploadFromComputer: 'Загрузить с компьютера',
uploadFromComputerReadError: 'Ошибка чтения изображения, повторите попытку.',
uploadFromComputerUploadError: 'Ошибка загрузки изображения, загрузите еще раз.',
uploadFromComputerLimit: 'Загружаемые изображения не могут превышать {{size}} МБ',
pasteImageLink: 'Вставить ссылку на изображение',
pasteImageLinkInputPlaceholder: 'Вставьте ссылку на изображение здесь',
pasteImageLinkInvalid: 'Неверная ссылка на изображение',
imageUpload: 'Загрузка изображения',
},
tag: {
placeholder: 'Все теги',
addNew: 'Добавить новый тег',
noTag: 'Нет тегов',
noTagYet: 'Еще нет тегов',
addTag: 'Добавить теги',
editTag: 'Редактировать теги',
manageTags: 'Управление тегами',
selectorPlaceholder: 'Введите для поиска или создания',
create: 'Создать',
delete: 'Удалить тег',
deleteTip: 'Тег используется, удалить его?',
created: 'Тег успешно создан',
failed: 'Ошибка создания тега',
},
fileUploader: {
pasteFileLinkInputPlaceholder: 'Введите URL...',
pasteFileLink: 'Вставить ссылку на файл',
uploadFromComputer: 'Локальная загрузка',
fileExtensionNotSupport: 'Расширение файла не поддерживается',
uploadFromComputerReadError: 'Чтение файла не удалось, пожалуйста, повторите попытку.',
pasteFileLinkInvalid: 'Неверная ссылка на файл',
uploadFromComputerLimit: 'Файл загрузки не может превышать {{size}}',
uploadFromComputerUploadError: 'Загрузка файла не удалась, пожалуйста, загрузите еще раз.',
},
license: {
expiring: 'Срок действия истекает за один день',
expiring_plural: 'Срок действия истекает через {{count}} дней',
},
pagination: {
perPage: 'Элементов на странице',
},
}
export default translation

View File

@@ -0,0 +1,30 @@
const translation = {
custom: 'Настройка',
upgradeTip: {
prefix: 'Обновите свой тарифный план, чтобы',
suffix: 'настроить свой бренд.',
},
webapp: {
title: 'Настроить бренд веб-приложения',
removeBrand: 'Удалить Powered by Dify',
changeLogo: 'Изменить изображение бренда Powered by',
changeLogoTip: 'Формат SVG или PNG с минимальным размером 40x40px',
},
app: {
title: 'Настроить бренд заголовка приложения',
changeLogoTip: 'Формат SVG или PNG с минимальным размером 80x80px',
},
upload: 'Загрузить',
uploading: 'Загрузка',
uploadedFail: 'Ошибка загрузки изображения, пожалуйста изображение, загрузите еще раз.',
change: 'Изменить',
apply: 'Применить',
restore: 'Восстановить значения по умолчанию',
customize: {
contactUs: ' свяжитесь с нами ',
prefix: 'Чтобы настроить логотип бренда в приложении, пожалуйста,',
suffix: 'чтобы перейти на корпоративную версию.',
},
}
export default translation

View File

@@ -0,0 +1,205 @@
const translation = {
steps: {
header: {
creation: 'Создать базу знаний',
update: 'Добавить данные',
fallbackRoute: 'Знание',
},
one: 'Выберите источник данных',
two: 'Предварительная обработка и очистка текста',
three: 'Выполнить и завершить',
},
error: {
unavailable: 'Эта база знаний недоступна',
},
firecrawl: {
configFirecrawl: 'Настроить 🔥Firecrawl',
apiKeyPlaceholder: 'Ключ API с firecrawl.dev',
getApiKeyLinkText: 'Получите свой ключ API с firecrawl.dev',
},
stepOne: {
filePreview: 'Предварительный просмотр файла',
pagePreview: 'Предварительный просмотр страницы',
dataSourceType: {
file: 'Импортировать из файла',
notion: 'Синхронизировать из Notion',
web: 'Синхронизировать с веб-сайта',
},
uploader: {
title: 'Загрузить файл',
button: 'Перетащите файл или',
browse: 'Обзор',
tip: 'Поддерживаются {{supportTypes}}. Максимум {{size}} МБ каждый.',
validation: {
typeError: 'Тип файла не поддерживается',
size: 'Файл слишком большой. Максимум {{size}} МБ',
count: 'Несколько файлов не поддерживаются',
filesNumber: 'Вы достигли лимита пакетной загрузки {{filesNumber}} файлов.',
},
cancel: 'Отмена',
change: 'Изменить',
failed: 'Ошибка загрузки',
},
notionSyncTitle: 'Notion не подключен',
notionSyncTip: 'Чтобы синхронизировать данные из Notion, сначала необходимо установить соединение с Notion.',
connect: 'Перейти к подключению',
button: 'Далее',
emptyDatasetCreation: 'Я хочу создать пустую базу знаний',
modal: {
title: 'Создать пустую базу знаний',
tip: 'Пустая база знаний не будет содержать документов, и вы можете загружать документы в любое время.',
input: 'Название базы знаний',
placeholder: 'Пожалуйста, введите',
nameNotEmpty: 'Название не может быть пустым',
nameLengthInvalid: 'Название должно быть от 1 до 40 символов',
cancelButton: 'Отмена',
confirmButton: 'Создать',
failed: 'Ошибка создания',
},
website: {
fireCrawlNotConfigured: 'Firecrawl не настроен',
fireCrawlNotConfiguredDescription: 'Настройте Firecrawl с API-ключом.',
configure: 'Настроить',
run: 'Запустить',
firecrawlTitle: 'Извлечь веб-контент с помощью 🔥Firecrawl',
firecrawlDoc: 'Документация Firecrawl',
firecrawlDocLink: 'https://docs.dify.ai/guides/knowledge-base/sync-from-website',
options: 'Опции',
crawlSubPage: 'Сканировать подстраницы',
limit: 'Лимит',
maxDepth: 'Максимальная глубина',
excludePaths: 'Исключить пути',
includeOnlyPaths: 'Включить только пути',
extractOnlyMainContent: 'Извлекать только основной контент (без заголовков, навигации, футеров и т. д.)',
exceptionErrorTitle: 'Произошло исключение при запуске задания Firecrawl:',
unknownError: 'Неизвестная ошибка',
totalPageScraped: 'Всего просканировано страниц:',
selectAll: 'Выбрать все',
resetAll: 'Сбросить все',
scrapTimeInfo: 'Всего просканировано {{total}} страниц за {{time}} секунд',
preview: 'Предварительный просмотр',
maxDepthTooltip: 'Максимальная глубина сканирования относительно введенного URL. Глубина 0 сканирует только страницу введенного URL, глубина 1 сканирует URL и все, что находится после введенного URL + один /, и так далее.',
jinaReaderNotConfiguredDescription: 'Настройте Jina Reader, введя свой бесплатный ключ API для доступа.',
jinaReaderDocLink: 'https://jina.ai/reader',
useSitemap: 'Использовать карту сайта',
chooseProvider: 'Выберите провайдера',
jinaReaderNotConfigured: 'Jina Reader не настроен',
jinaReaderDoc: 'Узнайте больше о Jina Reader',
jinaReaderTitle: 'Конвертируйте весь сайт в Markdown',
useSitemapTooltip: 'Следуйте карте сайта, чтобы просканировать сайт. Если нет, Jina Reader будет сканировать итеративно в зависимости от релевантности страницы, выдавая меньшее количество страниц, но более высокого качества.',
},
cancel: 'Отмена',
},
stepTwo: {
segmentation: 'Настройки фрагментации',
auto: 'Автоматически',
autoDescription: 'Автоматически устанавливать правила фрагментации и предварительной обработки. Пользователям, не знакомым с системой, рекомендуется выбрать этот вариант.',
custom: 'Пользовательский',
customDescription: 'Настроить правила фрагментации, длину фрагментов, правила предварительной обработки и т. д.',
separator: 'Идентификатор сегмента',
separatorPlaceholder: 'Например, новая строка (\\\\n) или специальный разделитель (например, "***")',
maxLength: 'Максимальная длина фрагмента',
overlap: 'Перекрытие фрагментов',
overlapTip: 'Установка перекрытия фрагментов может сохранить семантическую связь между ними, улучшая эффект поиска. Рекомендуется установить 10%-25% от максимального размера фрагмента.',
overlapCheck: 'перекрытие фрагментов не должно превышать максимальную длину фрагмента',
rules: 'Правила предварительной обработки текста',
removeExtraSpaces: 'Заменить последовательные пробелы, новые строки и табуляции',
removeUrlEmails: 'Удалить все URL-адреса и адреса электронной почты',
removeStopwords: 'Удалить стоп-слова, такие как "a", "an", "the"',
preview: 'Подтвердить и просмотреть',
reset: 'Сбросить',
indexMode: 'Режим индексации',
qualified: 'Высокое качество',
recommend: 'Рекомендуется',
qualifiedTip: 'Вызов интерфейса встраивания системы по умолчанию для обработки, чтобы обеспечить более высокую точность при запросах пользователей.',
warning: 'Пожалуйста, сначала настройте ключ API поставщика модели.',
click: 'Перейти к настройкам',
economical: 'Экономичный',
economicalTip: 'Используйте автономные векторные движки, индексы ключевых слов и т. д., чтобы снизить точность, не тратя токены',
QATitle: 'Сегментация в формате вопрос-ответ',
QATip: 'Включение этой опции приведет к потреблению большего количества токенов',
QALanguage: 'Сегментировать с помощью',
estimateCost: 'Оценка',
estimateSegment: 'Оценочное количество фрагментов',
segmentCount: 'фрагментов',
calculating: 'Вычисление...',
fileSource: 'Предварительная обработка документов',
notionSource: 'Предварительная обработка страниц',
websiteSource: 'Предварительная обработка веб-сайта',
other: 'и другие ',
fileUnit: ' файлов',
notionUnit: ' страниц',
webpageUnit: ' страниц',
previousStep: 'Предыдущий шаг',
nextStep: 'Сохранить и обработать',
save: 'Сохранить и обработать',
cancel: 'Отмена',
sideTipTitle: 'Зачем нужна фрагментация и предварительная обработка?',
sideTipP1: 'При обработке текстовых данных фрагментация и очистка являются двумя важными этапами предварительной обработки.',
sideTipP2: 'Сегментация разбивает длинный текст на абзацы, чтобы модели могли лучше его понимать. Это улучшает качество и релевантность результатов модели.',
sideTipP3: 'Очистка удаляет ненужные символы и форматы, делая знания более чистыми и легкими для анализа.',
sideTipP4: 'Правильная фрагментация и очистка улучшают производительность модели, обеспечивая более точные и ценные результаты.',
previewTitle: 'Предварительный просмотр',
previewTitleButton: 'Предварительный просмотр',
previewButton: 'Переключение в формат вопрос-ответ',
previewSwitchTipStart: 'Текущий предварительный просмотр фрагмента находится в текстовом формате, переключение на предварительный просмотр в формате вопрос-ответ',
previewSwitchTipEnd: ' потребляет дополнительные токены',
characters: 'символов',
indexSettingTip: 'Чтобы изменить метод индексации, пожалуйста, перейдите в ',
retrievalSettingTip: 'Чтобы изменить метод индексации, пожалуйста, перейдите в ',
datasetSettingLink: 'настройки базы знаний.',
separatorTip: 'Разделитель — это символ, используемый для разделения текста. \\n\\n и \\n — это часто используемые разделители для разделения абзацев и строк. В сочетании с запятыми (\\n\\n,\\n) абзацы будут сегментированы по строкам, если максимальная длина блока превышает их. Вы также можете использовать специальные разделители, определенные вами (например, ***).',
maxLengthCheck: 'Максимальная длина блока должна быть меньше {{limit}}',
switch: 'Выключатель',
parentChunkForContext: 'Родительский блок для контекста',
previewChunkTip: 'Нажмите кнопку «Предварительный просмотр фрагмента» слева, чтобы загрузить предварительный просмотр',
notAvailableForParentChild: 'Недоступно для индекса типа "родитель-потомок"',
parentChildChunkDelimiterTip: 'Разделитель — это символ, используемый для разделения текста. \\n рекомендуется для разбиения родительских блоков на небольшие дочерние блоки. Вы также можете использовать специальные разделители, определенные самостоятельно.',
previewChunk: 'Предварительный просмотр фрагмента',
previewChunkCount: '{{Количество}} Предполагаемые куски',
generalTip: 'Общий режим фрагментации текста, извлекаемые и вызываемые фрагменты одинаковы.',
general: 'Общее',
useQALanguage: 'Фрагмент с использованием формата Q&A в',
notAvailableForQA: 'Недоступно для индекса Q&A',
paragraph: 'Параграф',
parentChild: 'Родитель-дочерний',
fullDoc: 'Полный документальный фильм',
qaSwitchHighQualityTipTitle: 'Формат вопросов и ответов требует высококачественного метода индексации',
parentChildDelimiterTip: 'Разделитель — это символ, используемый для разделения текста. \\n\\n рекомендуется для разделения исходного документа на большие родительские части. Вы также можете использовать специальные разделители, определенные самостоятельно.',
parentChildTip: 'При использовании режима «родитель-потомок» дочерний блок используется для извлечения, а родительский блок — для вызова в качестве контекста.',
paragraphTip: 'В этом режиме текст разбивается на абзацы на основе разделителей и максимальной длины блока, используя разделенный текст в качестве родительского блока для извлечения.',
highQualityTip: 'После завершения встраивания в режиме «Высокое качество» возврат к экономичному режиму невозможен.',
childChunkForRetrieval: 'Детский фрагмент для извлечения',
qaSwitchHighQualityTipContent: 'В настоящее время только высококачественный метод индекса поддерживает фрагментацию формата Q&A. Хотели бы вы перейти в режим высокого качества?',
fullDocTip: 'Весь документ используется в качестве родительского блока и извлекается напрямую. Обратите внимание, что по причинам производительности текст, превышающий 10000 токенов, будет автоматически обрезан.',
},
stepThree: {
creationTitle: '🎉 База знаний создана',
creationContent: 'Мы автоматически назвали базу знаний, вы можете изменить ее в любое время',
label: 'Название базы знаний',
additionTitle: '🎉 Документ загружен',
additionP1: 'Документ был загружен в базу знаний',
additionP2: ', вы можете найти его в списке документов базы знаний.',
stop: 'Остановить обработку',
resume: 'Возобновить обработку',
navTo: 'Перейти к документу',
sideTipTitle: 'Что дальше',
sideTipContent: 'После завершения индексации документа база знаний может быть интегрирована в приложение в качестве контекста, вы можете найти настройку контекста на странице prompt orchestration. Вы также можете создать-workflow приложение как отдельный как независимый плагин.',
modelTitle: 'Вы уверены, что хотите остановить встраивание?',
modelContent: 'Если вам нужно будет возобновить обработку позже, вы продолжите с того места, где остановились.',
modelButtonConfirm: 'Подтвердить',
modelButtonCancel: 'Отмена',
},
jinaReader: {
getApiKeyLinkText: 'Получите бесплатный ключ API в jina.ai',
configJinaReader: 'Настройка Jina Reader',
apiKeyPlaceholder: 'Ключ API от jina.ai',
},
otherDataSource: {
learnMore: 'Подробнее',
title: 'Подключаться к другим источникам данных?',
description: 'В настоящее время база знаний Dify имеет лишь ограниченные источники данных. Добавление источника данных в базу знаний Dify — это отличный способ повысить гибкость и возможности платформы для всех пользователей. Наше руководство по вкладу поможет вам легко начать работу. Пожалуйста, нажмите на ссылку ниже, чтобы узнать больше.',
},
}
export default translation

View File

@@ -0,0 +1,395 @@
const translation = {
list: {
title: 'Документы',
desc: 'Здесь отображаются все файлы базы знаний, и вся база знаний может быть связана с цитатами Dify или проиндексирована с помощью чата.',
addFile: 'Добавить файл',
addPages: 'Добавить страницы',
addUrl: 'Добавить URL',
table: {
header: {
fileName: 'НАЗВАНИЕ ФАЙЛА',
words: 'СЛОВА',
hitCount: 'КОЛИЧЕСТВО ОБРАЩЕНИЙ',
uploadTime: 'ВРЕМЯ ЗАГРУЗКИ',
status: 'СТАТУС',
action: 'ДЕЙСТВИЕ',
chunkingMode: 'РЕЖИМ ДРОБЛЕНИЯ',
},
rename: 'Переименовать',
name: 'Название',
},
action: {
uploadFile: 'Загрузить новый файл',
settings: 'Настройки сегментации',
addButton: 'Добавить фрагмент',
add: 'Добавить фрагмент',
batchAdd: 'Пакетное добавление',
archive: 'Архивировать',
unarchive: 'Разархивировать',
delete: 'Удалить',
enableWarning: 'Архивный файл не может быть включен',
sync: 'Синхронизировать',
},
index: {
enable: 'Включить',
disable: 'Отключить',
all: 'Все',
enableTip: 'Файл может быть проиндексирован',
disableTip: 'Файл не может быть проиндексирован',
},
status: {
queuing: 'В очереди',
indexing: 'Индексация',
paused: 'Приостановлено',
error: 'Ошибка',
available: 'Доступно',
enabled: 'Включено',
disabled: 'Отключено',
archived: 'Архивировано',
},
empty: {
title: 'Пока нет документов',
upload: {
tip: 'Вы можете загружать файлы, синхронизировать с веб-сайта или из веб-приложений, таких как Notion, GitHub и т. д.',
},
sync: {
tip: 'Dify будет периодически загружать файлы из вашего Notion и завершать обработку.',
},
},
delete: {
title: 'Вы уверены, что хотите удалить?',
content: 'Если вам нужно будет возобновить обработку позже, вы продолжите с того места, где остановились',
},
batchModal: {
title: 'Пакетное добавление фрагментов',
csvUploadTitle: 'Перетащите сюда свой CSV-файл или ',
browse: 'обзор',
tip: 'CSV-файл должен соответствовать следующей структуре:',
question: 'вопрос',
answer: 'ответ',
contentTitle: 'содержимое фрагмента',
content: 'содержимое',
template: 'Скачать шаблон здесь',
cancel: 'Отмена',
run: 'Запустить пакет',
runError: 'Ошибка запуска пакета',
processing: 'В процессе пакетной обработки',
completed: 'Импорт завершен',
error: 'Ошибка импорта',
ok: 'ОК',
},
learnMore: 'Подробнее',
},
metadata: {
title: 'Метаданные',
desc: 'Маркировка метаданных для документов позволяет ИИ своевременно получать к ним доступ и раскрывать источник ссылок для пользователей.',
dateTimeFormat: 'D MMMM YYYY, HH:mm',
docTypeSelectTitle: 'Пожалуйста, выберите тип документа',
docTypeChangeTitle: 'Изменить тип документа',
docTypeSelectWarning:
'Если тип документа будет изменен, заполненные сейчас метаданные больше не будут сохранены',
firstMetaAction: 'Поехали',
placeholder: {
add: 'Добавить ',
select: 'Выбрать ',
},
source: {
upload_file: 'Загрузить файл',
notion: 'Синхронизировать из Notion',
github: 'Синхронизировать из Github',
},
type: {
book: 'Книга',
webPage: 'Веб-страница',
paper: 'Статья',
socialMediaPost: 'Пост в социальных сетях',
personalDocument: 'Личный документ',
businessDocument: 'Деловой документ',
IMChat: 'Чат в мессенджере',
wikipediaEntry: 'Статья в Википедии',
notion: 'Синхронизировать из Notion',
github: 'Синхронизировать из Github',
technicalParameters: 'Технические параметры',
},
field: {
processRule: {
processDoc: 'Обработка документа',
segmentRule: 'Правило фрагментации',
segmentLength: 'Длина фрагментов',
processClean: 'Очистка текста',
},
book: {
title: 'Название',
language: 'Язык',
author: 'Автор',
publisher: 'Издатель',
publicationDate: 'Дата публикации',
ISBN: 'ISBN',
category: 'Категория',
},
webPage: {
title: 'Название',
url: 'URL',
language: 'Язык',
authorPublisher: 'Автор/Издатель',
publishDate: 'Дата публикации',
topicKeywords: 'Темы/Ключевые слова',
description: 'Описание',
},
paper: {
title: 'Название',
language: 'Язык',
author: 'Автор',
publishDate: 'Дата публикации',
journalConferenceName: 'Название журнала/конференции',
volumeIssuePage: 'Том/Выпуск/Страница',
DOI: 'DOI',
topicsKeywords: 'Темы/Ключевые слова',
abstract: 'Аннотация',
},
socialMediaPost: {
platform: 'Платформа',
authorUsername: 'Автор/Имя пользователя',
publishDate: 'Дата публикации',
postURL: 'URL поста',
topicsTags: 'Темы/Теги',
},
personalDocument: {
title: 'Название',
author: 'Автор',
creationDate: 'Дата создания',
lastModifiedDate: 'Дата последнего изменения',
documentType: 'Тип документа',
tagsCategory: 'Теги/Категория',
},
businessDocument: {
title: 'Название',
author: 'Автор',
creationDate: 'Дата создания',
lastModifiedDate: 'Дата последнего изменения',
documentType: 'Тип документа',
departmentTeam: 'Отдел/Команда',
},
IMChat: {
chatPlatform: 'Платформа чата',
chatPartiesGroupName: 'Участники чата/Название группы',
participants: 'Участники',
startDate: 'Дата начала',
endDate: 'Дата окончания',
topicsKeywords: 'Темы/Ключевые слова',
fileType: 'Тип файла',
},
wikipediaEntry: {
title: 'Название',
language: 'Язык',
webpageURL: 'URL веб-страницы',
editorContributor: 'Редактор/Автор',
lastEditDate: 'Дата последнего редактирования',
summaryIntroduction: 'Краткое содержание/Введение',
},
notion: {
title: 'Название',
language: 'Язык',
author: 'Автор',
createdTime: 'Время создания',
lastModifiedTime: 'Время последнего изменения',
url: 'URL',
tag: 'Тег',
description: 'Описание',
},
github: {
repoName: 'Название репозитория',
repoDesc: 'Описание репозитория',
repoOwner: 'Владелец репозитория',
fileName: 'Название файла',
filePath: 'Путь к файлу',
programmingLang: 'Язык программирования',
url: 'URL',
license: 'Лицензия',
lastCommitTime: 'Время последнего коммита',
lastCommitAuthor: 'Автор последнего коммита',
},
originInfo: {
originalFilename: 'Исходное имя файла',
originalFileSize: 'Исходный размер файла',
uploadDate: 'Дата загрузки',
lastUpdateDate: 'Дата последнего обновления',
source: 'Источник',
},
technicalParameters: {
segmentSpecification: 'Спецификация фрагментов',
segmentLength: 'Длина фрагментов',
avgParagraphLength: 'Средняя длина абзаца',
paragraphs: 'Абзацы',
hitCount: 'Количество обращений',
embeddingTime: 'Время встраивания',
embeddedSpend: 'Потрачено на встраивание',
},
},
languageMap: {
zh: 'Китайский',
en: 'Английский',
es: 'Испанский',
fr: 'Французский',
de: 'Немецкий',
ja: 'Японский',
ko: 'Корейский',
ru: 'Русский',
ar: 'Арабский',
pt: 'Португальский',
it: 'Итальянский',
nl: 'Голландский',
pl: 'Польский',
sv: 'Шведский',
tr: 'Турецкий',
he: 'Иврит',
hi: 'Хинди',
da: 'Датский',
fi: 'Финский',
no: 'Норвежский',
hu: 'Венгерский',
el: 'Греческий',
cs: 'Чешский',
th: 'Тайский',
id: 'Индонезийский',
},
categoryMap: {
book: {
fiction: 'Художественная литература',
biography: 'Биография',
history: 'История',
science: 'Наука',
technology: 'Технологии',
education: 'Образование',
philosophy: 'Философия',
religion: 'Религия',
socialSciences: 'Социальные науки',
art: 'Искусство',
travel: 'Путешествия',
health: 'Здоровье',
selfHelp: 'Самопомощь',
businessEconomics: 'Бизнес/Экономика',
cooking: 'Кулинария',
childrenYoungAdults: 'Детская/Подростковая литература',
comicsGraphicNovels: 'Комиксы/Графические романы',
poetry: 'Поэзия',
drama: 'Драматургия',
other: 'Другое',
},
personalDoc: {
notes: 'Заметки',
blogDraft: 'Черновик блога',
diary: 'Дневник',
researchReport: 'Научный отчет',
bookExcerpt: 'Отрывок из книги',
schedule: 'Расписание',
list: 'Список',
projectOverview: 'Обзор проекта',
photoCollection: 'Коллекция фотографий',
creativeWriting: 'Творческое письмо',
codeSnippet: 'Фрагмент кода',
designDraft: 'Черновик дизайна',
personalResume: 'Личное резюме',
other: 'Другое',
},
businessDoc: {
meetingMinutes: 'Протокол собрания',
researchReport: 'Научный отчет',
proposal: 'Предложение',
employeeHandbook: 'Справочник сотрудника',
trainingMaterials: 'Учебные материалы',
requirementsDocument: 'Документ с требованиями',
designDocument: 'Проектный документ',
productSpecification: 'Спецификация продукта',
financialReport: 'Финансовый отчет',
marketAnalysis: 'Анализ рынка',
projectPlan: 'План проекта',
teamStructure: 'Структура команды',
policiesProcedures: 'Политики и процедуры',
contractsAgreements: 'Договоры и соглашения',
emailCorrespondence: 'Переписка по электронной почте',
other: 'Другое',
},
},
},
embedding: {
processing: 'Расчет эмбеддингов...',
paused: 'Расчет эмбеддингов приостановлен',
completed: 'Встраивание завершено',
error: 'Ошибка расчета эмбеддингов',
docName: 'Предварительная обработка документа',
mode: 'Правило сегментации',
segmentLength: 'Длина фрагментов',
textCleaning: 'Предварительная очистка текста',
segments: 'Абзацы',
highQuality: 'Режим высокого качества',
economy: 'Экономичный режим',
estimate: 'Оценочное потребление',
stop: 'Остановить обработку',
resume: 'Возобновить обработку',
automatic: 'Автоматически',
custom: 'Пользовательский',
previewTip: 'Предварительный просмотр абзацев будет доступен после завершения расчета эмбеддингов',
parentMaxTokens: 'Родитель',
childMaxTokens: 'Ребёнок',
hierarchical: 'Родитель-дочерний',
pause: 'Пауза',
},
segment: {
paragraphs: 'Абзацы',
keywords: 'Ключевые слова',
addKeyWord: 'Добавить ключевое слово',
keywordError: 'Максимальная длина ключевого слова - 20',
characters: 'символов',
hitCount: 'Количество обращений',
vectorHash: 'Векторный хэш: ',
questionPlaceholder: 'добавьте вопрос здесь',
questionEmpty: 'Вопрос не может быть пустым',
answerPlaceholder: 'добавьте ответ здесь',
answerEmpty: 'Ответ не может быть пустым',
contentPlaceholder: 'добавьте содержимое здесь',
contentEmpty: 'Содержимое не может быть пустым',
newTextSegment: 'Новый текстовый сегмент',
newQaSegment: 'Новый сегмент вопрос-ответ',
delete: 'Удалить этот фрагмент?',
chunks_other: 'КУСКИ',
searchResults_one: 'РЕЗУЛЬТАТ',
parentChunk: 'Родительский блок',
characters_other: 'письмена',
edited: 'ОТРЕДАКТИРОВАНЫ',
regenerationSuccessMessage: 'Вы можете закрыть это окно.',
searchResults_other: 'РЕЗУЛЬТАТЫ',
regeneratingTitle: 'Регенерация дочерних блоков',
parentChunks_one: 'РОДИТЕЛЬСКИЙ БЛОК',
childChunk: 'Чайлд-Чанк',
editedAt: 'Отредактировано в',
editChildChunk: 'Редактирование дочернего фрагмента',
parentChunks_other: 'РОДИТЕЛЬСКИЕ БЛОКИ',
regenerationSuccessTitle: 'Регенерация завершена',
childChunks_one: 'ДОЧЕРНИЙ ЧАНК',
newChunk: 'Новый чанк',
addAnother: 'Добавить еще один',
clearFilter: 'Очистить фильтр',
addChunk: 'Добавить чанк',
editParentChunk: 'Редактирование родительского блока',
chunkDetail: 'Деталь Чанка',
regenerationConfirmMessage: 'При повторном создании дочерних блоков текущие дочерние блоки будут перезаписаны, включая отредактированные и вновь добавленные блоки. Регенерацию нельзя отменить.',
collapseChunks: 'Сворачивание кусков',
regenerationConfirmTitle: 'Вы хотите регенерировать дочерние куски?',
searchResults_zero: 'РЕЗУЛЬТАТ',
childChunks_other: 'ДЕТСКИЕ КУСОЧКИ',
childChunkAdded: 'Добавлен 1 дочерний чанк',
editChunk: 'Редактировать фрагмент',
empty: 'Чанк не найден',
chunks_one: 'ЛОМОТЬ',
regeneratingMessage: 'Это может занять некоторое время, пожалуйста, подождите...',
chunkAdded: 'Добавлен 1 блок',
chunk: 'Ломоть',
expandChunks: 'Развернуть чанки',
characters_one: 'характер',
addChildChunk: 'Добавить дочерний чанк',
newChildChunk: 'Новый дочерний чанк',
},
}
export default translation

View File

@@ -0,0 +1,35 @@
const translation = {
title: 'Тестирование поиска',
desc: 'Проверьте эффективность поиска в базе знаний на основе заданного текста запроса.',
dateTimeFormat: 'DD.MM.YYYY HH:mm',
recents: 'Недавние',
table: {
header: {
source: 'Источник',
text: 'Текст',
time: 'Время',
},
},
input: {
title: 'Исходный текст',
placeholder: 'Пожалуйста, введите текст, рекомендуется использовать короткое повествовательное предложение.',
countWarning: 'До 200 символов.',
indexWarning: 'Только база знаний высокого качества.',
testing: 'Тестирование',
},
hit: {
title: 'НАЙДЕННЫЕ АБЗАЦЫ',
emptyTip: 'Результаты тестирования поиска будут отображаться здесь',
},
noRecentTip: 'Здесь нет результатов недавних запросов',
viewChart: 'Посмотреть ВЕКТОРНУЮ ДИАГРАММУ',
viewDetail: 'Подробнее',
settingTitle: 'Настройка извлечения',
records: 'Записи',
hitChunks: 'Попадание {{num}} дочерних чанков',
chunkDetail: 'Деталь Чанка',
open: 'Открытый',
keyword: 'Ключевые слова',
}
export default translation

View File

@@ -0,0 +1,41 @@
const translation = {
title: 'Настройки базы знаний',
desc: 'Здесь вы можете изменить свойства и методы работы базы знаний.',
form: {
name: 'Название базы знаний',
namePlaceholder: 'Пожалуйста, введите название базы знаний',
nameError: 'Название не может быть пустым',
desc: 'Описание базы знаний',
descInfo: 'Пожалуйста, напишите четкое текстовое описание, чтобы обрисовать содержание базы знаний. Это описание будет использоваться в качестве основы для сопоставления при выборе из нескольких баз знаний для вывода.',
descPlaceholder: 'Опишите, что находится в этой базе знаний. Подробное описание позволяет ИИ своевременно получать доступ к содержимому базы знаний. Если оставить пустым, Dify будет использовать стратегию поиска по умолчанию.',
descWrite: 'Узнайте, как написать хорошее описание базы знаний.',
permissions: 'Разрешения',
permissionsOnlyMe: 'Только я',
permissionsAllMember: 'Все участники команды',
permissionsInvitedMembers: 'Отдельные участники команды',
me: '(Вы)',
indexMethod: 'Метод индексации',
indexMethodHighQuality: 'Высокое качество',
indexMethodHighQualityTip: 'Вызов модели встраивания для обработки, чтобы обеспечить более высокую точность при запросах пользователей.',
indexMethodEconomy: 'Экономичный',
indexMethodEconomyTip: 'Используйте автономные векторные движки, индексы ключевых слов и т. д., чтобы снизить точность, не тратя токены',
embeddingModel: 'Модель встраивания',
embeddingModelTip: 'Изменить встроенную модель, пожалуйста, перейдите в ',
embeddingModelTipLink: 'Настройки',
retrievalSetting: {
title: 'Настройки поиска',
learnMore: 'Узнать больше',
description: ' о методе поиска.',
longDescription: ' о методе поиска, вы можете изменить это в любое время в настройках базы знаний.',
},
save: 'Сохранить',
externalKnowledgeAPI: 'API внешних знаний',
retrievalSettings: 'Настройки извлечения',
externalKnowledgeID: 'Внешний идентификатор базы знаний',
helpText: 'Узнайте, как написать хорошее описание набора данных.',
upgradeHighQualityTip: 'После обновления до режима «Высокое качество» возврат к экономичному режиму невозможен',
indexMethodChangeToEconomyDisabledTip: 'Недоступно для понижения уровня с HQ до ECO',
},
}
export default translation

View File

@@ -0,0 +1,173 @@
const translation = {
knowledge: 'База знаний',
documentCount: ' документов',
wordCount: ' тыс. слов',
appCount: ' связанных приложений',
createDataset: 'Создать базу знаний',
createDatasetIntro: 'Импортируйте свои собственные текстовые данные или записывайте данные в режиме реального времени через Webhook для улучшения контекста LLM.',
deleteDatasetConfirmTitle: 'Удалить эту базу знаний?',
deleteDatasetConfirmContent:
'Удаление базы знаний необратимо. Пользователи больше не смогут получить доступ к вашей базе знаний, и все настройки подсказок и журналы будут безвозвратно удалены.',
datasetUsedByApp: 'База знаний используется некоторыми приложениями. Приложения больше не смогут использовать эту базу знаний, и все настройки подсказок и журналы будут безвозвратно удалены.',
datasetDeleted: 'База знаний удалена',
datasetDeleteFailed: 'Не удалось удалить базу знаний',
didYouKnow: 'Знаете ли вы?',
intro1: 'Базу знаний можно интегрировать в приложение Dify ',
intro2: 'в качестве контекста',
intro3: ',',
intro4: 'или ее ',
intro5: 'можно создать',
intro6: ' как отдельный плагин индекса ChatGPT для публикации',
unavailable: 'Недоступно',
unavailableTip: 'Модель встраивания недоступна, необходимо настроить модель встраивания по умолчанию',
datasets: 'БАЗЫ ЗНАНИЙ',
datasetsApi: 'ДОСТУП К API',
retrieval: {
semantic_search: {
title: 'Векторный поиск',
description: 'Создайте встраивания запросов и найдите фрагмент текста, наиболее похожий на его векторное представление.',
},
full_text_search: {
title: 'Полнотекстовый поиск',
description: 'Индексируйте все термины в документе, позволяя пользователям искать любой термин и извлекать соответствующий фрагмент текста, содержащий эти термины.',
},
hybrid_search: {
title: 'Гибридный поиск',
description: 'Выполняйте полнотекстовый поиск и векторный поиск одновременно, переранжируйте, чтобы выбрать наилучшее соответствие запросу пользователя. Пользователи могут выбрать установку весов или настройку модели переранжирования.',
recommend: 'Рекомендуется',
},
invertedIndex: {
title: 'Инвертированный индекс',
description: 'Инвертированный индекс - это структура, используемая для эффективного поиска. Организованный по терминам, каждый термин указывает на документы или веб-страницы, содержащие его.',
},
change: 'Изменить',
changeRetrievalMethod: 'Изменить метод поиска',
},
docsFailedNotice: 'документов не удалось проиндексировать',
retry: 'Повторить попытку',
indexingTechnique: {
high_quality: 'HQ',
economy: 'ECO',
},
indexingMethod: {
semantic_search: 'ВЕКТОР',
full_text_search: 'ПОЛНЫЙ ТЕКСТ',
hybrid_search: 'ГИБРИД',
invertedIndex: 'ИНВЕРТИРОВАННЫЙ',
},
mixtureHighQualityAndEconomicTip: 'Для смешивания высококачественных и экономичных баз знаний требуется модель переранжирования.',
inconsistentEmbeddingModelTip: 'Модель переранжирования требуется, если модели встраивания выбранных баз знаний несовместимы.',
retrievalSettings: 'Настройки поиска',
rerankSettings: 'Настройки переранжирования',
weightedScore: {
title: 'Взвешенная оценка',
description: 'Регулируя назначенные веса, эта стратегия переранжирования определяет, следует ли отдавать приоритет семантическому или ключевому соответствию.',
semanticFirst: 'Семантика в первую очередь',
keywordFirst: 'Ключевые слова в первую очередь',
customized: 'Настраиваемый',
semantic: 'Семантика',
keyword: 'Ключевые слова',
},
nTo1RetrievalLegacy: 'Поиск N-к-1 будет официально прекращен с сентября. Рекомендуется использовать новейший многопутный поиск для получения лучших результатов.',
nTo1RetrievalLegacyLink: 'Узнать больше',
nTo1RetrievalLegacyLinkText: ' Поиск N-к-1 будет официально прекращен в сентябре.',
defaultRetrievalTip: 'По умолчанию используется многоканальная проверка. Знания извлекаются из нескольких баз знаний, а затем повторно ранжируются.',
editExternalAPIConfirmWarningContent: {
end: 'внешних знаний, и эта модификация будет применена ко всем им. Вы уверены, что хотите сохранить это изменение?',
front: 'Этот API внешних знаний связан с',
},
editExternalAPIFormWarning: {
end: 'Внешние знания',
front: 'Этот внешний API связан с',
},
deleteExternalAPIConfirmWarningContent: {
title: {
end: '?',
front: 'Удалить',
},
content: {
front: 'Этот API внешних знаний связан с',
end: 'внешнее знание. Удаление этого API сделает их все недействительными. Вы уверены, что хотите удалить этот API?',
},
noConnectionContent: 'Вы уверены, что удалите этот API?',
},
selectExternalKnowledgeAPI: {
placeholder: 'Выбор API внешних знаний',
},
connectDatasetIntro: {
content: {
link: 'Узнайте, как создать внешний API',
front: 'Чтобы подключиться к внешней базе знаний, необходимо сначала создать внешний API. Пожалуйста, внимательно прочтите и обратитесь к',
end: '. Затем найдите соответствующий идентификатор знания и заполните его в форме слева. Если вся информация верна, он автоматически перейдет к тесту извлечения в базе знаний после нажатия кнопки подключения.',
},
learnMore: 'Подробнее',
title: 'Как подключиться к внешней базе знаний',
},
connectHelper: {
helper2: 'Поддерживается только функция извлечения',
helper3: '. Мы настоятельно рекомендуем вам',
helper4: 'Ознакомьтесь с справочной документацией',
helper5: 'Будьте внимательны перед использованием этой функции.',
helper1: 'Подключение к внешним базам знаний через API и идентификатор базы знаний. В настоящее время',
},
externalKnowledgeForm: {
connect: 'Соединять',
cancel: 'Отмена',
},
externalAPIForm: {
encrypted: {
end: 'Технологии.',
front: 'Ваш токен API будет зашифрован и сохранен с помощью',
},
cancel: 'Отмена',
endpoint: 'Конечная точка API',
save: 'Спасать',
edit: 'Редактировать',
name: 'Имя',
apiKey: 'Ключ API',
},
externalKnowledgeNamePlaceholder: 'Пожалуйста, введите название базы знаний',
externalTag: 'Внешний',
learnHowToWriteGoodKnowledgeDescription: 'Узнайте, как написать хорошее описание знаний',
externalAPIPanelTitle: 'API внешних знаний',
externalKnowledgeDescription: 'Описание знаний',
editExternalAPITooltipTitle: 'СВЯЗАННЫЕ ЗНАНИЯ',
externalKnowledgeName: 'Имя внешнего базы знаний',
createExternalAPI: 'Добавление API внешних знаний',
externalKnowledgeIdPlaceholder: 'Пожалуйста, введите идентификатор знаний',
externalKnowledgeDescriptionPlaceholder: 'Опишите, что входит в эту базу знаний (необязательно)',
noExternalKnowledge: 'У нас еще нет External Knowledge API, нажмите здесь, чтобы создать',
externalAPI: 'Внешний API',
externalKnowledgeId: 'Внешний идентификатор базы знаний',
createNewExternalAPI: 'Создание нового API внешних знаний',
editExternalAPIFormTitle: 'Редактирование API внешних знаний',
connectDataset: 'Подключение к внешней базе знаний',
mixtureInternalAndExternalTip: 'Модель Rerank необходима для смешивания внутренних и внешних знаний.',
allExternalTip: 'При использовании только внешних знаний пользователь может выбрать, следует ли включать модель повторного ранжирования. Если этот параметр не включен, полученные фрагменты будут сортироваться на основе баллов. Когда стратегии извлечения из разных баз знаний несовместимы, они будут неточными.',
externalAPIPanelDocumentation: 'Узнайте, как создать API внешних знаний',
externalAPIPanelDescription: 'Внешний API базы знаний используется для подключения к базе знаний за пределами Dify и извлечения знаний из этой базы знаний.',
chunkingMode: {
general: 'Общее',
parentChild: 'Родитель-дочерний',
},
parentMode: {
fullDoc: 'Полный документ',
paragraph: 'Параграф',
},
batchAction: {
enable: 'Давать возможность',
delete: 'Удалить',
selected: 'Выбранный',
disable: 'Отключить',
cancel: 'Отмена',
archive: 'Архив',
},
preprocessDocument: '{{число}} Предварительная обработка документов',
documentsDisabled: 'Документы {{num}} отключены - неактивны более 30 дней',
localDocs: 'Местная документация',
enable: 'Давать возможность',
allKnowledge: 'Все знания',
allKnowledgeDescription: 'Выберите, чтобы отобразить все знания в этой рабочей области. Только владелец рабочего пространства может управлять всеми знаниями.',
}
export default translation

View File

@@ -0,0 +1,43 @@
const translation = {
title: 'Обзор',
sidebar: {
discovery: 'Открытия',
chat: 'Чат',
workspace: 'Рабочее пространство',
action: {
pin: 'Закрепить',
unpin: 'Открепить',
rename: 'Переименовать',
delete: 'Удалить',
},
delete: {
title: 'Удалить приложение',
content: 'Вы уверены, что хотите удалить это приложение?',
},
},
apps: {
title: 'Обзор приложений от Dify',
description: 'Используйте эти шаблонные приложения мгновенно или настройте свои собственные приложения на основе шаблонов.',
allCategories: 'Рекомендуемые',
},
appCard: {
addToWorkspace: 'Добавить в рабочее пространство',
customize: 'Настроить',
},
appCustomize: {
title: 'Создать приложение из {{name}}',
subTitle: 'Значок и название приложения',
nameRequired: 'Название приложения обязательно',
},
category: {
Assistant: 'Ассистент',
Writing: 'Написание',
Translate: 'Перевод',
Programming: 'Программирование',
HR: 'HR',
Agent: 'Агент',
Workflow: 'Рабочий процесс',
},
}
export default translation

View File

@@ -0,0 +1,4 @@
const translation = {
}
export default translation

View File

@@ -0,0 +1,110 @@
const translation = {
pageTitle: 'Привет, давайте начнем!👋',
welcome: 'Добро пожаловать в Dify, пожалуйста, войдите, чтобы продолжить.',
email: 'Адрес электронной почты',
emailPlaceholder: 'Ваш адрес электронной почты',
password: 'Пароль',
passwordPlaceholder: 'Ваш пароль',
name: 'Имя пользователя',
namePlaceholder: 'Ваше имя пользователя',
forget: 'Забыли пароль?',
signBtn: 'Войти',
sso: 'Продолжить с SSO',
installBtn: 'Настроить',
setAdminAccount: 'Настройка учетной записи администратора',
setAdminAccountDesc: 'Максимальные привилегии для учетной записи администратора, которые можно использовать для создания приложений, управления поставщиками LLM и т. д.',
createAndSignIn: 'Создать и войти',
oneMoreStep: 'Еще один шаг',
createSample: 'На основе этой информации мы создадим для вас пример приложения',
invitationCode: 'Пригласительный код',
invitationCodePlaceholder: 'Ваш пригласительный код',
interfaceLanguage: 'Язык интерфейса',
timezone: 'Часовой пояс',
go: 'Перейти к Dify',
sendUsMail: 'Отправьте нам по электронной почте свое представление, и мы обработаем запрос на приглашение.',
acceptPP: 'Я прочитал и принимаю политику конфиденциальности',
reset: 'Пожалуйста, выполните следующую команду, чтобы сбросить пароль',
withGitHub: 'Продолжить с GitHub',
withGoogle: 'Продолжить с Google',
rightTitle: 'Раскройте весь потенциал LLM',
rightDesc: 'Без труда создавайте визуально привлекательные, работоспособные и улучшаемые приложения ИИ.',
tos: 'Условия обслуживания',
pp: 'Политика конфиденциальности',
tosDesc: 'Регистрируясь, вы соглашаетесь с нашими',
goToInit: 'Если вы не инициализировали учетную запись, перейдите на страницу инициализации',
dontHave: 'Нет?',
invalidInvitationCode: 'Неверный пригласительный код',
accountAlreadyInited: 'Учетная запись уже инициализирована',
forgotPassword: 'Забыли пароль?',
resetLinkSent: 'Ссылка для сброса отправлена',
sendResetLink: 'Отправить ссылку для сброса',
backToSignIn: 'Вернуться к входу',
forgotPasswordDesc: 'Пожалуйста, введите свой адрес электронной почты, чтобы сбросить пароль. Мы отправим вам электронное письмо с инструкциями о том, как сбросить пароль.',
checkEmailForResetLink: 'Пожалуйста, проверьте свою электронную почту на наличие ссылки для сброса пароля. Если она не появится в течение нескольких минут, обязательно проверьте папку со спамом.',
passwordChanged: 'Войдите сейчас',
changePassword: 'Изменить пароль',
changePasswordTip: 'Пожалуйста, введите новый пароль для своей учетной записи',
invalidToken: 'Неверный или просроченный токен',
confirmPassword: 'Подтвердите пароль',
confirmPasswordPlaceholder: 'Подтвердите свой новый пароль',
passwordChangedTip: 'Ваш пароль был успешно изменен',
error: {
emailEmpty: 'Адрес электронной почты обязателен',
emailInValid: 'Пожалуйста, введите действительный адрес электронной почты',
nameEmpty: 'Имя обязательно',
passwordEmpty: 'Пароль обязателен',
passwordLengthInValid: 'Пароль должен содержать не менее 8 символов',
passwordInvalid: 'Пароль должен содержать буквы и цифры, а длина должна быть больше 8',
registrationNotAllowed: 'Аккаунт не найден. Пожалуйста, свяжитесь с системным администратором для регистрации.',
},
license: {
tip: 'Перед запуском Dify Community Edition ознакомьтесь с лицензией GitHub',
link: 'Лицензия с открытым исходным кодом',
},
join: 'Присоединиться',
joinTipStart: 'Приглашаем вас присоединиться к',
joinTipEnd: 'команде на Dify',
invalid: 'Ссылка истекла',
explore: 'Изучить Dify',
activatedTipStart: 'Вы присоединились к команде',
activatedTipEnd: '',
activated: 'Войдите сейчас',
adminInitPassword: 'Пароль инициализации администратора',
validate: 'Проверить',
checkCode: {
verify: 'Проверять',
resend: 'Отправить',
invalidCode: 'Неверный код',
didNotReceiveCode: 'Не получили код?',
emptyCode: 'Код обязателен для заполнения',
verificationCode: 'Проверочный код',
checkYourEmail: 'Проверьте свою электронную почту',
tips: 'Мы отправляем код подтверждения на <strong>{{email}}</strong>',
validTime: 'Имейте в виду, что код действителен в течение 5 минут',
verificationCodePlaceholder: 'Введите 6-значный код',
useAnotherMethod: 'Используйте другой метод',
},
back: 'Назад',
changePasswordBtn: 'Установите пароль',
usePassword: 'Использовать пароль',
continueWithCode: 'Продолжить с кодом',
resetPassword: 'Сброс пароля',
withSSO: 'Продолжение работы с SSO',
noLoginMethod: 'Метод аутентификации не настроен',
useVerificationCode: 'Используйте код подтверждения',
sendVerificationCode: 'Отправить код подтверждения',
setYourAccount: 'Настройте свою учетную запись',
backToLogin: 'Вернуться к входу',
enterYourName: 'Пожалуйста, введите свое имя пользователя',
noLoginMethodTip: 'Обратитесь к системному администратору, чтобы добавить метод аутентификации.',
resetPasswordDesc: 'Введите адрес электронной почты, который вы использовали для регистрации в Dify, и мы отправим вам электронное письмо для сброса пароля.',
or: 'ИЛИ',
licenseInactive: 'Лицензия неактивна',
licenseLostTip: 'Не удалось подключить сервер лицензий Dify. Обратитесь к своему администратору, чтобы продолжить использование Dify.',
licenseExpired: 'Срок действия лицензии истек',
licenseLost: 'Утеряна лицензия',
licenseInactiveTip: 'Лицензия Dify Enterprise для рабочего пространства неактивна. Обратитесь к своему администратору, чтобы продолжить использование Dify.',
licenseExpiredTip: 'Срок действия лицензии Dify Enterprise для рабочего пространства истек. Обратитесь к своему администратору, чтобы продолжить использование Dify.',
}
export default translation

View File

@@ -0,0 +1,25 @@
const translation = {
tags: {
business: 'Дело',
videos: 'Видео',
travel: 'Путешествовать',
social: 'Общественный',
agent: 'Агент',
search: 'Искать',
design: 'Проектировать',
image: 'Образ',
news: 'Новости',
utilities: 'Коммунальные услуги',
weather: 'Погода',
medical: 'Медицинский',
other: 'Другой',
finance: 'Финансировать',
education: 'Образование',
productivity: 'Продуктивность',
entertainment: 'Развлечение',
},
allTags: 'Все теги',
searchTags: 'Поиск тегов',
}
export default translation

View File

@@ -0,0 +1,209 @@
const translation = {
category: {
extensions: 'Расширения',
tools: 'Инструменты',
models: 'Модели',
all: 'Все',
bundles: 'Пакеты',
agents: 'Агентские стратегии',
},
categorySingle: {
bundle: 'Связка',
agent: 'Агентская стратегия',
model: 'Модель',
extension: 'Расширение',
tool: 'Инструмент',
},
list: {
source: {
github: 'Установка с GitHub',
marketplace: 'Установка из Marketplace',
local: 'Установка из локального файла пакета',
},
notFound: 'Плагины не найдены',
noInstalled: 'Плагины не установлены',
},
source: {
github: 'Сайт GitHub',
marketplace: 'Рынок',
local: 'Локальный файл пакета',
},
detailPanel: {
categoryTip: {
github: 'Установлено с Github',
debugging: 'Плагин для отладки',
local: 'Локальный плагин',
marketplace: 'Установлено из Marketplace',
},
operation: {
viewDetail: 'Подробнее',
detail: 'Подробности',
info: 'Информация о плагине',
remove: 'Убирать',
install: 'Устанавливать',
update: 'Обновлять',
checkUpdate: 'Проверить обновление',
},
toolSelector: {
placeholder: 'Выберите инструмент...',
auto: 'Автоматически',
title: 'Добавить инструмент',
uninstalledTitle: 'Инструмент не установлен',
descriptionLabel: 'Описание инструмента',
unsupportedTitle: 'Неподдерживаемое действие',
settings: 'ПОЛЬЗОВАТЕЛЬСКИЕ НАСТРОЙКИ',
unsupportedContent: 'Установленная версия плагина не предусматривает этого действия.',
empty: 'Нажмите кнопку «+», чтобы добавить инструменты. Вы можете добавить несколько инструментов.',
uninstalledContent: 'Этот плагин устанавливается из репозитория local/GitHub. Пожалуйста, используйте после установки.',
paramsTip2: 'Когда параметр «Автоматически» выключен, используется значение по умолчанию.',
toolLabel: 'Инструмент',
paramsTip1: 'Управляет параметрами вывода LLM.',
descriptionPlaceholder: 'Краткое описание назначения инструмента, например, получение температуры для конкретного места.',
params: 'КОНФИГУРАЦИЯ РАССУЖДЕНИЙ',
unsupportedContent2: 'Нажмите, чтобы переключить версию.',
uninstalledLink: 'Управление в плагинах',
},
configureTool: 'Инструмент настройки',
endpointsTip: 'Этот плагин предоставляет определенные функциональные возможности через конечные точки, и вы можете настроить несколько наборов конечных точек для текущей рабочей области.',
endpointDeleteTip: 'Удалить конечную точку',
disabled: 'Нетрудоспособный',
serviceOk: 'Услуга ОК',
configureApp: 'Настройка приложения',
endpointDeleteContent: 'Хотели бы вы удалить {{name}}?',
strategyNum: '{{число}} {{Стратегия}} ВКЛЮЧЕННЫЙ',
endpoints: 'Конечные точки',
modelNum: '{{число}} МОДЕЛИ В КОМПЛЕКТЕ',
endpointDisableTip: 'Отключить конечную точку',
configureModel: 'Настройка модели',
endpointModalDesc: 'После настройки можно использовать функции, предоставляемые плагином через конечные точки API.',
endpointModalTitle: 'Настройка конечной точки',
actionNum: '{{число}} {{действие}} ВКЛЮЧЕННЫЙ',
endpointDisableContent: 'Хотели бы вы отключить {{name}}?',
endpointsEmpty: 'Нажмите кнопку «+», чтобы добавить конечную точку',
switchVersion: 'Версия для переключателя',
endpointsDocLink: 'Посмотреть документ',
},
debugInfo: {
title: 'Отладка',
viewDocs: 'Просмотр документации',
},
privilege: {
whoCanDebug: 'Кто может отлаживать плагины?',
admins: 'Админы',
noone: 'Никто',
everyone: 'Каждый',
title: 'Настройки плагина',
whoCanInstall: 'Кто может устанавливать плагины и управлять ими?',
},
pluginInfoModal: {
packageName: 'Пакет',
title: 'Информация о плагине',
repository: 'Хранилище',
release: 'Отпускать',
},
action: {
deleteContentLeft: 'Вы хотели бы удалить',
pluginInfo: 'Информация о плагине',
checkForUpdates: 'Проверка обновлений',
delete: 'Удалить плагин',
deleteContentRight: 'Плагин?',
usedInApps: 'Этот плагин используется в приложениях {{num}}.',
},
installModal: {
labels: {
package: 'Пакет',
version: 'Версия',
repository: 'Хранилище',
},
readyToInstall: 'О программе установки следующего плагина',
close: 'Закрывать',
installedSuccessfully: 'Установка успешна',
dropPluginToInstall: 'Перетащите пакет плагина сюда для установки',
uploadFailed: 'Ошибка загрузки',
cancel: 'Отмена',
installFailed: 'Ошибка установки',
readyToInstallPackages: 'О необходимости установки следующих плагинов {{num}}',
installedSuccessfullyDesc: 'Плагин успешно установлен.',
installComplete: 'Монтаж завершен',
next: 'Следующий',
fromTrustSource: 'Убедитесь, что вы устанавливаете плагины только из <trustSource>надежного источника</trustSource>.',
install: 'Устанавливать',
installPlugin: 'Установить плагин',
installFailedDesc: 'Плагин был установлен не удалось.',
back: 'Назад',
pluginLoadErrorDesc: 'Этот плагин не будет установлен',
installing: 'Установка...',
uploadingPackage: 'Загрузка {{packageName}}...',
pluginLoadError: 'Ошибка загрузки плагина',
readyToInstallPackage: 'О программе установки следующего плагина',
},
installFromGitHub: {
gitHubRepo: 'Репозиторий GitHub',
selectPackagePlaceholder: 'Пожалуйста, выберите пакет',
installNote: 'Убедитесь, что вы устанавливаете плагины только из надежного источника.',
selectPackage: 'Выбрать пакет',
installedSuccessfully: 'Установка успешна',
selectVersion: 'Выберите версию',
updatePlugin: 'Обновление плагина с GitHub',
installFailed: 'Ошибка установки',
uploadFailed: 'Ошибка загрузки',
installPlugin: 'Установка плагина с GitHub',
selectVersionPlaceholder: 'Пожалуйста, выберите версию',
},
upgrade: {
close: 'Закрывать',
upgrading: 'Установка...',
successfulTitle: 'Установка успешна',
title: 'Установить плагин',
upgrade: 'Устанавливать',
usedInApps: 'Используется в приложениях {{num}}',
description: 'О программе установки следующего плагина',
},
error: {
inValidGitHubUrl: 'Недопустимый URL-адрес GitHub. Пожалуйста, введите действительный URL-адрес в формате: https://github.com/owner/repo',
noReleasesFound: 'Релизы не найдены. Пожалуйста, проверьте репозиторий GitHub или входной URL.',
fetchReleasesError: 'Не удается получить релизы. Пожалуйста, повторите попытку позже.',
},
marketplace: {
sortOption: {
newlyReleased: 'Недавно выпущенные',
mostPopular: 'Самые популярные',
firstReleased: 'Впервые выпущен',
recentlyUpdated: 'Недавно обновленные',
},
pluginsResult: 'Результаты {{num}}',
moreFrom: 'Больше из Marketplace',
noPluginFound: 'Плагин не найден',
sortBy: 'Черный город',
empower: 'Расширьте возможности разработки ИИ',
difyMarketplace: 'Торговая площадка Dify',
viewMore: 'Подробнее',
and: 'и',
discover: 'Обнаруживать',
},
task: {
installing: 'Установка плагинов {{installingLength}}, 0 готово.',
installingWithError: 'Установка плагинов {{installingLength}}, {{successLength}} успех, {{errorLength}} неудачный',
clearAll: 'Очистить все',
installingWithSuccess: 'Установка плагинов {{installingLength}}, {{successLength}} успех.',
installedError: 'плагины {{errorLength}} не удалось установить',
installError: 'Плагины {{errorLength}} не удалось установить, нажмите для просмотра',
},
install: '{{num}} установок',
searchCategories: 'Поиск категорий',
search: 'Искать',
searchInMarketplace: 'Поиск в маркетплейсе',
searchTools: 'Инструменты поиска...',
allCategories: 'Все категории',
endpointsEnabled: '{{num}} наборы включенных конечных точек',
submitPlugin: 'Отправить плагин',
installAction: 'Устанавливать',
from: 'От',
installFrom: 'УСТАНОВИТЬ С',
findMoreInMarketplace: 'Узнайте больше в Marketplace',
installPlugin: 'Установка плагина',
searchPlugins: 'Плагины поиска',
fromMarketplace: 'Из маркетплейса',
}
export default translation

View File

@@ -0,0 +1,4 @@
const translation = {
}
export default translation

View File

@@ -0,0 +1,31 @@
const translation = {
input: 'ВВОД',
result: 'РЕЗУЛЬТАТ',
detail: 'ДЕТАЛИ',
tracing: 'ТРАССИРОВКА',
resultPanel: {
status: 'СТАТУС',
time: 'ПРОШЕДШЕЕ ВРЕМЯ',
tokens: 'ВСЕГО ТОКЕНОВ',
},
meta: {
title: 'МЕТАДАННЫЕ',
status: 'Статус',
version: 'Версия',
executor: 'Исполнитель',
startTime: 'Время начала',
time: 'Прошедшее время',
tokens: 'Всего токенов',
steps: 'Шаги выполнения',
},
resultEmpty: {
title: 'Этот запуск выводит только формат JSON,',
tipLeft: 'пожалуйста, перейдите на ',
link: 'панель деталей',
tipRight: ' чтобы просмотреть его.',
},
circularInvocationTip: 'В текущем рабочем процессе существует циклический вызов инструментов/узлов.',
actionLogs: 'Журналы действий',
}
export default translation

View File

@@ -0,0 +1,74 @@
const translation = {
common: {
welcome: '',
appUnavailable: 'Приложение недоступно',
appUnknownError: 'Приложение недоступно',
},
chat: {
newChat: 'Новый чат',
pinnedTitle: 'Закрепленные',
unpinnedTitle: 'Чаты',
newChatDefaultName: 'Новый разговор',
resetChat: 'Сбросить разговор',
poweredBy: 'Работает на',
prompt: 'Подсказка',
privatePromptConfigTitle: 'Настройки разговора',
publicPromptConfigTitle: 'Начальная подсказка',
configStatusDes: 'Перед началом вы можете изменить настройки разговора',
configDisabled:
'Для этого сеанса использовались настройки предыдущего сеанса.',
startChat: 'Начать чат',
privacyPolicyLeft:
'Пожалуйста, ознакомьтесь с ',
privacyPolicyMiddle:
'политикой конфиденциальности',
privacyPolicyRight:
', предоставленной разработчиком приложения.',
deleteConversation: {
title: 'Удалить разговор',
content: 'Вы уверены, что хотите удалить этот разговор?',
},
tryToSolve: 'Попробуйте решить',
temporarySystemIssue: 'Извините, временная проблема с системой.',
},
generation: {
tabs: {
create: 'Запустить один раз',
batch: 'Запустить пакетно',
saved: 'Сохраненные',
},
savedNoData: {
title: 'Вы еще не сохранили ни одного результата!',
description: 'Начните генерировать контент, и вы найдете свои сохраненные результаты здесь.',
startCreateContent: 'Начать создавать контент',
},
title: 'Завершение ИИ',
queryTitle: 'Содержимое запроса',
completionResult: 'Результат завершения',
queryPlaceholder: 'Напишите содержимое вашего запроса...',
run: 'Выполнить',
copy: 'Копировать',
resultTitle: 'Завершение ИИ',
noData: 'ИИ даст вам то, что вы хотите, здесь.',
csvUploadTitle: 'Перетащите сюда свой CSV-файл или ',
browse: 'обзор',
csvStructureTitle: 'CSV-файл должен соответствовать следующей структуре:',
downloadTemplate: 'Скачать шаблон здесь',
field: 'Поле',
batchFailed: {
info: '{{num}} неудачных выполнений',
retry: 'Повторить попытку',
outputPlaceholder: 'Нет выходного содержимого',
},
errorMsg: {
empty: 'Пожалуйста, введите содержимое в загруженный файл.',
fileStructNotMatch: 'Загруженный CSV-файл не соответствует структуре.',
emptyLine: 'Строка {{rowIndex}} пуста',
invalidLine: 'Строка {{rowIndex}}: значение {{varName}} не может быть пустым',
moreThanMaxLengthLine: 'Строка {{rowIndex}}: значение {{varName}} не может превышать {{maxLength}} символов',
atLeastOne: 'Пожалуйста, введите хотя бы одну строку в загруженный файл.',
},
},
}
export default translation

View File

@@ -0,0 +1,3 @@
const translation = {}
export default translation

View File

@@ -0,0 +1,158 @@
const translation = {
title: 'Инструменты',
createCustomTool: 'Создать пользовательский инструмент',
customToolTip: 'Узнать больше о пользовательских инструментах Dify',
type: {
all: 'Все',
builtIn: 'Встроенные',
custom: 'Пользовательские',
workflow: 'Рабочий процесс',
},
contribute: {
line1: 'Я заинтересован в',
line2: 'внесении инструментов в Dify.',
viewGuide: 'Посмотреть руководство',
},
author: 'Автор',
auth: {
unauthorized: 'Авторизовать',
authorized: 'Авторизовано',
setup: 'Настроить авторизацию для использования',
setupModalTitle: 'Настроить авторизацию',
setupModalTitleDescription: 'После настройки учетных данных все участники рабочего пространства смогут использовать этот инструмент при оркестровке приложений.',
},
includeToolNum: 'Включено {{num}} инструментов',
addTool: 'Добавить инструмент',
addToolModal: {
type: 'тип',
category: 'категория',
add: 'добавить',
added: 'добавлено',
manageInTools: 'Управлять в инструментах',
emptyTitle: 'Нет доступных инструментов рабочего процесса',
emptyTip: 'Перейдите в "Рабочий процесс -> Опубликовать как инструмент"',
emptyTitleCustom: 'Нет пользовательского инструмента',
emptyTipCustom: 'Создание пользовательского инструмента',
},
createTool: {
title: 'Создать пользовательский инструмент',
editAction: 'Настроить',
editTitle: 'Редактировать пользовательский инструмент',
name: 'Название',
toolNamePlaceHolder: 'Введите название инструмента',
nameForToolCall: 'Название вызова инструмента',
nameForToolCallPlaceHolder: 'Используется для машинного распознавания, например getCurrentWeather, list_pets',
nameForToolCallTip: 'Поддерживаются только цифры, буквы и подчеркивания.',
description: 'Описание',
descriptionPlaceholder: 'Краткое описание назначения инструмента, например, получить температуру для определенного местоположения.',
schema: 'Схема',
schemaPlaceHolder: 'Введите свою схему OpenAPI здесь',
viewSchemaSpec: 'Посмотреть спецификацию OpenAPI-Swagger',
importFromUrl: 'Импортировать из URL',
importFromUrlPlaceHolder: 'https://...',
urlError: 'Пожалуйста, введите действительный URL',
examples: 'Примеры',
exampleOptions: {
json: 'Погода (JSON)',
yaml: 'Зоомагазин (YAML)',
blankTemplate: 'Пустой шаблон',
},
availableTools: {
title: 'Доступные инструменты',
name: 'Название',
description: 'Описание',
method: 'Метод',
path: 'Путь',
action: 'Действия',
test: 'Тест',
},
authMethod: {
title: 'Метод авторизации',
type: 'Тип авторизации',
keyTooltip: 'Ключ заголовка HTTP, вы можете оставить его как "Authorization", если не знаете, что это такое, или установить его на пользовательское значение',
types: {
none: 'Нет',
api_key: 'Ключ API',
apiKeyPlaceholder: 'Название заголовка HTTP для ключа API',
apiValuePlaceholder: 'Введите ключ API',
},
key: 'Ключ',
value: 'Значение',
},
authHeaderPrefix: {
title: 'Тип авторизации',
types: {
basic: 'Базовый',
bearer: 'Bearer',
custom: 'Пользовательский',
},
},
privacyPolicy: 'Политика конфиденциальности',
privacyPolicyPlaceholder: 'Пожалуйста, введите политику конфиденциальности',
toolInput: {
title: 'Входные данные инструмента',
name: 'Название',
required: 'Обязательно',
method: 'Метод',
methodSetting: 'Настройка',
methodSettingTip: 'Пользователь заполняет конфигурацию инструмента',
methodParameter: 'Параметр',
methodParameterTip: 'LLM заполняет во время вывода',
label: 'Теги',
labelPlaceholder: 'Выберите теги (необязательно)',
description: 'Описание',
descriptionPlaceholder: 'Описание значения параметра',
},
customDisclaimer: 'Пользовательский отказ от ответственности',
customDisclaimerPlaceholder: 'Пожалуйста, введите пользовательский отказ от ответственности',
confirmTitle: 'Подтвердить сохранение?',
confirmTip: 'Приложения, использующие этот инструмент, будут затронуты',
deleteToolConfirmTitle: 'Удалить этот инструмент?',
deleteToolConfirmContent: 'Удаление инструмента необратимо. Пользователи больше не смогут получить доступ к вашему инструменту.',
},
test: {
title: 'Тест',
parametersValue: 'Параметры и значение',
parameters: 'Параметры',
value: 'Значение',
testResult: 'Результаты теста',
testResultPlaceholder: 'Результат теста будет отображаться здесь',
},
thought: {
using: 'Использование',
used: 'Использовано',
requestTitle: 'Запрос к',
responseTitle: 'Ответ от',
},
setBuiltInTools: {
info: 'Информация',
setting: 'Настройка',
toolDescription: 'Описание инструмента',
parameters: 'параметры',
string: 'строка',
number: 'число',
required: 'Обязательно',
infoAndSetting: 'Информация и настройки',
file: 'файл',
},
noCustomTool: {
title: 'Нет пользовательских инструментов!',
content: 'Добавьте и управляйте своими пользовательскими инструментами здесь для создания приложений ИИ.',
createTool: 'Создать инструмент',
},
noSearchRes: {
title: 'Извините, результаты не найдены!',
content: 'Мы не смогли найти никаких инструментов, соответствующих вашему поиску.',
reset: 'Сбросить поиск',
},
builtInPromptTitle: 'Подсказка',
toolRemoved: 'Инструмент удален',
notAuthorized: 'Инструмент не авторизован',
howToGet: 'Как получить',
openInStudio: 'Открыть в Studio',
toolNameUsageTip: 'Название вызова инструмента для рассуждений агента и подсказок',
copyToolName: 'Копировать имя',
noTools: 'Инструменты не найдены',
}
export default translation

View File

@@ -0,0 +1,782 @@
const translation = {
common: {
undo: 'Отменить',
redo: 'Повторить',
editing: 'Редактирование',
autoSaved: 'Автосохранено',
unpublished: 'Не опубликовано',
published: 'Опубликовано',
publish: 'Опубликовать',
update: 'Обновить',
run: 'Запустить',
running: 'Выполняется',
inRunMode: 'В режиме выполнения',
inPreview: 'В режиме предпросмотра',
inPreviewMode: 'В режиме предпросмотра',
preview: 'Предпросмотр',
viewRunHistory: 'Посмотреть историю запусков',
runHistory: 'История запусков',
goBackToEdit: 'Вернуться к редактору',
conversationLog: 'Журнал разговоров',
features: 'Функции',
debugAndPreview: 'Предпросмотр',
restart: 'Перезапустить',
currentDraft: 'Текущий черновик',
currentDraftUnpublished: 'Текущий черновик не опубликован',
latestPublished: 'Последняя опубликованная версия',
publishedAt: 'Опубликовано',
restore: 'Восстановить',
runApp: 'Запустить приложение',
batchRunApp: 'Пакетный запуск приложения',
accessAPIReference: 'Доступ к справочнику API',
embedIntoSite: 'Встроить на сайт',
addTitle: 'Добавить заголовок...',
addDescription: 'Добавить описание...',
noVar: 'Нет переменной',
searchVar: 'Поиск переменной',
variableNamePlaceholder: 'Имя переменной',
setVarValuePlaceholder: 'Установить значение переменной',
needConnectTip: 'Этот шаг ни к чему не подключен',
maxTreeDepth: 'Максимальный предел {{depth}} узлов на ветку',
needEndNode: 'Необходимо добавить блок "Конец"',
needAnswerNode: 'Необходимо добавить блок "Ответ"',
workflowProcess: 'Процесс рабочего процесса',
notRunning: 'Еще не запущено',
previewPlaceholder: 'Введите текст в поле ниже, чтобы начать отладку чат-бота',
effectVarConfirm: {
title: 'Удалить переменную',
content: 'Переменная используется в других узлах. Вы все еще хотите удалить ее?',
},
insertVarTip: 'Нажмите клавишу "/" чтобы быстро вставить',
processData: 'Обработка данных',
input: 'Вход',
output: 'Выход',
jinjaEditorPlaceholder: 'Введите "/" или "{" для вставки переменной',
viewOnly: 'Только просмотр',
showRunHistory: 'Показать историю запусков',
enableJinja: 'Включить поддержку шаблонов Jinja',
learnMore: 'Узнать больше',
copy: 'Копировать',
duplicate: 'Дублировать',
addBlock: 'Добавить блок',
pasteHere: 'Вставить сюда',
pointerMode: 'Режим указателя',
handMode: 'Режим руки',
model: 'Модель',
workflowAsTool: 'Рабочий процесс как инструмент',
configureRequired: 'Требуется настройка',
configure: 'Настроить',
manageInTools: 'Управление в инструментах',
workflowAsToolTip: 'После обновления рабочего процесса требуется перенастройка инструмента.',
viewDetailInTracingPanel: 'Посмотреть подробности',
syncingData: 'Синхронизация данных, всего несколько секунд.',
importDSL: 'Импортировать DSL',
importDSLTip: 'Текущий черновик будет перезаписан. Экспортируйте рабочий процесс в качестве резервной копии перед импортом.',
backupCurrentDraft: 'Резервное копирование текущего черновика',
chooseDSL: 'Выберите файл DSL(yml)',
overwriteAndImport: 'Перезаписать и импортировать',
importFailure: 'Ошибка импорта',
importSuccess: 'Импорт успешно завершен',
parallelTip: {
click: {
title: 'Щелчок',
desc: 'добавить',
},
drag: {
title: 'Волочить',
desc: 'для подключения',
},
limit: 'Параллелизм ограничен ветвями {{num}}.',
depthLimit: 'Ограничение на количество слоев параллельной вложенности {{num}}',
},
parallelRun: 'Параллельный прогон',
disconnect: 'Разъединять',
jumpToNode: 'Перейти к этому узлу',
addParallelNode: 'Добавить параллельный узел',
parallel: 'ПАРАЛЛЕЛЬНЫЙ',
branch: 'ВЕТКА',
featuresDocLink: 'Подробнее',
fileUploadTip: 'Функции загрузки изображений были обновлены до загрузки файлов.',
featuresDescription: 'Улучшение взаимодействия с пользователем веб-приложения',
ImageUploadLegacyTip: 'Теперь вы можете создавать переменные типа файла в стартовой форме. В будущем мы больше не будем поддерживать функцию загрузки изображений.',
importWarning: 'Осторожность',
importWarningDetails: 'Разница в версии DSL может повлиять на некоторые функции',
openInExplore: 'Открыть в разделе «Обзор»',
onFailure: 'О неудаче',
addFailureBranch: 'Добавить ветвь Fail',
noHistory: 'Без истории',
loadMore: 'Загрузите больше рабочих процессов',
},
env: {
envPanelTitle: 'Переменные среды',
envDescription: 'Переменные среды могут использоваться для хранения конфиденциальной информации и учетных данных. Они доступны только для чтения и могут быть отделены от файла DSL во время экспорта.',
envPanelButton: 'Добавить переменную',
modal: {
title: 'Добавить переменную среды',
editTitle: 'Редактировать переменную среды',
type: 'Тип',
name: 'Имя',
namePlaceholder: 'Имя переменной среды',
value: 'Значение',
valuePlaceholder: 'Значение переменной среды',
secretTip: 'Используется для определения конфиденциальной информации или данных, с настройками DSL, настроенными для предотвращения утечки.',
},
export: {
title: 'Экспортировать секретные переменные среды?',
checkbox: 'Экспортировать секретные значения',
ignore: 'Экспортировать DSL',
export: 'Экспортировать DSL с секретными значениями ',
},
},
chatVariable: {
panelTitle: 'Переменные разговора',
panelDescription: 'Переменные разговора используются для хранения интерактивной информации, которую LLM необходимо запомнить, включая историю разговоров, загруженные файлы, пользовательские настройки. Они доступны для чтения и записи. ',
docLink: 'Посетите нашу документацию, чтобы узнать больше.',
button: 'Добавить переменную',
modal: {
title: 'Добавить переменную разговора',
editTitle: 'Редактировать переменную разговора',
name: 'Имя',
namePlaceholder: 'Имя переменной',
type: 'Тип',
value: 'Значение по умолчанию',
valuePlaceholder: 'Значение по умолчанию, оставьте пустым, чтобы не устанавливать',
description: 'Описание',
descriptionPlaceholder: 'Опишите переменную',
editInJSON: 'Редактировать в JSON',
oneByOne: 'Добавлять по одному',
editInForm: 'Редактировать в форме',
arrayValue: 'Значение',
addArrayValue: 'Добавить значение',
objectKey: 'Ключ',
objectType: 'Тип',
objectValue: 'Значение по умолчанию',
},
storedContent: 'Сохраненный контент',
updatedAt: 'Обновлено в ',
},
changeHistory: {
title: 'История изменений',
placeholder: 'Вы еще ничего не изменили',
clearHistory: 'Очистить историю',
hint: 'Подсказка',
hintText: 'Ваши действия по редактированию отслеживаются в истории изменений, которая хранится на вашем устройстве в течение этого сеанса. Эта история будет очищена, когда вы покинете редактор.',
stepBackward_one: '{{count}} шаг назад',
stepBackward_other: '{{count}} шагов назад',
stepForward_one: '{{count}} шаг вперед',
stepForward_other: '{{count}} шагов вперед',
sessionStart: 'Начало сеанса',
currentState: 'Текущее состояние',
nodeTitleChange: 'Изменено название блока',
nodeDescriptionChange: 'Изменено описание блока',
nodeDragStop: 'Блок перемещен',
nodeChange: 'Блок изменен',
nodeConnect: 'Блок подключен',
nodePaste: 'Блок вставлен',
nodeDelete: 'Блок удален',
nodeAdd: 'Блок добавлен',
nodeResize: 'Размер блока изменен',
noteAdd: 'Заметка добавлена',
noteChange: 'Заметка изменена',
noteDelete: 'Заметка удалена',
edgeDelete: 'Блок отключен',
},
errorMsg: {
fieldRequired: '{{field}} обязательно для заполнения',
authRequired: 'Требуется авторизация',
invalidJson: '{{field}} неверный JSON',
fields: {
variable: 'Имя переменной',
variableValue: 'Значение переменной',
code: 'Код',
model: 'Модель',
rerankModel: 'Модель переранжирования',
visionVariable: 'Переменная зрения',
},
invalidVariable: 'Неверная переменная',
rerankModelRequired: 'Перед включением модели повторного ранжирования убедитесь, что модель успешно настроена в настройках.',
noValidTool: '{{field}} не выбран валидный инструмент',
toolParameterRequired: '{{field}}: параметр [{{param}}] является обязательным',
},
singleRun: {
testRun: 'Тестовый запуск ',
startRun: 'Начать запуск',
running: 'Выполняется',
testRunIteration: 'Итерация тестового запуска',
back: 'Назад',
iteration: 'Итерация',
},
tabs: {
'searchBlock': 'Поиск блока',
'blocks': 'Блоки',
'searchTool': 'Поиск инструмента',
'tools': 'Инструменты',
'allTool': 'Все',
'builtInTool': 'Встроенные',
'customTool': 'Пользовательские',
'workflowTool': 'Рабочий процесс',
'question-understand': 'Понимание вопроса',
'logic': 'Логика',
'transform': 'Преобразование',
'utilities': 'Утилиты',
'noResult': 'Ничего не найдено',
'plugin': 'Плагин',
'agent': 'Агентская стратегия',
},
blocks: {
'start': 'Начало',
'end': 'Конец',
'answer': 'Ответ',
'llm': 'LLM',
'knowledge-retrieval': 'Поиск знаний',
'question-classifier': 'Классификатор вопросов',
'if-else': 'ЕСЛИ/ИНАЧЕ',
'code': 'Код',
'template-transform': 'Шаблон',
'http-request': 'HTTP-запрос',
'variable-assigner': 'Агрегатор переменных',
'variable-aggregator': 'Агрегатор переменных',
'assigner': 'Назначение переменной',
'iteration-start': 'Начало итерации',
'iteration': 'Итерация',
'parameter-extractor': 'Извлечение параметров',
'document-extractor': 'Экстрактор документов',
'list-operator': 'Оператор списка',
'agent': 'Агент',
},
blocksAbout: {
'start': 'Определите начальные параметры для запуска рабочего процесса',
'end': 'Определите конец и тип результата рабочего процесса',
'answer': 'Определите содержимое ответа в чате',
'llm': 'Вызов больших языковых моделей для ответа на вопросы или обработки естественного языка',
'knowledge-retrieval': 'Позволяет запрашивать текстовый контент, связанный с вопросами пользователей, из базы знаний',
'question-classifier': 'Определите условия классификации вопросов пользователей, LLM может определить, как будет развиваться разговор на основе описания классификации',
'if-else': 'Позволяет разделить рабочий процесс на две ветки на основе условий if/else',
'code': 'Выполните фрагмент кода Python или NodeJS для реализации пользовательской логики',
'template-transform': 'Преобразование данных в строку с использованием синтаксиса шаблонов Jinja',
'http-request': 'Разрешить отправку запросов на сервер по протоколу HTTP',
'variable-assigner': 'Объединение переменных из нескольких ветвей в одну переменную для унифицированной настройки подчиненных узлов.',
'assigner': 'Узел назначения переменной используется для назначения значений записываемым переменным (например, переменным разговора).',
'variable-aggregator': 'Объединение переменных из нескольких ветвей в одну переменную для унифицированной настройки подчиненных узлов.',
'iteration': 'Выполнение нескольких шагов над объектом списка до тех пор, пока не будут выведены все результаты.',
'parameter-extractor': 'Используйте LLM для извлечения структурированных параметров из естественного языка для вызова инструментов или HTTP-запросов.',
'list-operator': 'Используется для фильтрации или сортировки содержимого массива.',
'document-extractor': 'Используется для разбора загруженных документов в текстовый контент, который легко воспринимается LLM.',
'agent': 'Вызов больших языковых моделей для ответа на вопросы или обработки естественного языка',
},
operator: {
zoomIn: 'Увеличить',
zoomOut: 'Уменьшить',
zoomTo50: 'Масштаб 50%',
zoomTo100: 'Масштаб 100%',
zoomToFit: 'По размеру',
},
panel: {
userInputField: 'Поле ввода пользователя',
changeBlock: 'Изменить блок',
helpLink: 'Ссылка на справку',
about: 'О программе',
createdBy: 'Создано ',
nextStep: 'Следующий шаг',
addNextStep: 'Добавить следующий блок в этот рабочий процесс',
selectNextStep: 'Выбрать следующий блок',
runThisStep: 'Выполнить этот шаг',
checklist: 'Контрольный список',
checklistTip: 'Убедитесь, что все проблемы решены перед публикацией',
checklistResolved: 'Все проблемы решены',
organizeBlocks: 'Организовать блоки',
change: 'Изменить',
optional: '(необязательно)',
},
nodes: {
common: {
outputVars: 'Выходные переменные',
insertVarTip: 'Вставить переменную',
memory: {
memory: 'Память',
memoryTip: 'Настройки памяти чата',
windowSize: 'Размер окна',
conversationRoleName: 'Имя роли разговора',
user: 'Префикс пользователя',
assistant: 'Префикс помощника',
},
memories: {
title: 'Воспоминания',
tip: 'Память чата',
builtIn: 'Встроенные',
},
errorHandle: {
none: {
title: 'Никакой',
desc: 'Узел перестанет работать, если произойдет исключение и оно не будет обработано',
},
defaultValue: {
title: 'Значение по умолчанию',
desc: 'При возникновении ошибки укажите статическое выходное содержимое.',
tip: 'При ошибке будет возвращено значение ниже.',
inLog: 'Исключение узла, вывод в соответствии со значениями по умолчанию.',
output: 'Выходное значение по умолчанию',
},
failBranch: {
desc: 'При возникновении ошибки будет выполнена ветвь исключения',
customize: 'Перейдите на холст, чтобы настроить логику fail branch.',
inLog: 'Исключение узла, автоматически выполнит ветвь fail. Выходные данные узла вернут тип ошибки и сообщение об ошибке и передадут их нижестоящему потоку.',
title: 'Неудачная ветвь',
customizeTip: 'Когда ветвь fail активирована, исключения, созданные узлами, не завершат процесс. Вместо этого он автоматически выполнит предопределенную ветвь fail, что позволит вам гибко предоставлять сообщения об ошибках, отчеты, исправления или пропускать действия.',
},
partialSucceeded: {
tip: 'В процессе есть {{num}} узлов, которые работают ненормально, пожалуйста, перейдите к трассировке, чтобы проверить логи.',
},
title: 'Обработка ошибок',
tip: 'Стратегия обработки исключений, запускаемая при обнаружении исключения на узле.',
},
retry: {
retry: 'Снова пробовать',
retryOnFailure: 'Повторная попытка при неудаче',
maxRetries: 'максимальное количество повторных попыток',
retryInterval: 'Интервал повторных попыток',
retryTimes: 'Повторите {{раз}} раз при неудаче',
retrying: 'Повтор...',
retrySuccessful: 'Повторить попытку успешно',
retryFailed: 'Повторная попытка не удалась',
times: 'раз',
ms: 'госпожа',
retryFailedTimes: 'Повторные попытки {{times}} не увенчались успехом',
retries: '{{число}} Повторных попыток',
},
},
start: {
required: 'обязательно',
inputField: 'Поле ввода',
builtInVar: 'Встроенные переменные',
outputVars: {
query: 'Ввод пользователя',
memories: {
des: 'История разговоров',
type: 'тип сообщения',
content: 'содержимое сообщения',
},
files: 'Список файлов',
},
noVarTip: 'Установите входные данные, которые можно использовать в рабочем процессе',
},
end: {
outputs: 'Выходы',
output: {
type: 'тип вывода',
variable: 'выходная переменная',
},
type: {
'none': 'Нет',
'plain-text': 'Простой текст',
'structured': 'Структурированный',
},
},
answer: {
answer: 'Ответ',
outputVars: 'Выходные переменные',
},
llm: {
model: 'модель',
variables: 'переменные',
context: 'контекст',
contextTooltip: 'Вы можете импортировать знания как контекст',
notSetContextInPromptTip: 'Чтобы включить функцию контекста, пожалуйста, заполните переменную контекста в PROMPT.',
prompt: 'подсказка',
roleDescription: {
system: 'Дайте высокоуровневые инструкции для разговора',
user: 'Предоставьте инструкции, запросы или любой текстовый ввод для модели',
assistant: 'Ответы модели на основе сообщений пользователя',
},
addMessage: 'Добавить сообщение',
vision: 'зрение',
files: 'Файлы',
resolution: {
name: 'Разрешение',
high: 'Высокое',
low: 'Низкое',
},
outputVars: {
output: 'Создать контент',
usage: 'Информация об использовании модели',
},
singleRun: {
variable: 'Переменная',
},
sysQueryInUser: 'sys.query в сообщении пользователя обязателен',
},
knowledgeRetrieval: {
queryVariable: 'Переменная запроса',
knowledge: 'Знания',
outputVars: {
output: 'Извлеченные сегментированные данные',
content: 'Сегментированный контент',
title: 'Сегментированный заголовок',
icon: 'Сегментированный значок',
url: 'Сегментированный URL',
metadata: 'Другие метаданные',
},
},
http: {
inputVars: 'Входные переменные',
api: 'API',
apiPlaceholder: 'Введите URL, введите "/" для вставки переменной',
notStartWithHttp: 'API должен начинаться с http:// или https://',
key: 'Ключ',
value: 'Значение',
bulkEdit: 'Массовое редактирование',
keyValueEdit: 'Редактирование ключа-значения',
headers: 'Заголовки',
params: 'Параметры',
body: 'Тело',
outputVars: {
body: 'Содержимое ответа',
statusCode: 'Код состояния ответа',
headers: 'Список заголовков ответа JSON',
files: 'Список файлов',
},
authorization: {
'authorization': 'Авторизация',
'authorizationType': 'Тип авторизации',
'no-auth': 'Нет',
'api-key': 'API-ключ',
'auth-type': 'Тип аутентификации',
'basic': 'Базовая',
'bearer': 'Bearer',
'custom': 'Пользовательская',
'api-key-title': 'API-ключ',
'header': 'Заголовок',
},
insertVarPlaceholder: 'введите "/" для вставки переменной',
timeout: {
title: 'Тайм-аут',
connectLabel: 'Тайм-аут подключения',
connectPlaceholder: 'Введите тайм-аут подключения в секундах',
readLabel: 'Тайм-аут чтения',
readPlaceholder: 'Введите тайм-аут чтения в секундах',
writeLabel: 'Тайм-аут записи',
writePlaceholder: 'Введите тайм-аут записи в секундах',
},
type: 'Тип',
binaryFileVariable: 'Переменная двоичного файла',
extractListPlaceholder: 'Введите индекс элемента списка, введите \'/\' вставьте переменную',
curl: {
placeholder: 'Вставьте сюда строку cURL',
title: 'Импорт из cURL',
},
},
code: {
inputVars: 'Входные переменные',
outputVars: 'Выходные переменные',
advancedDependencies: 'Расширенные зависимости',
advancedDependenciesTip: 'Добавьте сюда некоторые предварительно загруженные зависимости, которые занимают больше времени для потребления или не являются встроенными по умолчанию',
searchDependencies: 'Поиск зависимостей',
},
templateTransform: {
inputVars: 'Входные переменные',
code: 'Код',
codeSupportTip: 'Поддерживает только Jinja2',
outputVars: {
output: 'Преобразованный контент',
},
},
ifElse: {
if: 'Если',
else: 'Иначе',
elseDescription: 'Используется для определения логики, которая должна быть выполнена, когда условие if не выполняется.',
and: 'и',
or: 'или',
operator: 'Оператор',
notSetVariable: 'Пожалуйста, сначала установите переменную',
comparisonOperator: {
'contains': 'содержит',
'not contains': 'не содержит',
'start with': 'начинается с',
'end with': 'заканчивается на',
'is': 'равно',
'is not': 'не равно',
'empty': 'пусто',
'not empty': 'не пусто',
'null': 'null',
'not null': 'не null',
'regex match': 'Совпадение с регулярным выражением',
'all of': 'все',
'not in': 'не в',
'not exists': 'не существует',
'in': 'в',
'exists': 'Существует',
},
enterValue: 'Введите значение',
addCondition: 'Добавить условие',
conditionNotSetup: 'Условие НЕ настроено',
selectVariable: 'Выберите переменную...',
optionName: {
audio: 'Аудио',
localUpload: 'Локальная загрузка',
doc: 'Доктор',
image: 'Образ',
video: 'Видео',
url: 'URL-адрес',
},
select: 'Выбирать',
addSubVariable: 'Подпеременная',
},
variableAssigner: {
title: 'Назначить переменные',
outputType: 'Тип вывода',
varNotSet: 'Переменная не установлена',
noVarTip: 'Добавьте переменные, которые нужно назначить',
type: {
string: 'Строка',
number: 'Число',
object: 'Объект',
array: 'Массив',
},
aggregationGroup: 'Группа агрегации',
aggregationGroupTip: 'Включение этой функции позволяет агрегатору переменных агрегировать несколько наборов переменных.',
addGroup: 'Добавить группу',
outputVars: {
varDescribe: 'Вывод {{groupName}}',
},
setAssignVariable: 'Установить переменную назначения',
},
assigner: {
'assignedVariable': 'Назначенная переменная',
'writeMode': 'Режим записи',
'writeModeTip': 'Режим добавления: доступен только для переменных массива.',
'over-write': 'Перезаписать',
'append': 'Добавить',
'plus': 'Плюс',
'clear': 'Очистить',
'setVariable': 'Установить переменную',
'variable': 'Переменная',
'operations': {
'-=': '-=',
'+=': '+=',
'clear': 'Ясный',
'extend': 'Вытягивать',
'set': 'Набор',
'overwrite': 'Перезаписать',
'/=': '/=',
'*=': '*=',
'title': 'Операция',
'over-write': 'Перезаписать',
'append': 'Прибавлять',
},
'variables': 'Переменные',
'noAssignedVars': 'Нет доступных назначенных переменных',
'noVarTip': 'Нажмите кнопку "+", чтобы добавить переменные',
'setParameter': 'Установите параметр...',
'assignedVarsDescription': 'Назначаемые переменные должны быть доступными для записи, например переменными беседы.',
'varNotSet': 'Переменная НЕ установлена',
'selectAssignedVariable': 'Выберите назначенную переменную...',
},
tool: {
toAuthorize: 'Авторизовать',
inputVars: 'Входные переменные',
outputVars: {
text: 'контент, сгенерированный инструментом',
files: {
title: 'файлы, сгенерированные инструментом',
type: 'Поддерживаемый тип. Сейчас поддерживаются только изображения',
transfer_method: 'Метод передачи. Значение - remote_url или local_file',
url: 'URL изображения',
upload_file_id: 'Идентификатор загруженного файла',
},
json: 'json, сгенерированный инструментом',
},
},
questionClassifiers: {
model: 'модель',
inputVars: 'Входные переменные',
outputVars: {
className: 'Имя класса',
},
class: 'Класс',
classNamePlaceholder: 'Введите имя вашего класса',
advancedSetting: 'Расширенные настройки',
topicName: 'Название темы',
topicPlaceholder: 'Введите название вашей темы',
addClass: 'Добавить класс',
instruction: 'Инструкция',
instructionTip: 'Введите дополнительные инструкции, чтобы помочь классификатору вопросов лучше понять, как классифицировать вопросы.',
instructionPlaceholder: 'Введите вашу инструкцию',
},
parameterExtractor: {
inputVar: 'Входная переменная',
extractParameters: 'Извлечь параметры',
importFromTool: 'Импортировать из инструментов',
addExtractParameter: 'Добавить параметр для извлечения',
addExtractParameterContent: {
name: 'Имя',
namePlaceholder: 'Имя извлекаемого параметра',
type: 'Тип',
typePlaceholder: 'Тип извлекаемого параметра',
description: 'Описание',
descriptionPlaceholder: 'Описание извлекаемого параметра',
required: 'Обязательный',
requiredContent: 'Обязательный используется только в качестве ссылки для вывода модели, а не для обязательной проверки вывода параметра.',
},
extractParametersNotSet: 'Параметры для извлечения не настроены',
instruction: 'Инструкция',
instructionTip: 'Введите дополнительные инструкции, чтобы помочь извлекателю параметров понять, как извлекать параметры.',
advancedSetting: 'Расширенные настройки',
reasoningMode: 'Режим рассуждения',
reasoningModeTip: 'Вы можете выбрать соответствующий режим рассуждения, основываясь на способности модели реагировать на инструкции для вызова функций или подсказки.',
isSuccess: 'Успешно. В случае успеха значение равно 1, в случае сбоя - 0.',
errorReason: 'Причина ошибки',
},
iteration: {
deleteTitle: 'Удалить узел итерации?',
deleteDesc: 'Удаление узла итерации приведет к удалению всех дочерних узлов',
input: 'Вход',
output: 'Выходные переменные',
iteration_one: '{{count}} Итерация',
iteration_other: '{{count}} Итераций',
currentIteration: 'Текущая итерация',
ErrorMethod: {
operationTerminated: 'Прекращено',
continueOnError: 'продолжить по ошибке',
removeAbnormalOutput: 'удалить аномальный вывод',
},
comma: ',',
error_other: '{{Количество}} Ошибки',
errorResponseMethod: 'Метод реагирования на ошибку',
MaxParallelismTitle: 'Максимальный параллелизм',
parallelModeUpper: 'ПАРАЛЛЕЛЬНЫЙ РЕЖИМ',
error_one: '{{Количество}} Ошибка',
parallelModeEnableTitle: 'Параллельный режим включен',
parallelMode: 'Параллельный режим',
parallelPanelDesc: 'В параллельном режиме задачи в итерации поддерживают параллельное выполнение.',
parallelModeEnableDesc: 'В параллельном режиме задачи в итерациях поддерживают параллельное выполнение. Вы можете настроить это на панели свойств справа.',
MaxParallelismDesc: 'Максимальный параллелизм используется для управления количеством задач, выполняемых одновременно в одной итерации.',
answerNodeWarningDesc: 'Предупреждение о параллельном режиме: узлы ответов, присвоение переменных диалога и постоянные операции чтения и записи в итерациях могут вызывать исключения.',
},
note: {
addNote: 'Добавить заметку',
editor: {
placeholder: 'Напишите свою заметку...',
small: 'Маленький',
medium: 'Средний',
large: 'Большой',
bold: 'Жирный',
italic: 'Курсив',
strikethrough: 'Зачеркнутый',
link: 'Ссылка',
openLink: 'Открыть',
unlink: 'Удалить ссылку',
enterUrl: 'Введите URL...',
invalidUrl: 'Неверный URL',
bulletList: 'Маркированный список',
showAuthor: 'Показать автора',
},
},
docExtractor: {
outputVars: {
text: 'Извлеченный текст',
},
learnMore: 'Подробнее',
inputVar: 'Входная переменная',
supportFileTypes: 'Поддерживаемые типы файлов: {{types}}.',
},
listFilter: {
outputVars: {
last_record: 'Последняя запись',
result: 'Фильтрация результата',
first_record: 'Первая запись',
},
desc: 'DESC',
asc: 'ASC',
filterCondition: 'Условие фильтра',
filterConditionComparisonOperator: 'Оператор сравнения условий фильтра',
inputVar: 'Входная переменная',
limit: 'Топ N',
orderBy: 'Заказать по',
filterConditionKey: 'Ключ условия фильтра',
selectVariableKeyPlaceholder: 'Выбор ключа подпеременной',
filterConditionComparisonValue: 'Значение условия фильтра',
extractsCondition: 'Извлечение элемента N',
},
agent: {
strategy: {
tooltip: 'Различные агентные стратегии определяют, как система планирует и выполняет многоступенчатые вызовы инструментов',
configureTip: 'Пожалуйста, настройте агентскую стратегию.',
searchPlaceholder: 'Агентская стратегия поиска',
selectTip: 'Выберите агентскую стратегию',
shortLabel: 'Стратегия',
configureTipDesc: 'После настройки агентской стратегии этот узел автоматически загрузит оставшиеся конфигурации. Стратегия будет влиять на механизм многоступенчатого мышления инструмента.',
label: 'Агентная стратегия',
},
pluginInstaller: {
install: 'Устанавливать',
installing: 'Установка',
},
modelNotInMarketplace: {
title: 'Модель не установлена',
manageInPlugins: 'Управление в плагинах',
desc: 'Эта модель устанавливается из локального репозитория или репозитория GitHub. Пожалуйста, используйте после установки.',
},
modelNotSupport: {
title: 'Неподдерживаемая модель',
descForVersionSwitch: 'Установленная версия плагина не предоставляет эту модель. Нажмите, чтобы переключить версию.',
desc: 'Установленная версия плагина не предоставляет эту модель.',
},
modelSelectorTooltips: {
deprecated: 'Эта модель устарела',
},
outputVars: {
files: {
transfer_method: 'Способ переноса. Ценность составляет remote_url или local_file',
url: 'URL изображения',
upload_file_id: 'Загрузить id файла',
type: 'Тип поддержки. Теперь только вспомогательное изображение',
title: 'Файлы, созданные агентом',
},
text: 'Контент, генерируемый агентом',
json: 'JSON, сгенерированный агентом',
},
checkList: {
strategyNotSelected: 'Стратегия не выбрана',
},
installPlugin: {
install: 'Устанавливать',
title: 'Установить плагин',
desc: 'О программе установки следующего плагина',
cancel: 'Отмена',
changelog: 'Журнал изменений',
},
tools: 'Инструменты',
pluginNotInstalled: 'Этот плагин не установлен',
strategyNotFoundDesc: 'Установленная версия плагина не предусматривает такой стратегии.',
toolNotInstallTooltip: '{{tool}} не установлен',
linkToPlugin: 'Ссылка на плагины',
learnMore: 'Подробнее',
modelNotInstallTooltip: 'Данная модель не устанавливается',
modelNotSelected: 'Модель не выбрана',
toolNotAuthorizedTooltip: '{{инструмент}} Не авторизован',
unsupportedStrategy: 'Неподдерживаемая стратегия',
pluginNotInstalledDesc: 'Этот плагин устанавливается с GitHub. Пожалуйста, перейдите в раздел Плагины для переустановки',
model: 'модель',
strategyNotFoundDescAndSwitchVersion: 'Установленная версия плагина не предусматривает такой стратегии. Нажмите, чтобы переключить версию.',
notAuthorized: 'Не авторизован',
strategyNotSet: 'Агентская стратегия не задана',
strategyNotInstallTooltip: '{{strategy}} не установлен',
toolbox: 'ящик для инструментов',
pluginNotFoundDesc: 'Этот плагин устанавливается с GitHub. Пожалуйста, перейдите в раздел Плагины для переустановки',
configureModel: 'Сконфигурировать модель',
maxIterations: 'Максимальное количество итераций',
},
},
tracing: {
stopBy: 'Остановлено {{user}}',
},
variableReference: {
assignedVarsDescription: 'Назначаемые переменные должны быть доступными для записи, такими как',
noAssignedVars: 'Нет доступных назначенных переменных',
noVarsForOperation: 'Переменные для присвоения выбранной операции отсутствуют.',
conversationVars: 'Переменные беседы',
noAvailableVars: 'Нет доступных переменных',
},
}
export default translation