|  |  |  |  | import { SubmitKey } from "../store/config"; | 
					
						
							|  |  |  |  | import { PartialLocaleType } from "../locales/index"; | 
					
						
							|  |  |  |  | import { getClientConfig } from "../config/client"; | 
					
						
							|  |  |  |  | import { SAAS_CHAT_UTM_URL } from "@/app/constant"; | 
					
						
							|  |  |  |  | const isApp = !!getClientConfig()?.isApp; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | const ru: PartialLocaleType = { | 
					
						
							|  |  |  |  |   WIP: "Скоро...", | 
					
						
							|  |  |  |  |   Error: { | 
					
						
							|  |  |  |  |     Unauthorized: isApp | 
					
						
							|  |  |  |  |       ? `😆 В разговоре возникли некоторые проблемы, не переживайте:
 | 
					
						
							|  |  |  |  |     \\ 1️⃣ Если вы хотите начать без настройки, [нажмите здесь, чтобы немедленно начать разговор 🚀](${SAAS_CHAT_UTM_URL}) | 
					
						
							|  |  |  |  |     \\ 2️⃣ Если вы хотите использовать свои ресурсы OpenAI, нажмите [здесь](/#/settings), чтобы изменить настройки ⚙️` | 
					
						
							|  |  |  |  |       : `😆 В разговоре возникли некоторые проблемы, не переживайте:
 | 
					
						
							|  |  |  |  |     \ 1️⃣ Если вы хотите начать без настройки, [нажмите здесь, чтобы немедленно начать разговор 🚀](${SAAS_CHAT_UTM_URL}) | 
					
						
							|  |  |  |  |     \ 2️⃣ Если вы используете частную версию развертывания, нажмите [здесь](/#/auth), чтобы ввести ключ доступа 🔑 | 
					
						
							|  |  |  |  |     \ 3️⃣ Если вы хотите использовать свои ресурсы OpenAI, нажмите [здесь](/#/settings), чтобы изменить настройки ⚙️ | 
					
						
							|  |  |  |  |  `,
 | 
					
						
							|  |  |  |  |   }, | 
					
						
							|  |  |  |  |   Auth: { | 
					
						
							|  |  |  |  |     Title: "Требуется пароль", | 
					
						
							|  |  |  |  |     Tips: "Администратор включил проверку пароля. Пожалуйста, введите код доступа ниже", | 
					
						
							|  |  |  |  |     SubTips: "Или введите ваш API-ключ OpenAI или Google", | 
					
						
							|  |  |  |  |     Input: "Введите код доступа здесь", | 
					
						
							|  |  |  |  |     Confirm: "Подтвердить", | 
					
						
							|  |  |  |  |     Later: "Позже", | 
					
						
							|  |  |  |  |     Return: "Назад", | 
					
						
							|  |  |  |  |     SaasTips: "Настройка слишком сложна, я хочу использовать это немедленно", | 
					
						
							|  |  |  |  |     TopTips: | 
					
						
							|  |  |  |  |       "🥳 Предложение по запуску NextChat AI: разблокируйте OpenAI o1, GPT-4o, Claude-3.5 и новейшие большие модели прямо сейчас", | 
					
						
							|  |  |  |  |   }, | 
					
						
							|  |  |  |  |   ChatItem: { | 
					
						
							|  |  |  |  |     ChatItemCount: (count: number) => `${count} бесед`, | 
					
						
							|  |  |  |  |   }, | 
					
						
							|  |  |  |  |   Chat: { | 
					
						
							|  |  |  |  |     SubTitle: (count: number) => `Всего ${count} бесед`, | 
					
						
							|  |  |  |  |     EditMessage: { | 
					
						
							|  |  |  |  |       Title: "Редактировать сообщение", | 
					
						
							|  |  |  |  |       Topic: { | 
					
						
							|  |  |  |  |         Title: "Тема чата", | 
					
						
							|  |  |  |  |         SubTitle: "Изменить текущую тему чата", | 
					
						
							|  |  |  |  |       }, | 
					
						
							|  |  |  |  |     }, | 
					
						
							|  |  |  |  |     Actions: { | 
					
						
							|  |  |  |  |       ChatList: "Просмотреть список сообщений", | 
					
						
							|  |  |  |  |       CompressedHistory: "Просмотреть сжатую историю подсказок", | 
					
						
							|  |  |  |  |       Export: "Экспортировать чат", | 
					
						
							|  |  |  |  |       Copy: "Копировать", | 
					
						
							|  |  |  |  |       Stop: "Остановить", | 
					
						
							|  |  |  |  |       Retry: "Повторить", | 
					
						
							|  |  |  |  |       Pin: "Закрепить", | 
					
						
							|  |  |  |  |       PinToastContent: "1 беседа закреплена в предустановленных подсказках", | 
					
						
							|  |  |  |  |       PinToastAction: "Просмотреть", | 
					
						
							|  |  |  |  |       Delete: "Удалить", | 
					
						
							|  |  |  |  |       Edit: "Редактировать", | 
					
						
							|  |  |  |  |       RefreshTitle: "Обновить заголовок", | 
					
						
							|  |  |  |  |       RefreshToast: "Запрос на обновление заголовка отправлен", | 
					
						
							|  |  |  |  |     }, | 
					
						
							|  |  |  |  |     Commands: { | 
					
						
							|  |  |  |  |       new: "Новый чат", | 
					
						
							|  |  |  |  |       newm: "Создать чат из маски", | 
					
						
							|  |  |  |  |       next: "Следующий чат", | 
					
						
							|  |  |  |  |       prev: "Предыдущий чат", | 
					
						
							|  |  |  |  |       clear: "Очистить контекст", | 
					
						
							|  |  |  |  |       del: "Удалить чат", | 
					
						
							|  |  |  |  |     }, | 
					
						
							|  |  |  |  |     InputActions: { | 
					
						
							|  |  |  |  |       Stop: "Остановить ответ", | 
					
						
							|  |  |  |  |       ToBottom: "Перейти к последнему", | 
					
						
							|  |  |  |  |       Theme: { | 
					
						
							|  |  |  |  |         auto: "Автоматическая тема", | 
					
						
							|  |  |  |  |         light: "Светлая тема", | 
					
						
							|  |  |  |  |         dark: "Темная тема", | 
					
						
							|  |  |  |  |       }, | 
					
						
							|  |  |  |  |       Prompt: "Быстрая команда", | 
					
						
							|  |  |  |  |       Masks: "Все маски", | 
					
						
							|  |  |  |  |       Clear: "Очистить чат", | 
					
						
							|  |  |  |  |       Settings: "Настройки чата", | 
					
						
							|  |  |  |  |       UploadImage: "Загрузить изображение", | 
					
						
							|  |  |  |  |     }, | 
					
						
							|  |  |  |  |     Rename: "Переименовать чат", | 
					
						
							|  |  |  |  |     Typing: "Печатает…", | 
					
						
							|  |  |  |  |     Input: (submitKey: string) => { | 
					
						
							|  |  |  |  |       var inputHints = `${submitKey} Отправить`; | 
					
						
							|  |  |  |  |       if (submitKey === String(SubmitKey.Enter)) { | 
					
						
							|  |  |  |  |         inputHints += ",Shift + Enter для новой строки"; | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  |       return inputHints + ",/ для автозаполнения,: для команд"; | 
					
						
							|  |  |  |  |     }, | 
					
						
							|  |  |  |  |     Send: "Отправить", | 
					
						
							|  |  |  |  |     Config: { | 
					
						
							|  |  |  |  |       Reset: "Очистить память", | 
					
						
							|  |  |  |  |       SaveAs: "Сохранить как маску", | 
					
						
							|  |  |  |  |     }, | 
					
						
							|  |  |  |  |     IsContext: "Предустановленные подсказки", | 
					
						
							|  |  |  |  |   }, | 
					
						
							|  |  |  |  |   Export: { | 
					
						
							|  |  |  |  |     Title: "Поделиться историей чата", | 
					
						
							|  |  |  |  |     Copy: "Копировать все", | 
					
						
							|  |  |  |  |     Download: "Скачать файл", | 
					
						
							|  |  |  |  |     Share: "Поделиться в ShareGPT", | 
					
						
							|  |  |  |  |     MessageFromYou: "Пользователь", | 
					
						
							|  |  |  |  |     MessageFromChatGPT: "ChatGPT", | 
					
						
							|  |  |  |  |     Format: { | 
					
						
							|  |  |  |  |       Title: "Формат экспорта", | 
					
						
							|  |  |  |  |       SubTitle: "Можно экспортировать как Markdown текст или PNG изображение", | 
					
						
							|  |  |  |  |     }, | 
					
						
							|  |  |  |  |     IncludeContext: { | 
					
						
							|  |  |  |  |       Title: "Включить контекст маски", | 
					
						
							|  |  |  |  |       SubTitle: "Показывать ли контекст маски в сообщениях", | 
					
						
							|  |  |  |  |     }, | 
					
						
							|  |  |  |  |     Steps: { | 
					
						
							|  |  |  |  |       Select: "Выбрать", | 
					
						
							|  |  |  |  |       Preview: "Предпросмотр", | 
					
						
							|  |  |  |  |     }, | 
					
						
							|  |  |  |  |     Image: { | 
					
						
							|  |  |  |  |       Toast: "Создание скриншота", | 
					
						
							|  |  |  |  |       Modal: "Длительное нажатие или правый клик для сохранения изображения", | 
					
						
							|  |  |  |  |     }, | 
					
						
							|  |  |  |  |   }, | 
					
						
							|  |  |  |  |   Select: { | 
					
						
							|  |  |  |  |     Search: "Поиск сообщений", | 
					
						
							|  |  |  |  |     All: "Выбрать все", | 
					
						
							|  |  |  |  |     Latest: "Последние сообщения", | 
					
						
							|  |  |  |  |     Clear: "Очистить выбор", | 
					
						
							|  |  |  |  |   }, | 
					
						
							|  |  |  |  |   Memory: { | 
					
						
							|  |  |  |  |     Title: "Историческое резюме", | 
					
						
							|  |  |  |  |     EmptyContent: "Содержимое чата слишком короткое, чтобы суммировать", | 
					
						
							|  |  |  |  |     Send: "Автоматически сжать историю чата и отправить как контекст", | 
					
						
							|  |  |  |  |     Copy: "Копировать резюме", | 
					
						
							|  |  |  |  |     Reset: "[не используется]", | 
					
						
							|  |  |  |  |     ResetConfirm: "Подтвердить очистку исторического резюме?", | 
					
						
							|  |  |  |  |   }, | 
					
						
							|  |  |  |  |   Home: { | 
					
						
							|  |  |  |  |     NewChat: "Новый чат", | 
					
						
							|  |  |  |  |     DeleteChat: "Подтвердить удаление выбранного чата?", | 
					
						
							|  |  |  |  |     DeleteToast: "Беседа удалена", | 
					
						
							|  |  |  |  |     Revert: "Отменить", | 
					
						
							|  |  |  |  |   }, | 
					
						
							|  |  |  |  |   Settings: { | 
					
						
							|  |  |  |  |     Title: "Настройки", | 
					
						
							|  |  |  |  |     SubTitle: "Все параметры настроек", | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     Danger: { | 
					
						
							|  |  |  |  |       Reset: { | 
					
						
							|  |  |  |  |         Title: "Сброс всех настроек", | 
					
						
							|  |  |  |  |         SubTitle: "Сброс всех параметров до значений по умолчанию", | 
					
						
							|  |  |  |  |         Action: "Сбросить сейчас", | 
					
						
							|  |  |  |  |         Confirm: "Подтвердить сброс всех настроек?", | 
					
						
							|  |  |  |  |       }, | 
					
						
							|  |  |  |  |       Clear: { | 
					
						
							|  |  |  |  |         Title: "Очистить все данные", | 
					
						
							|  |  |  |  |         SubTitle: "Очистить все чаты и данные настроек", | 
					
						
							|  |  |  |  |         Action: "Очистить сейчас", | 
					
						
							|  |  |  |  |         Confirm: "Подтвердить очистку всех чатов и данных настроек?", | 
					
						
							|  |  |  |  |       }, | 
					
						
							|  |  |  |  |     }, | 
					
						
							|  |  |  |  |     Lang: { | 
					
						
							|  |  |  |  |       Name: "Language", // ATTENTION: если вы хотите добавить новый перевод, не переводите это значение, оставьте его как `Language`
 | 
					
						
							|  |  |  |  |       All: "Все языки", | 
					
						
							|  |  |  |  |     }, | 
					
						
							|  |  |  |  |     Avatar: "Аватар", | 
					
						
							|  |  |  |  |     FontSize: { | 
					
						
							|  |  |  |  |       Title: "Размер шрифта", | 
					
						
							|  |  |  |  |       SubTitle: "Размер шрифта в чате", | 
					
						
							|  |  |  |  |     }, | 
					
						
							|  |  |  |  |     FontFamily: { | 
					
						
							|  |  |  |  |       Title: "Шрифт чата", | 
					
						
							|  |  |  |  |       SubTitle: | 
					
						
							|  |  |  |  |         "Шрифт содержимого чата, оставьте пустым для применения глобального шрифта по умолчанию", | 
					
						
							|  |  |  |  |       Placeholder: "Название шрифта", | 
					
						
							|  |  |  |  |     }, | 
					
						
							|  |  |  |  |     InjectSystemPrompts: { | 
					
						
							|  |  |  |  |       Title: "Вставить системные подсказки", | 
					
						
							|  |  |  |  |       SubTitle: | 
					
						
							|  |  |  |  |         "Принудительно добавлять системную подсказку, имитирующую ChatGPT, в начале каждого запроса", | 
					
						
							|  |  |  |  |     }, | 
					
						
							|  |  |  |  |     InputTemplate: { | 
					
						
							|  |  |  |  |       Title: "Предварительная обработка пользовательского ввода", | 
					
						
							|  |  |  |  |       SubTitle: | 
					
						
							|  |  |  |  |         "Последнее сообщение пользователя будет подставлено в этот шаблон", | 
					
						
							|  |  |  |  |     }, | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     Update: { | 
					
						
							|  |  |  |  |       Version: (x: string) => `Текущая версия: ${x}`, | 
					
						
							|  |  |  |  |       IsLatest: "Установлена последняя версия", | 
					
						
							|  |  |  |  |       CheckUpdate: "Проверить обновления", | 
					
						
							|  |  |  |  |       IsChecking: "Проверка обновлений...", | 
					
						
							|  |  |  |  |       FoundUpdate: (x: string) => `Найдено новое обновление: ${x}`, | 
					
						
							|  |  |  |  |       GoToUpdate: "Перейти к обновлению", | 
					
						
							|  |  |  |  |     }, | 
					
						
							|  |  |  |  |     SendKey: "Кнопка отправки", | 
					
						
							|  |  |  |  |     Theme: "Тема", | 
					
						
							|  |  |  |  |     TightBorder: "Режим без границ", | 
					
						
							|  |  |  |  |     SendPreviewBubble: { | 
					
						
							|  |  |  |  |       Title: "Предварительный просмотр пузырьков", | 
					
						
							|  |  |  |  |       SubTitle: | 
					
						
							|  |  |  |  |         "Просмотр содержимого Markdown в пузырьках предварительного просмотра", | 
					
						
							|  |  |  |  |     }, | 
					
						
							|  |  |  |  |     AutoGenerateTitle: { | 
					
						
							|  |  |  |  |       Title: "Автоматическое создание заголовка", | 
					
						
							|  |  |  |  |       SubTitle: "Создание подходящего заголовка на основе содержания беседы", | 
					
						
							|  |  |  |  |     }, | 
					
						
							|  |  |  |  |     Sync: { | 
					
						
							|  |  |  |  |       CloudState: "Облачные данные", | 
					
						
							|  |  |  |  |       NotSyncYet: "Синхронизация еще не проводилась", | 
					
						
							|  |  |  |  |       Success: "Синхронизация успешна", | 
					
						
							|  |  |  |  |       Fail: "Не удалось синхронизировать", | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       Config: { | 
					
						
							|  |  |  |  |         Modal: { | 
					
						
							|  |  |  |  |           Title: "Настройки облачной синхронизации", | 
					
						
							|  |  |  |  |           Check: "Проверить доступность", | 
					
						
							|  |  |  |  |         }, | 
					
						
							|  |  |  |  |         SyncType: { | 
					
						
							|  |  |  |  |           Title: "Тип синхронизации", | 
					
						
							|  |  |  |  |           SubTitle: "Выберите предпочитаемый сервер синхронизации", | 
					
						
							|  |  |  |  |         }, | 
					
						
							|  |  |  |  |         Proxy: { | 
					
						
							|  |  |  |  |           Title: "Включить прокси", | 
					
						
							|  |  |  |  |           SubTitle: | 
					
						
							|  |  |  |  |             "При синхронизации в браузере необходимо включить прокси для предотвращения ограничений кросс-домена", | 
					
						
							|  |  |  |  |         }, | 
					
						
							|  |  |  |  |         ProxyUrl: { | 
					
						
							|  |  |  |  |           Title: "Адрес прокси", | 
					
						
							|  |  |  |  |           SubTitle: "Только для встроенного прокси в проекте", | 
					
						
							|  |  |  |  |         }, | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         WebDav: { | 
					
						
							|  |  |  |  |           Endpoint: "WebDAV адрес", | 
					
						
							|  |  |  |  |           UserName: "Имя пользователя", | 
					
						
							|  |  |  |  |           Password: "Пароль", | 
					
						
							|  |  |  |  |         }, | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         UpStash: { | 
					
						
							|  |  |  |  |           Endpoint: "UpStash Redis REST Url", | 
					
						
							|  |  |  |  |           UserName: "Имя резервной копии", | 
					
						
							|  |  |  |  |           Password: "UpStash Redis REST Token", | 
					
						
							|  |  |  |  |         }, | 
					
						
							|  |  |  |  |       }, | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       LocalState: "Локальные данные", | 
					
						
							|  |  |  |  |       Overview: (overview: any) => { | 
					
						
							|  |  |  |  |         return `${overview.chat} бесед, ${overview.message} сообщений, ${overview.prompt} подсказок, ${overview.mask} масок`; | 
					
						
							|  |  |  |  |       }, | 
					
						
							|  |  |  |  |       ImportFailed: "Не удалось импортировать", | 
					
						
							|  |  |  |  |     }, | 
					
						
							|  |  |  |  |     Mask: { | 
					
						
							|  |  |  |  |       Splash: { | 
					
						
							|  |  |  |  |         Title: "Стартовая страница масок", | 
					
						
							|  |  |  |  |         SubTitle: | 
					
						
							|  |  |  |  |           "При создании нового чата отображать стартовую страницу масок", | 
					
						
							|  |  |  |  |       }, | 
					
						
							|  |  |  |  |       Builtin: { | 
					
						
							|  |  |  |  |         Title: "Скрыть встроенные маски", | 
					
						
							|  |  |  |  |         SubTitle: "Скрыть встроенные маски во всех списках масок", | 
					
						
							|  |  |  |  |       }, | 
					
						
							|  |  |  |  |     }, | 
					
						
							|  |  |  |  |     Prompt: { | 
					
						
							|  |  |  |  |       Disable: { | 
					
						
							|  |  |  |  |         Title: "Отключить автозаполнение подсказок", | 
					
						
							|  |  |  |  |         SubTitle: "Введите / в начале строки для активации автозаполнения", | 
					
						
							|  |  |  |  |       }, | 
					
						
							|  |  |  |  |       List: "Список пользовательских подсказок", | 
					
						
							|  |  |  |  |       ListCount: (builtin: number, custom: number) => | 
					
						
							|  |  |  |  |         `Встроенные ${builtin}, пользовательские ${custom}`, | 
					
						
							|  |  |  |  |       Edit: "Редактировать", | 
					
						
							|  |  |  |  |       Modal: { | 
					
						
							|  |  |  |  |         Title: "Список подсказок", | 
					
						
							|  |  |  |  |         Add: "Создать", | 
					
						
							|  |  |  |  |         Search: "Поиск подсказок", | 
					
						
							|  |  |  |  |       }, | 
					
						
							|  |  |  |  |       EditModal: { | 
					
						
							|  |  |  |  |         Title: "Редактировать подсказки", | 
					
						
							|  |  |  |  |       }, | 
					
						
							|  |  |  |  |     }, | 
					
						
							|  |  |  |  |     HistoryCount: { | 
					
						
							|  |  |  |  |       Title: "Количество истории сообщений", | 
					
						
							|  |  |  |  |       SubTitle: "Количество историй сообщений, отправляемых с каждым запросом", | 
					
						
							|  |  |  |  |     }, | 
					
						
							|  |  |  |  |     CompressThreshold: { | 
					
						
							|  |  |  |  |       Title: "Порог сжатия длины истории сообщений", | 
					
						
							|  |  |  |  |       SubTitle: | 
					
						
							|  |  |  |  |         "Когда не сжатая история сообщений превышает это значение, происходит сжатие", | 
					
						
							|  |  |  |  |     }, | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     Usage: { | 
					
						
							|  |  |  |  |       Title: "Проверка баланса", | 
					
						
							|  |  |  |  |       SubTitle(used: any, total: any) { | 
					
						
							|  |  |  |  |         return `Использовано в этом месяце $${used}, всего по подписке $${total}`; | 
					
						
							|  |  |  |  |       }, | 
					
						
							|  |  |  |  |       IsChecking: "Проверка…", | 
					
						
							|  |  |  |  |       Check: "Проверить снова", | 
					
						
							|  |  |  |  |       NoAccess: "Введите API-ключ или пароль доступа для просмотра баланса", | 
					
						
							|  |  |  |  |     }, | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     Access: { | 
					
						
							|  |  |  |  |       SaasStart: { | 
					
						
							|  |  |  |  |         Title: "Используйте NextChat AI", | 
					
						
							|  |  |  |  |         Label: "(Самое экономичное решение)", | 
					
						
							|  |  |  |  |         SubTitle: | 
					
						
							|  |  |  |  |           "Официально поддерживается NextChat, готов к использованию без настройки, поддерживает последние крупные модели, такие как OpenAI o1, GPT-4o и Claude-3.5", | 
					
						
							|  |  |  |  |         ChatNow: "Начать чат", | 
					
						
							|  |  |  |  |       }, | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       AccessCode: { | 
					
						
							|  |  |  |  |         Title: "Пароль доступа", | 
					
						
							|  |  |  |  |         SubTitle: "Администратор включил защиту паролем", | 
					
						
							|  |  |  |  |         Placeholder: "Введите пароль доступа", | 
					
						
							|  |  |  |  |       }, | 
					
						
							|  |  |  |  |       CustomEndpoint: { | 
					
						
							|  |  |  |  |         Title: "Пользовательский интерфейс", | 
					
						
							|  |  |  |  |         SubTitle: "Использовать ли пользовательский Azure или OpenAI сервис", | 
					
						
							|  |  |  |  |       }, | 
					
						
							|  |  |  |  |       Provider: { | 
					
						
							|  |  |  |  |         Title: "Провайдер модели", | 
					
						
							|  |  |  |  |         SubTitle: "Переключиться на другого провайдера", | 
					
						
							|  |  |  |  |       }, | 
					
						
							|  |  |  |  |       OpenAI: { | 
					
						
							|  |  |  |  |         ApiKey: { | 
					
						
							|  |  |  |  |           Title: "API-ключ", | 
					
						
							|  |  |  |  |           SubTitle: | 
					
						
							|  |  |  |  |             "Использовать пользовательский OpenAI-ключ для обхода ограничений пароля", | 
					
						
							|  |  |  |  |           Placeholder: "OpenAI API-ключ", | 
					
						
							|  |  |  |  |         }, | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         Endpoint: { | 
					
						
							|  |  |  |  |           Title: "Адрес интерфейса", | 
					
						
							|  |  |  |  |           SubTitle: "Кроме адреса по умолчанию, должен содержать http(s)://", | 
					
						
							|  |  |  |  |         }, | 
					
						
							|  |  |  |  |       }, | 
					
						
							|  |  |  |  |       Azure: { | 
					
						
							|  |  |  |  |         ApiKey: { | 
					
						
							|  |  |  |  |           Title: "Ключ интерфейса", | 
					
						
							|  |  |  |  |           SubTitle: | 
					
						
							|  |  |  |  |             "Использовать пользовательский Azure-ключ для обхода ограничений пароля", | 
					
						
							|  |  |  |  |           Placeholder: "Azure API-ключ", | 
					
						
							|  |  |  |  |         }, | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         Endpoint: { | 
					
						
							|  |  |  |  |           Title: "Адрес интерфейса", | 
					
						
							|  |  |  |  |           SubTitle: "Пример:", | 
					
						
							|  |  |  |  |         }, | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         ApiVerion: { | 
					
						
							|  |  |  |  |           Title: "Версия интерфейса (azure api version)", | 
					
						
							|  |  |  |  |           SubTitle: "Выберите конкретную версию", | 
					
						
							|  |  |  |  |         }, | 
					
						
							|  |  |  |  |       }, | 
					
						
							|  |  |  |  |       Anthropic: { | 
					
						
							|  |  |  |  |         ApiKey: { | 
					
						
							|  |  |  |  |           Title: "Ключ интерфейса", | 
					
						
							|  |  |  |  |           SubTitle: | 
					
						
							|  |  |  |  |             "Использовать пользовательский Anthropic-ключ для обхода ограничений пароля", | 
					
						
							|  |  |  |  |           Placeholder: "Anthropic API-ключ", | 
					
						
							|  |  |  |  |         }, | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         Endpoint: { | 
					
						
							|  |  |  |  |           Title: "Адрес интерфейса", | 
					
						
							|  |  |  |  |           SubTitle: "Пример:", | 
					
						
							|  |  |  |  |         }, | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         ApiVerion: { | 
					
						
							|  |  |  |  |           Title: "Версия интерфейса (claude api version)", | 
					
						
							|  |  |  |  |           SubTitle: "Выберите конкретную версию API", | 
					
						
							|  |  |  |  |         }, | 
					
						
							|  |  |  |  |       }, | 
					
						
							|  |  |  |  |       Google: { | 
					
						
							|  |  |  |  |         ApiKey: { | 
					
						
							|  |  |  |  |           Title: "API-ключ", | 
					
						
							|  |  |  |  |           SubTitle: "Получите ваш API-ключ Google AI", | 
					
						
							|  |  |  |  |           Placeholder: "Введите ваш API-ключ Google AI Studio", | 
					
						
							|  |  |  |  |         }, | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         Endpoint: { | 
					
						
							|  |  |  |  |           Title: "Адрес интерфейса", | 
					
						
							|  |  |  |  |           SubTitle: "Пример:", | 
					
						
							|  |  |  |  |         }, | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         ApiVersion: { | 
					
						
							|  |  |  |  |           Title: "Версия API (только для gemini-pro)", | 
					
						
							|  |  |  |  |           SubTitle: "Выберите конкретную версию API", | 
					
						
							|  |  |  |  |         }, | 
					
						
							|  |  |  |  |         GoogleSafetySettings: { | 
					
						
							|  |  |  |  |           Title: "Уровень фильтрации Google", | 
					
						
							|  |  |  |  |           SubTitle: "Настроить уровень фильтрации контента", | 
					
						
							|  |  |  |  |         }, | 
					
						
							|  |  |  |  |       }, | 
					
						
							|  |  |  |  |       Baidu: { | 
					
						
							|  |  |  |  |         ApiKey: { | 
					
						
							|  |  |  |  |           Title: "API-ключ", | 
					
						
							|  |  |  |  |           SubTitle: "Использовать пользовательский Baidu API-ключ", | 
					
						
							|  |  |  |  |           Placeholder: "Baidu API-ключ", | 
					
						
							|  |  |  |  |         }, | 
					
						
							|  |  |  |  |         SecretKey: { | 
					
						
							|  |  |  |  |           Title: "Секретный ключ", | 
					
						
							|  |  |  |  |           SubTitle: "Использовать пользовательский Baidu Secret Key", | 
					
						
							|  |  |  |  |           Placeholder: "Baidu Secret Key", | 
					
						
							|  |  |  |  |         }, | 
					
						
							|  |  |  |  |         Endpoint: { | 
					
						
							|  |  |  |  |           Title: "Адрес интерфейса", | 
					
						
							|  |  |  |  |           SubTitle: | 
					
						
							|  |  |  |  |             "Не поддерживает пользовательскую настройку, перейдите в .env", | 
					
						
							|  |  |  |  |         }, | 
					
						
							|  |  |  |  |       }, | 
					
						
							|  |  |  |  |       ByteDance: { | 
					
						
							|  |  |  |  |         ApiKey: { | 
					
						
							|  |  |  |  |           Title: "Ключ интерфейса", | 
					
						
							|  |  |  |  |           SubTitle: "Использовать пользовательский ByteDance API-ключ", | 
					
						
							|  |  |  |  |           Placeholder: "ByteDance API-ключ", | 
					
						
							|  |  |  |  |         }, | 
					
						
							|  |  |  |  |         Endpoint: { | 
					
						
							|  |  |  |  |           Title: "Адрес интерфейса", | 
					
						
							|  |  |  |  |           SubTitle: "Пример:", | 
					
						
							|  |  |  |  |         }, | 
					
						
							|  |  |  |  |       }, | 
					
						
							|  |  |  |  |       Alibaba: { | 
					
						
							|  |  |  |  |         ApiKey: { | 
					
						
							|  |  |  |  |           Title: "Ключ интерфейса", | 
					
						
							|  |  |  |  |           SubTitle: "Использовать пользовательский Alibaba Cloud API-ключ", | 
					
						
							|  |  |  |  |           Placeholder: "Alibaba Cloud API-ключ", | 
					
						
							|  |  |  |  |         }, | 
					
						
							|  |  |  |  |         Endpoint: { | 
					
						
							|  |  |  |  |           Title: "Адрес интерфейса", | 
					
						
							|  |  |  |  |           SubTitle: "Пример:", | 
					
						
							|  |  |  |  |         }, | 
					
						
							|  |  |  |  |       }, | 
					
						
							|  |  |  |  |       CustomModel: { | 
					
						
							|  |  |  |  |         Title: "Название пользовательской модели", | 
					
						
							|  |  |  |  |         SubTitle: | 
					
						
							|  |  |  |  |           "Добавьте варианты пользовательских моделей, разделяя запятыми", | 
					
						
							|  |  |  |  |       }, | 
					
						
							|  |  |  |  |     }, | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     Model: "Модель", | 
					
						
							|  |  |  |  |     CompressModel: { | 
					
						
							|  |  |  |  |       Title: "Модель сжатия", | 
					
						
							|  |  |  |  |       SubTitle: "Модель, используемая для сжатия истории", | 
					
						
							|  |  |  |  |     }, | 
					
						
							|  |  |  |  |     Temperature: { | 
					
						
							|  |  |  |  |       Title: "Случайность (temperature)", | 
					
						
							|  |  |  |  |       SubTitle: "Чем больше значение, тем более случайные ответы", | 
					
						
							|  |  |  |  |     }, | 
					
						
							|  |  |  |  |     TopP: { | 
					
						
							|  |  |  |  |       Title: "Ядро выборки (top_p)", | 
					
						
							|  |  |  |  |       SubTitle: "Похожие на случайность, но не изменяйте вместе с случайностью", | 
					
						
							|  |  |  |  |     }, | 
					
						
							|  |  |  |  |     MaxTokens: { | 
					
						
							|  |  |  |  |       Title: "Ограничение на количество токенов за один раз (max_tokens)", | 
					
						
							|  |  |  |  |       SubTitle: "Максимальное количество токенов на одно взаимодействие", | 
					
						
							|  |  |  |  |     }, | 
					
						
							|  |  |  |  |     PresencePenalty: { | 
					
						
							|  |  |  |  |       Title: "Наказание за новизну тем (presence_penalty)", | 
					
						
							|  |  |  |  |       SubTitle: | 
					
						
							|  |  |  |  |         "Чем больше значение, тем выше вероятность расширения на новые темы", | 
					
						
							|  |  |  |  |     }, | 
					
						
							|  |  |  |  |     FrequencyPenalty: { | 
					
						
							|  |  |  |  |       Title: "Наказание за частоту (frequency_penalty)", | 
					
						
							|  |  |  |  |       SubTitle: | 
					
						
							|  |  |  |  |         "Чем больше значение, тем выше вероятность уменьшения повторяющихся слов", | 
					
						
							|  |  |  |  |     }, | 
					
						
							|  |  |  |  |   }, | 
					
						
							|  |  |  |  |   Store: { | 
					
						
							|  |  |  |  |     DefaultTopic: "Новый чат", | 
					
						
							|  |  |  |  |     BotHello: "Чем могу помочь?", | 
					
						
							|  |  |  |  |     Error: "Произошла ошибка, попробуйте позже", | 
					
						
							|  |  |  |  |     Prompt: { | 
					
						
							|  |  |  |  |       History: (content: string) => | 
					
						
							|  |  |  |  |         "Это резюме истории чата как предыстория: " + content, | 
					
						
							|  |  |  |  |       Topic: | 
					
						
							|  |  |  |  |         "Укажите краткую тему этого сообщения в четырех-пяти словах, без объяснений, знаков препинания, междометий, лишнего текста или выделения. Если темы нет, просто напишите 'Болтовня'", | 
					
						
							|  |  |  |  |       Summarize: | 
					
						
							|  |  |  |  |         "Кратко подведите итоги содержимого беседы для использования в качестве последующего контекстного запроса, не более 200 слов", | 
					
						
							|  |  |  |  |     }, | 
					
						
							|  |  |  |  |   }, | 
					
						
							|  |  |  |  |   Copy: { | 
					
						
							|  |  |  |  |     Success: "Скопировано в буфер обмена", | 
					
						
							|  |  |  |  |     Failed: "Не удалось скопировать, предоставьте доступ к буферу обмена", | 
					
						
							|  |  |  |  |   }, | 
					
						
							|  |  |  |  |   Download: { | 
					
						
							|  |  |  |  |     Success: "Содержимое успешно загружено в вашу директорию.", | 
					
						
							|  |  |  |  |     Failed: "Не удалось загрузить.", | 
					
						
							|  |  |  |  |   }, | 
					
						
							|  |  |  |  |   Context: { | 
					
						
							|  |  |  |  |     Toast: (x: any) => `Содержит ${x} предустановленных подсказок`, | 
					
						
							|  |  |  |  |     Edit: "Текущие настройки чата", | 
					
						
							|  |  |  |  |     Add: "Добавить новый чат", | 
					
						
							|  |  |  |  |     Clear: "Контекст очищен", | 
					
						
							|  |  |  |  |     Revert: "Восстановить контекст", | 
					
						
							|  |  |  |  |   }, | 
					
						
							|  |  |  |  |   Plugin: { | 
					
						
							|  |  |  |  |     Name: "Плагины", | 
					
						
							|  |  |  |  |   }, | 
					
						
							|  |  |  |  |   FineTuned: { | 
					
						
							|  |  |  |  |     Sysmessage: "Вы - помощник", | 
					
						
							|  |  |  |  |   }, | 
					
						
							|  |  |  |  |   SearchChat: { | 
					
						
							|  |  |  |  |     Name: "Поиск", | 
					
						
							|  |  |  |  |     Page: { | 
					
						
							|  |  |  |  |       Title: "Поиск в истории чатов", | 
					
						
							|  |  |  |  |       Search: "Введите ключевые слова для поиска", | 
					
						
							|  |  |  |  |       NoResult: "Результатов не найдено", | 
					
						
							|  |  |  |  |       NoData: "Нет данных", | 
					
						
							|  |  |  |  |       Loading: "Загрузка", | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       SubTitle: (count: number) => `Найдено ${count} результатов`, | 
					
						
							|  |  |  |  |     }, | 
					
						
							|  |  |  |  |     Item: { | 
					
						
							|  |  |  |  |       View: "Просмотр", | 
					
						
							|  |  |  |  |     }, | 
					
						
							|  |  |  |  |   }, | 
					
						
							|  |  |  |  |   Mask: { | 
					
						
							|  |  |  |  |     Name: "Маска", | 
					
						
							|  |  |  |  |     Page: { | 
					
						
							|  |  |  |  |       Title: "Предустановленные роли", | 
					
						
							|  |  |  |  |       SubTitle: (count: number) => `${count} предустановленных ролей`, | 
					
						
							|  |  |  |  |       Search: "Поиск ролей", | 
					
						
							|  |  |  |  |       Create: "Создать", | 
					
						
							|  |  |  |  |     }, | 
					
						
							|  |  |  |  |     Item: { | 
					
						
							|  |  |  |  |       Info: (count: number) => `Содержит ${count} предустановленных диалогов`, | 
					
						
							|  |  |  |  |       Chat: "Диалог", | 
					
						
							|  |  |  |  |       View: "Просмотреть", | 
					
						
							|  |  |  |  |       Edit: "Редактировать", | 
					
						
							|  |  |  |  |       Delete: "Удалить", | 
					
						
							|  |  |  |  |       DeleteConfirm: "Подтвердить удаление?", | 
					
						
							|  |  |  |  |     }, | 
					
						
							|  |  |  |  |     EditModal: { | 
					
						
							|  |  |  |  |       Title: (readonly: boolean) => | 
					
						
							|  |  |  |  |         `Редактирование предустановленной маски ${ | 
					
						
							|  |  |  |  |           readonly ? "(только для чтения)" : "" | 
					
						
							|  |  |  |  |         }`,
 | 
					
						
							|  |  |  |  |       Download: "Скачать предустановку", | 
					
						
							|  |  |  |  |       Clone: "Клонировать предустановку", | 
					
						
							|  |  |  |  |     }, | 
					
						
							|  |  |  |  |     Config: { | 
					
						
							|  |  |  |  |       Avatar: "Аватар роли", | 
					
						
							|  |  |  |  |       Name: "Название роли", | 
					
						
							|  |  |  |  |       Sync: { | 
					
						
							|  |  |  |  |         Title: "Использовать глобальные настройки", | 
					
						
							|  |  |  |  |         SubTitle: | 
					
						
							|  |  |  |  |           "Будет ли текущий чат использовать глобальные настройки модели", | 
					
						
							|  |  |  |  |         Confirm: | 
					
						
							|  |  |  |  |           "Пользовательские настройки текущего чата будут автоматически заменены, подтвердите активацию глобальных настроек?", | 
					
						
							|  |  |  |  |       }, | 
					
						
							|  |  |  |  |       HideContext: { | 
					
						
							|  |  |  |  |         Title: "Скрыть предустановленные диалоги", | 
					
						
							|  |  |  |  |         SubTitle: | 
					
						
							|  |  |  |  |           "После скрытия предустановленные диалоги не будут отображаться в чате", | 
					
						
							|  |  |  |  |       }, | 
					
						
							|  |  |  |  |       Share: { | 
					
						
							|  |  |  |  |         Title: "Поделиться этой маской", | 
					
						
							|  |  |  |  |         SubTitle: "Создать прямую ссылку на эту маску", | 
					
						
							|  |  |  |  |         Action: "Скопировать ссылку", | 
					
						
							|  |  |  |  |       }, | 
					
						
							|  |  |  |  |     }, | 
					
						
							|  |  |  |  |   }, | 
					
						
							|  |  |  |  |   NewChat: { | 
					
						
							|  |  |  |  |     Return: "Вернуться", | 
					
						
							|  |  |  |  |     Skip: "Начать сразу", | 
					
						
							|  |  |  |  |     NotShow: "Больше не показывать", | 
					
						
							|  |  |  |  |     ConfirmNoShow: | 
					
						
							|  |  |  |  |       "Подтвердить отключение? После отключения вы всегда сможете включить его снова в настройках.", | 
					
						
							|  |  |  |  |     Title: "Выберите маску", | 
					
						
							|  |  |  |  |     SubTitle: "Начните сейчас, столкнитесь с мыслями за маской", | 
					
						
							|  |  |  |  |     More: "Показать все", | 
					
						
							|  |  |  |  |   }, | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   URLCommand: { | 
					
						
							|  |  |  |  |     Code: "Обнаружен код доступа в ссылке, автоматически заполнить?", | 
					
						
							|  |  |  |  |     Settings: | 
					
						
							|  |  |  |  |       "Обнаружены предустановленные настройки в ссылке, автоматически заполнить?", | 
					
						
							|  |  |  |  |   }, | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   UI: { | 
					
						
							|  |  |  |  |     Confirm: "Подтвердить", | 
					
						
							|  |  |  |  |     Cancel: "Отмена", | 
					
						
							|  |  |  |  |     Close: "Закрыть", | 
					
						
							|  |  |  |  |     Create: "Создать", | 
					
						
							|  |  |  |  |     Edit: "Редактировать", | 
					
						
							|  |  |  |  |     Export: "Экспортировать", | 
					
						
							|  |  |  |  |     Import: "Импортировать", | 
					
						
							|  |  |  |  |     Sync: "Синхронизировать", | 
					
						
							|  |  |  |  |     Config: "Настройки", | 
					
						
							|  |  |  |  |   }, | 
					
						
							|  |  |  |  |   Exporter: { | 
					
						
							|  |  |  |  |     Description: { | 
					
						
							|  |  |  |  |       Title: "Только сообщения после очистки контекста будут отображаться", | 
					
						
							|  |  |  |  |     }, | 
					
						
							|  |  |  |  |     Model: "Модель", | 
					
						
							|  |  |  |  |     Messages: "Сообщения", | 
					
						
							|  |  |  |  |     Topic: "Тема", | 
					
						
							|  |  |  |  |     Time: "Время", | 
					
						
							|  |  |  |  |   }, | 
					
						
							|  |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | export default ru; |