chore: add missing translations (#28631)

This commit is contained in:
yyh
2025-11-25 14:52:17 +08:00
committed by GitHub
parent 58be008676
commit 82dac2eba0
250 changed files with 9194 additions and 324 deletions

View File

@@ -396,6 +396,7 @@ const translation = {
'both': 'Оба',
'localUpload': 'Локальная загрузка',
'maxNumberOfUploads': 'Максимальное количество загрузок',
'maxNumberTip': 'Документ < {{docLimit}}, изображение < {{imgLimit}}, аудио < {{audioLimit}}, видео < {{videoLimit}}',
'uploadFileTypes': 'Типы файлов загрузки',
'single-file': 'Друг за другом',
'multi-files': 'Список файлов',

View File

@@ -19,6 +19,7 @@ const translation = {
tokens: 'ТОКЕНЫ',
user: 'Конечный пользователь или аккаунт',
version: 'ВЕРСИЯ',
triggered_from: 'СРАБАТЫВАЕТ ОТ',
},
pagination: {
previous: 'Предыдущий',
@@ -97,6 +98,15 @@ const translation = {
finalProcessing: 'Окончательная обработка',
},
dateFormat: 'ДД/ММ/ГГГГ',
triggerBy: {
debugging: 'Отладка',
appRun: 'Веб-приложение',
webhook: 'Вебхук',
schedule: 'Расписание',
plugin: 'Плагин',
ragPipelineRun: 'Конвейер RAG',
ragPipelineDebugging: 'Отладка RAG',
},
}
export default translation

View File

@@ -114,7 +114,11 @@ const translation = {
},
},
launch: 'Баркас',
enableTooltip: {},
enableTooltip: {
description: 'Чтобы включить эту функцию, добавьте на холст узел ввода пользователя. (Может уже существовать в черновике, вступает в силу после публикации)',
learnMore: 'Узнать больше',
},
title: 'Веб-приложение',
},
apiInfo: {
title: 'API серверной части',
@@ -126,7 +130,14 @@ const translation = {
running: 'В работе',
disable: 'Отключено',
},
triggerInfo: {},
triggerInfo: {
title: 'Триггеры',
explanation: 'Управление триггерами рабочего процесса',
triggersAdded: 'Добавлены триггеры',
noTriggerAdded: 'Триггер не добавлен',
triggerStatusDescription: 'Статус узла триггера отображается здесь. (Может уже существовать в черновике, вступает в силу после публикации)',
learnAboutTriggers: 'Узнайте о триггерах',
},
disableTooltip: {
triggerMode: 'Функция {{feature}} не поддерживается в режиме узла триггера.',
},

View File

@@ -98,6 +98,8 @@ const translation = {
triggerEvents: {
unlimited: 'Неограниченные триггерные события',
tooltip: 'Количество событий, которые автоматически запускают рабочие процессы с помощью плагина, расписания или вебхука.',
sandbox: '{{count,number}} События триггера',
professional: '{{count,number}} Событий срабатывания/месяц',
},
workflowExecution: {
faster: 'Более быстрое выполнение рабочих процессов',
@@ -107,6 +109,11 @@ const translation = {
},
startNodes: {
unlimited: 'Неограниченные триггеры/рабочий процесс',
limited: 'До {{count}} триггеров/рабочих процессов',
},
title: {
plans: 'планы',
description: 'Выберите план, который лучше всего соответствует потребностям вашей команды.',
},
},
plans: {
@@ -129,16 +136,14 @@ const translation = {
name: 'Корпоративный',
description: 'Получите полный набор возможностей и поддержку для крупномасштабных критически важных систем.',
includesTitle: 'Все в командном плане, плюс:',
features: {
},
features: ['Масштабируемые решения для развертывания корпоративного уровня', 'Разрешение на коммерческую лицензию', 'Эксклюзивные корпоративные функции', 'Несколько рабочих пространств и корпоративное управление', 'SSO', 'Согласованные SLA с партнёрами Dify', 'Расширенные функции безопасности и управления', 'Обновления и обслуживание от Dify официально', 'Профессиональная техническая поддержка'],
price: 'Пользовательский',
priceTip: 'Только годовая подписка',
for: 'Для команд большого размера',
btnText: 'Связаться с отделом продаж',
},
community: {
features: {
},
features: ['Все основные функции выпущены в публичный репозиторий', 'Одиночное рабочее пространство', 'Соответствует лицензии с открытым исходным кодом Dify'],
name: 'Сообщество',
btnText: 'Начните с сообщества',
price: 'Свободно',
@@ -147,8 +152,7 @@ const translation = {
for: 'Для отдельных пользователей, малых команд или некоммерческих проектов',
},
premium: {
features: {
},
features: ['Самоуправляемая надежность у различных облачных провайдеров', 'Одиночное рабочее пространство', 'Настройка логотипа и брендинга веб-приложения', 'Приоритетная поддержка по электронной почте и в чате'],
description: 'Для средних организаций и команд',
includesTitle: 'Всё из Сообщества, плюс:',
priceTip: 'На основе облачного маркетплейса',
@@ -184,6 +188,7 @@ const translation = {
documentsUploadQuota: 'Квота на загрузку документов',
perMonth: 'в месяц',
triggerEvents: 'Триггерные события',
resetsIn: 'Сброс через {{count,number}} дней',
},
teamMembers: 'Члены команды',
triggerLimitModal: {

View File

@@ -65,6 +65,12 @@ const translation = {
no: 'Нет',
deleteConfirmTitle: 'Удалить?',
confirmAction: 'Пожалуйста, подтвердите ваше действие.',
noSearchResults: 'Ничего {{content}} не найдено',
resetKeywords: 'Сбросить ключевые слова',
selectCount: '{{count}} Выбран',
searchCount: 'Найти {{count}} {{content}}',
noSearchCount: '0 {{content}}',
now: 'Сейчас',
},
errorMsg: {
fieldRequired: '{{field}} обязательно',
@@ -73,6 +79,7 @@ const translation = {
placeholder: {
input: 'Пожалуйста, введите',
select: 'Пожалуйста, выберите',
search: 'Поиск...',
},
voice: {
language: {
@@ -769,6 +776,13 @@ const translation = {
label: {
optional: '(необязательно)',
},
noData: 'Нет данных',
dynamicSelect: {
error: 'Не удалось загрузить параметры',
noData: 'Нет доступных вариантов',
loading: 'Загрузка параметров...',
selected: '{{count}} выбрано',
},
}
export default translation

View File

@@ -81,7 +81,10 @@ const translation = {
ok: 'ОК',
},
learnMore: 'Подробнее',
sort: {},
sort: {
uploadTime: 'Время загрузки',
hitCount: 'Количество извлечений',
},
},
metadata: {
title: 'Метаданные',

View File

@@ -34,6 +34,7 @@ const translation = {
publishPipeline: {
success: {
message: 'Опубликован конвейер знаний',
tip: '<CustomLink>Перейдите в «Документы»</CustomLink>, чтобы добавить или управлять документами.',
},
error: {
message: 'Не удалось опубликовать конвейер знаний',
@@ -56,6 +57,7 @@ const translation = {
details: {
structure: 'Структура',
structureTooltip: 'Структура блоков определяет порядок разделения и индексирования документов (в соответствии с режимами «Общие», «Родитель-потомок» и «Вопросы и ответы») и является уникальной для каждой базы знаний.',
createdBy: 'По {{author}}',
},
testRun: {
steps: {
@@ -112,23 +114,32 @@ const translation = {
characters: 'письмена',
backToDataSource: 'Источник данных',
title: 'Добавить документы',
selectOnlineDocumentTip: 'Обработать до {{count}} страниц',
selectOnlineDriveTip: 'Обрабатывайте до {{count}} файлов, максимум {{fileSize}} МБ каждый',
},
documentSettings: {
title: 'Настройки документа',
},
onlineDocument: {},
onlineDocument: {
pageSelectorTitle: '{{name}} страниц',
},
onlineDrive: {
breadcrumbs: {
allFiles: 'Все файлы',
searchPlaceholder: 'Поиск файлов...',
allBuckets: 'Все корзины облачного хранилища',
searchResult: 'Найти {{searchResultsLength}} элементов в папке "{{folderName}}"',
},
resetKeywords: 'Сброс ключевых слов',
emptyFolder: 'Эта папка пуста',
emptySearchResult: 'Предметы не найдены',
notSupportedFileType: 'Этот тип файлов не поддерживается',
notConnected: '{{name}} не подключен',
notConnectedTip: 'Чтобы синхронизироваться с {{name}}, сначала необходимо установить соединение с {{name}}.',
},
credentialSelector: {
name: '{{credentialName}}\'s {{pluginName}}',
},
credentialSelector: {},
conversion: {
confirm: {
title: 'Подтверждение',
@@ -149,6 +160,7 @@ const translation = {
knowledgeNameAndIconPlaceholder: 'Пожалуйста, введите название базы знаний',
editPipelineInfo: 'Редактирование сведений о воронке продаж',
knowledgeDescriptionPlaceholder: 'Опишите, что входит в эту базу знаний. Подробное описание позволяет ИИ более точно получать доступ к содержимому набора данных. Если значение пусто, Dify будет использовать стратегию попадания по умолчанию. (Дополнительный)',
configurationTip: 'Настроить {{pluginName}}',
}
export default translation

View File

@@ -234,6 +234,10 @@ const translation = {
title: 'Сервисный API',
disabled: 'Отключено',
},
docAllEnabled_one: 'Документ {{count}} включен',
docAllEnabled_other: 'Все документы {{count}} включены',
partialEnabled_one: 'Всего {{count}} документов, доступно {{num}}',
partialEnabled_other: 'Всего {{count}} документов, доступно {{num}}',
}
export default translation

View File

@@ -52,6 +52,7 @@ const translation = {
},
isAboutToExpire: {
summary: 'Не волнуйся — это не повлияет на твою текущую подписку, но ты не получишь образовательную скидку при её продлении, если не подтвердишь свой статус снова.',
title: 'Статус вашего образования истечет {{date}}',
},
stillInEducation: {
title: 'Все еще учишься?',

View File

@@ -28,10 +28,12 @@ const translation = {
viewDetails: 'Подробнее',
loading: 'Обработка... Подождите',
error: 'Ошибка произошла во время выполнения',
footerTip: 'В режиме тестового запуска предварительный просмотр до {{count}} фрагментов',
},
},
ragToolSuggestions: {
title: 'Предложения по КГР',
noRecommendationPlugins: 'Рекомендуемые плагины отсутствуют, найдите больше на <CustomLink>Marketplace</CustomLink>',
},
}

View File

@@ -0,0 +1,186 @@
const translation = {
subscription: {
title: 'Подписки',
listNum: '{{num}} подписки',
empty: {
title: 'Нет подписок',
button: 'Новая подписка',
},
createButton: {
oauth: 'Новая подписка с OAuth',
apiKey: 'Новая подписка с ключом API',
manual: 'Вставьте URL для создания новой подписки',
},
createSuccess: 'Подписка успешно создана',
createFailed: 'Не удалось создать подписку',
maxCount: 'Макс {{num}} подписок',
selectPlaceholder: 'Выберите подписку',
noSubscriptionSelected: 'Подписка не выбрана',
subscriptionRemoved: 'Подписка удалена',
list: {
title: 'Подписки',
addButton: 'Добавить',
tip: 'Получать события через подписку',
item: {
enabled: 'Включено',
disabled: 'Отключено',
credentialType: {
api_key: 'API ключ',
oauth2: 'OAuth',
unauthorized: 'Руководство',
},
actions: {
delete: 'Удалить',
deleteConfirm: {
title: 'Удалить {{name}}?',
success: 'Подписка {{name}} успешно удалена',
error: 'Не удалось удалить подписку {{name}}',
content: 'После удаления эта подписка не может быть восстановлена. Пожалуйста, подтвердите.',
contentWithApps: 'Текущая подписка используется {{count}} приложениями. Удаление подписки приведет к тому, что настроенные приложения перестанут получать события подписки.',
confirm: 'Подтвердить удаление',
cancel: 'Отмена',
confirmInputWarning: 'Пожалуйста, введите правильное имя для подтверждения.',
confirmInputPlaceholder: 'Введите "{{name}}", чтобы подтвердить.',
confirmInputTip: 'Пожалуйста, введите «{{name}}», чтобы подтвердить.',
},
},
status: {
active: 'Активный',
inactive: 'Неактивный',
},
usedByNum: 'Используется {{num}} рабочими процессами',
noUsed: 'Рабочий процесс не используется',
},
},
addType: {
title: 'Добавить подписку',
description: 'Выберите, как вы хотите создать подписку на триггер',
options: {
apikey: {
title: 'Создать с помощью ключа API',
description: 'Автоматически создавать подписку с использованием учетных данных API',
},
oauth: {
title: 'Создать с помощью OAuth',
description: 'Авторизуйтесь через стороннюю платформу, чтобы создать подписку',
clientSettings: 'Настройки клиента OAuth',
clientTitle: 'Клиент OAuth',
default: 'По умолчанию',
custom: 'Пользовательский',
},
manual: {
title: 'Ручная настройка',
description: 'Вставьте URL для создания новой подписки',
tip: 'Настроить URL на сторонней платформе вручную',
},
},
},
},
modal: {
steps: {
verify: 'Проверить',
configuration: 'Конфигурация',
},
common: {
cancel: 'Отмена',
back: 'Назад',
next: 'Далее',
create: 'Создать',
verify: 'Проверить',
authorize: 'Авторизовать',
creating: 'Создание...',
verifying: 'Проверка...',
authorizing: 'Авторизация...',
},
oauthRedirectInfo: 'Так как для этого поставщика инструментов не найдены клиентские секреты системы, необходимо настроить его вручную, для redirect_uri используйте',
apiKey: {
title: 'Создать с помощью ключа API',
verify: {
title: 'Проверить учетные данные',
description: 'Пожалуйста, предоставьте свои учетные данные API для проверки доступа',
error: 'Проверка учетных данных не удалась. Пожалуйста, проверьте ваш API-ключ.',
success: 'Учётные данные успешно проверены',
},
configuration: {
title: 'Настроить подписку',
description: 'Настройте параметры подписки',
},
},
oauth: {
title: 'Создать с помощью OAuth',
authorization: {
title: 'Авторизация OAuth',
description: 'Разрешить Dify доступ к вашему аккаунту',
redirectUrl: 'URL перенаправления',
redirectUrlHelp: 'Используйте этот URL в настройках вашего приложения OAuth',
authorizeButton: 'Авторизоваться с {{provider}}',
waitingAuth: 'Ожидание авторизации...',
authSuccess: 'Авторизация прошла успешно',
authFailed: 'Не удалось получить информацию об авторизации OAuth',
waitingJump: 'Авторизовано, ожидаем прыжка',
},
configuration: {
title: 'Настроить подписку',
description: 'Настройте параметры подписки после авторизации',
success: 'Настройка OAuth выполнена успешно',
failed: 'Сбой настройки OAuth',
},
remove: {
success: 'OAuth успешно удалён',
failed: 'Сбой при удалении OAuth',
},
save: {
success: 'Настройка OAuth успешно сохранена',
},
},
manual: {
title: 'Ручная настройка',
description: 'Настройте подписку на вебхук вручную',
logs: {
title: 'Журналы запросов',
request: 'Запрос',
loading: 'Ожидание запроса от {{pluginName}}...',
},
},
form: {
subscriptionName: {
label: 'Название подписки',
placeholder: 'Введите название подписки',
required: 'Требуется название подписки',
},
callbackUrl: {
label: 'URL для обратного вызова',
description: 'Этот URL будет получать события вебхука',
tooltip: 'Предоставьте общедоступную точку доступа, которая может принимать обратные вызовы от поставщика триггеров.',
placeholder: 'Генерация...',
privateAddressWarning: 'Похоже, что этот URL является внутренним адресом, из-за чего запросы вебхука могут не выполняться. Вы можете изменить TRIGGER_URL на публичный адрес.',
},
},
errors: {
createFailed: 'Не удалось создать подписку',
verifyFailed: 'Не удалось проверить учетные данные',
authFailed: 'Авторизация не удалась',
networkError: 'Ошибка сети, пожалуйста, попробуйте ещё раз',
},
},
events: {
title: 'Доступные события',
description: 'События, на которые может подписываться этот плагин триггера',
empty: 'События отсутствуют',
event: 'Событие',
events: 'События',
actionNum: '{{num}} {{event}} ВКЛЮЧЕНО',
item: {
parameters: 'параметры {{count}}',
noParameters: 'Нет параметров',
},
output: 'Вывод',
},
node: {
status: {
warning: 'Отключить',
},
},
}
export default translation

View File

@@ -7,6 +7,7 @@ const translation = {
bundles: 'Пакеты',
agents: 'Агентские стратегии',
datasources: 'Источники данных',
triggers: 'Триггеры',
},
categorySingle: {
bundle: 'Связка',
@@ -15,6 +16,7 @@ const translation = {
extension: 'Расширение',
tool: 'Инструмент',
datasource: 'Источник данных',
trigger: 'Спусковой крючок',
},
list: {
source: {
@@ -45,6 +47,7 @@ const translation = {
install: 'Устанавливать',
update: 'Обновлять',
checkUpdate: 'Проверить обновление',
back: 'Назад',
},
toolSelector: {
placeholder: 'Выберите инструмент...',
@@ -306,6 +309,12 @@ const translation = {
partialUPdate: 'Только следующие {{num}} плагины будут обновляться автоматически',
changeTimezone: 'Чтобы изменить часовой пояс, перейдите в <setTimezone>Настройки</setTimezone>',
},
readmeInfo: {
title: РОЧТИ_МЕНЯ',
needHelpCheckReadme: 'Нужна помощь? Ознакомьтесь с файлом README.',
noReadmeAvailable: 'README недоступен',
failedToFetch: 'Не удалось получить README',
},
}
export default translation

View File

@@ -113,6 +113,15 @@ const translation = {
currentView: 'Текущий вид',
currentWorkflow: 'Текущий рабочий процесс',
moreActions: 'Больше действий',
listening: 'Слушание',
chooseStartNodeToRun: 'Выберите начальный узел для запуска',
runAllTriggers: 'Запустить все триггеры',
features: 'Функции',
featuresDescription: 'Улучшить пользовательский опыт веб-приложения',
featuresDocLink: 'Узнать больше',
needAdd: 'Необходимо добавить узел {{node}}',
needStartNode: 'Необходимо добавить хотя бы один начальный узел',
workflowAsToolDisabledHint: 'Опубликуйте последний рабочий процесс и убедитесь, что подключен узел ввода пользователя, прежде чем настраивать его как инструмент.',
},
env: {
envPanelTitle: 'Переменные среды',
@@ -219,6 +228,7 @@ const translation = {
rerankModelRequired: 'Перед включением модели повторного ранжирования убедитесь, что модель успешно настроена в настройках.',
noValidTool: '{{field}} не выбран валидный инструмент',
toolParameterRequired: '{{field}}: параметр [{{param}}] является обязательным',
startNodeRequired: 'Пожалуйста, сначала добавьте начальный узел перед {{operation}}',
},
singleRun: {
testRun: 'Тестовый запуск ',
@@ -250,6 +260,21 @@ const translation = {
'allAdded': 'Все добавлено',
'sources': 'Источников',
'searchDataSource': 'Поиск источника данных',
'start': 'Начать',
'searchTrigger': 'Триггеры поиска...',
'allTriggers': 'Все триггеры',
'noPluginsFound': 'Плагины не найдены',
'requestToCommunity': 'Запросы к сообществу',
'featuredTools': 'Избранное',
'showMoreFeatured': 'Показать больше',
'showLessFeatured': 'Показать меньше',
'installed': 'Установлено',
'pluginByAuthor': 'По {{author}}',
'usePlugin': 'Выбрать инструмент',
'hideActions': 'Скрыть инструменты',
'noFeaturedPlugins': 'Откройте больше инструментов в Маркетплейсе',
'noFeaturedTriggers': 'Откройте больше триггеров на Маркетплейсе',
'startDisabledTip': 'Узел триггера и узел ввода пользователя исключают друг друга.',
},
blocks: {
'start': 'Начало',
@@ -276,6 +301,10 @@ const translation = {
'loop-end': 'Выйти из цикла',
'knowledge-index': 'База знаний',
'datasource': 'Источник данных',
'originalStartNode': 'исходный начальный узел',
'trigger-schedule': 'Триггер расписания',
'trigger-webhook': 'Вебхук-триггер',
'trigger-plugin': 'Триггер плагина',
},
blocksAbout: {
'start': 'Определите начальные параметры для запуска рабочего процесса',
@@ -300,6 +329,9 @@ const translation = {
'loop': 'Выполните цикл логики до тех пор, пока не будет достигнуто условие завершения или максимальное количество итераций цикла.',
'knowledge-index': 'База знаний о компании',
'datasource': 'Источник данных О компании',
'trigger-schedule': 'Триггер рабочего процесса на основе времени, который запускает рабочие процессы по расписанию',
'trigger-webhook': 'Триггер вебхука получает HTTP-запросы от сторонних систем для автоматического запуска рабочих процессов.',
'trigger-plugin': 'Триггер интеграции с третьими сторонами, который запускает рабочие процессы на основе событий внешней платформы',
},
operator: {
zoomIn: 'Увеличить',
@@ -340,6 +372,8 @@ const translation = {
maximize: 'Максимизировать холст',
scrollToSelectedNode: 'Прокрутите до выбранного узла',
optional_and_hidden: '(необязательно и скрыто)',
goTo: 'Перейти к',
startNode: 'Начальный узел',
},
nodes: {
common: {
@@ -787,6 +821,8 @@ const translation = {
parallelModeEnableDesc: 'В параллельном режиме задачи в итерациях поддерживают параллельное выполнение. Вы можете настроить это на панели свойств справа.',
MaxParallelismDesc: 'Максимальный параллелизм используется для управления количеством задач, выполняемых одновременно в одной итерации.',
answerNodeWarningDesc: 'Предупреждение о параллельном режиме: узлы ответов, присвоение переменных диалога и постоянные операции чтения и записи в итерациях могут вызывать исключения.',
flattenOutput: 'Сгладить вывод',
flattenOutputDesc: 'Когда функция включена, если все результаты итераций являются массивами, они будут объединены в один массив. Когда функция выключена, результаты сохранят вложенную структуру массивов.',
},
note: {
addNote: 'Добавить заметку',
@@ -963,6 +999,144 @@ const translation = {
rerankingModelIsInvalid: 'Модель повторной ранжировки недействительна',
embeddingModelIsInvalid: 'Модель встраивания недействительна',
},
triggerPlugin: {
authorized: 'Авторизованный',
notConfigured: 'Не настроено',
notAuthorized: 'Не авторизовано',
selectSubscription: 'Выберите подписку',
availableSubscriptions: 'Доступные подписки',
addSubscription: 'Добавить новую подписку',
removeSubscription: 'Отменить подписку',
subscriptionRemoved: 'Подписка успешно удалена',
error: 'Ошибка',
configuration: 'Конфигурация',
remove: 'Удалить',
or: 'ИЛИ',
useOAuth: 'Использовать OAuth',
useApiKey: 'Использовать ключ API',
authenticationFailed: 'Ошибка аутентификации',
authenticationSuccess: 'Аутентификация успешна',
oauthConfigFailed: 'Сбой настройки OAuth',
configureOAuthClient: 'Настроить OAuth-клиент',
oauthClientDescription: 'Настройте учетные данные клиента OAuth для включения аутентификации',
oauthClientSaved: 'Конфигурация клиента OAuth успешно сохранена',
configureApiKey: 'Настроить ключ API',
apiKeyDescription: 'Настройте учетные данные ключа API для аутентификации',
apiKeyConfigured: 'API-ключ успешно настроен',
configurationFailed: 'Не удалось выполнить настройку',
failedToStart: 'Не удалось запустить процесс аутентификации',
credentialsVerified: 'Учётные данные успешно проверены',
credentialVerificationFailed: 'Проверка учетных данных не удалась',
verifyAndContinue: 'Проверить и продолжить',
configureParameters: 'Настроить параметры',
parametersDescription: 'Настройте параметры и свойства триггера',
configurationComplete: 'Конфигурация завершена',
configurationCompleteDescription: 'Ваш триггер успешно настроен',
configurationCompleteMessage: 'Ваша конфигурация триггера завершена и готова к использованию.',
parameters: 'Параметры',
properties: 'Свойства',
propertiesDescription: 'Дополнительные параметры конфигурации для этого триггера',
noConfigurationRequired: 'Дополнительная настройка для этого триггера не требуется.',
subscriptionName: 'Название подписки',
subscriptionNameDescription: 'Введите уникальное имя для этой подписки на триггер',
subscriptionNamePlaceholder: 'Введите название подписки...',
subscriptionNameRequired: 'Требуется название подписки',
subscriptionRequired: 'Требуется подписка',
},
triggerSchedule: {
title: 'Расписание',
nodeTitle: 'Триггер расписания',
notConfigured: 'Не настроено',
useCronExpression: 'Используйте cron-выражение',
useVisualPicker: 'Использовать визуальный выбор',
frequency: {
label: 'ЧАСТОТА',
hourly: 'Почасовой',
daily: 'Ежедневно',
weekly: 'Еженедельно',
monthly: 'Ежемесячно',
},
selectFrequency: 'Выберите частоту',
frequencyLabel: 'Частота',
nextExecution: 'Следующее исполнение',
weekdays: 'Будние дни',
time: 'Время',
cronExpression: 'Выражение Cron',
nextExecutionTime: 'ВРЕМЯ СЛЕДУЮЩЕГО ВЫПОЛНЕНИЯ',
nextExecutionTimes: 'Следующие 5 времен выполнения',
startTime: 'Время начала',
executeNow: 'Выполнение сейчас',
selectDateTime: 'Выберите дату и время',
hours: 'Часы',
minutes: 'Минуты',
onMinute: 'На минуту',
days: 'Дни',
lastDay: 'Последний день',
lastDayTooltip: 'Не все месяцы имеют 31 день. Используйте опцию «последний день», чтобы выбрать последний день каждого месяца.',
mode: 'Мода',
timezone: 'Часовой пояс',
visualConfig: 'Визуальная конфигурация',
monthlyDay: 'Ежемесячный день',
executionTime: 'Время выполнения',
invalidTimezone: 'Недопустимая временная зона',
invalidCronExpression: 'Неверное выражение cron',
noValidExecutionTime: 'Невозможно рассчитать допустимое время выполнения',
executionTimeCalculationError: 'Не удалось вычислить время выполнения',
invalidFrequency: 'Недопустимая частота',
invalidStartTime: 'Недопустимое время начала',
startTimeMustBeFuture: 'Время начала должно быть в будущем',
invalidTimeFormat: 'Неверный формат времени (ожидается ЧЧ:ММ AM/PM)',
invalidWeekday: 'Неверный день недели: {{weekday}}',
invalidMonthlyDay: 'Месячный день должен быть от 1 до 31 или "последний"',
invalidOnMinute: 'Минуты должны быть в диапазоне от 0 до 59',
invalidExecutionTime: 'Недопустимое время выполнения',
executionTimeMustBeFuture: 'Время выполнения должно быть в будущем',
},
triggerWebhook: {
title: 'Вебхук-триггер',
nodeTitle: '🔗 Вебхук триггер',
configPlaceholder: 'Настройка срабатывания вебхука будет реализована здесь',
webhookUrl: 'URL вебхука',
webhookUrlPlaceholder: 'Нажмите «Создать», чтобы сгенерировать URL вебхука',
generate: 'Сгенерировать',
copy: 'Копировать',
test: 'Тест',
urlGenerated: 'URL вебхука успешно создан',
urlGenerationFailed: 'Не удалось создать URL вебхука',
urlCopied: 'URL скопирован в буфер обмена',
method: 'Метод',
contentType: 'Тип контента',
queryParameters: 'Параметры запроса',
headerParameters: 'Параметры заголовка',
requestBodyParameters: 'Параметры тела запроса',
parameterName: 'Имя переменной',
varName: 'Имя переменной',
varType: 'Тип',
varNamePlaceholder: 'Введите имя переменной...',
required: 'Обязательно',
addParameter: 'Добавить',
addHeader: 'Добавить',
noParameters: 'Параметры не настроены',
noQueryParameters: 'Параметры запроса не настроены',
noHeaders: 'Заголовки не настроены',
noBodyParameters: 'Параметры тела не настроены',
debugUrlTitle: 'Для тестовых запусков всегда используйте этот URL',
debugUrlCopy: 'Нажмите, чтобы скопировать',
debugUrlCopied: 'Скопировано!',
debugUrlPrivateAddressWarning: 'Похоже, что этот URL является внутренним адресом, из-за чего запросы вебхука могут не выполняться. Вы можете изменить TRIGGER_URL на публичный адрес.',
errorHandling: 'Обработка ошибок',
errorStrategy: 'Обработка ошибок',
responseConfiguration: 'Ответ',
asyncMode: 'Асинхронный режим',
statusCode: 'Код состояния',
responseBody: 'Тело ответа',
responseBodyPlaceholder: 'Напишите здесь текст вашего ответа',
headers: 'Заголовки',
validation: {
webhookUrlRequired: 'Требуется URL вебхука',
invalidParameterType: 'Неверный тип параметра "{{type}}" для параметра "{{name}}"',
},
},
},
tracing: {
stopBy: 'Остановлено {{user}}',
@@ -1037,6 +1211,18 @@ const translation = {
exportToolTip: 'Экспорт переменной в файл',
largeData: 'Большие данные, предварительный просмотр только для чтения. Экспортируйте для просмотра всего.',
largeDataNoExport: 'Большие данные - только частичный предварительный просмотр',
listening: {
title: 'Ожидание событий от триггеров...',
tip: 'Теперь вы можете имитировать срабатывание событий, отправляя тестовые запросы на HTTP {{nodeName}}-эндпоинт или использовать его в качестве URL обратного вызова для отладки живых событий. Все результаты можно просматривать непосредственно в инспекторе переменных.',
tipPlugin: 'Теперь вы можете создавать события в {{- pluginName}} и получать данные этих событий в Инспекторе переменных.',
tipSchedule: 'Прослушивание событий от триггеров расписания.\nСледующий запланированный запуск: {{nextTriggerTime}}',
tipFallback: 'Ожидайте входящие триггерные события. Результаты появятся здесь.',
defaultNodeName: 'этот триггер',
defaultPluginName: 'этот плагин срабатывает',
defaultScheduleTime: 'Не настроено',
selectedTriggers: 'выбранные триггеры',
stopButton: 'Стоп',
},
},
lastRunTab: 'Последний запуск',
settingsTab: 'Настройки',
@@ -1054,11 +1240,52 @@ const translation = {
copyLastRunError: 'Не удалось скопировать последние входные данные выполнения',
noMatchingInputsFound: 'Не найдено соответствующих входных данных из последнего запуска.',
lastOutput: 'Последний вывод',
lastRunInputsCopied: '{{count}} вход(ов) скопировано из последнего запуска',
},
sidebar: {
exportWarning: 'Экспортировать текущую сохранённую версию',
exportWarningDesc: 'Это экспортирует текущую сохранённую версию вашего рабочего процесса. Если у вас есть несохранённые изменения в редакторе, сначала сохраните их с помощью опции экспорта на полотне рабочего процесса.',
},
publishLimit: {
startNodeTitlePrefix: 'Обновить до',
startNodeTitleSuffix: 'разблокировать неограниченное количество триггеров для каждого рабочего процесса',
startNodeDesc: 'Вы достигли лимита в 2 триггера на рабочий процесс для этого плана. Обновите план, чтобы опубликовать этот рабочий процесс.',
},
error: {
startNodeRequired: 'Пожалуйста, сначала добавьте начальный узел перед {{operation}}',
operations: {
connectingNodes: 'соединение узлов',
addingNodes: 'добавление узлов',
modifyingWorkflow: 'изменение рабочего процесса',
updatingWorkflow: 'обновление рабочего процесса',
},
},
customWebhook: 'Пользовательский вебхук',
difyTeam: 'Команда Dify',
triggerStatus: {
enabled: 'СПУСКОВОЙ МЕХАНИЗМ',
disabled: 'ТРЕВОГА • ОТКЛЮЧЕНО',
},
entryNodeStatus: {
enabled: 'НАЧАТЬ',
disabled: 'СТАРТ • ОТКЛЮЧЕНО',
},
onboarding: {
title: 'Выберите начальный узел, чтобы начать',
description: 'Разные начальные узлы имеют разные возможности. Не волнуйтесь, вы всегда сможете изменить их позже.',
userInputFull: 'Вход пользователя (исходный начальный узел)',
userInputDescription: 'Начальный узел, который позволяет задавать переменные пользовательского ввода с возможностями инструментов: веб-приложение, API сервиса, сервер MCP и рабочий процесс.',
trigger: 'Триггер',
triggerDescription: 'Триггеры могут служить начальной точкой рабочего процесса, например, для запланированных задач, пользовательских вебхуков или интеграций с другими приложениями.',
back: 'Назад',
learnMore: 'Узнать больше',
aboutStartNode: 'о стартовом узле.',
escTip: {
press: 'Нажмите',
key: 'esc',
toDismiss: 'уволить',
},
},
}
export default translation