config: add env schema and localization foundation
This commit is contained in:
+212
@@ -0,0 +1,212 @@
|
||||
{
|
||||
"language": {
|
||||
"default": "За замовчуванням",
|
||||
"en": "Англійська",
|
||||
"ru": "Російська",
|
||||
"ua": "Українська",
|
||||
"instructionName": "Ukrainian"
|
||||
},
|
||||
"providerChoice.default": "За замовчуванням",
|
||||
"errorText": "⚠️ Сталася помилка.",
|
||||
"waitThinkText": "⏳ Думаю...",
|
||||
"analyzingPictureText": "🔍 Аналізую зображення...",
|
||||
"analyzingPicturesText": "🔍 Аналізую зображення...",
|
||||
"reasoningText": "🤔 Міркую...",
|
||||
"transcribingAudioText": "🦻 Розпізнаю аудіо...",
|
||||
"genImageText": "👨🎨 Генерую зображення...",
|
||||
"cancelText": "❌ Скасувати",
|
||||
"regenerateText": "🔄 Згенерувати заново",
|
||||
"aiCancelCallbackText": "Скасувати генерацію AI",
|
||||
"aiRegenerateCallbackText": "Згенерувати відповідь AI заново",
|
||||
"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": "Виконувати через AI",
|
||||
"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": {
|
||||
"help": "Показати список команд",
|
||||
"settings": "Налаштування користувача",
|
||||
"start": "Запустити бота",
|
||||
"ping": "Затримка між отриманням і надсиланням повідомлення",
|
||||
"info": "Інформація про бота",
|
||||
"systemInfo": "Інформація про систему",
|
||||
"speechToText": "Розпізнати мовлення в текст",
|
||||
"textToSpeech": "Згенерувати мовлення з тексту",
|
||||
"qr": "Згенерувати QR-код з тексту",
|
||||
"quote": "Створити цитату з тексту",
|
||||
"choice": "Вибрати випадкове значення",
|
||||
"coin": "Орел або решка",
|
||||
"when": "випадкова дата"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user