conduit/lib/l10n/app_ru.arb
cogwheel 4e73c9a0ea
Some checks are pending
L10n / l10n (push) Waiting to run
Fix ten reported issues and vendor Hermes Agent as an API reference (#725)
* Fix ten reported issues and vendor Hermes Agent as an API reference

Closes #693, #695, #699, #700, #701, #703, #708, #712, #716, #723.

- Hermes (#693, #699): load transcripts over REST even when session.resume
  fails, page at 200 messages and shrink on oversized responses, and show
  distinct errors for too-large, not-found, and RPC failures. Add the
  hermes-src submodule (NousResearch/hermes-agent v2026.9.11) as the RPC and
  REST contract reference.
- Server version banner (#695): dismissible, remembered per server and version.
- Model selector (#700): overflow fade and selection tint use the card surface.
- OpenRouter (#701): skip Batch API-only ":batch" model variants.
- Persisted chat content (#703): store plain output text instead of rendered
  <details> markup when structured output exists, matching the web client.
- Direct connections (#708): probes report their real failure instead of a
  generic message, the Open WebUI logout fence no longer blocks Direct setup,
  and 401/403 under the api-key header mode hints at Bearer auth.
- Reasoning effort (#712): per-server, per-model user picks override the
  model's configured default and are sent explicitly in the request.
- Voice calls (#716): stop the record plugin from clearing the Android
  communication device and verify the loudspeaker route before reporting it.
- Voice mode (#723): finalize speech on the responseDone marker.
- Add the five new strings to every locale.

* Address review: keep incomplete-clear block, pass effort on sends, keep all dismissals

- Direct profiles stay hidden and unusable after an incomplete full app-data
  clear, in memory and across restarts, until the logout fence is cleared by a
  completed cleanup or a new authenticated session. Ordinary failed sign-outs
  still do not block Direct setup.
- The primary Open WebUI send path now passes the resolved per-model reasoning
  effort like regeneration and queued completions already did.
- Server version warning dismissals are stored as a bounded set so dismissing
  one server no longer forgets another.

* Address review: release rejected speaker device, speak settled text on responseDone

- When Android accepts the built-in speaker but the read-back disagrees,
  clear that selection before the legacy setSpeakerphoneOn fallback, which is
  ignored while a communication device stays selected.
- Voice mode takes the final text from the message once responseDone is set;
  the streaming content provider can lag behind the flushed message.

* Address review: await the incomplete-clear restart marker before returning

The marker is written through the app-data-clear barrier with a checked write
and awaited by the clear coordinator, so a process death right after an
incomplete clear cannot reload the surviving Direct profiles on restart.

* Address review: arm the restart fence before the wipe and propagate marker failures

The incomplete-clear marker is now armed before any data is wiped, disarmed
only when the clear completes or yields ownership, re-asserted on an
incomplete outcome, and a failed checked write aborts the clear instead of
being swallowed. The in-memory block is unchanged.

* Do not raise an error banner for response.incomplete

Open WebUI forwards the provider's `response.incomplete` event over the
socket but treats it as a no-op: the output is kept and the turn still ends
with a normal `done`. Raising an error on that event flashed "The response
stopped before it was complete" under the answer until `done` cleared it.
`response.failed` still surfaces the provider error.
2026-09-15 00:48:03 +05:30

3384 lines
181 KiB
Text
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"@@locale": "ru",
"appTitle": "Conduit",
"serverIncompatibleTitle": "Сервер не поддерживается",
"serverIncompatibleMessage": "На этом сервере установлена версия Open WebUI {serverVersion}, которая новее, чем поддерживает это приложение (до {maxVersion}).",
"serverIncompatibleResolution": "Чтобы продолжить, понизьте версию сервера до {maxVersion} или более ранней либо дождитесь обновления приложения с поддержкой новой версии.",
"serverIncompatibleConnectBlocked": "Этот сервер новее, чем поддерживает это приложение (до {maxVersion}).",
"serverIncompatibleRecheck": "Проверить сервер",
"serverIncompatibleSwitchServer": "Выбрать другой сервер",
"serverIncompatibleStillUnsupported": "Этот сервер по-прежнему новее, чем поддерживает это приложение.",
"retry": "Повторить",
"back": "Назад",
"you": "Вы",
"loadingProfile": "Загрузка профиля...",
"unableToLoadProfile": "Не удалось загрузить профиль.",
"pleaseCheckConnection": "Пожалуйста, проверьте соединение и повторите попытку",
"connectionIssueTitle": "Не удается подключиться к серверу",
"@connectionIssueTitle": {
"description": "Заголовок, отображаемый при недоступности настроенного сервера"
},
"connectionIssueSubtitle": "Переподключитесь, чтобы продолжить, или выйдите, чтобы выбрать другой сервер.",
"@connectionIssueSubtitle": {
"description": "Подзаголовок с доступными действиями при недоступности сервера"
},
"account": "Аккаунт",
"supportConduit": "Поддержать Conduit",
"supportConduitSubtitle": "Сохраните независимость Conduit, финансируя разработку.",
"githubSponsorsTitle": "GitHub Sponsors",
"githubSponsorsSubtitle": "Станьте регулярным спонсором для финансирования дорожной карты.",
"buyMeACoffeeTitle": "Buy Me a Coffee",
"buyMeACoffeeSubtitle": "Сделайте разовое пожертвование в знак благодарности.",
"releaseNotesTitle": "Что нового",
"releaseNotesAnnouncementTitle": "Что нового в {version}",
"@releaseNotesAnnouncementTitle": {
"placeholders": {
"version": {
"type": "String"
}
}
},
"releaseNotesLearnMore": "Подробнее",
"releaseNotesReviewButton": "Оценить Conduit",
"releaseNotesDoneButton": "Готово",
"signOut": "Выйти",
"endYourSession": "Завершить сеанс",
"signOutOptionsDescription": "При выходе с этого устройства удаляются настройки приложения и подключения Direct и Hermes. Сохранённые беседы и данные на сервере не изменяются.",
"keepServerDetails": "Сохранить сведения о сервере",
"keepServerDetailsDescription": "Адрес сервера и нечувствительные настройки подключения; токены и заголовки Cookie удаляются",
"defaultModel": "Модель по умолчанию",
"autoSelect": "По умолчанию сервера",
"loadingModels": "Загрузка моделей...",
"failedToLoadModels": "Не удалось загрузить модели",
"failedToLoadFiles": "Не удалось загрузить файлы",
"availableModels": "Доступные модели",
"noResults": "Нет результатов",
"searchModels": "Поиск моделей...",
"searchFiles": "Поиск файлов...",
"errorMessage": "Что-то пошло не так. Пожалуйста, попробуйте еще раз.",
"closeButtonSemantic": "Закрыть",
"loadingContent": "Загрузка содержимого",
"noItems": "Нет элементов",
"noItemsToDisplay": "Нет элементов для отображения",
"knowledgeBase": "База знаний",
"attachments": "Вложения",
"files": "Файлы",
"takePhoto": "Сделать фото",
"document": "Документ",
"backToServerSetup": "Вернуться к настройке сервера",
"connectedToServer": "Подключено к серверу",
"signIn": "Войти",
"enterCredentials": "Введите свои учетные данные для доступа к вашим разговорам с ИИ",
"credentials": "Учетные данные",
"apiKey": "API-ключ",
"token": "Токен",
"jwt": "JWT",
"usernameOrEmail": "Имя пользователя или email",
"password": "Пароль",
"signInWithToken": "Войти с помощью токена",
"connectToServer": "Подключиться к серверу",
"serverUrl": "URL сервера",
"serverUrlHint": "https://your-server.com",
"enterServerUrlSemantic": "Введите URL или IP-адрес вашего сервера",
"headerName": "Имя заголовка",
"headerValue": "Значение заголовка",
"headerValueHint": "api-key-123 или Bearer token",
"addHeader": "Добавить заголовок",
"maximumHeadersReached": "Достигнуто максимальное количество заголовков",
"removeHeader": "Удалить заголовок",
"connecting": "Подключение...",
"connectToServerButton": "Подключиться к серверу",
"demoModeActive": "Демо-режим активен",
"skipServerSetupTryDemo": "Пропустить настройку сервера и попробовать демо",
"enterDemo": "Войти в демо",
"demoBadge": "Демо",
"serverNotOpenWebUI": "Это не похоже на сервер Open-WebUI.",
"serverUrlEmpty": "URL сервера не может быть пустым",
"invalidUrlFormat": "Неверный формат URL. Пожалуйста, проверьте ввод.",
"onlyHttpHttps": "Поддерживаются только протоколы HTTP и HTTPS.",
"serverAddressRequired": "Требуется адрес сервера (например, 192.168.1.10 или example.com).",
"portRange": "Порт должен быть от 1 до 65535.",
"invalidIpFormat": "Неверный формат IP-адреса. Используйте формат как 192.168.1.10.",
"couldNotConnectGeneric": "Не удалось подключиться. Проверьте адрес и повторите попытку.",
"weCouldntReachServer": "Мы не смогли связаться с сервером. Проверьте подключение и работает ли сервер.",
"connectionTimedOut": "Время ожидания подключения истекло. Сервер может быть занят или заблокирован брандмауэром.",
"useHttpOrHttpsOnly": "Используйте только http:// или https://.",
"loginFailed": "Ошибка входа",
"invalidCredentials": "Неверное имя пользователя или пароль. Пожалуйста, попробуйте еще раз.",
"serverRedirectingHttps": "Сервер перенаправляет запросы. Проверьте настройки HTTPS вашего сервера.",
"unableToConnectServer": "Не удается подключиться к серверу. Пожалуйста, проверьте соединение.",
"requestTimedOut": "Время ожидания запроса истекло. Пожалуйста, попробуйте еще раз.",
"genericSignInFailed": "Не удалось войти. Проверьте учетные данные и настройки сервера.",
"attachmentLabel": "Вложение",
"tools": "Инструменты",
"toolServer": "Сервер инструментов",
"toolServers": "Серверы инструментов",
"terminal": "Терминал",
"filters": "Фильтры",
"voiceInput": "Голосовой ввод",
"voice": "Голос",
"voiceStatusListening": "Слушаю...",
"voiceStatusRecording": "Идет запись…",
"voiceHoldToTalk": "Удерживайте для разговора",
"voiceAutoSend": "Автоотправка",
"voiceTranscript": "Транскрипция",
"voicePromptSpeakNow": "Говорите сейчас...",
"voicePromptTapStart": "Нажмите «Начать» для запуска",
"voiceActionStop": "Стоп",
"voiceActionStart": "Начать",
"messageHintText": "Спросите Conduit",
"stopGenerating": "Остановить генерацию",
"codeCopiedToClipboard": "Код скопирован в буфер обмена.",
"send": "Отправить",
"sendMessage": "Отправить сообщение",
"file": "Файл",
"photo": "Фото",
"camera": "Камера",
"pasteImage": "Вставить изображение",
"apiUnavailable": "Служба API недоступна",
"unableToLoadImage": "Не удалось загрузить изображение",
"notAnImageFile": "Не является файлом изображения: {fileName}",
"failedToLoadImage": "Не удалось загрузить изображение: {error}",
"invalidDataUrl": "Неверный формат data URL",
"failedToDecodeImage": "Не удалось декодировать изображение",
"invalidImageFormat": "Неверный формат изображения",
"emptyImageData": "Пустые данные изображения",
"confirm": "Подтвердить",
"cancel": "Отмена",
"chatQueuedOfflineTitle": "В очереди офлайн",
"chatQueuedOfflineMessage": "Этот ответ начнется, когда сервер станет доступен.",
"chatQueuedPendingTitle": "В очереди на отправку",
"chatQueuedPendingMessage": "Conduit начнет этот ответ, как только запустится синхронизация.",
"chatQueuedFailedTitle": "Отправка не удалась",
"chatQueuedFailedMessage": "Повторите ответ из очереди или отмените его.",
"chatQueuedSnackBar": "Сообщение поставлено в очередь. Оно будет отправлено, когда сервер станет доступен.",
"ok": "OK",
"inputField": "Поле ввода",
"checkConnection": "Проверить соединение",
"openSettings": "Открыть настройки",
"goBack": "Назад",
"technicalDetails": "Технические детали",
"save": "Сохранить",
"chooseModel": "Выбрать модель",
"reviewerMode": "РЕЖИМ РЕЦЕНЗЕНТА",
"selectLanguage": "Выбор языка",
"newFolder": "Новая папка",
"folderName": "Имя папки",
"newChat": "Новый чат",
"more": "Еще",
"clear": "Очистить",
"searchConversations": "Поиск разговоров...",
"create": "Создать",
"failedToCreateFolder": "Не удалось создать папку",
"failedToMoveChat": "Не удалось переместить чат",
"failedToLoadChats": "Не удалось загрузить чаты",
"failedToUpdatePin": "Не удалось обновить закрепление",
"failedToDeleteChat": "Не удалось удалить чат",
"manage": "Управление",
"rename": "Переименовать",
"delete": "Удалить",
"renameChat": "Переименовать чат",
"enterChatName": "Введите имя чата",
"failedToRenameChat": "Не удалось переименовать чат",
"failedToUpdateArchive": "Не удалось обновить архив",
"unarchive": "Разархивировать",
"archive": "Архивировать",
"pin": "Закрепить",
"unpin": "Открепить",
"recent": "Недавние",
"system": "Системный",
"english": "English",
"deutsch": "Deutsch",
"francais": "Français",
"italiano": "Italiano",
"espanol": "Español",
"nederlands": "Nederlands",
"russian": "Русский",
"chinese": "中文",
"chineseSimplified": "Китайский (упрощённый)",
"chineseTraditional": "Китайский (традиционный)",
"korean": "한국어",
"japanese": "日本語",
"czech": "Čeština",
"slovak": "Slovenčina",
"polish": "Польский",
"deleteMessagesTitle": "Удалить сообщения",
"deleteMessagesMessage": "Удалить {count, plural, one{{count} сообщение} few{{count} сообщения} other{{count} сообщений}}?",
"@deleteMessagesMessage": {
"placeholders": {
"count": {
"type": "int"
}
}
},
"routeNotFound": "Маршрут не найден: {routeName}",
"@routeNotFound": {
"placeholders": {
"routeName": {
"type": "String"
}
}
},
"deleteChatTitle": "Удалить чат",
"deleteChatMessage": "Этот чат будет удален навсегда.",
"deleteFolderTitle": "Удалить папку",
"deleteFolderMessage": "Эта папка и ее ссылки будут удалены.",
"failedToDeleteFolder": "Не удалось удалить папку",
"aboutApp": "О проекте",
"aboutAppSubtitle": "Информация и ссылки Conduit",
"web": "Веб",
"imageGen": "Генерация изображений",
"pinned": "Закреплено",
"folders": "Папки",
"archived": "Архивировано",
"appLanguage": "Язык приложения",
"darkMode": "Темный режим",
"webSearch": "Веб-поиск",
"webSearchDescription": "Поиск в интернете и цитирование источников в ответах.",
"imageGeneration": "Генерация изображений",
"imageGenerationDescription": "Создавайте изображения из ваших запросов.",
"copy": "Копировать",
"ttsListen": "Прослушать",
"ttsStop": "Остановить",
"edit": "Редактировать",
"regenerate": "Регенерировать",
"noConversationsYet": "Пока нет разговоров",
"usernameOrEmailHint": "Введите ваше имя пользователя или email",
"passwordHint": "Введите ваш пароль",
"enterToken": "Введите ваш JWT-токен",
"tokenHint": "Получите JWT-токен в настройках Open WebUI. API-ключи (sk-...) не поддерживаются для потоковой передачи.",
"apiKeyNotSupported": "API-ключи (sk-...) не поддерживаются. Пожалуйста, используйте JWT-токен.",
"apiKeyNoLongerSupported": "Вы были выведены из системы, так как API-ключи больше не поддерживаются. Пожалуйста, войдите с JWT-токеном из настроек Open WebUI.",
"tokenTooShort": "Токен слишком короткий",
"signingIn": "Вход...",
"advancedSettings": "Расширенные настройки",
"customHeaders": "Пользовательские заголовки",
"customHeadersDescription": "Добавьте пользовательские HTTP-заголовки для аутентификации, API-ключей или особых требований сервера.",
"allowSelfSignedCertificates": "Доверять самоподписанным сертификатам",
"@allowSelfSignedCertificates": {
"description": "Переключатель, позволяющий доверять самоподписанным TLS-сертификатам для настроенного сервера."
},
"allowSelfSignedCertificatesDescription": "Принимать TLS-сертификат этого сервера, даже если он самоподписанный. Включайте только для серверов, которым вы доверяете.",
"@allowSelfSignedCertificatesDescription": {
"description": "Вспомогательный текст, разъясняющий риски включения переключателя самоподписанных сертификатов."
},
"mutualTlsSectionTitle": "Клиентский сертификат mTLS",
"mutualTlsSectionDescription": "Прикрепите цепочку сертификатов PEM и закрытый ключ PEM, если сервер требует взаимный TLS при установлении соединения.",
"mutualTlsSelectCertificate": "Выбрать сертификат",
"mutualTlsSelectPrivateKey": "Выбрать закрытый ключ",
"mutualTlsCertificateReady": "Сертификат",
"mutualTlsPrivateKeyReady": "Закрытый ключ",
"mutualTlsPrivateKeyPasswordHint": "Пароль закрытого ключа (необязательно)",
"mutualTlsClearCredentials": "Очистить файлы mTLS",
"mutualTlsMissingCredentialPair": "Чтобы использовать mTLS, выберите и клиентский сертификат, и закрытый ключ.",
"mutualTlsCertificatePemRequired": "Выбранный файл сертификата должен содержать цепочку сертификатов PEM.",
"mutualTlsPrivateKeyPemRequired": "Выбранный файл закрытого ключа должен содержать закрытый ключ PEM.",
"mutualTlsFileReadFailed": "Не удалось прочитать выбранный файл mTLS.",
"mutualTlsHandshakeFailed": "Сервер отклонил учетные данные mTLS. Убедитесь, что сертификат, закрытый ключ и пароль указаны верно.",
"headerNameTooLong": "Имя заголовка слишком длинное (максимум 64 символа)",
"headerNameInvalidChars": "Недопустимое имя заголовка. Используйте только буквы, цифры и эти символы: !#$&-^_`|~",
"headerNameReserved": "Невозможно переопределить зарезервированный заголовок «{key}»",
"@headerNameReserved": {
"placeholders": {
"key": {
"type": "String"
}
}
},
"headerValueTooLong": "Значение заголовка слишком длинное (максимум 1024 символа)",
"headerValueInvalidChars": "Значение заголовка содержит недопустимые символы. Используйте только печатаемые ASCII.",
"headerValueUnsafe": "Значение заголовка содержит потенциально небезопасное содержимое",
"headerAlreadyExists": "Заголовок «{key}» уже существует. Сначала удалите его для обновления.",
"@headerAlreadyExists": {
"placeholders": {
"key": {
"type": "String"
}
}
},
"maxHeadersReachedDetail": "Разрешено максимум 10 пользовательских заголовков. Удалите некоторые, чтобы добавить больше.",
"noModelsAvailable": "Нет доступных моделей",
"followingSystem": "Следует за системой: {theme}",
"@followingSystem": {
"placeholders": {
"theme": {
"type": "String"
}
}
},
"themeDark": "Темная",
"themePalette": "Цветовая палитра",
"@themePalette": {
"description": "Заголовок для выбора цветовой палитры приложения."
},
"themeLight": "Светлая",
"currentlyUsingDarkTheme": "Используется темная тема",
"currentlyUsingLightTheme": "Используется светлая тема",
"aboutConduit": "О Conduit",
"versionLabel": "Версия: {version} ({build})",
"@versionLabel": {
"placeholders": {
"version": {
"type": "String"
},
"build": {
"type": "String"
}
}
},
"githubRepository": "Репозиторий GitHub",
"unableToLoadAppInfo": "Не удалось загрузить информацию о приложении",
"thinking": "Думаю...",
"thoughts": "Мысли",
"thoughtForDuration": "Думал {duration}",
"@thoughtForDuration": {
"description": "Показывает, сколько времени ассистент думал перед ответом.",
"placeholders": {
"duration": {
"type": "String",
"example": "3s"
}
}
},
"analyzing": "Анализирую…",
"analyzed": "Проанализировано",
"appCustomization": "Настройка",
"appCustomizationSubtitle": "Тема, язык, голос и quick actions",
"quickActionsDescription": "Быстрые клавиши в чате",
"chatSettings": "Чат",
"sendOnEnter": "Отправка по Enter",
"sendOnEnterDescription": "Enter отправляет (программная клавиатура). Также доступно Cmd/Ctrl+Enter",
"disableHapticsWhileStreaming": "Отключать тактильный отклик во время стриминга",
"disableHapticsWhileStreamingDescription": "Отключает отклик для ответов в реальном времени, не затрагивая остальную часть приложения",
"androidAssistantTitle": "Цифровой ассистент Android",
"androidAssistantDescription": "Выберите, что произойдёт при запуске цифрового ассистента Android.",
"androidAssistantOverlayOption": "Показать быстрое наложение (по умолчанию)",
"androidAssistantNewChatOption": "Открыть Conduit с новым чатом",
"androidAssistantVoiceCallOption": "Начать голосовой вызов",
"sttSettings": "Речь в текст",
"sttEngineLabel": "Движок распознавания",
"sttEngineDevice": "На устройстве",
"sttEngineServer": "Сервер",
"sttEngineDeviceDescription": "Оставляет звук на этом устройстве. Голосовой ввод не работает, если устройство не поддерживает распознавание речи.",
"sttEngineServerDescription": "Всегда отправляет записи на сервер Open WebUI для транскрибации.",
"sttDeviceUnavailableWarning": "Распознавание речи на устройстве недоступно на этом устройстве.",
"sttServerUnavailableWarning": "Подключитесь к серверу с включённой транскрибацией, чтобы использовать эту опцию.",
"sttSilenceDuration": "Длительность тишины",
"sttSilenceDurationDescription": "Время ожидания после тишины перед автоматической остановкой записи",
"sttTranscriptionLanguage": "Язык транскрипции",
"sttTranscriptionLanguageDescription": "Авто использует язык этого устройства; либо введите код, например en.",
"sttTranscriptionLanguageAuto": "Авто",
"sttTranscriptionLanguageCustom": "Пользовательский код языка",
"sttTranscriptionLanguagePlaceholder": "Код ISO-639-1, например en",
"sttTranscriptionLanguageInvalid": "Используйте двухбуквенный код языка, например en.",
"sttDeviceLanguage": "Язык распознавания",
"sttDeviceLanguageDescription": "Выберите язык для распознавания речи на устройстве.",
"sttDeviceLanguageAutoDescription": "Автоматически переключаться между установленными языками, если поддерживается.",
"sttDeviceLanguageSystemDescription": "Использовать текущий системный язык Android.",
"sttDeviceLanguagePlaceholder": "Код BCP-47, например pl-PL",
"sttDeviceLanguageInvalid": "Введите допустимый код локали, например pl-PL.",
"ttsSettings": "Преобразование текста в речь",
"ttsEngineDeviceDescription": "Оставляет синтез на этом устройстве. Воспроизведение голоса не работает, если устройство не поддерживает синтез речи.",
"ttsEngineServerDescription": "Всегда запрашивает аудио у вашего сервера Open WebUI.",
"ttsDeviceUnavailableWarning": "Синтез речи на устройстве недоступен на этом устройстве.",
"ttsServerUnavailableWarning": "Подключитесь к серверу с включённым синтезом речи, чтобы использовать эту опцию.",
"ttsVoice": "Голос",
"ttsSpeechRate": "Скорость речи",
"ttsPitch": "Высота тона",
"ttsVolume": "Громкость",
"ttsPreview": "Предпросмотр голоса",
"ttsSystemDefault": "Системное значение по умолчанию",
"ttsSelectVoice": "Выбрать голос",
"ttsPreviewText": "Это предварительный просмотр выбранного голоса.",
"ttsNoVoicesAvailable": "Нет доступных голосов",
"ttsVoicesForLanguage": "Голоса {language}",
"ttsOtherVoices": "Другие языки",
"error": "Ошибка",
"display": "Отображение",
"realtime": "Реальное время",
"transportMode": "Режим транспорта",
"mode": "Режим",
"transportModePolling": "Опрос (резерв)",
"transportModeWs": "Только WebSocket",
"transportModePollingInfo": "Переходит на HTTP-опрос, если WebSocket заблокирован. Возвращается к WebSocket, когда это возможно.",
"transportModeWsInfo": "Меньше накладных расходов, но может не работать за строгими прокси/брандмауэрами.",
"quickActionsSelectedCount": "{count, plural, =0{Действия не выбраны} one{{count} действие выбрано} few{{count} действия выбраны} many{{count} действий выбрано} other{{count} действий выбрано}}",
"@quickActionsSelectedCount": {
"description": "Subtitle indicating how many quick actions are selected.",
"placeholders": {
"count": {
"type": "int",
"example": "2"
}
}
},
"autoSelectDescription": "Использовать модель по умолчанию, настроенную на сервере",
"@autoSelectDescription": {
"description": "Explains what the server-provided model setting does."
},
"ttsEngineLabel": "Движок",
"@ttsEngineLabel": {
"description": "Label for selecting the text-to-speech engine."
},
"ttsEngineDevice": "На устройстве",
"@ttsEngineDevice": {
"description": "Chip label for using on-device text-to-speech."
},
"ttsEngineServer": "Сервер",
"@ttsEngineServer": {
"description": "Chip label for using server-side text-to-speech."
},
"modelCapabilityMultimodal": "Мультимодальность",
"@modelCapabilityMultimodal": {
"description": "Capability chip label for models that support multimodal input."
},
"modelCapabilityReasoning": "Рассуждения",
"@modelCapabilityReasoning": {
"description": "Capability chip label for models that support reasoning features."
},
"voiceCallTitle": "Голосовой звонок",
"@voiceCallTitle": {
"description": "Title displayed on the voice call screen."
},
"voiceCallPause": "Пауза",
"@voiceCallPause": {
"description": "Button label to pause a voice call."
},
"voiceCallResume": "Продолжить",
"@voiceCallResume": {
"description": "Button label to resume a paused voice call."
},
"voiceCallStop": "Остановить",
"@voiceCallStop": {
"description": "Button label to stop the active voice call."
},
"voiceCallEnd": "Завершить звонок",
"@voiceCallEnd": {
"description": "Button label to end the voice call session."
},
"chooseDifferentFile": "Выбрать другой файл",
"@chooseDifferentFile": {
"description": "Action label prompting the user to pick another file."
},
"errorWithMessage": "Ошибка: {message}",
"@errorWithMessage": {
"description": "Error label with appended message text.",
"placeholders": {
"message": {
"type": "String",
"example": "Network timeout"
}
}
},
"networkTimeoutError": "Время соединения истекло. Проверьте подключение к интернету и повторите попытку.",
"@networkTimeoutError": {
"description": "User-facing message when a network request times out."
},
"networkUnreachableError": "Не удаётся связаться с сервером. Проверьте URL сервера и подключение к интернету.",
"@networkUnreachableError": {
"description": "User-facing message when the server cannot be reached."
},
"networkServerNotResponding": "Сервер не отвечает. Убедитесь, что он запущен и доступен.",
"@networkServerNotResponding": {
"description": "User-facing message when the server does not respond to a request."
},
"networkGenericError": "Проблема с подключением. Проверьте подключение к интернету.",
"@networkGenericError": {
"description": "Fallback message for generic network errors."
},
"serverError500": "На сервере возникли проблемы. Обычно это временно.",
"@serverError500": {
"description": "Message when a 500 error is encountered."
},
"serverErrorUnavailable": "Сервер временно недоступен. Повторите попытку чуть позже.",
"@serverErrorUnavailable": {
"description": "Message when a 502/503 error is encountered."
},
"serverErrorTimeout": "Сервер слишком долго отвечает. Повторите попытку.",
"@serverErrorTimeout": {
"description": "Message when the server times out."
},
"serverErrorGeneric": "Сервер испытывает трудности. Повторите попытку позже.",
"@serverErrorGeneric": {
"description": "Fallback server error message."
},
"authSessionExpired": "Сессия истекла. Выполните вход снова.",
"@authSessionExpired": {
"description": "Message when an authentication session expires."
},
"authForbidden": "У вас нет прав для выполнения этого действия.",
"@authForbidden": {
"description": "Message when the user lacks required permissions."
},
"authInvalidToken": "Токен аутентификации недействителен. Выполните вход снова.",
"@authInvalidToken": {
"description": "Message when the authentication token is invalid."
},
"authGenericError": "Проблема с аутентификацией. Выполните вход снова.",
"@authGenericError": {
"description": "Fallback authentication error message."
},
"validationInvalidEmail": "Введите корректный адрес электронной почты.",
"@validationInvalidEmail": {
"description": "Validation message for invalid email input."
},
"validationWeakPassword": "Пароль не соответствует требованиям. Проверьте его и повторите попытку.",
"@validationWeakPassword": {
"description": "Validation message for weak passwords."
},
"validationMissingRequired": "Заполните все обязательные поля.",
"@validationMissingRequired": {
"description": "Validation message when required fields are missing."
},
"validationFormatError": "Некоторые данные указаны в неверном формате. Проверьте и повторите попытку.",
"@validationFormatError": {
"description": "Validation message for generic formatting issues."
},
"validationGenericError": "Проверьте введённые данные и повторите попытку.",
"@validationGenericError": {
"description": "Fallback validation message."
},
"fileNotFound": "Файл не найден. Возможно, он был перемещён или удалён.",
"@fileNotFound": {
"description": "Message when a file cannot be located."
},
"fileAccessDenied": "Нет доступа к файлу. Проверьте разрешения.",
"@fileAccessDenied": {
"description": "Message when file access is denied."
},
"fileTooLarge": "Файл слишком большой. Выберите файл меньшего размера.",
"@fileTooLarge": {
"description": "Message when a file exceeds size limits."
},
"fileGenericError": "Проблема с файлом. Попробуйте другой файл.",
"@fileGenericError": {
"description": "Fallback file error message."
},
"permissionCameraRequired": "Требуется доступ к камере. Включите его в настройках.",
"@permissionCameraRequired": {
"description": "Message when camera permission is missing."
},
"permissionStorageRequired": "Требуется доступ к хранилищу. Включите его в настройках.",
"@permissionStorageRequired": {
"description": "Message when storage permission is missing."
},
"permissionMicrophoneRequired": "Требуется доступ к микрофону. Включите его в настройках.",
"@permissionMicrophoneRequired": {
"description": "Message when microphone permission is missing."
},
"permissionGenericError": "Требуется разрешение. Проверьте разрешения приложения в настройках.",
"@permissionGenericError": {
"description": "Fallback permission error message."
},
"actionRetryRequest": "Повторите запрос.",
"@actionRetryRequest": {
"description": "Description for retrying a failed request."
},
"actionVerifyConnection": "Проверьте подключение к интернету.",
"@actionVerifyConnection": {
"description": "Description for checking internet connectivity."
},
"actionRetryOperation": "Повторите операцию.",
"@actionRetryOperation": {
"description": "Description for retrying the same operation."
},
"actionRetryAfterDelay": "Подождите немного и попробуйте снова.",
"@actionRetryAfterDelay": {
"description": "Description suggesting a short delay before retrying."
},
"actionSignInToAccount": "Войдите в свою учётную запись.",
"@actionSignInToAccount": {
"description": "Description for signing back into the app."
},
"actionSelectAnotherFile": "Выберите другой файл.",
"@actionSelectAnotherFile": {
"description": "Description for choosing a different file."
},
"actionOpenAppSettings": "Откройте настройки приложения, чтобы предоставить разрешения.",
"@actionOpenAppSettings": {
"description": "Description for opening system or app settings."
},
"actionRetryAfterPermission": "Повторите попытку после предоставления разрешения.",
"@actionRetryAfterPermission": {
"description": "Description for retrying once permissions are granted."
},
"actionReturnToPrevious": "Вернуться на предыдущий экран.",
"@actionReturnToPrevious": {
"description": "Description for navigating back to the prior screen."
},
"continueAction": "Продолжить",
"@continueAction": {
"description": "Button label to continue an action or flow."
},
"loadingShort": "Загрузка",
"@loadingShort": {
"description": "Short loading label used for accessibility."
},
"loadingAnnouncement": "Загрузка: {message}",
"@loadingAnnouncement": {
"description": "Screen reader announcement when loading a resource.",
"placeholders": {
"message": {
"type": "String",
"example": "Messages"
}
}
},
"errorAnnouncement": "Ошибка: {error}",
"@errorAnnouncement": {
"description": "Screen reader announcement for an error.",
"placeholders": {
"error": {
"type": "String",
"example": "Network timeout"
}
}
},
"errorAnnouncementWithSuggestion": "Ошибка: {error}. {suggestion}",
"@errorAnnouncementWithSuggestion": {
"description": "Screen reader announcement for an error with a follow-up suggestion.",
"placeholders": {
"error": {
"type": "String",
"example": "Network timeout"
},
"suggestion": {
"type": "String",
"example": "Please try again later."
}
}
},
"successAnnouncement": "Успешно: {message}",
"@successAnnouncement": {
"description": "Screen reader announcement for successful actions.",
"placeholders": {
"message": {
"type": "String",
"example": "Profile updated"
}
}
},
"requiredFieldLabel": "{label} *",
"@requiredFieldLabel": {
"description": "Label text indicating a required field.",
"placeholders": {
"label": {
"type": "String",
"example": "Email"
}
}
},
"requiredFieldHelper": "Обязательное поле",
"@requiredFieldHelper": {
"description": "Helper text indicating that the field is required."
},
"switchOnLabel": "Вкл.",
"@switchOnLabel": {
"description": "Semantic label when a switch is enabled."
},
"switchOffLabel": "Выкл.",
"@switchOffLabel": {
"description": "Semantic label when a switch is disabled."
},
"dialogSemanticLabel": "Диалог: {title}",
"@dialogSemanticLabel": {
"description": "Semantic label describing the dialog title.",
"placeholders": {
"title": {
"type": "String",
"example": "Settings"
}
}
},
"previousLabel": "Назад",
"@previousLabel": {
"description": "Label for navigating to the previous item."
},
"nextLabel": "Далее",
"@nextLabel": {
"description": "Label for navigating to the next item."
},
"themePaletteConduitLabel": "Conduit",
"@themePaletteConduitLabel": {
"description": "Palette name for the default Conduit theme."
},
"themePaletteConduitDescription": "Нейтральная чистая тема, созданная для Conduit.",
"@themePaletteConduitDescription": {
"description": "Description of the Conduit palette."
},
"themePaletteClaudeLabel": "Claude",
"@themePaletteClaudeLabel": {
"description": "Palette name inspired by the Claude web client."
},
"themePaletteClaudeDescription": "Тёплая тактильная палитра из веб-клиента Claude.",
"@themePaletteClaudeDescription": {
"description": "Description of the Claude palette."
},
"themePaletteT3ChatLabel": "T3 Chat",
"@themePaletteT3ChatLabel": {
"description": "Palette name inspired by the T3 Stack brand."
},
"themePaletteT3ChatDescription": "Игривые градиенты, вдохновлённые брендом T3 Stack.",
"@themePaletteT3ChatDescription": {
"description": "Description of the T3 Chat palette."
},
"themePaletteCatppuccinLabel": "Catppuccin",
"@themePaletteCatppuccinLabel": {
"description": "Palette name for Catppuccin colors."
},
"themePaletteCatppuccinDescription": "Мягкая пастельная палитра.",
"@themePaletteCatppuccinDescription": {
"description": "Description of the Catppuccin palette."
},
"themePaletteTangerineLabel": "Tangerine",
"@themePaletteTangerineLabel": {
"description": "Palette name for Tangerine colors."
},
"themePaletteTangerineDescription": "Тёплая палитра оранжевых и сланцевых оттенков.",
"@themePaletteTangerineDescription": {
"description": "Description of the Tangerine palette."
},
"@notAnImageFile": {
"description": "Error when a referenced file is not an image.",
"placeholders": {
"fileName": {
"type": "String",
"example": "image.txt"
}
}
},
"@failedToLoadImage": {
"description": "Error including the underlying reason when image loading fails.",
"placeholders": {
"error": {
"type": "String",
"example": "Network error"
}
}
},
"@ttsVoicesForLanguage": {
"description": "Section header for voices matching the app language",
"placeholders": {
"language": {
"type": "String",
"example": "EN"
}
}
},
"voiceCallReady": "Готово",
"@voiceCallReady": {
"description": "Status label shown when the voice call is ready to start."
},
"voiceCallConnecting": "Подключение...",
"@voiceCallConnecting": {
"description": "Status label shown while the voice call is connecting."
},
"voiceCallListening": "Слушает",
"@voiceCallListening": {
"description": "Status label shown while the call is listening for input."
},
"voiceCallPaused": "Пауза",
"@voiceCallPaused": {
"description": "Status label shown when the call is paused."
},
"voiceCallProcessing": "Обрабатывает...",
"@voiceCallProcessing": {
"description": "Status label shown while the call processes a response."
},
"voiceCallSpeaking": "Говорит",
"@voiceCallSpeaking": {
"description": "Status label shown while the assistant is speaking."
},
"voiceCallDisconnected": "Отключено",
"@voiceCallDisconnected": {
"description": "Status label shown when the voice call has ended or disconnected."
},
"voiceCallErrorHelp": "Проверьте:\n• Разрешение на микрофон предоставлено\n• Распознавание речи доступно на устройстве\n• Есть подключение к серверу",
"@voiceCallErrorHelp": {
"description": "Guidance shown when the voice call encounters an error."
},
"mermaidPreviewUnavailable": "Предпросмотр Mermaid недоступен на этой платформе.",
"chartPreviewUnavailable": "Предпросмотр диаграмм недоступен на этой платформе.",
"notes": "Заметки",
"searchNotes": "Поиск заметок...",
"createNote": "Создать заметку",
"noNotesYet": "Заметок пока нет",
"noNotesFound": "Заметки не найдены",
"createFirstNoteHint": "Нажмите +, чтобы создать первую заметку.",
"tryDifferentSearch": "Попробуйте другой поисковый запрос.",
"loadingNotes": "Загрузка заметок...",
"loadingNote": "Загрузка заметки...",
"failedToLoadNotes": "Не удалось загрузить заметки",
"deleteNoteTitle": "Удалить заметку",
"deleteNoteMessage": "Удалить \"{title}\"? Это действие нельзя отменить.",
"@deleteNoteMessage": {
"placeholders": {
"title": {
"type": "String",
"example": "My Note"
}
}
},
"writeNote": "Напишите что-нибудь...",
"saving": "Сохранение...",
"saved": "Сохранено",
"noteCopiedToClipboard": "Заметка скопирована в буфер обмена",
"generateTitle": "Сгенерировать название",
"generatingTitle": "Генерация названия...",
"noContentToGenerateTitle": "Сначала добавьте содержимое для генерации названия",
"failedToGenerateTitle": "Не удалось сгенерировать название",
"noContentToEnhance": "Сначала добавьте содержимое для улучшения",
"noteEnhanced": "Заметка улучшена с помощью ИИ",
"failedToEnhanceNote": "Не удалось улучшить заметку",
"noModelSelected": "Сначала выберите модель",
"enhanceWithAI": "Улучшить с помощью ИИ",
"enhanceNote": "Улучшить заметку",
"startDictation": "Начать диктовку",
"stopRecording": "Остановить запись",
"voiceInputUnavailable": "Голосовой ввод недоступен",
"failedToStartDictation": "Не удалось начать диктовку",
"noteNotFound": "Заметка не найдена",
"untitled": "Без названия",
"today": "Сегодня",
"yesterday": "Вчера",
"previous7Days": "Последние 7 дней",
"previous30Days": "Последние 30 дней",
"older": "Старше",
"wordCount": "{count} слов",
"@wordCount": {
"placeholders": {
"count": {
"type": "int",
"example": "150"
}
}
},
"charCount": "{count} символов",
"@charCount": {
"placeholders": {
"count": {
"type": "int",
"example": "500"
}
}
},
"promptVariablesTitle": "Заполните данные",
"promptVariablesDescription": "Заполните поля ниже, чтобы настроить этот промпт.",
"promptVariableNumberMin": "Минимальное значение: {min}",
"@promptVariableNumberMin": {
"placeholders": {
"min": {
"type": "double",
"example": "0"
}
}
},
"promptVariableNumberMax": "Максимальное значение: {max}",
"@promptVariableNumberMax": {
"placeholders": {
"max": {
"type": "double",
"example": "100"
}
}
},
"sso": "SSO",
"ssoDescription": "Войдите через провайдера идентификации вашей организации",
"signInWithSso": "Войти через SSO",
"ssoAuthenticating": "Аутентификация...",
"ssoAuthFailed": "Ошибка SSO-аутентификации",
"ssoLoadingLogin": "Загрузка страницы входа...",
"ldap": "LDAP",
"ldapDescription": "Войдите с учётными данными каталога LDAP",
"signInWithLdap": "Войти через LDAP",
"ldapUsername": "Имя пользователя",
"ldapUsernameHint": "Введите имя пользователя LDAP",
"moreSignInOptions": "Дополнительные способы входа",
"ldapNotEnabled": "LDAP-аутентификация не включена на этом сервере",
"ssoPlatformNotSupported": "SSO-аутентификация не поддерживается на этой платформе. Пожалуйста, используйте учётные данные или LDAP-аутентификацию.",
"continueWithProvider": "Продолжить с {provider}",
"or": "или",
"usageInfo": "Инфо",
"usageInfoTitle": "Статистика ответа",
"usageTokenGeneration": "Генерация токенов",
"usagePromptEval": "Обработка промпта",
"usageTotalDuration": "Общая длительность",
"usageTokensPerSecond": "{speed} т/с",
"@usageTokensPerSecond": {
"placeholders": {
"speed": {
"type": "String",
"example": "45.2"
}
}
},
"usageTokenCount": "{count} токенов",
"@usageTokenCount": {
"placeholders": {
"count": {
"type": "int",
"example": "128"
}
}
},
"usageSecondsFormat": "{seconds}с",
"@usageSecondsFormat": {
"placeholders": {
"seconds": {
"type": "String",
"example": "2.34"
}
}
},
"usageLoadDuration": "Время загрузки модели",
"usageQueueTime": "Время в очереди",
"usageReasoningTokens": "Токены рассуждений",
"usageTotalTokens": "Всего токенов",
"proxyAuthentication": "Аутентификация через прокси",
"proxyAuthPlatformNotSupported": "Аутентификация через прокси требует мобильное устройство. Пожалуйста, сначала авторизуйтесь через браузер.",
"proxyAuthLoading": "Загрузка страницы аутентификации...",
"proxyAuthFailed": "Ошибка аутентификации через прокси",
"proxyAuthHelpText": "Войдите через прокси вашей организации, затем войдите в Open WebUI. Вы будете перенаправлены автоматически.",
"proxyAuthHelpTextSimple": "Войдите через ваш прокси. После аутентификации нажмите Продолжить для входа.",
"continueButton": "Продолжить",
"proxyAuthRequired": "Этот сервер требует аутентификацию через прокси",
"proxyAuthRequiredDescription": "Ваш сервер, похоже, находится за прокси аутентификации (например, oauth2-proxy). Сначала необходимо войти через прокси.",
"authenticateThroughProxy": "Аутентифицировать",
"voiceOptions": "Голосовые опции",
"dictation": "Диктовка",
"dictationDescription": "Говорите и конвертируйте в текст в реальном времени",
"recordAudio": "Записать аудио",
"recordAudioDescription": "Сохранить аудио для последующей транскрипции",
"recordingAudio": "Запись...",
"preparingRecording": "Подготовка...",
"recordingHint": "Нажмите стоп когда закончите",
"stopAndSaveRecording": "Остановить и сохранить",
"processingRecording": "Обработка...",
"audioRecordingSaved": "Аудиозапись сохранена",
"microphonePermissionDenied": "Доступ к микрофону запрещён",
"recordingFailed": "Ошибка записи",
"removeFileConfirm": "Удалить этот файл из заметки?",
"fileRemoved": "Файл удалён",
"playAudio": "Воспроизвести аудио",
"removeFile": "Удалить файл",
"audioFileType": "Аудио",
"imageFileType": "Изображение",
"failedToUploadAudio": "Не удалось загрузить аудио",
"audioAttachment": "Аудио вложение",
"loadingAudio": "Загрузка аудио...",
"failedToLoadAudio": "Не удалось загрузить аудио",
"webPage": "Веб-страница",
"greetingTitle": "Привет, {username}",
"temporaryChat": "Временный чат",
"temporaryChatTooltip": "Этот чат не появится в истории",
"saveChat": "Сохранить чат",
"temporaryChatByDefault": "Временный чат по умолчанию",
"temporaryChatByDefaultDescription": "Новые чаты не будут сохраняться в историю, если вы не сохраните их вручную",
"chatSaved": "Чат сохранён в истории",
"chatSaveFailed": "Не удалось сохранить чат",
"sidebarChatsTab": "Чаты",
"sidebarTerminalTab": "Терминал",
"@sidebarTerminalTab": {
"description": "Label for the Terminal tab in the sidebar"
},
"sidebarNotesTab": "Заметки",
"sidebarChannelsTab": "Каналы",
"sidebarResizeHandle": "Изменить ширину боковой панели",
"@sidebarResizeHandle": {
"description": "Accessibility label for the draggable tablet sidebar divider."
},
"sidebarResizeResetHint": "Дважды нажмите, чтобы сбросить ширину боковой панели",
"@sidebarResizeResetHint": {
"description": "Accessibility hint for resetting the tablet sidebar width."
},
"sidebarWidthValue": "{width} пт",
"@sidebarWidthValue": {
"description": "Accessibility value describing the current tablet sidebar width.",
"placeholders": {
"width": {
"type": "int"
}
}
},
"closeSidebar": "Закрыть боковую панель",
"terminalSelectServer": "Выберите сервер терминала",
"@terminalSelectServer": {
"description": "Prompt shown when the user needs to choose a terminal server."
},
"terminalNoServersConfigured": "Нет доступных серверов терминала.",
"@terminalNoServersConfigured": {
"description": "Empty state shown when there are no terminal servers configured."
},
"terminalConnectAction": "Подключиться",
"@terminalConnectAction": {
"description": "Button label used to connect to a terminal session."
},
"terminalDisconnectAction": "Отключиться",
"@terminalDisconnectAction": {
"description": "Button label used to disconnect from a terminal session."
},
"terminalConnectedStatus": "Подключено",
"@terminalConnectedStatus": {
"description": "Status label shown when the terminal is connected."
},
"terminalDisconnectedStatus": "Отключено",
"@terminalDisconnectedStatus": {
"description": "Status label shown when the terminal is disconnected."
},
"terminalConnectingStatus": "Подключение...",
"@terminalConnectingStatus": {
"description": "Status label shown while the terminal connection is being established."
},
"terminalUploadAction": "Загрузить",
"@terminalUploadAction": {
"description": "Action label for uploading a file into the terminal workspace."
},
"terminalOpenInBrowserAction": "Открыть в браузере",
"@terminalOpenInBrowserAction": {
"description": "Action label for opening a forwarded port in the browser."
},
"terminalHomeAction": "Домашний каталог",
"@terminalHomeAction": {
"description": "Tooltip for navigating back to the terminal home directory."
},
"terminalCurrentPathLabel": "Текущий путь",
"@terminalCurrentPathLabel": {
"description": "Label displayed above the current terminal working directory."
},
"terminalPortsSectionLabel": "Прослушиваемые порты",
"@terminalPortsSectionLabel": {
"description": "Section title for ports discovered in the terminal environment."
},
"terminalNoFiles": "В этом каталоге нет файлов.",
"@terminalNoFiles": {
"description": "Empty state shown when the current terminal directory has no files."
},
"terminalNoPorts": "Прослушиваемые порты не обнаружены.",
"@terminalNoPorts": {
"description": "Empty state shown when the terminal server reports no listening ports."
},
"terminalPreviewUnavailable": "Предпросмотр недоступен. Используйте скачивание.",
"@terminalPreviewUnavailable": {
"description": "Message shown when a terminal file cannot be previewed inline."
},
"terminalFeatureDisabled": "Этот сервер терминала не предоставляет интерактивную оболочку.",
"@terminalFeatureDisabled": {
"description": "Message shown when the selected terminal server disables interactive terminal sessions."
},
"terminalFolderNameHint": "Имя папки",
"@terminalFolderNameHint": {
"description": "Hint text used when creating a new folder in the terminal workspace."
},
"terminalFailedToLoadFiles": "Не удалось загрузить файлы терминала.",
"@terminalFailedToLoadFiles": {
"description": "Error message shown when the terminal file list cannot be loaded."
},
"terminalFailedToLoadPorts": "Не удалось загрузить прослушиваемые порты.",
"@terminalFailedToLoadPorts": {
"description": "Error message shown when terminal port discovery fails."
},
"terminalFailedToConnect": "Не удалось подключиться к терминалу.",
"@terminalFailedToConnect": {
"description": "Error message shown when the terminal websocket session cannot be opened."
},
"terminalDownloadFailed": "Не удалось скачать выбранный файл.",
"@terminalDownloadFailed": {
"description": "Error message shown when downloading a terminal file fails."
},
"terminalUploadFailed": "Не удалось загрузить выбранный файл.",
"@terminalUploadFailed": {
"description": "Error message shown when uploading a terminal file fails."
},
"terminalRenameFailed": "Не удалось переименовать выбранный элемент.",
"@terminalRenameFailed": {
"description": "Error message shown when renaming a file or folder in the terminal workspace fails."
},
"terminalDeleteFailed": "Не удалось удалить выбранный элемент.",
"@terminalDeleteFailed": {
"description": "Error message shown when deleting a file or folder in the terminal workspace fails."
},
"terminalFolderCreateFailed": "Не удалось создать папку.",
"@terminalFolderCreateFailed": {
"description": "Error message shown when creating a new terminal folder fails."
},
"channelCreateTitle": "Создать канал",
"channelName": "Название канала",
"channelDescription": "Описание",
"channelPrivate": "Приватный канал",
"channelJoin": "Присоединиться к каналу",
"channelLeave": "Покинуть канал",
"channelDelete": "Удалить канал",
"channelEdit": "Редактировать канал",
"channelDeleteConfirm": "Удалить этот канал? Это действие нельзя отменить.",
"channelLeaveConfirm": "Покинуть этот канал?",
"channelEmptyState": "Каналов пока нет",
"channelNoMessages": "Сообщений пока нет. Начните разговор!",
"channelMembers": "{count} {count, plural, =1{участник} few{участника} many{участников} other{участников}}",
"channelMessageReply": "Ответить",
"channelMessageReact": "Реагировать",
"channelMessageEdit": "Изменить",
"channelMessageDelete": "Удалить",
"channelLoadError": "Не удалось загрузить каналы",
"channelSendError": "Не удалось отправить сообщение",
"channelDeleted": "Этот канал был удалён",
"searchChannels": "Поиск каналов...",
"channelUnreadCount": "{count, plural, one{{count} непрочитанное сообщение} few{{count} непрочитанных сообщения} many{{count} непрочитанных сообщений} other{{count} непрочитанных сообщений}}",
"channelCreateError": "Не удалось создать канал",
"channelMessageHint": "Сообщение...",
"audioUploadError": "Не удалось загрузить аудио: {error}",
"shareChat": "Поделиться чатом",
"@shareChat": {
"description": "Dialog title and action label for sharing a chat."
},
"shareChatDescription": "Сообщения, отправленные после создания ссылки, не будут доступны по ней. Пользователи с URL смогут просматривать опубликованный чат.",
"@shareChatDescription": {
"description": "Explains that a shared chat link is a snapshot."
},
"shareChatExisting": "Вы уже делились этим чатом.",
"@shareChatExisting": {
"description": "Explains that the chat already has an existing shared link."
},
"shareChatDeleteLink": "Удалить эту ссылку",
"@shareChatDeleteLink": {
"description": "Action label to delete the current shared chat link."
},
"shareChatDeleteAndCreate": "и создать новую ссылку для доступа.",
"@shareChatDeleteAndCreate": {
"description": "Continuation text after the delete shared link action."
},
"copyLink": "Копировать ссылку",
"@copyLink": {
"description": "Button label to copy a newly created shared chat URL."
},
"updateAndCopyLink": "Обновить и копировать ссылку",
"@updateAndCopyLink": {
"description": "Button label to refresh a shared chat snapshot and copy the URL."
},
"sharedChatCopied": "URL опубликованного чата скопирован в буфер обмена.",
"@sharedChatCopied": {
"description": "Snackbar shown after copying a shared chat URL."
},
"shareSystemSheet": "Поделиться...",
"@shareSystemSheet": {
"description": "Button label to open the platform share sheet."
},
"chatShareFailed": "Не удалось поделиться чатом",
"@chatShareFailed": {
"description": "Snackbar shown when chat sharing fails."
},
"sharedLinkDeleted": "Ссылка на опубликованный чат удалена",
"@sharedLinkDeleted": {
"description": "Snackbar shown after deleting a shared chat link."
},
"deleteSharedLinkFailed": "Не удалось удалить ссылку",
"@deleteSharedLinkFailed": {
"description": "Snackbar shown when deleting a shared chat link fails."
},
"systemPrompts": "Системные промпты",
"globalSystemPrompt": "Глобальный системный промпт",
"modelSystemPrompts": "Системные промпты моделей",
"folderSystemPrompts": "Системные промпты папок",
"openWebuiModelSettings": "Настройки моделей Open WebUI",
"openWebuiFolderSettings": "Настройки папок Open WebUI",
"accessibleModelsCount": "Доступные модели: {count}",
"accessibleFoldersCount": "Доступные папки: {count}",
"unableToLoadOpenWebuiSettings": "Не удалось загрузить настройки Open WebUI.",
"unableToLoadModels": "Не удалось загрузить модели.",
"unableToLoadFolders": "Не удалось загрузить папки.",
"noAccessibleModelsFound": "Доступные модели не найдены.",
"noAccessibleFoldersFound": "Доступные папки не найдены.",
"tapToLoadServerPromptSettings": "Нажмите, чтобы загрузить настройки промпта с сервера.",
"loadingFromOpenWebui": "Загрузка из Open WebUI...",
"globalSystemPromptEditorDescription": "Сохраняется в настройках пользователя Open WebUI и используется как системный промпт чата по умолчанию.",
"modelNoEditableServerRecord": "У этой модели нет редактируемой записи на сервере.",
"modelSystemPromptTitle": "Системный промпт {modelName}",
"modelSystemPromptEditorDescription": "Сохраняется в Open WebUI в params.system модели.",
"modelNoWriteAccessDescription": "У вас нет доступа на запись к этой модели.",
"unableToLoadFolder": "Не удалось загрузить эту папку.",
"folderSystemPromptTitle": "Системный промпт {folderName}",
"folderSystemPromptEditorDescription": "Сохраняется в Open WebUI в data.system_prompt папки.",
"notSet": "Не задано",
"enterSystemPrompt": "Введите системный промпт",
"close": "Закрыть",
"connectionHealth": "Состояние подключения",
"personalization": "Персонализация",
"personalizationSubtitle": "Модель по умолчанию, личный промпт и память",
"defaultImageGenerationModel": "Модель генерации изображений по умолчанию",
"defaultImageGenerationModelDescription": "Введите ID модели изображений OpenRouter. Оставьте поле пустым, чтобы использовать модель OpenRouter по умолчанию.",
"openRouterDefaultImageGenerationModel": "Модель OpenRouter по умолчанию (openai/gpt-5-image)",
"yourSystemPrompt": "Ваш системный промпт",
"yourSystemPromptDescription": "Задайте личный системный промпт, который Open WebUI будет применять к вашим чатам.",
"memoryTitle": "Память",
"memoryEnabledDescription": "Разрешить серверу использовать сохраненные воспоминания в будущих чатах.",
"memoryDisabledDescription": "Сохраненные воспоминания останутся на сервере, но не будут добавляться в чаты.",
"manageMemories": "Управление памятью",
"manageMemoriesDescription": "Добавляйте, редактируйте и удаляйте факты, которые сервер помнит о вас.",
"savedMemoriesCount": "Сохраненных воспоминаний: {count}",
"memoryEditorDescription": "Делайте воспоминания короткими и конкретными, чтобы сервер применял их стабильно.",
"memoryHint": "Пример: я предпочитаю краткие ответы с примерами кода.",
"addMemory": "Добавить воспоминание",
"editMemory": "Редактировать воспоминание",
"deleteMemory": "Удалить воспоминание",
"deleteMemoryConfirm": "Удалить это сохраненное воспоминание с сервера?",
"clearAllMemories": "Очистить всю память",
"clearAllMemoriesDescription": "Это навсегда удалит все сохраненные воспоминания для вашей учетной записи.",
"noMemoriesSaved": "Сохраненных воспоминаний пока нет.",
"memoryUpdatedAt": "Обновлено {formattedTime}",
"advancedPromptOverrides": "Расширенные переопределения промптов",
"advancedPromptOverridesDescription": "Переопределения промптов моделей находятся в разделе App & Chat.",
"audioSettingsTitle": "Аудио",
"audioSettingsSubtitle": "Речь в текст и текст в речь",
"appAndChat": "Приложение и чат",
"appAndChatSubtitle": "Тема, язык, поведение чата и расширенные переопределения",
"accountSettingsTitle": "Учетная запись",
"accountSettingsSubtitle": "Данные профиля и управление паролем",
"accountDetails": "Данные учетной записи",
"signInToManageAccount": "Войдите, чтобы управлять данными учетной записи.",
"emailLabel": "Эл. почта",
"roleLabel": "Роль",
"accountStatus": "Статус",
"profileDetails": "Данные профиля",
"name": "Имя",
"avatarUrl": "URL аватара",
"avatarUrlHint": "https://example.com/avatar.png",
"bioLabel": "О себе",
"bioHint": "Краткое описание о вас.",
"genderLabel": "Пол",
"genderPreferNotToSay": "Предпочитаю не указывать",
"genderMale": "Мужской",
"genderFemale": "Женский",
"genderCustom": "Другое",
"customGenderLabel": "Свой вариант пола",
"customGenderHint": "Введите ваш пол",
"customGenderRequired": "Введите свой вариант пола или выберите другую опцию.",
"birthDateLabel": "Дата рождения",
"selectBirthDate": "Выберите дату",
"birthDateHint": "ГГГГ-ММ-ДД",
"currentAvatar": "Текущий аватар",
"uploadFromDevice": "Загрузить с устройства",
"useInitials": "Инициалы",
"removeAvatar": "Удалить",
"avatarUploadFailed": "Не удалось обновить аватар.",
"timezoneLabel": "Часовой пояс",
"timezoneHint": "Europe/Moscow",
"saveProfile": "Сохранить профиль",
"changePasswordTitle": "Изменить пароль",
"passwordChangeUnavailable": "Смена пароля отключена на этом сервере.",
"currentPassword": "Текущий пароль",
"newPassword": "Новый пароль",
"confirmNewPassword": "Подтвердите новый пароль",
"nameRequired": "Введите имя перед сохранением.",
"profileUpdated": "Профиль обновлен.",
"passwordFieldsRequired": "Введите текущий и новый пароль.",
"passwordsDoNotMatch": "Новые пароли не совпадают.",
"passwordUpdated": "Пароль обновлен.",
"activeStatus": "Активен",
"inactiveStatus": "Неактивен",
"appInformation": "Приложение Conduit",
"appVersion": "Версия",
"serverInformation": "Информация о сервере",
"serverInfoUnavailable": "Информация о сервере сейчас недоступна.",
"serverNameLabel": "Имя сервера",
"serverVersionLabel": "Версия сервера",
"latestVersionLabel": "Последняя версия",
"deploymentIdLabel": "ID развертывания",
"defaultLocaleLabel": "Язык по умолчанию",
"userCountLabel": "Количество пользователей",
"serverDefaultModelsLabel": "Модели по умолчанию",
"loginFormLabel": "Форма входа",
"passwordChangesLabel": "Смена пароля",
"apiKeysLabel": "API-ключи",
"audioInputLabel": "Аудиоввод",
"audioOutputLabel": "Аудиовывод",
"speechToTextEngineLabel": "Движок речи в текст",
"textToSpeechEngineLabel": "Движок текста в речь",
"licenseMetadataLabel": "Метаданные лицензии",
"enabledLabel": "Включено",
"disabledLabel": "Отключено",
"noEmailLabel": "Нет эл. почты",
"userFallbackName": "Пользователь",
"unknownLabel": "Неизвестно",
"socketNotConnected": "Не подключено",
"socketConnected": "Подключено",
"socketDisconnected": "Отключено",
"socketLatencyLabel": "Задержка",
"socketReconnectsLabel": "Переподключения",
"socketLastHeartbeat": "Последний heartbeat: {time}",
"socketTransportWebSocket": "Транспорт WebSocket",
"socketTransportPolling": "Транспорт HTTP polling",
"socketTransportUnknown": "Неизвестный транспорт",
"socketQualityExcellent": "Отличное",
"socketQualityGood": "Хорошее",
"socketQualityFair": "Среднее",
"socketQualityPoor": "Плохое",
"timeJustNow": "только что",
"timeSecondsAgo": "{count} с назад",
"timeMinutesAgo": "{count} мин назад",
"timeHoursAgo": "{count} ч назад",
"attach": "Прикрепить",
"@attach": {
"description": "Button label to attach content to the current chat or folder chat."
},
"attachWebpageDescription": "Вставьте URL, чтобы добавить содержимое в чат.",
"@attachWebpageDescription": {
"description": "Description shown in the web page attachment dialog."
},
"webpageUrlLabel": "URL веб-страницы",
"@webpageUrlLabel": {
"description": "Label for the URL field in the web page attachment dialog."
},
"invalidHttpUrl": "Введите корректный URL http(s).",
"@invalidHttpUrl": {
"description": "Validation message when a URL is missing or not HTTP/HTTPS."
},
"youtubeTranscriptFetchFailed": "Не удалось получить расшифровку YouTube.",
"@youtubeTranscriptFetchFailed": {
"description": "Error shown when a YouTube transcript cannot be fetched."
},
"webpageNoReadableContent": "На странице нет читаемого содержимого.",
"@webpageNoReadableContent": {
"description": "Error shown when a fetched webpage has no readable text content."
},
"failedToAttachContent": "Не удалось прикрепить содержимое.",
"@failedToAttachContent": {
"description": "Generic error shown when attaching web content fails."
},
"scrollToBottom": "Прокрутить вниз",
"@scrollToBottom": {
"description": "Tooltip for the button that scrolls a chat to the newest message."
},
"editFolder": "Изменить папку",
"@editFolder": {
"description": "Title and menu label for editing a folder."
},
"editFolderDescription": "Обновите имя и значок папки на сервере.",
"@editFolderDescription": {
"description": "Description shown in the folder edit sheet."
},
"icon": "Значок",
"@icon": {
"description": "Label for selecting an icon."
},
"folderIconDescription": "Выберите значок папки.",
"@folderIconDescription": {
"description": "Subtitle for the folder icon picker."
},
"defaultLabel": "По умолчанию",
"@defaultLabel": {
"description": "Generic label for the default option."
},
"systemPrompt": "Системный промпт",
"@systemPrompt": {
"description": "Singular label for a system prompt field or menu item."
},
"move": "Переместить",
"@move": {
"description": "Context action to move an item."
},
"moveToFolder": "Переместить в папку",
"@moveToFolder": {
"description": "Title for choosing a destination folder for a chat."
},
"moveFolder": "Переместить папку",
"@moveFolder": {
"description": "Title for choosing a destination parent for a folder."
},
"noFolder": "Без папки",
"@noFolder": {
"description": "Option to remove a chat from any folder."
},
"topLevel": "Верхний уровень",
"@topLevel": {
"description": "Option to move a folder to the top level."
},
"failedToMoveFolder": "Не удалось переместить папку",
"@failedToMoveFolder": {
"description": "Error shown when moving a folder fails."
},
"failedToRenameFolder": "Не удалось переименовать папку",
"@failedToRenameFolder": {
"description": "Error shown when renaming a folder fails."
},
"browseKnowledgeBase": "Просмотреть базу знаний",
"@browseKnowledgeBase": {
"description": "Title for opening the knowledge base picker."
},
"knowledgePickerHint": "Нажмите Enter, чтобы выбрать документ",
"@knowledgePickerHint": {
"description": "Hint shown for keyboard selection in the knowledge base picker."
},
"execution": "Выполнение",
"@execution": {
"description": "Fallback label for an unnamed code execution."
},
"codeExecutionTitle": "Выполнение кода",
"@codeExecutionTitle": {
"description": "Fallback title for a code execution details sheet."
},
"codeExecutionFailed": "{label}: сбой",
"@codeExecutionFailed": {
"description": "Title shown when a named code execution fails.",
"placeholders": {
"label": {
"type": "String",
"example": "Execution"
}
}
},
"codeExecutionRunning": "{label}…",
"@codeExecutionRunning": {
"description": "Title shown while a named code execution is still running.",
"placeholders": {
"label": {
"type": "String",
"example": "Execution"
}
}
},
"language": "Язык",
"@language": {
"description": "Label for a programming language field."
},
"code": "Код",
"@code": {
"description": "Label for source code content."
},
"output": "Вывод",
"@output": {
"description": "Label for execution output."
},
"download": "Скачать",
"@download": {
"description": "Fallback label for a downloadable file."
},
"languageWithValue": "Язык: {language}",
"@languageWithValue": {
"description": "Label and value for a programming language.",
"placeholders": {
"language": {
"type": "String",
"example": "Python"
}
}
},
"previewDeferredLargeContent": "Предпросмотр отложен для большого содержимого.",
"@previewDeferredLargeContent": {
"description": "Message shown when an inline preview is delayed because content is large."
},
"openPreview": "Открыть предпросмотр",
"@openPreview": {
"description": "Button to open a deferred preview."
},
"copiedToClipboard": "Скопировано в буфер обмена",
"@copiedToClipboard": {
"description": "Snackbar message after copying content to the clipboard."
},
"preview": "Предпросмотр",
"@preview": {
"description": "Button label for opening a preview."
},
"alertTip": "Совет",
"@alertTip": {
"description": "Fallback label for a tip markdown alert."
},
"alertImportant": "Важно",
"@alertImportant": {
"description": "Fallback label for an important markdown alert."
},
"alertWarning": "Предупреждение",
"@alertWarning": {
"description": "Fallback label for a warning markdown alert."
},
"alertCaution": "Осторожно",
"@alertCaution": {
"description": "Fallback label for a caution markdown alert."
},
"alertNote": "Примечание",
"@alertNote": {
"description": "Fallback label for a note markdown alert."
},
"markdownDetailsGroupPendingTitle": "Изучение: {summary}",
"@markdownDetailsGroupPendingTitle": {
"description": "Title shown for a pending grouped tool-call details block.",
"placeholders": {
"summary": {
"type": "String"
}
}
},
"markdownDetailsGroupCompleteTitle": "Изучено: {summary}",
"@markdownDetailsGroupCompleteTitle": {
"description": "Title shown for a completed grouped tool-call details block.",
"placeholders": {
"summary": {
"type": "String"
}
}
},
"markdownDetailsGroupUnnamedTool": "инструмент",
"@markdownDetailsGroupUnnamedTool": {
"description": "Fallback label used when a grouped tool call has no tool name."
},
"folderIconFolder": "Папка",
"@folderIconFolder": {
"description": "Accessibility label for the folder icon option."
},
"folderIconOpenFolder": "Открытая папка",
"@folderIconOpenFolder": {
"description": "Accessibility label for the open folder icon option."
},
"folderIconBriefcase": "Портфель",
"@folderIconBriefcase": {
"description": "Accessibility label for the briefcase folder icon option."
},
"folderIconBooks": "Книги",
"@folderIconBooks": {
"description": "Accessibility label for the books folder icon option."
},
"folderIconMemo": "Заметка",
"@folderIconMemo": {
"description": "Accessibility label for the memo folder icon option."
},
"folderIconDividers": "Разделители",
"@folderIconDividers": {
"description": "Accessibility label for the dividers folder icon option."
},
"folderIconTools": "Инструменты",
"@folderIconTools": {
"description": "Accessibility label for the tools folder icon option."
},
"folderIconToolbox": "Ящик с инструментами",
"@folderIconToolbox": {
"description": "Accessibility label for the toolbox folder icon option."
},
"folderIconSparkles": "Искры",
"@folderIconSparkles": {
"description": "Accessibility label for the sparkles folder icon option."
},
"folderIconBrain": "Мозг",
"@folderIconBrain": {
"description": "Accessibility label for the brain folder icon option."
},
"folderIconRocket": "Ракета",
"@folderIconRocket": {
"description": "Accessibility label for the rocket folder icon option."
},
"folderIconTarget": "Цель",
"@folderIconTarget": {
"description": "Accessibility label for the target folder icon option."
},
"folderIconGeneric": "Значок папки",
"@folderIconGeneric": {
"description": "Generic accessibility label for a custom folder icon."
},
"thread": "Ветка",
"@thread": {
"description": "Title and context action for a message thread."
},
"threadWithCount": "Ветка ({count})",
"@threadWithCount": {
"description": "Thread action label with reply count.",
"placeholders": {
"count": {
"type": "int",
"example": "3"
}
}
},
"channelMembersTitle": "Участники ({count})",
"@channelMembersTitle": {
"description": "Title for the channel members sheet.",
"placeholders": {
"count": {
"type": "int",
"example": "5"
}
}
},
"channelInputPlaceholder": "Введите здесь...",
"@channelInputPlaceholder": {
"description": "Placeholder for the channel message composer."
},
"channelUnknownMember": "Неизвестно",
"@channelUnknownMember": {
"description": "Fallback name for a channel member with no display name."
},
"replyInputPlaceholder": "Ответить...",
"@replyInputPlaceholder": {
"description": "Placeholder for the thread reply composer."
},
"editPhoto": "Изменить фото",
"@editPhoto": {
"description": "Action to edit the profile photo."
},
"replyingToUser": "Ответ пользователю {name}",
"@replyingToUser": {
"description": "Label shown above the channel composer when replying to a user.",
"placeholders": {
"name": {
"type": "String",
"example": "Alex"
}
}
},
"voiceCallWithModel": "Голосовой вызов с {modelName}",
"@voiceCallWithModel": {
"description": "Notification title for an ongoing voice call with a model.",
"placeholders": {
"modelName": {
"type": "String",
"example": "GPT-4"
}
}
},
"notificationPermissionTitle": "Разрешение на уведомления",
"@notificationPermissionTitle": {
"description": "Title for the system notification permission prompt."
},
"callNotificationPermissionRationale": "Для оповещений о вызовах нужно разрешение на уведомления.",
"@callNotificationPermissionRationale": {
"description": "Rationale shown when requesting notification permission for call alerts."
},
"callNotificationPermissionPost": "Разрешите уведомления, чтобы показывать входящие вызовы.",
"@callNotificationPermissionPost": {
"description": "Instruction shown when requesting notification permission for incoming calls."
},
"acceptCall": "Принять",
"@acceptCall": {
"description": "Call action to accept an incoming call."
},
"declineCall": "Отклонить",
"@declineCall": {
"description": "Call action to decline an incoming call."
},
"missedCall": "Пропущенный вызов",
"@missedCall": {
"description": "Notification subtitle for a missed call."
},
"callBack": "Перезвонить",
"@callBack": {
"description": "Notification action to call back after a missed call."
},
"calling": "Вызов...",
"@calling": {
"description": "Notification subtitle while starting a call."
},
"hangUp": "Завершить",
"@hangUp": {
"description": "Notification action to hang up a call."
},
"incomingCallChannelName": "Входящий вызов",
"@incomingCallChannelName": {
"description": "Android notification channel name for incoming calls."
},
"missedCallChannelName": "Пропущенный вызов",
"@missedCallChannelName": {
"description": "Android notification channel name for missed calls."
},
"mute": "Отключить звук",
"@mute": {
"description": "Notification action to mute a call."
},
"unmute": "Включить звук",
"@unmute": {
"description": "Notification action to unmute a call."
},
"voiceCallMuted": "Звук отключён",
"@voiceCallMuted": {
"description": "Status label when a voice call is muted."
},
"voiceCallChannelDescription": "Уведомления о текущих голосовых вызовах",
"@voiceCallChannelDescription": {
"description": "Android notification channel description for ongoing voice calls."
},
"@greetingTitle": {
"description": "Greeting shown on the empty chat page.",
"placeholders": {
"username": {
"type": "String",
"example": "Alex"
}
}
},
"@continueWithProvider": {
"description": "Button text for OAuth provider sign-in.",
"placeholders": {
"provider": {
"type": "String",
"example": "Google"
}
}
},
"@channelMembers": {
"description": "Member count display in channel header",
"placeholders": {
"count": {
"type": "int"
}
}
},
"@audioUploadError": {
"description": "Error message when audio upload fails",
"placeholders": {
"error": {
"type": "String",
"description": "The error message"
}
}
},
"@accessibleModelsCount": {
"description": "Subtitle showing how many accessible models are listed.",
"placeholders": {
"count": {
"type": "int",
"example": "4"
}
}
},
"@accessibleFoldersCount": {
"description": "Subtitle showing how many accessible folders are listed.",
"placeholders": {
"count": {
"type": "int",
"example": "3"
}
}
},
"@modelSystemPromptTitle": {
"description": "Title for a model system prompt editor.",
"placeholders": {
"modelName": {
"type": "String",
"example": "GPT-4"
}
}
},
"@folderSystemPromptTitle": {
"description": "Title for a folder system prompt editor.",
"placeholders": {
"folderName": {
"type": "String",
"example": "Work"
}
}
},
"@savedMemoriesCount": {
"description": "Shows how many memories are saved.",
"placeholders": {
"count": {
"type": "int"
}
}
},
"@memoryUpdatedAt": {
"description": "Shows when a memory was last updated.",
"placeholders": {
"formattedTime": {}
}
},
"@socketLastHeartbeat": {
"description": "Shows when the socket last received a heartbeat.",
"placeholders": {
"time": {
"type": "String",
"example": "just now"
}
}
},
"@timeSecondsAgo": {
"description": "Compact relative time label for seconds ago.",
"placeholders": {
"count": {
"type": "int",
"example": "12"
}
}
},
"@timeMinutesAgo": {
"description": "Compact relative time label for minutes ago.",
"placeholders": {
"count": {
"type": "int",
"example": "5"
}
}
},
"@timeHoursAgo": {
"description": "Compact relative time label for hours ago.",
"placeholders": {
"count": {
"type": "int",
"example": "2"
}
}
},
"rateLimitExceeded": "Слишком много запросов. Подождите перед повторной попыткой.",
"@rateLimitExceeded": {
"description": "Error shown when the server rejects a request due to rate limiting."
},
"rateLimitRetryAfter": "Подождите {duration} перед повторной попыткой.",
"@rateLimitRetryAfter": {
"description": "Advice shown when a rate limit response includes a retry delay.",
"placeholders": {
"duration": {
"type": "String",
"example": "1m 30s"
}
}
},
"rateLimitRetrySoon": "Подождите немного перед повторной попыткой.",
"@rateLimitRetrySoon": {
"description": "Advice shown when a rate limit response does not include an exact retry delay."
},
"securityCertificateError": "Ошибка сертификата безопасности. Не удалось проверить подлинность сервера.",
"@securityCertificateError": {
"description": "Error shown when the server TLS certificate cannot be trusted or verified."
},
"noToolsAvailable": "Нет доступных инструментов",
"@noToolsAvailable": {
"description": "Empty state shown when no tools are available in the composer overflow menu."
},
"failedToLoadTools": "Не удалось загрузить инструменты",
"@failedToLoadTools": {
"description": "Error shown when the composer overflow menu cannot load tools."
},
"terminalExpandAction": "Полный экран",
"terminalReopenFullscreen": "Открыто в полноэкранном режиме - нажмите, чтобы открыть снова",
"terminalKeyTab": "Tab",
"terminalKeyUp": "Вверх",
"terminalKeyDown": "Вниз",
"terminalKeyCtrlC": "Ctrl-C",
"terminalCopyAction": "Копировать",
"terminalPasteAction": "Вставить",
"terminalNothingToCopy": "Ничего не выбрано для копирования",
"terminalCopied": "Скопировано в буфер обмена",
"terminalPasteWhileDisconnected": "Подключитесь, чтобы вставить",
"terminalPortsToggle": "Прослушиваемые порты",
"releaseNotesManualSubtitle": "Встроенный список изменений для {currentVersion}",
"settingsCategoryApp": "Приложение",
"settingsCategoryAi": "ИИ",
"settingsCategoryServer": "Сервер",
"settingsCategorySupport": "Поддержка",
"settingsDataAndConnection": "Данные и подключение",
"settingsAppearance": "Оформление",
"settingsAppearanceSubtitle": "Тема, цветовая палитра и язык",
"settingsChatSubtitle": "Поведение чата, быстрые действия и расширенные промпты",
"workspaceTitle": "Рабочая область",
"workspaceSubtitle": "Управление ресурсами сервера и доступом.",
"workspaceModels": "Модели",
"workspaceKnowledge": "База знаний",
"workspacePrompts": "Промпты",
"workspaceTools": "Инструменты",
"workspaceSkills": "Навыки",
"workspaceCreate": "Создать",
"workspaceEmpty": "Ресурсов пока нет.",
"workspaceDenied": "У вас нет прав для управления этим разделом рабочей области.",
"workspaceUnsupported": "Этот сервер не поддерживает управление рабочей областью.",
"workspaceLoadFailed": "Не удалось загрузить рабочую область.",
"workspaceRetry": "Повторить",
"workspaceSelectItem": "Выберите элемент для просмотра сведений.",
"workspaceEditorComingSoon": "Этот редактор появится в следующем обновлении рабочей области.",
"workspaceSearchHint": "Поиск по ресурсам рабочей области",
"workspaceLoadMore": "Загрузить еще",
"workspaceAccessTitle": "Доступ и совместное использование",
"workspaceAccessSharingDisabled": "Совместный доступ выключен, ресурс доступен только для чтения.",
"workspaceAccessPublicDisabled": "У вас нет разрешения делать этот ресурс общедоступным.",
"workspaceAccessPeopleHeading": "Пользователи и группы",
"workspaceAccessUsersDisabled": "Доступ для отдельных пользователей отключен; разрешены только группы.",
"workspaceAccessEmpty": "Совместный доступ пока никому не предоставлен.",
"workspaceAccessAddPeople": "Добавить пользователей или группы",
"workspaceAccessAddGroups": "Добавить группы",
"workspaceAccessVisibilityLabel": "Общий доступ",
"workspaceAccessVisibilityDescription": "Любой пользователь на этом сервере может просматривать этот ресурс.",
"workspaceAccessGroupBadge": "Группа",
"workspaceAccessUserBadge": "Пользователь",
"workspaceAccessCanEdit": "Может редактировать",
"workspaceAccessRemoveGrant": "Удалить доступ",
"workspacePrincipalTitle": "Добавить пользователей или группы",
"workspacePrincipalUsersTab": "Пользователи",
"workspacePrincipalGroupsTab": "Группы",
"workspacePrincipalSearchHint": "Поиск по имени или email",
"workspacePrincipalLoadFailed": "Не удалось загрузить результаты.",
"workspacePrincipalSearchPrompt": "Введите запрос для поиска пользователей.",
"workspacePrincipalNoResults": "Совпадений не найдено.",
"workspaceReadOnlyBadge": "Только чтение",
"workspaceReadOnlyExplanation": "У вас есть доступ только для просмотра этого ресурса.",
"workspaceEditorDiscardTitle": "Сбросить изменения?",
"workspaceEditorDiscardMessage": "Все несохраненные изменения будут потеряны.",
"workspaceEditorDiscardConfirm": "Сбросить",
"workspaceEditorKeepEditing": "Продолжить редактирование",
"workspaceEditorSaveTooltip": "Сохранить изменения",
"workspaceEditorSaving": "Сохранение…",
"workspaceEditorMoreActions": "Дополнительные действия",
"workspaceImportChooseFile": "Выбрать JSON-файл",
"workspaceImportPasteLabel": "Или вставьте JSON",
"workspaceImportPasteHint": "Вставьте экспортированный JSON сюда",
"workspaceImportRun": "Импортировать",
"workspaceImportInvalidJson": "Некорректный формат JSON.",
"workspaceImportEmpty": "Не найдено элементов для импорта.",
"workspaceImportReadFailed": "Не удалось прочитать выбранный файл.",
"workspaceImportBatchFailed": "Импорт не удался.",
"workspaceImportSummary": "Импортировано элементов: {success} из {total}",
"workspaceImportItemImported": "Импортировано",
"workspaceImportItemFailed": "Ошибка импорта",
"workspaceImportDone": "Готово",
"workspaceModelNewTitle": "New model",
"@workspaceModelNewTitle": {
"description": "Title shown when creating a new workspace model."
},
"workspaceModelIdLabel": "Model ID",
"@workspaceModelIdLabel": {
"description": "Label for the unique model identifier field."
},
"workspaceModelBaseModel": "Base model",
"@workspaceModelBaseModel": {
"description": "Label for the base-model selector."
},
"workspaceModelBaseModelNone": "None (custom)",
"workspaceModelBaseModelRequired": "Выберите базовую модель.",
"@workspaceModelBaseModelRequired": {"description": "Validation shown when a non-admin model create or protected edit has no base model."},
"@workspaceModelBaseModelNone": {
"description": "Base-model option meaning no base model is used."
},
"workspaceModelName": "Name",
"@workspaceModelName": {
"description": "Label for the model display-name field."
},
"workspaceModelDescription": "Description",
"@workspaceModelDescription": {
"description": "Label for the model description field."
},
"workspaceModelTags": "Tags",
"@workspaceModelTags": {
"description": "Label for the model tags editor."
},
"workspaceModelTagsHint": "Add tag",
"@workspaceModelTagsHint": {
"description": "Action chip label to add a new tag."
},
"workspaceModelSystemPrompt": "System prompt",
"@workspaceModelSystemPrompt": {
"description": "Label for the model system prompt field."
},
"workspaceModelSuggestionPrompts": "Suggested prompts",
"@workspaceModelSuggestionPrompts": {
"description": "Label for the suggested prompts editor."
},
"workspaceModelAddSuggestion": "Add suggestion",
"@workspaceModelAddSuggestion": {
"description": "Button to add a suggested prompt."
},
"workspaceModelRemoveSuggestion": "Remove suggestion",
"@workspaceModelRemoveSuggestion": {
"description": "Tooltip to remove a suggested prompt."
},
"workspaceModelStopSequences": "Stop sequences",
"@workspaceModelStopSequences": {
"description": "Label for the stop-sequences field."
},
"workspaceModelStopHint": "Comma-separated stop sequences",
"@workspaceModelStopHint": {
"description": "Helper text for the stop-sequences field."
},
"workspaceModelAdvancedParams": "Advanced parameters (JSON)",
"@workspaceModelAdvancedParams": {
"description": "Label for the advanced inference parameters JSON field."
},
"workspaceModelParamsHint": "JSON object of additional parameters",
"@workspaceModelParamsHint": {
"description": "Helper text for a JSON parameters field."
},
"workspaceModelInvalidJson": "Enter a valid JSON object.",
"@workspaceModelInvalidJson": {
"description": "Validation error for a malformed JSON field."
},
"workspaceModelCapabilities": "Capabilities",
"@workspaceModelCapabilities": {
"description": "Label for the model capability toggles."
},
"workspaceModelTerminal": "Terminal ID",
"@workspaceModelTerminal": {
"description": "Label for the terminal identifier field."
},
"workspaceModelTtsVoice": "Text-to-speech voice",
"@workspaceModelTtsVoice": {
"description": "Label for the TTS voice field."
},
"workspaceModelDefaultFeatures": "Default features",
"@workspaceModelDefaultFeatures": {
"description": "Label for the default feature IDs field."
},
"workspaceModelBuiltinTools": "Built-in tools (JSON)",
"@workspaceModelBuiltinTools": {
"description": "Label for the built-in tools JSON field."
},
"workspaceModelKnowledge": "Knowledge",
"@workspaceModelKnowledge": {
"description": "Label for the knowledge relationship selector."
},
"workspaceModelTools": "Tools",
"@workspaceModelTools": {
"description": "Label for the tools relationship selector."
},
"workspaceModelSkills": "Skills",
"@workspaceModelSkills": {
"description": "Label for the skills relationship selector."
},
"workspaceModelFilters": "Filters",
"@workspaceModelFilters": {
"description": "Label for the filter functions selector."
},
"workspaceModelDefaultFilters": "Default filters",
"@workspaceModelDefaultFilters": {
"description": "Label for the default filter functions selector."
},
"workspaceModelActions": "Actions",
"@workspaceModelActions": {
"description": "Label for the action functions selector."
},
"workspaceModelSectionBasics": "Basics",
"@workspaceModelSectionBasics": {
"description": "Section header for basic model fields."
},
"workspaceModelSectionPrompt": "Prompt",
"@workspaceModelSectionPrompt": {
"description": "Section header for prompt-related model fields."
},
"workspaceModelSectionAdvanced": "Advanced",
"@workspaceModelSectionAdvanced": {
"description": "Section header for advanced model fields."
},
"workspaceModelSectionRelationships": "Relationships",
"@workspaceModelSectionRelationships": {
"description": "Section header for model relationship selectors."
},
"workspaceModelSectionAccess": "Access",
"@workspaceModelSectionAccess": {
"description": "Section header for model access controls."
},
"workspaceModelProfileImage": "Profile image",
"@workspaceModelProfileImage": {
"description": "Label for the model profile image."
},
"workspaceModelChangeImage": "Change image",
"@workspaceModelChangeImage": {
"description": "Button to pick a new profile image."
},
"workspaceModelRemoveImage": "Remove image",
"@workspaceModelRemoveImage": {
"description": "Button to clear the profile image."
},
"workspaceModelImageFailed": "Could not load the selected image.",
"@workspaceModelImageFailed": {
"description": "Error when picking a profile image fails."
},
"workspaceModelSelectNone": "None selected",
"@workspaceModelSelectNone": {
"description": "Subtitle when no relationship items are selected."
},
"workspaceModelSelectCount": "{count} selected",
"@workspaceModelSelectCount": {
"description": "Subtitle showing how many relationship items are selected.",
"placeholders": {
"count": {
"type": "int"
}
}
},
"workspaceModelRelationshipEmpty": "Nothing available to select.",
"@workspaceModelRelationshipEmpty": {
"description": "Empty state for a relationship picker."
},
"workspaceModelManageAccess": "Manage access",
"@workspaceModelManageAccess": {
"description": "Action to open the access-grants sheet for a model."
},
"workspaceModelClone": "Duplicate",
"@workspaceModelClone": {
"description": "Action that duplicates the model."
},
"workspaceModelCloneSuffix": "(copy)",
"@workspaceModelCloneSuffix": {
"description": "Suffix appended to a duplicated model name."
},
"workspaceModelActivate": "Activate",
"@workspaceModelActivate": {
"description": "Action that marks the model active."
},
"workspaceModelDeactivate": "Deactivate",
"@workspaceModelDeactivate": {
"description": "Action that marks the model inactive."
},
"workspaceModelHide": "Hide from selector",
"@workspaceModelHide": {
"description": "Action that hides the model from model selectors."
},
"workspaceModelUnhide": "Show in selector",
"@workspaceModelUnhide": {
"description": "Action that unhides the model in model selectors."
},
"workspaceModelDelete": "Delete model",
"@workspaceModelDelete": {
"description": "Action that deletes the model."
},
"workspaceModelDeleteConfirmTitle": "Delete model?",
"@workspaceModelDeleteConfirmTitle": {
"description": "Confirmation dialog title for deleting a model."
},
"workspaceModelDeleteConfirmMessage": "This permanently removes {name}.",
"@workspaceModelDeleteConfirmMessage": {
"description": "Confirmation dialog body for deleting a model.",
"placeholders": {
"name": {
"type": "String"
}
}
},
"workspaceModelExport": "Export model",
"@workspaceModelExport": {
"description": "Action that exports a single model as JSON."
},
"workspaceModelExportAll": "Export all models",
"@workspaceModelExportAll": {
"description": "Action that exports every readable model as JSON."
},
"workspaceModelExportFailed": "The export could not be completed.",
"@workspaceModelExportFailed": {
"description": "Error when exporting models fails."
},
"workspaceModelImport": "Import models",
"@workspaceModelImport": {
"description": "Action that imports models from JSON."
},
"workspaceModelIdRequired": "A model ID is required.",
"@workspaceModelIdRequired": {
"description": "Validation error when the model ID is empty."
},
"workspaceModelNameRequired": "A name is required.",
"@workspaceModelNameRequired": {
"description": "Validation error when the model name is empty."
},
"workspaceModelSaved": "Model saved.",
"@workspaceModelSaved": {
"description": "Confirmation that the model was saved."
},
"workspaceModelSaveFailed": "The model could not be saved.",
"@workspaceModelSaveFailed": {
"description": "Error when saving the model fails."
},
"workspaceModelDeleted": "Model deleted.",
"@workspaceModelDeleted": {
"description": "Confirmation that the model was deleted."
},
"workspaceModelAddAction": "Add",
"@workspaceModelAddAction": {
"description": "Confirm button in a small add-text dialog."
},
"workspaceKnowledgeCreateTitle": "New knowledge base",
"@workspaceKnowledgeCreateTitle": {
"description": "Title of the create form for a new knowledge base."
},
"workspaceKnowledgeName": "Name",
"@workspaceKnowledgeName": {
"description": "Label for the knowledge base name field."
},
"workspaceKnowledgeDescription": "Description",
"@workspaceKnowledgeDescription": {
"description": "Label for the knowledge base description field."
},
"workspaceKnowledgeNameRequired": "A name is required.",
"@workspaceKnowledgeNameRequired": {
"description": "Validation error when the knowledge base name is empty."
},
"workspaceKnowledgeSaved": "Knowledge base saved.",
"@workspaceKnowledgeSaved": {
"description": "Confirmation that the knowledge base was saved."
},
"workspaceKnowledgeSaveFailed": "The knowledge base could not be saved.",
"@workspaceKnowledgeSaveFailed": {
"description": "Error when saving a knowledge base fails."
},
"workspaceKnowledgeDeleted": "Knowledge base deleted.",
"@workspaceKnowledgeDeleted": {
"description": "Confirmation that the knowledge base was deleted."
},
"workspaceKnowledgeDelete": "Delete knowledge base",
"@workspaceKnowledgeDelete": {
"description": "Overflow action that deletes the knowledge base."
},
"workspaceKnowledgeDeleteConfirmTitle": "Delete knowledge base?",
"@workspaceKnowledgeDeleteConfirmTitle": {
"description": "Confirmation dialog title for deleting a knowledge base."
},
"workspaceKnowledgeDeleteConfirmMessage": "This permanently removes {name} and detaches its files.",
"@workspaceKnowledgeDeleteConfirmMessage": {
"description": "Confirmation dialog body for deleting a knowledge base.",
"placeholders": {
"name": {
"type": "String"
}
}
},
"workspaceKnowledgeReset": "Reset",
"@workspaceKnowledgeReset": {
"description": "Overflow action that removes all files from a knowledge base."
},
"workspaceKnowledgeResetConfirmTitle": "Reset knowledge base?",
"@workspaceKnowledgeResetConfirmTitle": {
"description": "Confirmation dialog title for resetting a knowledge base."
},
"workspaceKnowledgeResetConfirmMessage": "This removes all files from {name} but keeps the knowledge base.",
"@workspaceKnowledgeResetConfirmMessage": {
"description": "Confirmation dialog body for resetting a knowledge base.",
"placeholders": {
"name": {
"type": "String"
}
}
},
"workspaceKnowledgeResetDone": "Knowledge base reset.",
"@workspaceKnowledgeResetDone": {
"description": "Confirmation that the knowledge base files were reset."
},
"workspaceKnowledgeExport": "Export knowledge base",
"@workspaceKnowledgeExport": {
"description": "Overflow action that exports a knowledge base archive."
},
"workspaceKnowledgeExportFailed": "The export could not be completed.",
"@workspaceKnowledgeExportFailed": {
"description": "Error when exporting a knowledge base fails."
},
"workspaceKnowledgeManageAccess": "Manage access",
"@workspaceKnowledgeManageAccess": {
"description": "Action that opens the sharing and access sheet for a knowledge base."
},
"workspaceKnowledgeViewAll": "All",
"@workspaceKnowledgeViewAll": {
"description": "Knowledge collection filter showing all knowledge bases."
},
"workspaceKnowledgeViewCreated": "Created by you",
"@workspaceKnowledgeViewCreated": {
"description": "Knowledge collection filter showing bases the user created."
},
"workspaceKnowledgeViewShared": "Shared with you",
"@workspaceKnowledgeViewShared": {
"description": "Knowledge collection filter showing bases shared with the user."
},
"workspaceKnowledgeSourceAll": "All sources",
"@workspaceKnowledgeSourceAll": {
"description": "Knowledge collection filter showing both local and connected sources."
},
"workspaceKnowledgeSourceLocal": "Local",
"@workspaceKnowledgeSourceLocal": {
"description": "Knowledge collection filter showing only local knowledge bases."
},
"workspaceKnowledgeSourceExternal": "Connected",
"@workspaceKnowledgeSourceExternal": {
"description": "Knowledge collection filter showing only external/connected knowledge bases."
},
"workspaceKnowledgeExternalBadge": "Connected",
"@workspaceKnowledgeExternalBadge": {
"description": "Badge marking a knowledge base as external/connected (read-only)."
},
"workspaceKnowledgeExternalReadOnly": "Connected knowledge bases are read-only in this app.",
"@workspaceKnowledgeExternalReadOnly": {
"description": "Notice shown when viewing an external/connected knowledge base."
},
"workspaceKnowledgeFilesTitle": "Files",
"@workspaceKnowledgeFilesTitle": {
"description": "Heading of the knowledge base file browser."
},
"workspaceKnowledgeFilesEmpty": "No files yet.",
"@workspaceKnowledgeFilesEmpty": {
"description": "Empty state when a knowledge base directory contains no files."
},
"workspaceKnowledgeFilesLoadFailed": "Files could not be loaded.",
"@workspaceKnowledgeFilesLoadFailed": {
"description": "Error when the knowledge base file list fails to load."
},
"workspaceKnowledgeRefreshFiles": "Refresh",
"@workspaceKnowledgeRefreshFiles": {
"description": "Tooltip for the button that refreshes the knowledge file list."
},
"workspaceKnowledgeRoot": "Root",
"@workspaceKnowledgeRoot": {
"description": "Breadcrumb label for the top level of a knowledge base."
},
"workspaceKnowledgeAddMenu": "Добавить файлы",
"@workspaceKnowledgeAddMenu": {
"description": "Tooltip for the menu that adds files or folders to a knowledge base."
},
"workspaceKnowledgeUpload": "Upload file",
"@workspaceKnowledgeUpload": {
"description": "Menu item to upload a single local file into a knowledge base."
},
"workspaceKnowledgeUploading": "Uploading {name}…",
"@workspaceKnowledgeUploading": {
"description": "Progress label shown while a file uploads into a knowledge base.",
"placeholders": {
"name": {
"type": "String"
}
}
},
"workspaceKnowledgeUploadFailed": "The file could not be uploaded.",
"@workspaceKnowledgeUploadFailed": {
"description": "Error when uploading a file into a knowledge base fails."
},
"workspaceKnowledgeBatchAttach": "Upload multiple files",
"@workspaceKnowledgeBatchAttach": {
"description": "Menu item to upload several local files into a knowledge base at once."
},
"workspaceKnowledgeAttachExisting": "Attach server file",
"@workspaceKnowledgeAttachExisting": {
"description": "Menu item to attach an existing server file to a knowledge base."
},
"workspaceKnowledgeAttachFailed": "The file could not be attached.",
"@workspaceKnowledgeAttachFailed": {
"description": "Error when attaching an existing file to a knowledge base fails."
},
"workspaceKnowledgeAddText": "Add text file",
"@workspaceKnowledgeAddText": {
"description": "Menu item to create a text file and attach it to a knowledge base."
},
"workspaceKnowledgeAddTextName": "File name",
"@workspaceKnowledgeAddTextName": {
"description": "Label for the file name field when adding a text file."
},
"workspaceKnowledgeAddTextContent": "Content",
"@workspaceKnowledgeAddTextContent": {
"description": "Label for the content field when adding a text file."
},
"workspaceKnowledgeAddTextFailed": "The text file could not be added.",
"@workspaceKnowledgeAddTextFailed": {
"description": "Error when adding a text file to a knowledge base fails."
},
"workspaceKnowledgeNewFolder": "New folder",
"@workspaceKnowledgeNewFolder": {
"description": "Menu item and dialog title to create a new directory in a knowledge base."
},
"workspaceKnowledgeFolderName": "Folder name",
"@workspaceKnowledgeFolderName": {
"description": "Label for the folder name field."
},
"workspaceKnowledgeFolderCreateFailed": "The folder could not be created.",
"@workspaceKnowledgeFolderCreateFailed": {
"description": "Error when creating or renaming a knowledge base folder fails."
},
"workspaceKnowledgeRenameFolder": "Rename folder",
"@workspaceKnowledgeRenameFolder": {
"description": "Action to rename a knowledge base directory."
},
"workspaceKnowledgeDeleteFolder": "Delete folder",
"@workspaceKnowledgeDeleteFolder": {
"description": "Action to delete a knowledge base directory."
},
"workspaceKnowledgeDeleteFolderConfirmTitle": "Delete folder?",
"@workspaceKnowledgeDeleteFolderConfirmTitle": {
"description": "Confirmation dialog title for deleting a knowledge base directory."
},
"workspaceKnowledgeDeleteFolderConfirmMessage": "Files inside {name} move to the parent folder.",
"@workspaceKnowledgeDeleteFolderConfirmMessage": {
"description": "Confirmation dialog body for deleting a knowledge base directory.",
"placeholders": {
"name": {
"type": "String"
}
}
},
"workspaceKnowledgeFolderDeleteFailed": "The folder could not be deleted.",
"@workspaceKnowledgeFolderDeleteFailed": {
"description": "Error when deleting a knowledge base folder fails."
},
"workspaceKnowledgeFileRename": "Rename",
"@workspaceKnowledgeFileRename": {
"description": "Per-file action to rename a knowledge base file."
},
"workspaceKnowledgeFileRefresh": "Re-index",
"@workspaceKnowledgeFileRefresh": {
"description": "Per-file action to re-index a knowledge base file."
},
"workspaceKnowledgeFileReindexed": "Re-indexing started.",
"@workspaceKnowledgeFileReindexed": {
"description": "Confirmation that re-indexing a knowledge base file began."
},
"workspaceKnowledgeFileMove": "Move",
"@workspaceKnowledgeFileMove": {
"description": "Per-file action to move a knowledge base file to another folder."
},
"workspaceKnowledgeFileRenameFailed": "The file could not be renamed.",
"@workspaceKnowledgeFileRenameFailed": {
"description": "Error when renaming a knowledge base file fails."
},
"workspaceKnowledgeFileMoveFailed": "The file could not be moved.",
"@workspaceKnowledgeFileMoveFailed": {
"description": "Error when moving a knowledge base file fails."
},
"workspaceKnowledgeFileDetach": "Remove from knowledge",
"@workspaceKnowledgeFileDetach": {
"description": "Per-file action to detach a file from a knowledge base."
},
"workspaceKnowledgeFileDetachTitle": "Remove file?",
"@workspaceKnowledgeFileDetachTitle": {
"description": "Confirmation dialog title for detaching a file from a knowledge base."
},
"workspaceKnowledgeFileDetachMessage": "Remove {name} from this knowledge base?",
"@workspaceKnowledgeFileDetachMessage": {
"description": "Confirmation dialog body for detaching a file from a knowledge base.",
"placeholders": {
"name": {
"type": "String"
}
}
},
"workspaceKnowledgeFileDeleteUnderlying": "Also delete the underlying file",
"@workspaceKnowledgeFileDeleteUnderlying": {
"description": "Checkbox to delete the stored file when detaching, shown to owners/admins."
},
"workspaceKnowledgeFileDetachFailed": "The file could not be removed.",
"@workspaceKnowledgeFileDetachFailed": {
"description": "Error when detaching a file from a knowledge base fails."
},
"workspaceKnowledgeMoveTitle": "Move to folder",
"@workspaceKnowledgeMoveTitle": {
"description": "Title of the sheet for choosing a destination folder."
},
"workspaceKnowledgeMoveRoot": "Root (no folder)",
"@workspaceKnowledgeMoveRoot": {
"description": "Move destination representing the knowledge base root."
},
"workspaceKnowledgeStatusPending": "Processing…",
"@workspaceKnowledgeStatusPending": {
"description": "Status shown for a knowledge base file still being ingested."
},
"workspaceKnowledgeStatusFailed": "Failed",
"@workspaceKnowledgeStatusFailed": {
"description": "Status shown for a knowledge base file whose ingestion failed."
},
"workspacePromptCreateTitle": "New prompt",
"@workspacePromptCreateTitle": {
"description": "Title shown while creating a new workspace prompt."
},
"workspacePromptName": "Name",
"@workspacePromptName": {
"description": "Label for the prompt name field."
},
"workspacePromptNameRequired": "Name is required.",
"@workspacePromptNameRequired": {
"description": "Validation error when the prompt name is empty."
},
"workspacePromptCommand": "Command",
"@workspacePromptCommand": {
"description": "Label for the prompt slash-command field."
},
"workspacePromptCommandHint": "Only letters, numbers, hyphens, and underscores. Type it as a slash command in chat.",
"@workspacePromptCommandHint": {
"description": "Helper text explaining the allowed prompt command characters."
},
"workspacePromptCommandRequired": "Command is required.",
"@workspacePromptCommandRequired": {
"description": "Validation error when the prompt command is empty."
},
"workspacePromptCommandInvalid": "Only letters, numbers, hyphens, and underscores are allowed.",
"@workspacePromptCommandInvalid": {
"description": "Validation error when the prompt command contains illegal characters."
},
"workspacePromptCommandTaken": "That command is already in use.",
"@workspacePromptCommandTaken": {
"description": "Error shown when saving a prompt whose command collides with another prompt."
},
"workspacePromptContent": "Prompt content",
"@workspacePromptContent": {
"description": "Label for the prompt template body field."
},
"workspacePromptContentHint": "Write the prompt template…",
"@workspacePromptContentHint": {
"description": "Placeholder text for the empty prompt content field."
},
"workspacePromptContentRequired": "Prompt content is required.",
"@workspacePromptContentRequired": {
"description": "Validation error when the prompt content is empty."
},
"workspacePromptWriteTab": "Write",
"@workspacePromptWriteTab": {
"description": "Toggle label for the editable prompt content view."
},
"workspacePromptPreviewTab": "Preview",
"@workspacePromptPreviewTab": {
"description": "Toggle label for the rendered markdown preview of the prompt content."
},
"workspacePromptPreviewEmpty": "Nothing to preview yet.",
"@workspacePromptPreviewEmpty": {
"description": "Empty-state text shown in the prompt preview when there is no content."
},
"workspacePromptTags": "Tags",
"@workspacePromptTags": {
"description": "Label for the prompt tags field."
},
"workspacePromptTagAdd": "Add tag",
"@workspacePromptTagAdd": {
"description": "Action to add a tag to a prompt."
},
"workspacePromptVersionSection": "Version",
"@workspacePromptVersionSection": {
"description": "Section header for prompt versioning controls."
},
"workspacePromptCommitMessage": "Commit message",
"@workspacePromptCommitMessage": {
"description": "Label for the optional commit message recorded with a prompt version."
},
"workspacePromptCommitMessageHint": "Describe what changed (optional)",
"@workspacePromptCommitMessageHint": {
"description": "Placeholder for the prompt commit message field."
},
"workspacePromptSetProduction": "Set as production version",
"@workspacePromptSetProduction": {
"description": "Toggle that marks the saved prompt version as the live production version."
},
"workspacePromptSetProductionSubtitle": "Make this the live version used in chat.",
"@workspacePromptSetProductionSubtitle": {
"description": "Explanation for the production-version toggle."
},
"workspacePromptManageAccess": "Manage access",
"@workspacePromptManageAccess": {
"description": "Action to open the sharing/access editor for a prompt."
},
"workspacePromptClone": "Duplicate",
"@workspacePromptClone": {
"description": "Overflow action that clones a prompt."
},
"workspacePromptCloneSuffix": "(copy)",
"@workspacePromptCloneSuffix": {
"description": "Suffix appended to the name and command of a cloned prompt."
},
"workspacePromptUpdateDetails": "Save name & command only",
"@workspacePromptUpdateDetails": {
"description": "Overflow action that updates prompt metadata without creating a new version."
},
"workspacePromptDetailsSaved": "Details saved",
"@workspacePromptDetailsSaved": {
"description": "Confirmation that prompt name and command were updated."
},
"workspacePromptActivate": "Activate",
"@workspacePromptActivate": {
"description": "Overflow action that enables a prompt."
},
"workspacePromptDeactivate": "Deactivate",
"@workspacePromptDeactivate": {
"description": "Overflow action that disables a prompt."
},
"workspacePromptDelete": "Delete prompt",
"@workspacePromptDelete": {
"description": "Overflow action that deletes a prompt."
},
"workspacePromptDeleteConfirmTitle": "Удалить промпт?",
"@workspacePromptDeleteConfirmTitle": {
"description": "Confirmation dialog title for deleting a prompt."
},
"workspacePromptDeleteConfirmMessage": "Удалить промпт «{name}»? Это действие нельзя отменить.",
"@workspacePromptDeleteConfirmMessage": {
"description": "Confirmation dialog body for deleting a prompt.",
"placeholders": {
"name": {
"type": "String"
}
}
},
"workspacePromptDeleted": "Prompt deleted",
"@workspacePromptDeleted": {
"description": "Confirmation that a prompt was deleted."
},
"workspacePromptSaved": "Prompt saved",
"@workspacePromptSaved": {
"description": "Confirmation that a prompt was saved."
},
"workspacePromptSaveFailed": "Couldn't save the prompt. Please try again.",
"@workspacePromptSaveFailed": {
"description": "Error shown when saving a prompt fails."
},
"workspacePromptImport": "Import prompts",
"@workspacePromptImport": {
"description": "Overflow action that imports prompt definitions from JSON."
},
"workspacePromptExport": "Export prompts",
"@workspacePromptExport": {
"description": "Overflow action that exports readable prompts as JSON."
},
"workspacePromptExportFailed": "Couldn't export prompts.",
"@workspacePromptExportFailed": {
"description": "Error shown when exporting prompts fails."
},
"workspacePromptHistory": "Version history",
"@workspacePromptHistory": {
"description": "Header of the prompt version-history panel."
},
"workspacePromptHistoryEmpty": "No versions yet.",
"@workspacePromptHistoryEmpty": {
"description": "Empty-state text when a prompt has no version history."
},
"workspacePromptHistoryLoadFailed": "Couldn't load version history.",
"@workspacePromptHistoryLoadFailed": {
"description": "Error shown when loading prompt history fails."
},
"workspacePromptHistoryCommitFallback": "No commit message",
"@workspacePromptHistoryCommitFallback": {
"description": "Placeholder shown for a history entry without a commit message."
},
"workspacePromptHistoryLive": "Live",
"@workspacePromptHistoryLive": {
"description": "Badge marking the active production version of a prompt."
},
"workspacePromptHistoryDiff": "Compare with production",
"@workspacePromptHistoryDiff": {
"description": "Action to diff a prompt version against the production version."
},
"workspacePromptHistoryDiffTitle": "Version comparison",
"@workspacePromptHistoryDiffTitle": {
"description": "Title of the prompt version diff sheet."
},
"workspacePromptHistoryDiffEmpty": "No content differences.",
"@workspacePromptHistoryDiffEmpty": {
"description": "Shown when two prompt versions have identical content."
},
"workspacePromptHistoryDiffNameChanged": "The name changed between these versions.",
"@workspacePromptHistoryDiffNameChanged": {
"description": "Note shown in the diff sheet when the prompt name changed."
},
"workspacePromptHistoryDiffFailed": "Couldn't compute the diff.",
"@workspacePromptHistoryDiffFailed": {
"description": "Error shown when computing a prompt version diff fails."
},
"workspacePromptHistoryRestore": "Restore this version",
"@workspacePromptHistoryRestore": {
"description": "Action that loads a version snapshot back into the editor."
},
"workspacePromptHistoryRestored": "Version content restored. Save to keep it.",
"@workspacePromptHistoryRestored": {
"description": "Confirmation that a version snapshot was loaded into the editor."
},
"workspacePromptHistorySetProduction": "Set as production",
"@workspacePromptHistorySetProduction": {
"description": "Action that pins a version as the production version."
},
"workspacePromptHistoryProductionSet": "Production version updated.",
"@workspacePromptHistoryProductionSet": {
"description": "Confirmation that the production version was changed."
},
"workspacePromptHistoryDelete": "Delete version",
"@workspacePromptHistoryDelete": {
"description": "Action that deletes a prompt history entry."
},
"workspacePromptHistoryDeleteConfirmTitle": "Delete version?",
"@workspacePromptHistoryDeleteConfirmTitle": {
"description": "Confirmation dialog title for deleting a prompt version."
},
"workspacePromptHistoryDeleteConfirmMessage": "This version snapshot will be removed. This can't be undone.",
"@workspacePromptHistoryDeleteConfirmMessage": {
"description": "Confirmation dialog body for deleting a prompt version."
},
"workspacePromptHistoryDeleted": "Version deleted",
"@workspacePromptHistoryDeleted": {
"description": "Confirmation that a prompt version was deleted."
},
"workspacePromptHistoryDeleteProduction": "The live production version can't be deleted.",
"@workspacePromptHistoryDeleteProduction": {
"description": "Error shown when trying to delete the active production version."
},
"workspaceSkillCreateTitle": "New skill",
"@workspaceSkillCreateTitle": {
"description": "Title shown while creating a new workspace skill."
},
"workspaceSkillName": "Name",
"@workspaceSkillName": {
"description": "Label for the skill name field."
},
"workspaceSkillNameHint": "e.g. Code Review Guidelines",
"@workspaceSkillNameHint": {
"description": "Placeholder example for the skill name field."
},
"workspaceSkillNameRequired": "Name is required.",
"@workspaceSkillNameRequired": {
"description": "Validation error when the skill name is empty."
},
"workspaceSkillId": "Skill ID",
"@workspaceSkillId": {
"description": "Label for the skill identifier field."
},
"workspaceSkillIdHint": "e.g. code-review-guidelines",
"@workspaceSkillIdHint": {
"description": "Placeholder example for the skill identifier field."
},
"workspaceSkillIdRequired": "Skill ID is required.",
"@workspaceSkillIdRequired": {
"description": "Validation error when the skill identifier is empty."
},
"workspaceSkillIdInvalid": "Only letters, numbers, hyphens, and underscores are allowed.",
"@workspaceSkillIdInvalid": {
"description": "Validation error when the skill identifier contains illegal characters."
},
"workspaceSkillIdTaken": "That skill ID or name is already in use.",
"@workspaceSkillIdTaken": {
"description": "Error shown when saving a skill whose id or name collides with another skill."
},
"workspaceSkillDescription": "Description",
"@workspaceSkillDescription": {
"description": "Label for the optional skill description field."
},
"workspaceSkillDescriptionHint": "e.g. Step-by-step instructions for code reviews",
"@workspaceSkillDescriptionHint": {
"description": "Placeholder example for the skill description field."
},
"workspaceSkillContent": "Instructions",
"@workspaceSkillContent": {
"description": "Label for the skill Markdown instructions body field."
},
"workspaceSkillContentHint": "Enter skill instructions in markdown…",
"@workspaceSkillContentHint": {
"description": "Placeholder text for the empty skill instructions field."
},
"workspaceSkillContentRequired": "Instructions are required.",
"@workspaceSkillContentRequired": {
"description": "Validation error when the skill instructions are empty."
},
"workspaceSkillWriteTab": "Write",
"@workspaceSkillWriteTab": {
"description": "Toggle label for the editable skill instructions view."
},
"workspaceSkillPreviewTab": "Preview",
"@workspaceSkillPreviewTab": {
"description": "Toggle label for the rendered markdown preview of the skill instructions."
},
"workspaceSkillPreviewEmpty": "Nothing to preview yet.",
"@workspaceSkillPreviewEmpty": {
"description": "Empty-state text shown in the skill preview when there is no content."
},
"workspaceSkillManageAccess": "Manage access",
"@workspaceSkillManageAccess": {
"description": "Action to open the sharing/access editor for a skill."
},
"workspaceSkillSaved": "Skill saved",
"@workspaceSkillSaved": {
"description": "Confirmation that a skill was saved."
},
"workspaceSkillSaveFailed": "Couldn't save the skill. Please try again.",
"@workspaceSkillSaveFailed": {
"description": "Error shown when saving a skill fails."
},
"workspaceSkillClone": "Duplicate",
"@workspaceSkillClone": {
"description": "Overflow action that clones a skill."
},
"workspaceSkillCloneSuffix": "(Clone)",
"@workspaceSkillCloneSuffix": {
"description": "Suffix appended to the name of a cloned skill."
},
"workspaceSkillActivate": "Activate",
"@workspaceSkillActivate": {
"description": "Overflow action that enables a skill."
},
"workspaceSkillDeactivate": "Deactivate",
"@workspaceSkillDeactivate": {
"description": "Overflow action that disables a skill."
},
"workspaceSkillDelete": "Delete skill",
"@workspaceSkillDelete": {
"description": "Overflow action that deletes a skill."
},
"workspaceSkillDeleteConfirmTitle": "Delete skill?",
"@workspaceSkillDeleteConfirmTitle": {
"description": "Confirmation dialog title for deleting a skill."
},
"workspaceSkillDeleteConfirmMessage": "\"{name}\" will be permanently deleted.",
"@workspaceSkillDeleteConfirmMessage": {
"description": "Confirmation dialog body for deleting a skill.",
"placeholders": {
"name": {
"type": "String"
}
}
},
"workspaceSkillDeleted": "Skill deleted",
"@workspaceSkillDeleted": {
"description": "Confirmation that a skill was deleted."
},
"workspaceSkillImport": "Import skills",
"@workspaceSkillImport": {
"description": "Title of the JSON skill import sheet."
},
"workspaceSkillImportMarkdown": "Import Markdown",
"@workspaceSkillImportMarkdown": {
"description": "Overflow action that imports a skill from a Markdown file into the create editor."
},
"workspaceSkillImportJson": "Import JSON",
"@workspaceSkillImportJson": {
"description": "Overflow action that imports one or more skills from a JSON file."
},
"workspaceSkillImportMarkdownLoaded": "Markdown loaded. Review and save to create the skill.",
"@workspaceSkillImportMarkdownLoaded": {
"description": "Confirmation that a Markdown file was loaded into the unsaved skill editor."
},
"workspaceSkillImportMarkdownFailed": "Couldn't read the Markdown file.",
"@workspaceSkillImportMarkdownFailed": {
"description": "Error shown when reading a Markdown skill file fails."
},
"workspaceSkillExport": "Export skills",
"@workspaceSkillExport": {
"description": "Overflow action that exports readable skills as JSON."
},
"workspaceSkillExportFailed": "Couldn't export skills.",
"@workspaceSkillExportFailed": {
"description": "Error shown when exporting skills fails."
},
"workspaceToolCreateTitle": "Create tool",
"workspaceToolName": "Name",
"workspaceToolNameHint": "e.g. My Tools",
"workspaceToolNameRequired": "Enter a tool name.",
"workspaceToolId": "Tool ID",
"workspaceToolIdHint": "Letters, numbers, and underscores; can't start with a number.",
"workspaceToolIdRequired": "Enter a tool ID.",
"workspaceToolIdInvalid": "Tool IDs use letters, numbers, and underscores and can't start with a number.",
"workspaceToolIdTaken": "That tool ID is already in use.",
"workspaceToolDescription": "Description",
"workspaceToolDescriptionHint": "e.g. Tools for performing various operations",
"workspaceToolContent": "Python source",
"workspaceToolContentHint": "Write your tool as a Python class named Tools…",
"workspaceToolContentRequired": "Add Python source before saving.",
"workspaceToolWarning": "Tools run arbitrary Python on the server — only add code from sources you trust.",
"workspaceToolSaved": "Tool saved",
"workspaceToolDeleted": "Tool deleted",
"workspaceToolSaveFailed": "Couldn't save the tool.",
"workspaceToolManageAccess": "Manage access",
"workspaceToolClone": "Duplicate",
"workspaceToolCloneSuffix": "(Clone)",
"workspaceToolDelete": "Delete",
"workspaceToolDeleteConfirmTitle": "Удалить инструмент?",
"workspaceToolDeleteConfirmMessage": "Удалить инструмент «{name}»? Это действие нельзя отменить.",
"workspaceToolImport": "Import tools",
"workspaceToolImportJson": "Import JSON",
"workspaceToolImportUrl": "Import from URL",
"workspaceToolImportUrlTitle": "Import tool from URL",
"workspaceToolImportUrlHint": "Enter a raw or GitHub URL to a tool's Python file",
"workspaceToolImportUrlLabel": "URL",
"workspaceToolImportUrlInvalid": "Enter a valid URL.",
"workspaceToolImportUrlFailed": "Couldn't import the tool from that URL.",
"workspaceToolImportUrlLoaded": "Tool loaded — review and save.",
"workspaceToolExport": "Export tools",
"workspaceToolExportFailed": "Couldn't export tools.",
"workspaceToolManifest": "Manifest",
"workspaceToolManifestVersion": "Version {version}",
"workspaceToolManifestRequiredVersion": "Requires Open WebUI {version}",
"workspaceToolManifestFunding": "Funding: {url}",
"workspaceToolSpecs": "Generated specifications",
"workspaceToolDetails": "Сведения об инструменте",
"workspaceToolFunctionCount": "{count, plural, one{# функция} few{# функции} many{# функций} other{# функции}}",
"@workspaceToolFunctionCount": {
"placeholders": {
"count": {
"type": "int"
}
}
},
"workspaceToolSpecsEmpty": "No specifications were generated for this tool.",
"workspaceToolIncompatible": "This tool requires Open WebUI v{required}, but the server is v{current}. Update the server to save.",
"workspaceToolValves": "Valves",
"workspaceToolValvesTitle": "Valves",
"workspaceToolValvesServer": "Server valves",
"workspaceToolValvesUser": "User valves",
"workspaceToolValvesEmpty": "No valves",
"workspaceToolValvesSaved": "Valves updated",
"workspaceToolValvesSaveFailed": "Couldn't update valves.",
"workspaceToolValvesLoadFailed": "Couldn't load valves.",
"workspaceValveRequired": "required",
"workspaceValveDefault": "Default",
"workspaceValveCustom": "Custom",
"workspaceValveNone": "None",
"workspaceValveEnabled": "Enabled",
"workspaceValveDisabled": "Disabled",
"noteConflictCopyBadge": "Конфликтная копия",
"noteConflictCopySuffix": " (конфликтная копия)",
"notificationChannelDescription": "Уведомлять, когда кто-то отправляет сообщение в канал или личные сообщения.",
"notificationChannelMessagesDescription": "Ответы, сообщения канала и завершённые ответы",
"notificationChannelMessagesName": "Сообщения",
"notificationChannelTitle": "Сообщения канала",
"notificationChatDescription": "Уведомлять, когда ответ завершается в чате, который вы не просматриваете.",
"notificationChatTitle": "Ответы в чате",
"notificationDefaultTitle": "Новое сообщение",
"notificationInAppBannerDescription": "Показывать баннер внутри приложения, пока оно открыто.",
"notificationInAppBannerTitle": "Баннеры в приложении",
"notificationSoundAlwaysDescription": "Воспроизводить звук, даже когда приложение открыто и активно.",
"notificationSoundAlwaysTitle": "Всегда воспроизводить звук",
"notificationSoundDescription": "Воспроизводить звук при поступлении уведомления.",
"notificationSoundTitle": "Звук",
"notificationSystemDescription": "Показывать уведомления вне приложения, когда оно работает в фоне.",
"notificationSystemTitle": "Системные уведомления",
"notificationViewAction": "Просмотреть",
"notificationsEnabledDescription": "Получать уведомления, когда приложение работает в фоне и внутри приложения.",
"notificationsEnabledTitle": "Включить уведомления",
"notificationsPermissionDenied": "Уведомления отключены в системных настройках.",
"notificationsSubtitle": "Оповещения об ответах, сообщениях и завершённых ответах",
"notificationsTitle": "Уведомления",
"hermesSecretsUnavailable": "Не удалось получить доступ к сохраненным учетным данным Hermes. Разблокируйте защищенное хранилище и повторите попытку.",
"hermesAgentSettingsTitle": "Агент Hermes",
"hermesAgentSettingsSubtitle": "Подключение собственного агента Hermes",
"connectOpenWebUITitle": "Подключение к Open WebUI",
"connectOpenWebUISubtitle": "Добавить собственный сервер Open WebUI",
"backendChooserWelcome": "Добро пожаловать в Conduit",
"backendChooserPrompt": "Выберите способ подключения.",
"backendChooserOpenWebUISubtitle": "Подключение к серверу Open WebUI с полным доступом к чатам, заметкам и функциям.",
"backendChooserHermesTitle": "Агент Hermes",
"backendChooserHermesSubtitle": "Прямое подключение к собственному агенту Hermes — сервер Open WebUI не требуется.",
"hermesApprovalRequired": "Требуется подтверждение",
"hermesApprovalFallback": "Агент запрашивает разрешение на продолжение.",
"openWebUiPromptOther": "Другое",
"@openWebUiPromptOther": {"description": "Label for a free-form answer to an Open WebUI ask-user question."},
"openWebUiPromptAnswerHint": "Введите ответ",
"@openWebUiPromptAnswerHint": {"description": "Placeholder for a free-form Open WebUI ask-user answer."},
"openWebUiPromptSubmit": "Отправить",
"@openWebUiPromptSubmit": {"description": "Action that submits all answers to an Open WebUI ask-user prompt."},
"hermesApprovalApproved": "Одобрено ✓",
"hermesApprovalDenied": "Отклонено",
"hermesApprovalApproveAction": "Одобрить",
"hermesApprovalDenyAction": "Отклонить",
"hermesEnableTitle": "Включить агента Hermes",
"hermesEnableSubtitle": "Использовать собственного агента Hermes как модель в списке выбора.",
"hermesServerUrlTitle": "URL сервера",
"hermesApiKeyTitle": "Ключ API",
"hermesConfiguredReplacePlaceholder": "Настроено — введите для замены",
"hermesApiKeyPlaceholder": "Введите ключ API",
"hermesMemoryKeyTitle": "Ключ памяти (необязательно)",
"hermesMemoryKeyPlaceholder": "Генерируется автоматически, если оставить пустым",
"hermesCapabilitiesTitle": "Возможности",
"hermesCapabilityApproval": "Подтверждения",
"hermesCapabilitySkills": "Навыки",
"hermesCapabilityToolsets": "Наборы инструментов",
"hermesCapabilityJobs": "Задачи",
"hermesCapabilitySessions": "Сессии",
"hermesTabInfoTitle": "О Hermes Agent",
"hermesTabInfoSubtitle": "Автономный локальный агент с поддержкой инструментов",
"hermesNativeSettingsSubtitle": "Прямое подключение к собственному агенту Hermes.",
"hermesSelfHostedAgentLabel": "Собственный агент",
"hermesNoConversationsMessage": "Пока нет диалогов Hermes.\nНачните новый чат с агентом Hermes, и он появится здесь.",
"hermesConversationsTitle": "Диалоги",
"hermesBotsTitle": "Боты",
"hermesConversationsLoadError": "Не удалось загрузить диалоги Hermes.\nПроверьте подключение в Настройки → Агент Hermes.",
"hermesSchedulesLoading": "Загрузка расписаний…",
"hermesSchedulesUnavailable": "Расписания недоступны",
"hermesNoSchedulesYet": "Пока нет расписаний",
"hermesSchedulesSummary": "Активно {active} из {total}",
"hermesReviewSchedules": "Просмотреть расписания",
"hermesScheduledAgentsTitle": "Запланированные агенты",
"workspaceToolImportUrlHost": "Можно импортировать инструменты только с GitHub.",
"signInServerDescription": "Введите адрес сервера Open WebUI для авторизации",
"openWebUIServer": "Сервер Open WebUI",
"serverAddressUnavailable": "Адрес сервера недоступен",
"showPassword": "Показать пароль",
"hidePassword": "Скрыть пароль",
"reviewerModeEnabled": "Режим рецензента включен. Вы можете открыть демо без сервера.",
"reviewerModeDisabled": "Режим рецензента отключен.",
"openSourceLicenses": "Лицензии открытого ПО",
"directConnectionsTitle": "Прямые подключения",
"directConnectionsSubtitle": "Управление прямыми подключениями к провайдерам ИИ",
"directConnectionsDescription": "Настройте прямое взаимодействие с API OpenAI-совместимых сервисов, Ollama или локальными моделями.",
"directConnectionsCombinedDescription": "Подключайтесь напрямую к поставщикам моделей через подключения, синхронизированные с Open WebUI или сохранённые только на этом устройстве.",
"openWebUiDirectConnectionsSectionTitle": "Сервер Open WebUI",
"openWebUiDirectConnectionsSectionDescription": "Сохранены в вашей учётной записи Open WebUI и доступны в других клиентах, где выполнен вход.",
"deviceDirectConnectionsSectionTitle": "На этом устройстве",
"deviceDirectConnectionsSectionDescription": "Учётные данные безопасно хранятся на этом устройстве.",
"openWebUiDirectProfilesEmptyTitle": "На сервере пока нет подключений",
"openWebUiDirectProfilesEmptySubtitle": "Добавьте подключение к API, совместимому с OpenAI, чтобы синхронизировать его через Open WebUI.",
"openWebUiDirectConnectionsLoadFailed": "Не удалось синхронизировать подключения из Open WebUI.",
"openWebUiDirectConnectionSourceLabel": "Open WebUI",
"deviceDirectConnectionSourceLabel": "Это устройство",
"openWebUiDirectConnectionUnsupportedAuth": "В этом подключении используется способ аутентификации, который Conduit не может безопасно использовать.",
"directConnectionUnavailableLabel": "Недоступно",
"openWebUiDirectConnectionEditorDescription": "Изменения сохраняются в вашей учётной записи Open WebUI.",
"openWebUiDirectConnectionProviderDescription": "Пользовательские подключения Open WebUI поддерживают API, совместимые с OpenAI.",
"openWebUiDirectConnectionFallbackName": "Подключение Open WebUI",
"openWebUiDirectConnectionsUnavailable": "Подключения Open WebUI недоступны.",
"directConnectionNoLongerExists": "Это подключение больше не существует.",
"openWebUiDirectConnectionDeleteMessage": "Подключение {name} будет удалено из вашей учётной записи Open WebUI и других клиентов, где выполнен вход.",
"@openWebUiDirectConnectionDeleteMessage": {
"description": "Confirmation message shown before deleting an Open WebUI-synced direct connection.",
"placeholders": {
"name": {
"type": "String"
}
}
},
"addDirectConnection": "Добавить подключение",
"editDirectConnection": "Редактировать подключение",
"directConnectionName": "Название подключения",
"directConnectionNameRequired": "Введите название подключения.",
"directConnectionUrlInvalid": "Используйте корректный URL (http:// или https://).",
"directConnectionCredentialsReentryRequired": "Введите учетные данные заново при смене сервера.",
"directConnectionApiKeyRequired": "Введите ключ API или выберите подключение без аутентификации.",
"directConnectionHeaderNameRequired": "Введите имя заголовка, затем добавьте его.",
"directConnectionCredentialTransferTitle": "Использовать учетные данные с новым сервером?",
"directConnectionCredentialTransferMessage": "Ключ API и все пользовательские заголовки будут отправлены на новый сервер. Продолжайте, только если вы ему доверяете.",
"directConnectionCredentialTransferConfirm": "Использовать данные",
"directConnectionSaveFailed": "Не удалось сохранить подключение.",
"directConnectionSaveConflict": "Это подключение было изменено в другом месте. Перед сохранением откройте его заново.",
"directConnectionReachFailed": "Не удалось связаться с провайдером.",
"directConnectionDeleteTitle": "Удалить подключение?",
"directConnectionDeleteMessage": "Подключение {name} и его учетные данные будут удалены с этого устройства.",
"directConnectionDeleteFailed": "Не удалось удалить подключение.",
"directConnectionProbeConnected": "Подключено",
"directConnectionProbeConnectedModels": "{count, plural, one{Подключено · # модель} few{Подключено · # модели} many{Подключено · # моделей} other{Подключено · # моделей}}",
"directProvider": "Тип провайдера",
"openAICompatible": "OpenAI-совместимый",
"ollama": "Ollama",
"openRouterProviderName": "OpenRouter",
"directApiBaseUrl": "Базовый URL",
"directOpenRouterUrlInvalid": "Используйте корневой HTTPS-адрес /api/v1 OpenRouter (глобальный или для ЕС).",
"directOpenRouterBaseUrlDescription": "Использует ваш API-ключ OpenRouter, авторизованный каталог моделей и инструменты, управляемые Conduit.",
"directOpenRouterChatCompletionsDescription": "Chat Completions используется для встроенного веб-поиска, генерации изображений, анализа PDF и повторно используемых аннотаций PDF.",
"directCompletionApi": "API завершения",
"directChatCompletions": "Chat Completions",
"directResponses": "Responses",
"directChatCompletionsDescription": "Работает с OpenAI-совместимыми провайдерами, такими как LM Studio, vLLM, LocalAI и OpenRouter.",
"directResponsesDescription": "Использовать типизированный поток событий Responses. Выбирайте только если провайдер поддерживает эндпоинт /responses.",
"directApiVersion": "Версия API",
"directApiVersionDescription": "Необязательно. Добавляет параметр запроса api-version, необходимый для Azure OpenAI.",
"directAuthentication": "Аутентификация",
"noAuthentication": "Без аутентификации",
"bearerToken": "Токен Bearer",
"directApiKeyHeader": "Заголовок api-key",
"directApiKeyHeaderDescription": "Отправляет учетные данные в заголовке api-key, используемом Azure OpenAI.",
"directApiKey": "Ключ API",
"directCustomHeaders": "Пользовательские заголовки",
"directManualModelIds": "ID моделей вручную",
"directManualModelIdsDescription": "Необязательно. Если сервер не может показать список моделей, вводите по одному ID в строке.",
"@directManualModelIdsDescription": {
"placeholders": {}
},
"directModelIdPrefix": "Префикс ID модели",
"directModelIdPrefixDescription": "Необязательно. Добавляет видимое пространство имен (например, studio.model-name) без изменения ID модели, отправляемого провайдеру.",
"directModelTags": "Теги модели",
"directModelTagsDescription": "Необязательно. Разделяйте теги запятыми или переносами строк.",
"syncDirectHistory": "История Open WebUI",
"syncDirectHistorySubtitle": "Новые прямые чаты синхронизируются при входе. Существующие чаты сохраняются на месте.",
"directHistoryLocalOnlySubtitle": "Новые прямые чаты сохраняются на этом устройстве. Существующие чаты остаются на месте.",
"backendChooserDirectTitle": "Прямое подключение",
"backendChooserDirectSubtitle": "Подключение API OpenAI или Ollama. Учетные данные хранятся на устройстве.",
"testDirectConnection": "Проверить подключение",
"directConnectionTestUnavailable": "Проверка подключения пока недоступна.",
"finishDirectSetup": "Начать общение",
"directProfilesEmptyTitle": "Пока нет прямых подключений",
"directProfilesEmptySubtitle": "Добавьте OpenAI-совместимый сервер или Ollama для начала работы.",
"directConnectionsSectionTitle": "Подключения",
"directSavedDataUnreadable": "Не удалось прочитать сохраненные данные подключения.",
"directSecureStorageUnavailable": "Проверьте доступ к защищенному хранилищу и повторите попытку.",
"onDevice": "На устройстве",
"directConnectionError": "Ошибка прямого подключения",
"directAttachmentUnsupported": "Эта модель прямого подключения не поддерживает такие вложения.",
"backendChooserOpenWebUITitle": "Open WebUI",
"hermesMemoryKeyDescription": "Ключ памяти привязывает долговременную память агента к вам (X-Hermes-Session-Key). Если оставить пустым, стабильный ключ сгенерируется автоматически при первом сообщении.",
"moreModels": "Больше моделей",
"reasoningEffort": "Уровень рассуждения",
"reasoningEffortLow": "Низкий",
"reasoningEffortMedium": "Средний",
"reasoningEffortHigh": "Высокий",
"reasoningEffortMinimal": "Минимальный",
"reasoningEffortExtraHigh": "Очень высокий",
"reasoningEffortMaximum": "Максимальный",
"reasoningEffortNone": "Нет",
"customReasoningEffort": "Другой уровень",
"customReasoningEffortHint": "Введите уровень, поддерживаемый провайдером",
"proxyServerVerificationFailed": "Не удалось проверить сервер Open WebUI. Возможно, сеанс прокси истёк или недействителен. Повторите попытку.",
"proxyManualSignInRequired": "Не удалось пройти аутентификацию. Попробуйте войти вручную.",
"sidebarSyncingChats": "Синхронизация чатов",
"sidebarSyncingNotes": "Синхронизация заметок",
"sidebarFinishingSync": "Завершение синхронизации",
"loadMermaidPreview": "Загрузить предпросмотр Mermaid",
"loadChartPreview": "Загрузить предпросмотр диаграммы",
"loadPdfPreview": "Загрузить предпросмотр PDF: {title}",
"ollamaCloudDefaultName": "Ollama Cloud",
"ollamaCloudBaseUrlHint": "https://ollama.com",
"ollamaCloudBaseUrlDescription": "Используйте https://ollama.com с API-ключом Ollama Cloud.",
"ollamaModelLoaded": "Загружена",
"ollamaModelActions": "Память модели",
"ollamaModelActionsDescription": "Управляйте этой моделью в оперативной или видеопамяти Ollama.",
"ollamaLoadModel": "Загрузить модель",
"ollamaLoadModelDescription": "Загрузите её сейчас, чтобы ускорить первый ответ.",
"ollamaUnloadModel": "Выгрузить модель",
"ollamaUnloadModelDescription": "Освободите оперативную или видеопамять. Модель автоматически загрузится при следующем сообщении.",
"ollamaUnloadModelConfirmTitle": "Выгрузить {name}?",
"ollamaUnloadModelConfirmMessage": "Это освободит оперативную или видеопамять модели. Ollama автоматически загрузит её снова, когда вы отправите сообщение.",
"ollamaKeepAlive": "Хранение в памяти",
"ollamaKeepAliveDescription": "Применяется к этой модели после каждого запроса чата.",
"ollamaKeepAliveServerDefault": "По умолчанию на сервере",
"ollamaKeepAliveFiveMinutes": "5 минут",
"ollamaKeepAliveThirtyMinutes": "30 минут",
"ollamaKeepAliveOneHour": "1 час",
"ollamaKeepAliveAlways": "Всегда загружена",
"ollamaKeepAliveImmediate": "Выгружать после каждого ответа",
"ollamaKeepAliveCustom": "Другое значение",
"ollamaKeepAliveCustomHint": "Примеры: 10m, 24h, 3600, -1 или 0",
"ollamaKeepAliveInvalid": "Укажите секунды или длительность, например 10m или 24h.",
"ollamaModelLoadedMessage": "Модель {name} загружена.",
"ollamaModelUnloadedMessage": "Модель {name} выгружена.",
"ollamaModelActionFailed": "Не удалось обновить состояние модели в памяти.",
"ollamaThinking": "Рассуждение",
"ollamaCloudModelActionsDescription": "Настройте ответы этой модели Ollama Cloud.",
"ollamaThinkingDescription": "Выберите, насколько подробно должна рассуждать модель. Доступные уровни зависят от модели.",
"ollamaThinkingAutomatic": "Автоматически",
"ollamaThinkingDisabled": "Выкл.",
"ollamaThinkingLow": "Низкий",
"ollamaThinkingMedium": "Средний",
"ollamaThinkingHigh": "Высокий",
"ollamaThinkingMaximum": "Максимальный",
"releaseNotesSupportPromptHeading": "Нравится Conduit?",
"releaseNotesSupportPromptMessage": "Короткий отзыв помогает большему числу людей найти Conduit. Небольшие чаевые помогают мне продолжать разработку. И то и другое очень ценно.",
"directConnectProvider": "Подключить провайдера",
"directConnectProviderTitle": "Подключить провайдера",
"directConnectionEnabledSubtitle": "Показывать модели этого подключения в списке моделей.",
"directConnectionDetailsTitle": "Параметры подключения",
"directBaseUrlDescription": "Укажите префикс API, ожидаемый провайдером, обычно /v1.",
"directConfiguredReplacePlaceholder": "Настроено, введите новое значение для замены",
"directApiKeyPlaceholder": "Введите ключ API",
"hermesOnboardingFailed": "Не удалось завершить настройку Hermes. Проверьте защищённое хранилище и повторите попытку.",
"hermesConnectionDetailsTitle": "Параметры подключения",
"hermesMemoryKeyShortDescription": "Связывает долгосрочную память агента с вами. Оставьте поле пустым, и Conduit создаст ключ.",
"hermesConnectAction": "Подключить Hermes",
"hermesToolCount": "{count, plural, one{# инструмент} few{# инструмента} many{# инструментов} other{# инструмента}}",
"@hermesToolCount": {
"placeholders": {
"count": {
"type": "int"
}
}
},
"hermesNoToolsets": "Сервер не сообщил о наборах инструментов.",
"hermesToolsetsNewSessions": "Изменения применяются к новым сеансам Hermes. Существующие чаты сохраняют текущие инструменты.",
"hermesServerStatusTitle": "Состояние сервера",
"hermesNoServerStatus": "Сервер не сообщил о состоянии.",
"hermesLegacySessionToken": "Устаревший токен сеанса",
"hermesLegacySessionTokenHint": "Вставьте токен сеанса Hermes",
"hermesGatewayStopped": "Панель Hermes в сети, но Desktop Gateway остановлен. Запустите шлюз на сервере Hermes и повторите проверку.",
"hermesProfile": "Профиль Hermes",
"hermesProfileLabel": "Профиль",
"hermesRefreshProfiles": "Обновить профили",
"hermesDesktopAuthentication": "Аутентификация на компьютере",
"hermesDashboardAuthHelp": "Откройте панель Hermes в окне входа, затем вернитесь сюда, чтобы проверить подключение.",
"hermesAuthLegacy": "Устаревший",
"hermesAuthNative": "Нативный",
"hermesAuthDashboard": "Панель",
"hermesNativeSignIn": "Войти через Hermes",
"hermesDashboardSignIn": "Открыть вход в панель",
"hermesGatewayAccessHeaders": "Заголовки доступа шлюза",
"hermesGatewayAccessHeadersHelp": "Необязательные заголовки для защищённой панели Hermes.",
"hermesDesktopGateway": "Desktop Gateway",
"hermesReloadSkills": "Перезагрузить навыки",
"hermesNoInstalledSkills": "Нет установленных навыков",
"hermesMcpServers": "Серверы MCP",
"hermesSignOut": "Выйти из Hermes",
"hermesActionFailed": "Не удалось выполнить действие Hermes.",
"hermesToolsetUpdateFailed": "Не удалось обновить набор инструментов Hermes.",
"hermesJobStateLabel": "Состояние",
"hermesJobDeliveryLabel": "Доставка",
"hermesJobLastLabel": "Последний",
"hermesJobNextLabel": "Следующий",
"hermesJobRunHistory": "История запусков",
"hermesApprovalAllowOnce": "Разрешить один раз",
"hermesApprovalAllowSession": "Разрешить на сеанс",
"hermesApprovalAlwaysAllow": "Всегда разрешать",
"hermesClarificationTitle": "Hermes требуется уточнение",
"hermesSudoTitle": "Hermes требуется доступ sudo",
"hermesSecretTitle": "Hermes требуется секрет",
"hermesMcpSetupTitle": "Hermes требуется настройка MCP",
"hermesResponseSent": "Ответ отправлен",
"hermesNotNow": "Не сейчас",
"hermesSetUp": "Настроить",
"hermesSensitiveResponse": "Конфиденциальный ответ",
"hermesResponse": "Ответ",
"hermesSendResponse": "Отправить ответ",
"hermesFastTier": "Быстрый уровень",
"hermesFastTierOn": "Вкл.",
"hermesFastTierOff": "Выкл.",
"hermesTurnSteer": "Направить",
"hermesTurnSendNext": "Отправить следующее",
"hermesTurnControlsUnsupported": "Обновите Hermes, чтобы включить безопасное управление ходами.",
"sidebarHermesTab": "Hermes",
"markdownShowMoreLines": "Показать ещё {count, plural, one{{count} строку} few{{count} строки} many{{count} строк} other{{count} строк}}",
"@markdownShowMoreLines": {
"placeholders": {
"count": {
"type": "int"
}
}
},
"markdownShowLess": "Показать меньше",
"voiceBargeIn": "Перебивание",
"voiceBargeInDescription": "Продолжает слушать, пока ассистент говорит, чтобы вы могли его перебить.",
"voiceCallSpeakerOn": "Включить динамик",
"voiceCallSpeakerOff": "Выключить динамик",
"colorScheme": "Цветовая схема",
"channelEmptyHint": "Создайте канал, чтобы начать групповой разговор.",
"passwordChangeDescription": "Обновить пароль учётной записи",
"profileDetailsSummary": "О себе, пол и дата рождения",
"notificationRequiresMaster": "Включите уведомления, чтобы изменить эту настройку.",
"notificationRequiresSound": "Включите звук, чтобы изменить эту настройку.",
"enabled": "Вкл.",
"disabled": "Выкл.",
"hermesJobNew": "Новое запланированное задание",
"hermesJobAdminDisabled": "Управление заданиями отключено на этом сервере. Расписания доступны только для чтения.",
"hermesJobEmptyMessage": "Создайте запланированное задание для автоматического выполнения запроса.",
"hermesJobLoadFailed": "Не удалось загрузить запланированные задания. Проверьте подключение к Hermes и повторите попытку.",
"hermesJobCreateFailed": "Не удалось создать запланированное задание.",
"hermesJobCreated": "Запланированное задание создано.",
"hermesJobPaused": "Приостановлено",
"hermesJobRunNow": "Запустить сейчас",
"hermesJobEdit": "Изменить запланированное задание",
"hermesJobDelete": "Удалить запланированное задание",
"hermesJobResumeFailed": "Не удалось возобновить запланированное задание.",
"hermesJobPauseFailed": "Не удалось приостановить запланированное задание.",
"hermesJobResumed": "Запланированное задание возобновлено.",
"hermesJobPausedSuccess": "Запланированное задание приостановлено.",
"hermesJobRunFailed": "Не удалось запустить запланированное задание.",
"hermesJobStarted": "Запланированное задание запущено.",
"hermesJobUpdateFailed": "Не удалось обновить запланированное задание.",
"hermesJobUpdated": "Запланированное задание обновлено.",
"hermesJobDeleteTitle": "Удалить задание",
"hermesJobDeleteMessage": "Удалить это запланированное задание? Это действие нельзя отменить.",
"hermesJobDeleteFailed": "Не удалось удалить запланированное задание.",
"hermesJobDeleted": "Запланированное задание удалено.",
"hermesJobEditorEditTitle": "Изменить задание",
"hermesJobNameHint": "Ежедневная сводка",
"hermesJobPromptLabel": "Запрос",
"hermesJobPromptHint": "Что агент должен делать при каждом запуске?",
"hermesJobScheduleLabel": "Расписание",
"hermesJobScheduleHint": "0 9 * * * или every 2h",
"hermesJobTooLong": "Используйте не более {count} символов",
"hermesJobScheduleInvalid": "Введите длительность, интервал, дату, время или допустимое расписание cron.",
"hermesJobScheduleHelp": "Используйте cron (0 9 * * *), интервал (every 2h), задержку (30m) или дату и время ISO.",
"hermesJobsSheetSubtitle": "Приостановите расписания или проверьте, что будет запущено далее.",
"hermesJobsSheetReview": "Проверьте время запуска и приостановите расписания.",
"hermesJobsManageDescription": "Создавайте, изменяйте, запускайте или удаляйте расписания.",
"hermesJobsEmptyManageHint": "Используйте «Управление», чтобы создать запланированный запрос.",
"hermesLastStatus": "Последний статус: {status}",
"hermesSessionUntitled": "Разговор без названия",
"hermesSessionFork": "Ответвить",
"hermesSessionRenameTitle": "Переименовать разговор",
"hermesSessionNameHint": "Название разговора",
"hermesSessionDeleteTitle": "Удалить разговор",
"hermesSessionDeleteMessage": "Удалить этот разговор Hermes? Это действие нельзя отменить.",
"hermesSessionForkFailed": "Не удалось ответвить разговор.",
"hermesSessionRenameFailed": "Не удалось переименовать разговор.",
"hermesSessionDeleteFailed": "Не удалось удалить разговор.",
"hermesSessionLoadFailed": "Не удалось загрузить этот разговор. Проверьте подключение и повторите попытку.",
"hermesMemoryKeyFieldLabel": "Ключ памяти",
"directMcpServersTitle": "MCP servers", "directMcpEmptyTitle": "No MCP servers yet", "directMcpReachabilityHelp": "Add a Streamable HTTP endpoint that this phone can reach.", "directMcpEditorTitle": "Edit MCP server", "directMcpAddTitle": "Add MCP server", "directMcpName": "Server name", "directMcpEndpoint": "Streamable HTTP endpoint", "directMcpBearerToken": "Bearer token (optional)", "directMcpCustomHeaders": "Custom headers (optional)", "directMcpCustomHeadersHint": "One per line: Name: Value", "directMcpTestConnection": "Test connection", "directMcpTesting": "Testing connection…", "directMcpTestSucceeded": "Connected — {count} tools found.", "directMcpTestFailed": "Could not list tools from this MCP server.", "directMcpSaveFailed": "Could not save this MCP server.", "directMcpLoadFailed": "Could not load MCP servers from secure storage.", "directMcpMissing": "This MCP server no longer exists.", "directMcpCredentialTransferTitle": "Use credentials with new server?", "directMcpCredentialTransferMessage": "This sends the bearer token and custom headers to the new server. Continue only if you trust it. Cancel saves the server without credentials.", "directMcpCredentialTransferConfirm": "Use credentials", "directMcpDeleteTitle": "Delete MCP server?", "directMcpDeleteMessage": "This removes {name} and its credentials from this device.", "directMcpDeleteFailed": "Could not delete this MCP server.", "directMcpAuthMode": "Authentication", "directMcpAuthNone": "None", "directMcpAuthBearer": "Bearer token", "directMcpAuthOAuth": "OAuth", "directMcpOAuthConnect": "Connect in browser", "directMcpOAuthReconnect": "Reconnect in browser", "directMcpOAuthDisconnect": "Disconnect OAuth", "directMcpOAuthPending": "Waiting for authorization in the browser…", "directMcpOAuthConnected": "OAuth connected.", "directMcpOAuthConnectionDetails": "Connected to {issuerHost} · {scopes}", "directMcpOAuthNoScopes": "No scopes reported", "directMcpOAuthConnectFailed": "Could not connect this MCP server with OAuth.", "directMcpOAuthDisconnectFailed": "Could not disconnect OAuth from this MCP server.", "directMcpApprovalTitle": "Tool approval", "directMcpApprovalAllowOnce": "Allow once", "directMcpApprovalAllowSession": "Allow for session", "directMcpApprovalAllowAlways": "Always allow", "directMcpApprovalAlwaysTitle": "Always allow this tool?", "directMcpApprovalAlwaysMessage": "{serverName} will be allowed to run {toolName} without asking again. The approval is revoked automatically if the tool schema changes.", "@directMcpApprovalAlwaysMessage": {"placeholders":{"serverName":{"type":"String"},"toolName":{"type":"String"}}}, "directMcpApprovalSaveFailed": "Could not remember this approval. You can retry or choose another option.", "directMcpApprovalDeny": "Deny", "directMcpApprovalAllowed": "Allowed once", "directMcpApprovalAllowedSession": "Allowed for session", "directMcpApprovalAllowedAlways": "Always allowed", "directMcpApprovalDenied": "Denied", "directMcpApprovalExpired": "Approval expired", "directMcpRememberedApprovalsTitle": "Always allowed tools", "directMcpRememberedApprovalsSubtitle": "These exact tools can run without asking while their server and input schema remain unchanged.", "directMcpRememberedApprovalRevoke": "Revoke", "directMcpRememberedApprovalsRevokeAll": "Revoke all", "directMcpRememberedApprovalRevokeFailed": "Could not revoke the remembered approval."
,"directMcpContentAction": "MCP content"
,"directMcpContentTitle": "MCP content"
,"directMcpContentServer": "MCP server"
,"directMcpContentSearch": "Search prompts and resources"
,"directMcpContentPrompts": "Prompts"
,"directMcpContentResources": "Resources"
,"directMcpContentEmpty": "This server has no prompts or resources."
,"directMcpContentNoMatches": "No matching prompts or resources."
,"directMcpContentLoadFailed": "Could not load content from this MCP server."
,"directMcpContentRefresh": "Refresh MCP content"
,"directMcpContentPreviewTitle": "Preview"
,"directMcpContentInsert": "Insert"
,"directMcpContentPromptHeading": "MCP prompt from {serverName}: {promptName}"
,"@directMcpContentPromptHeading": {"placeholders":{"serverName":{"type":"String"},"promptName":{"type":"String"}}}
,"directMcpContentResourceHeading": "MCP resource from {serverName}: {resourceUri}"
,"@directMcpContentResourceHeading": {"placeholders":{"serverName":{"type":"String"},"resourceUri":{"type":"String"}}}
,"directMcpContentRoleUser": "User"
,"directMcpContentRoleAssistant": "Assistant"
,"directMcpContentRequestFailed": "Could not load this MCP content. Try again."
,"directMcpContentUnsupported": "This item is binary or unsupported. Choose a text prompt or text resource."
,"directMcpContentChanged": "This item changed on the server. Refresh and choose it again."
,"directMcpContentTooLarge": "This content is too large to insert."
,"directMcpContentComposerTooLarge": "The draft and this content exceed the 256 KiB message limit. Shorten the draft or content and try again."
,"directMcpContentLoading": "Loading MCP content…",
"reasoningEffortLight": "Низкий",
"reasoningEffortModerate": "Средний",
"reasoningEffortDeep": "Высокий",
"backendChooserSelfHostedSectionTitle": "Собственные серверы",
"backendChooserAppleSectionTitle": "Apple Intelligence",
"backendChooserModelApisSectionTitle": "API моделей",
"backendChooserAppleOnDeviceTitle": "Локальная модель Apple",
"backendChooserAppleOnDeviceSubtitle": "Запуск приватной модели Apple на устройстве без интернета.",
"appleOnDeviceUnavailable": "Локальная модель Apple недоступна на этом устройстве.",
"backendChooserApplePccTitle": "Apple Private Cloud Compute",
"backendChooserApplePccSubtitle": "Приватная облачная модель Apple без ключа API.",
"applePccUnavailable": "Apple Private Cloud Compute недоступна на этом устройстве.",
"applePccStatusAvailable": "Доступно",
"applePccQuotaApproaching": "Приближение к дневному лимиту",
"applePccQuotaReached": "Дневной лимит исчерпан",
"applePccQuotaResetsAt": "Сброс в {time}",
"applePccShowQuotaOptions": "Варианты использования",
"applePccOnDeviceFallback": "Резерв на устройстве",
"applePccOnDeviceFallbackSubtitle": "Использовать компактную локальную модель Apple при недоступности PCC. Запросы с рассуждениями не переключаются.",
"applePccCurrentLanguageUnsupported": "Текущий язык устройства может не поддерживаться.",
"applePccContextSize": "Контекст: {tokens} токенов",
"directContextLimit": "Лимит контекста: {tokens}",
"directContextCompactionTitle": "Сжатие контекста",
"directContextCompactionDescription": "Эти модели не сообщают размер контекста. Conduit использует выбранный лимит для сжатия старых сообщений.",
"directContextCompactionPickerDescription": "Выберите размер контекста, который Conduit должен использовать для автоматического сжатия.",
"hermesExecutionTitle": "Выполнение",
"hermesExecutionManual": "Ручное одобрение",
"hermesExecutionManualSubtitle": "Каждое действие требует подтверждения перед запуском.",
"hermesExecutionAuto": "Автоматическое выполнение",
"hermesExecutionAutoSubtitle": "Агент может выполнять разрешенные действия без запроса подтверждения.",
"hermesExecutionAskPerAction": "Запрашивать для каждого действия",
"hermesExecutionAskPerActionSubtitle": "Выбирайте подтверждение индивидуально для каждой категории инструментов.",
"hermesCapabilityTerminal": "Терминал",
"hermesCapabilityFilesystem": "Файловая система",
"hermesCapabilityWebSearch": "Веб-поиск",
"hermesCapabilityBrowser": "Браузер",
"hermesCapabilityMemory": "Память",
"hermesSchedulesTitle": "Расписания",
"hermesScheduleEnable": "Включить расписание",
"hermesScheduleDisable": "Отключить расписание",
"hermesScheduleRunNow": "Запустить сейчас",
"hermesScheduleDelete": "Удалить расписание",
"hermesJobsTitle": "Фоновые задачи",
"hermesJobsEmptyTitle": "Нет запланированных задач",
"hermesJobsEmptyDescription": "Здесь будут отображаться задачи и расписания агента Hermes.",
"hermesApprovalRequestTitle": "Требуется подтверждение действия",
"hermesApprovalAllowAlways": "Разрешать всегда",
"hermesApprovalDeny": "Отклонить",
"hermesStatusOnline": "В сети",
"hermesStatusOffline": "Не в сети",
"hermesStatusBusy": "Занят",
"hermesStatusConnecting": "Подключение…",
"hermesStatusError": "Ошибка",
"directConnectionsEmptyTitle": "Нет прямых подключений",
"directConnectionsEmptyDescription": "Добавьте подключение к API OpenAI, Anthropic, OpenRouter или Ollama.",
"directConnectionAdd": "Добавить подключение",
"directConnectionEdit": "Редактировать подключение",
"directConnectionDelete": "Удалить подключение",
"directConnectionDeleteConfirm": "Удалить это подключение?",
"directConnectionProvider": "Провайдер",
"directConnectionApiKey": "Ключ API",
"directConnectionBaseUrl": "Базовый URL",
"directConnectionModels": "Модели",
"directConnectionSuccess": "Подключение успешно установлено",
"directConnectionFailed": "Ошибка подключения к провайдеру",
"workspacePromptsTitle": "Промпты",
"workspacePromptsSubtitle": "Шаблоны системных и пользовательских промптов",
"workspacePromptTitleField": "Название",
"workspacePromptCommandField": "Команда (/название)",
"workspacePromptContentField": "Содержимое промпта",
"workspaceToolsTitle": "Инструменты",
"workspaceToolsSubtitle": "Пользовательские расширения и интеграции инструментов",
"workspaceKnowledgeTitle": "База знаний",
"workspaceKnowledgeSubtitle": "Коллекции документов для семантического поиска",
"directMcpInsecureCredentialsTitle": "Send credentials without encryption?",
"directMcpInsecureCredentialsMessage": "This server uses unencrypted HTTP. Your bearer token, OAuth token, and custom headers could be read or changed on the network.",
"directMcpInsecureCredentialsConfirm": "Send without encryption",
"hermesSessionTooLarge": "Этот разговор слишком большой, чтобы загрузить его на этом устройстве.",
"hermesSessionNotFound": "Этот разговор больше недоступен на сервере Hermes.",
"hermesSessionLoadFailedDetail": "Не удалось загрузить этот разговор: {detail}",
"@hermesSessionLoadFailedDetail": {
"placeholders": {
"detail": {
"type": "String"
}
}
},
"directBearerDescription": "Отправляет учётные данные в заголовке Authorization: Bearer. Большинство OpenAI-совместимых серверов (llama.cpp, vLLM, LM Studio, Ollama) ожидают именно это.",
"directApiKeyHeaderAzureOnlyDescription": "Отправляет учётные данные в заголовке api-key. Используйте только для Azure OpenAI; другие OpenAI-совместимые серверы ожидают токен Bearer."
}