feat: add support for additional languages in localization
- Expanded the localization support by adding new languages: Chinese (zh), Russian (ru), Dutch (nl), and Spanish (es). - Updated the localization files and the AppLocalizations class to include the new languages, ensuring a broader reach for international users. - Enhanced the isSupported method to recognize the newly added languages, improving the app's adaptability to diverse user preferences.
This commit is contained in:
317
lib/l10n/app_ru.arb
Normal file
317
lib/l10n/app_ru.arb
Normal file
@@ -0,0 +1,317 @@
|
||||
{
|
||||
"@@locale": "ru",
|
||||
"appTitle": "Conduit",
|
||||
"initializationFailed": "Ошибка инициализации",
|
||||
"retry": "Повторить",
|
||||
"back": "Назад",
|
||||
"you": "Вы",
|
||||
"loadingProfile": "Загрузка профиля...",
|
||||
"unableToLoadProfile": "Не удалось загрузить профиль",
|
||||
"pleaseCheckConnection": "Пожалуйста, проверьте соединение и повторите попытку",
|
||||
"connectionIssueTitle": "Не удается подключиться к серверу",
|
||||
"@connectionIssueTitle": {
|
||||
"description": "Заголовок, отображаемый при недоступности настроенного сервера"
|
||||
},
|
||||
"connectionIssueSubtitle": "Переподключитесь, чтобы продолжить, или выйдите, чтобы выбрать другой сервер.",
|
||||
"@connectionIssueSubtitle": {
|
||||
"description": "Подзаголовок с доступными действиями при недоступности сервера"
|
||||
},
|
||||
"stillOfflineMessage": "Мы все еще не можем подключиться к серверу. Проверьте соединение и повторите попытку.",
|
||||
"@stillOfflineMessage": {
|
||||
"description": "Сообщение после повторной попытки, когда соединение не восстановлено"
|
||||
},
|
||||
"account": "Аккаунт",
|
||||
"supportConduit": "Поддержать Conduit",
|
||||
"supportConduitSubtitle": "Сохраните независимость Conduit, финансируя разработку.",
|
||||
"githubSponsorsTitle": "GitHub Sponsors",
|
||||
"githubSponsorsSubtitle": "Станьте регулярным спонсором для финансирования дорожной карты.",
|
||||
"buyMeACoffeeTitle": "Buy Me a Coffee",
|
||||
"buyMeACoffeeSubtitle": "Сделайте разовое пожертвование в знак благодарности.",
|
||||
"signOut": "Выйти",
|
||||
"endYourSession": "Завершить сеанс",
|
||||
"defaultModel": "Модель по умолчанию",
|
||||
"autoSelect": "Автовыбор",
|
||||
"loadingModels": "Загрузка моделей...",
|
||||
"failedToLoadModels": "Не удалось загрузить модели",
|
||||
"availableModels": "Доступные модели",
|
||||
"noResults": "Нет результатов",
|
||||
"searchModels": "Поиск моделей...",
|
||||
"errorMessage": "Что-то пошло не так. Пожалуйста, попробуйте еще раз.",
|
||||
"loginButton": "Войти",
|
||||
"menuItem": "Настройки",
|
||||
"dynamicContentWithPlaceholder": "Добро пожаловать, {name}!",
|
||||
"itemsCount": "{count, plural, =0{Нет элементов} one{{count} элемент} few{{count} элемента} other{{count} элементов}}",
|
||||
"closeButtonSemantic": "Закрыть",
|
||||
"loadingContent": "Загрузка содержимого",
|
||||
"noItems": "Нет элементов",
|
||||
"noItemsToDisplay": "Нет элементов для отображения",
|
||||
"loadMore": "Загрузить еще",
|
||||
"workspace": "Рабочее пространство",
|
||||
"recentFiles": "Недавние файлы",
|
||||
"knowledgeBase": "База знаний",
|
||||
"noFilesYet": "Пока нет файлов",
|
||||
"uploadDocsPrompt": "Загрузите документы для использования в разговорах с Conduit",
|
||||
"uploadFirstFile": "Загрузить первый файл",
|
||||
"attachments": "Вложения",
|
||||
"knowledgeBaseEmpty": "База знаний пуста",
|
||||
"createCollectionsPrompt": "Создайте коллекции связанных документов для удобной ссылки",
|
||||
"chooseSourcePhoto": "Выберите источник",
|
||||
"takePhoto": "Сделать фото",
|
||||
"chooseFromGallery": "Выбрать из галереи",
|
||||
"document": "Документ",
|
||||
"documentHint": "PDF, Word или текстовый файл",
|
||||
"uploadFileTitle": "Загрузить файл",
|
||||
"fileUploadComingSoon": "Загрузка файлов для {type} скоро появится!",
|
||||
"kbCreationComingSoon": "Создание базы знаний скоро появится!",
|
||||
"backToServerSetup": "Вернуться к настройке сервера",
|
||||
"connectedToServer": "Подключено к серверу",
|
||||
"signIn": "Войти",
|
||||
"enterCredentials": "Введите свои учетные данные для доступа к вашим разговорам с ИИ",
|
||||
"credentials": "Учетные данные",
|
||||
"apiKey": "API-ключ",
|
||||
"usernameOrEmail": "Имя пользователя или email",
|
||||
"password": "Пароль",
|
||||
"signInWithApiKey": "Войти с помощью API-ключа",
|
||||
"connectToServer": "Подключиться к серверу",
|
||||
"enterServerAddress": "Введите адрес вашего сервера Open-WebUI для начала",
|
||||
"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": "Не удалось войти. Проверьте учетные данные и настройки сервера.",
|
||||
"skip": "Пропустить",
|
||||
"next": "Далее",
|
||||
"done": "Готово",
|
||||
"onboardStartTitle": "Здравствуйте, {username}",
|
||||
"onboardStartSubtitle": "Выберите модель для начала. Нажмите «Новый чат» в любое время.",
|
||||
"onboardStartBullet1": "Нажмите на имя модели в верхней панели для переключения моделей",
|
||||
"onboardStartBullet2": "Используйте «Новый чат» для сброса контекста",
|
||||
"onboardAttachTitle": "Добавить контекст",
|
||||
"onboardAttachSubtitle": "Обоснуйте ответы содержимым из рабочего пространства или фотографиями.",
|
||||
"onboardAttachBullet1": "Рабочее пространство: PDF, документы, наборы данных",
|
||||
"onboardAttachBullet2": "Фотографии: камера или галерея",
|
||||
"onboardSpeakTitle": "Говорите естественно",
|
||||
"onboardSpeakSubtitle": "Нажмите на микрофон для диктовки с визуализацией формы волны в реальном времени.",
|
||||
"onboardSpeakBullet1": "Остановитесь в любое время; частичный текст сохранится",
|
||||
"onboardSpeakBullet2": "Отлично подходит для быстрых заметок или длинных запросов",
|
||||
"onboardQuickTitle": "Быстрые действия",
|
||||
"onboardQuickSubtitle": "Откройте меню для переключения между чатами, рабочим пространством и профилем.",
|
||||
"onboardQuickBullet1": "Нажмите на меню для доступа к чатам, рабочему пространству, профилю",
|
||||
"onboardQuickBullet2": "Начните новый чат или управляйте моделями из верхней панели",
|
||||
"addAttachment": "Добавить вложение",
|
||||
"attachmentLabel": "Вложение",
|
||||
"tools": "Инструменты",
|
||||
"voiceInput": "Голосовой ввод",
|
||||
"voice": "Голос",
|
||||
"voiceStatusListening": "Слушаю...",
|
||||
"voiceStatusRecording": "Запись...",
|
||||
"voiceHoldToTalk": "Удерживайте для разговора",
|
||||
"voiceAutoSend": "Автоотправка",
|
||||
"voiceTranscript": "Транскрипция",
|
||||
"voicePromptSpeakNow": "Говорите сейчас...",
|
||||
"voicePromptTapStart": "Нажмите «Начать» для запуска",
|
||||
"voiceActionStop": "Стоп",
|
||||
"voiceActionStart": "Начать",
|
||||
"messageInputLabel": "Ввод сообщения",
|
||||
"messageInputHint": "Введите ваше сообщение",
|
||||
"messageHintText": "Сообщение...",
|
||||
"stopGenerating": "Остановить генерацию",
|
||||
"codeCopiedToClipboard": "Код скопирован в буфер обмена.",
|
||||
"send": "Отправить",
|
||||
"sendMessage": "Отправить сообщение",
|
||||
"file": "Файл",
|
||||
"photo": "Фото",
|
||||
"camera": "Камера",
|
||||
"apiUnavailable": "Служба API недоступна",
|
||||
"unableToLoadImage": "Не удалось загрузить изображение",
|
||||
"notAnImageFile": "Не является файлом изображения: {fileName}",
|
||||
"failedToLoadImage": "Не удалось загрузить изображение: {error}",
|
||||
"invalidDataUrl": "Неверный формат data URL",
|
||||
"failedToDecodeImage": "Не удалось декодировать изображение",
|
||||
"invalidImageFormat": "Неверный формат изображения",
|
||||
"emptyImageData": "Пустые данные изображения",
|
||||
"featureRequiresInternet": "Эта функция требует подключения к интернету",
|
||||
"messagesWillSendWhenOnline": "Сообщения будут отправлены, когда вы снова будете онлайн",
|
||||
"confirm": "Подтвердить",
|
||||
"cancel": "Отмена",
|
||||
"ok": "OK",
|
||||
"inputField": "Поле ввода",
|
||||
"captureDocumentOrImage": "Сфотографировать документ или изображение",
|
||||
"checkConnection": "Проверить соединение",
|
||||
"openSettings": "Открыть настройки",
|
||||
"chooseDifferentFile": "Выбрать другой файл",
|
||||
"goBack": "Назад",
|
||||
"technicalDetails": "Технические детали",
|
||||
"save": "Сохранить",
|
||||
"chooseModel": "Выбрать модель",
|
||||
"reviewerMode": "РЕЖИМ РЕЦЕНЗЕНТА",
|
||||
"selectLanguage": "Выбрать язык",
|
||||
"newFolder": "Новая папка",
|
||||
"folderName": "Имя папки",
|
||||
"newChat": "Новый чат",
|
||||
"more": "Еще",
|
||||
"clear": "Очистить",
|
||||
"searchHint": "Поиск...",
|
||||
"searchConversations": "Поиск разговоров...",
|
||||
"create": "Создать",
|
||||
"folderCreated": "Папка создана",
|
||||
"failedToCreateFolder": "Не удалось создать папку",
|
||||
"movedChatToFolder": "Перемещено «{title}» в «{folder}»",
|
||||
"@movedChatToFolder": {
|
||||
"placeholders": {
|
||||
"title": {"type": "String"},
|
||||
"folder": {"type": "String"}
|
||||
}
|
||||
},
|
||||
"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",
|
||||
"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": "Введите ваш пароль",
|
||||
"enterApiKey": "Введите ваш API-ключ",
|
||||
"signingIn": "Вход...",
|
||||
"advancedSettings": "Расширенные настройки",
|
||||
"customHeaders": "Пользовательские заголовки",
|
||||
"customHeadersDescription": "Добавьте пользовательские HTTP-заголовки для аутентификации, API-ключей или особых требований сервера.",
|
||||
"allowSelfSignedCertificates": "Доверять самоподписанным сертификатам",
|
||||
"@allowSelfSignedCertificates": {
|
||||
"description": "Переключатель, позволяющий доверять самоподписанным TLS-сертификатам для настроенного сервера."
|
||||
},
|
||||
"allowSelfSignedCertificatesDescription": "Принимать TLS-сертификат этого сервера, даже если он самоподписанный. Включайте только для серверов, которым вы доверяете.",
|
||||
"@allowSelfSignedCertificatesDescription": {
|
||||
"description": "Вспомогательный текст, разъясняющий риски включения переключателя самоподписанных сертификатов."
|
||||
},
|
||||
"headerNameEmpty": "Имя заголовка не может быть пустым",
|
||||
"headerNameTooLong": "Имя заголовка слишком длинное (максимум 64 символа)",
|
||||
"headerNameInvalidChars": "Недопустимое имя заголовка. Используйте только буквы, цифры и эти символы: !#$&-^_`|~",
|
||||
"headerNameReserved": "Невозможно переопределить зарезервированный заголовок «{key}»",
|
||||
"@headerNameReserved": {"placeholders": {"key": {"type": "String"}}},
|
||||
"headerValueEmpty": "Значение заголовка не может быть пустым",
|
||||
"headerValueTooLong": "Значение заголовка слишком длинное (максимум 1024 символа)",
|
||||
"headerValueInvalidChars": "Значение заголовка содержит недопустимые символы. Используйте только печатаемые ASCII.",
|
||||
"headerValueUnsafe": "Значение заголовка содержит потенциально небезопасное содержимое",
|
||||
"headerAlreadyExists": "Заголовок «{key}» уже существует. Сначала удалите его для обновления.",
|
||||
"@headerAlreadyExists": {"placeholders": {"key": {"type": "String"}}},
|
||||
"maxHeadersReachedDetail": "Разрешено максимум 10 пользовательских заголовков. Удалите некоторые, чтобы добавить больше.",
|
||||
"editMessage": "Редактировать сообщение",
|
||||
"noModelsAvailable": "Нет доступных моделей",
|
||||
"followingSystem": "Следует за системой: {theme}",
|
||||
"@followingSystem": {"placeholders": {"theme": {"type": "String"}}},
|
||||
"themeDark": "Темная",
|
||||
"themePalette": "Цветовая палитра",
|
||||
"@themePalette": {"description": "Заголовок для выбора цветовой палитры приложения."},
|
||||
"themePaletteDescription": "Выберите акцентные цвета для кнопок, карточек и пузырьков чата.",
|
||||
"@themePaletteDescription": {"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": "3с"}}
|
||||
},
|
||||
"appCustomization": "Настройка приложения",
|
||||
"appCustomizationSubtitle": "Персонализируйте отображение имен и интерфейса",
|
||||
"quickActionsDescription": "Выберите до двух ярлыков для закрепления рядом с полем ввода",
|
||||
"chatSettings": "Чат",
|
||||
"sendOnEnter": "Отправка по Enter",
|
||||
"sendOnEnterDescription": "Enter отправляет (программная клавиатура). Также доступно Cmd/Ctrl+Enter",
|
||||
"display": "Отображение",
|
||||
"realtime": "Реальное время",
|
||||
"transportMode": "Режим транспорта",
|
||||
"transportModeDescription": "Выберите, как приложение подключается для обновлений в реальном времени.",
|
||||
"mode": "Режим",
|
||||
"transportModeAuto": "Авто (опрос + WebSocket)",
|
||||
"transportModeWs": "Только WebSocket",
|
||||
"transportModeAutoInfo": "Более надежен в ограничительных сетях. Переходит на WebSocket, когда это возможно.",
|
||||
"transportModeWsInfo": "Меньше накладных расходов, но может не работать за строгими прокси/брандмауэрами."
|
||||
}
|
||||
Reference in New Issue
Block a user