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;