config: add env schema and localization foundation
This commit is contained in:
+249
@@ -0,0 +1,249 @@
|
||||
{
|
||||
"language": {
|
||||
"default": "По умолчанию",
|
||||
"en": "Английский",
|
||||
"ru": "Русский",
|
||||
"ua": "Украинский",
|
||||
"instructionName": "Russian"
|
||||
},
|
||||
"providerChoice.default": "По умолчанию",
|
||||
"errorText": "⚠️ Произошла ошибка.",
|
||||
"waitThinkText": "⏳ Думаю...",
|
||||
"analyzingPictureText": "🔍 Анализирую изображение...",
|
||||
"analyzingPicturesText": "🔍 Анализирую изображения...",
|
||||
"reasoningText": "🤔 Рассуждаю...",
|
||||
"transcribingAudioText": "🦻 Распознаю аудио...",
|
||||
"genImageText": "👨🎨 Генерирую изображение...",
|
||||
"cancelText": "❌ Отмена",
|
||||
"regenerateText": "🔄 Сгенерировать заново",
|
||||
"aiCancelCallbackText": "Отменить генерацию ИИ",
|
||||
"aiRegenerateCallbackText": "Сгенерировать ответ ИИ заново",
|
||||
"userSettingsCallbackText": "Настройки пользователя",
|
||||
"noAccessText": "Нет доступа",
|
||||
"notBotCreatorText": "Вы не создатель бота.",
|
||||
"notBotAdministratorText": "Вы не администратор бота.",
|
||||
"notAChatText": "Это не чат.",
|
||||
"notChatAdministratorText": "Вы не администратор чата.",
|
||||
"botNotChatAdministratorText": "Бот не является администратором чата.",
|
||||
"replyRequiredText": "Нужно ответить на сообщение.",
|
||||
"onlyOriginalAuthorText": "Это действие доступно только автору исходного сообщения.",
|
||||
"dockerContainerLabelText": "Docker-контейнер",
|
||||
"processLabelText": "Процесс",
|
||||
"systemLabelText": "Система",
|
||||
"systemInfoOsLabelText": "ОС",
|
||||
"systemInfoRuntimeLabelText": "RUNTIME",
|
||||
"systemInfoDockerLabelText": "DOCKER",
|
||||
"systemInfoCpuLabelText": "CPU",
|
||||
"systemInfoRamLabelText": "RAM",
|
||||
"systemInfoCpuCoresText": "ядер",
|
||||
"systemInfoCpuThreadsText": "потоков",
|
||||
"idChatLabelText": "id чата",
|
||||
"idFromLabelText": "id пользователя",
|
||||
"idReplyLabelText": "id ответа",
|
||||
"runtimeProviderLabelText": "провайдер",
|
||||
"runtimeModelLabelText": "модель",
|
||||
"runtimeCapabilitiesLabelText": "возможности",
|
||||
"runtimeExternalLabelText": "внешний",
|
||||
"infoAiBlockLabelText": "AI",
|
||||
"infoSupportedProvidersLabelText": "поддерживаемые провайдеры",
|
||||
"infoToolsBlockLabelText": "инструменты",
|
||||
"infoCountLabelText": "количество",
|
||||
"infoCommandsBlockLabelText": "команды",
|
||||
"infoPublicLabelText": "публичные",
|
||||
"infoPrivateLabelText": "приватные",
|
||||
"infoChatLabelText": "чат",
|
||||
"infoCallbackLabelText": "колбэки",
|
||||
"commandsHeaderText": "Команды:\n\n",
|
||||
"sentCommandsInDmText": "Отправил команды в личные сообщения 😎",
|
||||
"couldNotSendCommandsInDmText": "Не получилось отправить команды в личные сообщения ☹️\nОтправляю их сюда",
|
||||
"administratorsHeaderText": "*Администраторы*:\n\n",
|
||||
"noUserInfoText": "Нет информации о пользователе",
|
||||
"useLeaveCommandText": "Используйте /leave",
|
||||
"databaseBackupCaption": "Резервная копия базы данных",
|
||||
"databaseBackupSentText": "Успешно отправил создателю в личные сообщения!",
|
||||
"noChoicesText": "Не из чего выбирать",
|
||||
"qrCodeMissingTextText": "Не найден текст для генерации QR-кода.",
|
||||
"quoteMissingTextText": "Не удалось найти текст в сообщении 😢",
|
||||
"quoteBuildFailedText": "Не удалось собрать цитату 😢",
|
||||
"speechToTextInstructionText": "Отправьте аудио/voice/video-note или ответьте /stt на сообщение с аудио.",
|
||||
"speechToTextEmptyResultText": "Распознавание речи не вернуло текст.",
|
||||
"textToSpeechInstructionText": "Отправьте текст после команды или ответьте /tts на сообщение с текстом.",
|
||||
"titleMissingText": "Не удалось найти заголовок...",
|
||||
"betterFallbackText": "Лучше",
|
||||
"pongText": "понг",
|
||||
"modelListHeaderText": "Доступные модели:\n\n",
|
||||
"modelListLoadFailedText": "Не удалось загрузить список моделей",
|
||||
"noCurrentModelText": "Модель не задана. Используйте одно из значений из списка.",
|
||||
"unsupportedAttachmentText": "Этот тип вложения не поддерживается.",
|
||||
"attachmentMissingFromCacheText": "Файл вложения отсутствует в кэше.",
|
||||
"noSupportedTranscriptionProviderText": "Не настроен ни один провайдер распознавания речи.",
|
||||
"noSupportedTextToSpeechProviderText": "Не настроен ни один провайдер синтеза речи.",
|
||||
"noSpeechToTextProviderForAccessText": "Для вашего уровня доступа не настроены провайдеры распознавания речи.",
|
||||
"noTextToSpeechProviderForAccessText": "Для вашего уровня доступа не настроены провайдеры синтеза речи.",
|
||||
"noTextToSynthesizeText": "Нет текста для синтеза речи.",
|
||||
"speechFileTooLargeText": "Файл речи больше 50 МБ и не может быть отправлен.",
|
||||
"userSettingsTitle": "Настройки пользователя",
|
||||
"userSettingsAiProviderSelectionTitle": "Выбор AI-провайдера",
|
||||
"userSettingsInterfaceLanguageSelectionTitle": "Выбор языка интерфейса",
|
||||
"userSettingsResponseLanguageSelectionTitle": "Выбор языка ответов",
|
||||
"userSettingsContextSizeSelectionTitle": "Выбор размера контекста",
|
||||
"userSettingsVoiceModeSelectionTitle": "Режим голосовых сообщений",
|
||||
"userSettingsTierLabel": "Уровень",
|
||||
"userSettingsAiProviderLabel": "AI-провайдер",
|
||||
"userSettingsInterfaceLanguageLabel": "Язык интерфейса",
|
||||
"userSettingsResponseLanguageLabel": "Язык ответов LLM",
|
||||
"userSettingsContextSizeLabel": "Размер контекста",
|
||||
"userSettingsVoiceModeLabel": "Голосовые сообщения",
|
||||
"userSettingsBackButtonText": "Назад",
|
||||
"userSettingsAiProviderButtonPrefix": "AI-провайдер",
|
||||
"userSettingsInterfaceLanguageButtonPrefix": "Язык интерфейса",
|
||||
"userSettingsResponseLanguageButtonPrefix": "Язык ответов",
|
||||
"userSettingsContextSizeButtonPrefix": "Контекст",
|
||||
"userSettingsVoiceModeButtonPrefix": "Голосовые",
|
||||
"userSettingsCreatorTierText": "Создатель",
|
||||
"userSettingsAdminTierText": "Админ",
|
||||
"userSettingsUserTierText": "Пользователь",
|
||||
"userSettingsSelectedPrefix": "✓ ",
|
||||
"userSettingsContextSizeDefaultText": "По умолчанию",
|
||||
"userSettingsVoiceModeExecuteText": "Выполнять через ИИ",
|
||||
"userSettingsVoiceModeTranscriptText": "Только расшифровка",
|
||||
"startingImageGenText": "🌈 Запускаю генерацию изображения...",
|
||||
"imageGenText": "🌈 Генерирую изображение...",
|
||||
"finalizingImageGenText": "🌈 Завершаю генерацию изображения...",
|
||||
"botCannotMakeItselfAdminText": "Бот не может назначить себя администратором",
|
||||
"botCreatorAlreadyAdminText": "Создатель бота уже администратор",
|
||||
"botCannotRemoveItselfFromAdminsText": "Бот не может удалить себя из администраторов",
|
||||
"botCreatorCannotStopBeingAdminText": "Создатель бота не может перестать быть администратором",
|
||||
"botWillNotBanCreatorText": "Бот не будет банить своего создателя.",
|
||||
"botWillNotBanAdminsText": "Бот не будет банить своих администраторов.",
|
||||
"botIsNotBannedByItselfText": "Бот и так не забанен сам собой.",
|
||||
"botCreatorNeverBannedText": "Создатель бота не забанен и никогда не будет.",
|
||||
"botAdminsNotBannedText": "Администраторы бота и так не забанены.",
|
||||
"botWillNotIgnoreItselfText": "Бот не будет игнорировать себя.",
|
||||
"botWillNotIgnoreCreatorText": "Бот не будет игнорировать своего создателя.",
|
||||
"botWillNotIgnoreAdminsText": "Бот не будет игнорировать своих администраторов.",
|
||||
"botIsNotIgnoredByItselfText": "Бот и так не игнорирует сам себя.",
|
||||
"botCreatorNotIgnoredText": "Создатель бота не игнорируется и никогда не будет.",
|
||||
"botAdminsNotIgnoredText": "Администраторы бота и так не игнорируются.",
|
||||
"botAlreadyAlwaysListensToItselfText": "Бот и так всегда слушает сам себя",
|
||||
"botAlwaysListensToCreatorText": "Бот всегда слушает своего создателя",
|
||||
"coinHeadsText": "Орёл",
|
||||
"coinTailsText": "Решка",
|
||||
"distortReplyInstructionText": "Ответьте /distort на сообщение с изображением (фото, документ или стикер).\nПример: /distort 16 80",
|
||||
"distortMissingImageText": "Не вижу изображения в ответе. Отправьте фото или файл изображения.",
|
||||
"shutdownFallbackText": "...",
|
||||
"shutdownSequenceTexts": [
|
||||
"ну что ж, народ",
|
||||
"было приятно пообщаться",
|
||||
"но мне пора отдохнуть",
|
||||
"всем добра"
|
||||
],
|
||||
"shutdownDoneText": "*R.I.P*",
|
||||
"whenNowText": "прямо сейчас",
|
||||
"whenNeverText": "никогда",
|
||||
"whenYearUnitText": "год",
|
||||
"whenDayUnitText": "день",
|
||||
"whenWeekUnitText": "неделя",
|
||||
"whenMonthUnitText": "месяц",
|
||||
"whenHourUnitText": "час",
|
||||
"whenMinuteUnitText": "минута",
|
||||
"whenSecondUnitText": "секунда",
|
||||
"getCancelledText": "{provider}\n❌ Генерация отменена.",
|
||||
"getPartialImageGenText": "🌈 Генерирую изображение ({iteration}/{total})...",
|
||||
"getImageGenDoneText.withModel": "👨🎨 Изображение сгенерировано. Модель: `{model}`.",
|
||||
"getImageGenDoneText.default": "👨🎨 Изображение сгенерировано.",
|
||||
"getErrorText.withReason": "{errorText} Причина:\n{reason}",
|
||||
"getUseToolText.python": "👨💻 Запускаю `Python`",
|
||||
"getUseToolText.default": "🔧 Использую инструмент `{name}`",
|
||||
"getAnalyzingDocumentText.default": "🔍 Анализирую документ...",
|
||||
"getAnalyzingDocumentText.single": "🔍 Анализирую документ: `{name}`",
|
||||
"getAnalyzingDocumentText.many": "🔍 Анализирую документы: {names}",
|
||||
"getPreparingRAGText.default": "🔍 Готовлю RAG для документа...",
|
||||
"getPreparingRAGText.single": "🔍 Готовлю RAG для документа: `{name}`",
|
||||
"getPreparingRAGText.many": "🔍 Готовлю RAG для документов: {names}",
|
||||
"getBuildingRAGIndexText.default": "🧠 Строю RAG-индекс...",
|
||||
"getBuildingRAGIndexText.withModel": "🧠 Строю RAG-индекс: `{modelName}`.",
|
||||
"queueNoneText": "нет",
|
||||
"getAiQueueText.queued": "⏳ Запрос к {provider} поставлен в очередь.",
|
||||
"getAiQueueText.ahead": "Запросов впереди: {count}.",
|
||||
"getTelegramFileTooLargeText": "Файл {fileName} больше {maxSizeMb} МБ и не может быть отправлен.",
|
||||
"getUserIsNowAdminText": "{name} теперь администратор!",
|
||||
"getUserAlreadyAdminText": "{name} уже администратор 🤔",
|
||||
"getUserNoLongerAdminText": "{name} больше не администратор!",
|
||||
"getUserWasNotAdminText": "{name} не был администратором 🤔",
|
||||
"getUserBannedText": "{name} забанен 🚫",
|
||||
"getUserBanFailedText": "Не удалось забанить {name} ☹️",
|
||||
"getUserUnbannedText": "{name} разбанен ⛓️💥",
|
||||
"getUserUnbanFailedText": "Не удалось разбанить {name} ☹️",
|
||||
"getUserIgnoredText": "{name} заглушён! 🔇",
|
||||
"getUserAlreadyIgnoredText": "{name} уже заглушён 🤔",
|
||||
"getUserIgnoreFailedText": "Не удалось заглушить {name} ☹️",
|
||||
"getUserUnignoredText": "{name} больше не заглушён! 🔈",
|
||||
"getUserWasNotIgnoredText": "{name} не был заглушён 🤔",
|
||||
"getUserUnignoreFailedText": "Не удалось включить {name} обратно ☹️",
|
||||
"getChoiceText": "Выбрал *{choice}*",
|
||||
"getCoinResultText": "Выпало: *{result}*",
|
||||
"getLoadedModelsText": "Загруженные модели: {models}",
|
||||
"getSelectedModelText": "Выбрана модель: `{model}`",
|
||||
"getCurrentModelText": "Текущая модель: `{model}`",
|
||||
"getLoadingModelText": "Загружаю модель `{model}`...",
|
||||
"getUserSettingsContextSizeText": "{size} токенов",
|
||||
"getQrCodeTextTooLongText": "Текст слишком длинный для QR ({actualLength} символов). Обрежу до {maxLength} символов.",
|
||||
"getQrCodeReadyText": "QR-код готов ✅\nСодержимое:\n<blockquote expandable>{content}</blockquote>",
|
||||
"getQrCodeFailedText": "Не удалось сгенерировать QR: {reason}",
|
||||
"getWhenPrefixText": "через ",
|
||||
"getWhenPluralUnitText": "{unit}",
|
||||
"getWhenDurationText": "{prefix}{value} {unit}",
|
||||
"commandDescriptions": {
|
||||
"ae": "вычисление",
|
||||
"adminsAdd": "Добавить пользователя в администраторы",
|
||||
"adminsRemove": "Удалить пользователя из администраторов",
|
||||
"ban": "забанить пользователя в чате",
|
||||
"choice": "Выбрать случайное значение",
|
||||
"coin": "Орёл или решка",
|
||||
"debug": "Вернуть msg или reply в JSON",
|
||||
"dice": "Отправить случайный или конкретный дайс",
|
||||
"distort": "Искажение изображения",
|
||||
"geminiChat": "Чат с AI (Gemini)",
|
||||
"geminiGetModel": "Показать текущую модель Gemini",
|
||||
"geminiListModels": "Показать все модели Gemini",
|
||||
"geminiSetModel": "Установить модель Gemini",
|
||||
"help": "Показать список команд",
|
||||
"id": "ID чата, пользователя и ответа",
|
||||
"ignore": "Бот будет игнорировать пользователя",
|
||||
"info": "Информация о боте",
|
||||
"leave": "Бот покинет текущий чат",
|
||||
"mistralChat": "Чат с AI (Mistral)",
|
||||
"mistralGetModel": "Показать текущую модель Mistral",
|
||||
"mistralListModels": "Показать все модели Mistral",
|
||||
"mistralSetModel": "Установить модель Mistral",
|
||||
"ollamaChat": "Чат с AI (Ollama)",
|
||||
"ollamaGetModel": "Показать текущую модель Ollama",
|
||||
"ollamaListModels": "Показать все модели Ollama",
|
||||
"ollamaSearch": "Веб-поиск через Ollama",
|
||||
"ollamaSetModel": "Установить модель Ollama",
|
||||
"openAiChat": "Чат с AI (OpenAI)",
|
||||
"openAiGetModel": "Показать текущую модель OpenAI",
|
||||
"openAiListModels": "Показать все модели OpenAI",
|
||||
"openAiSetModel": "Установить модель OpenAI",
|
||||
"ping": "Задержка между получением и отправкой сообщения",
|
||||
"qr": "Сгенерировать QR-код из текста",
|
||||
"quote": "Сделать цитату из текста",
|
||||
"randomInt": "Случайное число из диапазона",
|
||||
"randomString": "Случайная строка до 4096 символов",
|
||||
"settings": "Настройки пользователя",
|
||||
"shutdown": "Выключить бота",
|
||||
"speechToText": "Распознать речь в текст",
|
||||
"start": "Запустить бота",
|
||||
"systemInfo": "Информация о системе",
|
||||
"textToSpeech": "Сгенерировать речь из текста",
|
||||
"title": "Изменить название группы",
|
||||
"test": "Проверка системной функциональности",
|
||||
"transliteration": "Транслитерация EN <--> RU",
|
||||
"unban": "разбанить пользователя в чате",
|
||||
"unignore": "Бот снова будет отвечать пользователю",
|
||||
"uptime": "Время работы бота",
|
||||
"whatBetter": "случайно выбрать a или b",
|
||||
"when": "случайная дата"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user