mirror of
				https://github.com/ChatGPTNextWeb/ChatGPT-Next-Web.git
				synced 2025-11-04 08:13:43 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			599 lines
		
	
	
		
			26 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			599 lines
		
	
	
		
			26 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
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;
 |