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