ChatGPT-Next-Web/app/locales/ru.ts

575 lines
24 KiB
TypeScript
Raw Normal View History

import { SubmitKey } from "../store/config";
2024-07-23 07:21:38 +00:00
import { PartialLocaleType } from "../locales/index";
import { getClientConfig } from "../config/client";
const isApp = !!getClientConfig()?.isApp;
2023-06-16 17:03:06 +00:00
const ru: PartialLocaleType = {
WIP: "Скоро...",
Error: {
2024-07-23 07:21:38 +00:00
Unauthorized: isApp
? "Обнаружен недействительный API-ключ. Пожалуйста, перейдите на страницу [Настройки](/#/settings), чтобы проверить правильность конфигурации API-ключа."
: "Неверный или пустой пароль доступа. Пожалуйста, перейдите на страницу [Вход](/#/auth), чтобы ввести правильный пароль доступа, или на страницу [Настройки](/#/settings), чтобы ввести ваш собственный API-ключ OpenAI.",
},
Auth: {
Title: "Требуется пароль",
Tips: "Администратор включил проверку пароля. Пожалуйста, введите код доступа ниже",
SubTips: "Или введите ваш API-ключ OpenAI или Google",
Input: "Введите код доступа здесь",
Confirm: "Подтвердить",
Later: "Позже",
},
ChatItem: {
2024-07-23 07:21:38 +00:00
ChatItemCount: (count: number) => `${count} бесед`,
},
Chat: {
2024-07-23 07:21:38 +00:00
SubTitle: (count: number) => `Всего ${count} бесед`,
EditMessage: {
Title: "Редактировать сообщение",
Topic: {
Title: "Тема чата",
SubTitle: "Изменить текущую тему чата",
},
},
Actions: {
2024-07-23 07:21:38 +00:00
ChatList: "Просмотреть список сообщений",
CompressedHistory: "Просмотреть сжатую историю подсказок",
Export: "Экспортировать чат",
Copy: "Копировать",
Stop: "Остановить",
Retry: "Повторить",
2024-07-23 07:21:38 +00:00
Pin: "Закрепить",
PinToastContent: "1 беседа закреплена в предустановленных подсказках",
PinToastAction: "Просмотреть",
Delete: "Удалить",
2024-07-23 07:21:38 +00:00
Edit: "Редактировать",
},
Commands: {
new: "Новый чат",
newm: "Создать чат из маски",
next: "Следующий чат",
prev: "Предыдущий чат",
clear: "Очистить контекст",
del: "Удалить чат",
},
InputActions: {
Stop: "Остановить ответ",
ToBottom: "Перейти к последнему",
Theme: {
auto: "Автоматическая тема",
light: "Светлая тема",
dark: "Темная тема",
},
Prompt: "Быстрая команда",
Masks: "Все маски",
Clear: "Очистить чат",
Settings: "Настройки чата",
UploadImage: "Загрузить изображение",
},
Rename: "Переименовать чат",
Typing: "Печатает…",
Input: (submitKey: string) => {
2024-07-23 07:21:38 +00:00
var inputHints = `${submitKey} Отправить`;
if (submitKey === String(SubmitKey.Enter)) {
2024-07-23 07:21:38 +00:00
inputHints += "Shift + Enter для новой строки";
}
2024-07-23 07:21:38 +00:00
return inputHints + "/ для автозаполнения,: для команд";
},
Send: "Отправить",
Config: {
2024-07-23 07:21:38 +00:00
Reset: "Очистить память",
SaveAs: "Сохранить как маску",
},
2024-07-23 07:21:38 +00:00
IsContext: "Предустановленные подсказки",
},
Export: {
2024-07-23 07:21:38 +00:00
Title: "Поделиться историей чата",
Copy: "Копировать все",
2024-07-23 07:21:38 +00:00
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: {
2024-07-23 07:21:38 +00:00
Title: "Историческое резюме",
EmptyContent: "Содержимое чата слишком короткое, чтобы суммировать",
Send: "Автоматически сжать историю чата и отправить как контекст",
Copy: "Копировать резюме",
Reset: "[не используется]",
ResetConfirm: "Подтвердить очистку исторического резюме?",
},
Home: {
NewChat: "Новый чат",
2024-07-23 07:21:38 +00:00
DeleteChat: "Подтвердить удаление выбранного чата?",
DeleteToast: "Беседа удалена",
Revert: "Отменить",
},
Settings: {
Title: "Настройки",
2024-07-23 07:21:38 +00:00
SubTitle: "Все параметры настроек",
2023-06-28 17:09:51 +00:00
2024-07-23 07:21:38 +00:00
Danger: {
Reset: {
Title: "Сброс всех настроек",
SubTitle: "Сброс всех параметров до значений по умолчанию",
Action: "Сбросить сейчас",
Confirm: "Подтвердить сброс всех настроек?",
},
Clear: {
Title: "Очистить все данные",
SubTitle: "Очистить все чаты и данные настроек",
Action: "Очистить сейчас",
Confirm: "Подтвердить очистку всех чатов и данных настроек?",
},
},
Lang: {
2024-07-23 07:21:38 +00:00
Name: "Language", // ATTENTION: если вы хотите добавить новый перевод, не переводите это значение, оставьте его как `Language`
All: "Все языки",
},
Avatar: "Аватар",
FontSize: {
Title: "Размер шрифта",
2024-07-23 07:21:38 +00:00
SubTitle: "Размер шрифта в чате",
},
FontFamily: {
Title: "Шрифт чата",
SubTitle:
"Шрифт содержимого чата, оставьте пустым для применения глобального шрифта по умолчанию",
Placeholder: "Название шрифта",
},
InjectSystemPrompts: {
Title: "Вставить системные подсказки",
SubTitle:
2024-07-23 07:21:38 +00:00
"Принудительно добавлять системную подсказку, имитирующую ChatGPT, в начале каждого запроса",
},
InputTemplate: {
Title: "Предварительная обработка пользовательского ввода",
SubTitle:
"Последнее сообщение пользователя будет подставлено в этот шаблон",
},
2024-07-23 07:21:38 +00:00
Update: {
2024-07-23 07:21:38 +00:00
Version: (x: string) => `Текущая версия: ${x}`,
IsLatest: "Установлена последняя версия",
CheckUpdate: "Проверить обновления",
IsChecking: "Проверка обновлений...",
FoundUpdate: (x: string) => `Найдено новое обновление: ${x}`,
GoToUpdate: "Перейти к обновлению",
},
SendKey: "Кнопка отправки",
Theme: "Тема",
2024-07-23 07:21:38 +00:00
TightBorder: "Режим без границ",
SendPreviewBubble: {
2024-07-23 07:21:38 +00:00
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: {
2024-07-23 07:21:38 +00:00
Title: "Стартовая страница масок",
SubTitle:
"При создании нового чата отображать стартовую страницу масок",
},
Builtin: {
Title: "Скрыть встроенные маски",
SubTitle: "Скрыть встроенные маски во всех списках масок",
},
},
Prompt: {
Disable: {
2024-07-23 07:21:38 +00:00
Title: "Отключить автозаполнение подсказок",
SubTitle: "Введите / в начале строки для активации автозаполнения",
},
2024-07-23 07:21:38 +00:00
List: "Список пользовательских подсказок",
ListCount: (builtin: number, custom: number) =>
2024-07-23 07:21:38 +00:00
`Встроенные ${builtin}, пользовательские ${custom}`,
Edit: "Редактировать",
Modal: {
Title: "Список подсказок",
2024-07-23 07:21:38 +00:00
Add: "Создать",
Search: "Поиск подсказок",
},
EditModal: {
2024-07-23 07:21:38 +00:00
Title: "Редактировать подсказки",
},
},
HistoryCount: {
2024-07-23 07:21:38 +00:00
Title: "Количество истории сообщений",
SubTitle: "Количество историй сообщений, отправляемых с каждым запросом",
},
CompressThreshold: {
2024-07-23 07:21:38 +00:00
Title: "Порог сжатия длины истории сообщений",
SubTitle:
2024-07-23 07:21:38 +00:00
"Когда не сжатая история сообщений превышает это значение, происходит сжатие",
},
2023-11-09 18:50:50 +00:00
Usage: {
2024-07-23 07:21:38 +00:00
Title: "Проверка баланса",
SubTitle(used: any, total: any) {
2024-07-23 07:21:38 +00:00
return `Использовано в этом месяце $${used}, всего по подписке $${total}`;
},
IsChecking: "Проверка…",
Check: "Проверить снова",
NoAccess: "Введите API-ключ или пароль доступа для просмотра баланса",
},
Access: {
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:
"Добавьте варианты пользовательских моделей, разделяя запятыми",
},
},
2023-11-09 18:50:50 +00:00
Model: "Модель",
Temperature: {
2024-07-23 07:21:38 +00:00
Title: "Случайность (temperature)",
SubTitle: "Чем больше значение, тем более случайные ответы",
},
TopP: {
Title: "Ядро выборки (top_p)",
SubTitle: "Похожие на случайность, но не изменяйте вместе с случайностью",
},
MaxTokens: {
2024-07-23 07:21:38 +00:00
Title: "Ограничение на количество токенов за один раз (max_tokens)",
SubTitle: "Максимальное количество токенов на одно взаимодействие",
},
PresencePenalty: {
2024-07-23 07:21:38 +00:00
Title: "Наказание за новизну тем (presence_penalty)",
SubTitle:
2024-07-23 07:21:38 +00:00
"Чем больше значение, тем выше вероятность расширения на новые темы",
},
FrequencyPenalty: {
2024-07-23 07:21:38 +00:00
Title: "Наказание за частоту (frequency_penalty)",
SubTitle:
2024-07-23 07:21:38 +00:00
"Чем больше значение, тем выше вероятность уменьшения повторяющихся слов",
},
},
Store: {
2024-07-23 07:21:38 +00:00
DefaultTopic: "Новый чат",
BotHello: "Чем могу помочь?",
Error: "Произошла ошибка, попробуйте позже",
Prompt: {
History: (content: string) =>
2024-07-23 07:21:38 +00:00
"Это резюме истории чата как предыстория: " + content,
Topic:
2024-07-23 07:21:38 +00:00
"Укажите краткую тему этого сообщения в четырех-пяти словах, без объяснений, знаков препинания, междометий, лишнего текста или выделения. Если темы нет, просто напишите 'Болтовня'",
Summarize:
2024-07-23 07:21:38 +00:00
"Кратко подведите итоги содержимого беседы для использования в качестве последующего контекстного запроса, не более 200 слов",
},
},
Copy: {
Success: "Скопировано в буфер обмена",
2024-07-23 07:21:38 +00:00
Failed: "Не удалось скопировать, предоставьте доступ к буферу обмена",
},
Download: {
Success: "Содержимое успешно загружено в вашу директорию.",
Failed: "Не удалось загрузить.",
},
Context: {
2024-07-23 07:21:38 +00:00
Toast: (x: any) => `Содержит ${x} предустановленных подсказок`,
Edit: "Текущие настройки чата",
Add: "Добавить новый чат",
Clear: "Контекст очищен",
Revert: "Восстановить контекст",
},
Plugin: {
2024-07-23 07:21:38 +00:00
Name: "Плагины",
},
FineTuned: {
2024-07-23 07:21:38 +00:00
Sysmessage: "Вы - помощник",
},
2024-08-14 14:28:05 +00:00
SearchChat: {
Name: "Поиск",
Page: {
2024-08-17 03:08:38 +00:00
Title: "Поиск в истории чатов",
Search: "Введите ключевые слова для поиска",
NoResult: "Результатов не найдено",
NoData: "Нет данных",
Loading: "Загрузка",
2024-08-14 14:28:05 +00:00
2024-08-17 03:08:38 +00:00
SubTitle: (count: number) => `Найдено ${count} результатов`,
2024-08-14 14:28:05 +00:00
},
Item: {
View: "Просмотр",
},
},
Mask: {
Name: "Маска",
Page: {
2024-07-23 07:21:38 +00:00
Title: "Предустановленные роли",
SubTitle: (count: number) => `${count} предустановленных ролей`,
Search: "Поиск ролей",
Create: "Создать",
},
Item: {
2024-07-23 07:21:38 +00:00
Info: (count: number) => `Содержит ${count} предустановленных диалогов`,
Chat: "Диалог",
View: "Просмотреть",
Edit: "Редактировать",
Delete: "Удалить",
DeleteConfirm: "Подтвердить удаление?",
},
EditModal: {
Title: (readonly: boolean) =>
2024-07-23 07:21:38 +00:00
`Редактирование предустановленной маски ${
readonly ? "(только для чтения)" : ""
}`,
2024-07-23 07:21:38 +00:00
Download: "Скачать предустановку",
Clone: "Клонировать предустановку",
},
Config: {
2024-07-23 07:21:38 +00:00
Avatar: "Аватар роли",
Name: "Название роли",
Sync: {
Title: "Использовать глобальные настройки",
SubTitle:
"Будет ли текущий чат использовать глобальные настройки модели",
Confirm:
"Пользовательские настройки текущего чата будут автоматически заменены, подтвердите активацию глобальных настроек?",
},
HideContext: {
Title: "Скрыть предустановленные диалоги",
SubTitle:
"После скрытия предустановленные диалоги не будут отображаться в чате",
},
Share: {
Title: "Поделиться этой маской",
SubTitle: "Создать прямую ссылку на эту маску",
Action: "Скопировать ссылку",
},
},
},
NewChat: {
Return: "Вернуться",
2024-07-23 07:21:38 +00:00
Skip: "Начать сразу",
NotShow: "Больше не показывать",
ConfirmNoShow:
2024-07-23 07:21:38 +00:00
"Подтвердить отключение? После отключения вы всегда сможете включить его снова в настройках.",
Title: "Выберите маску",
SubTitle: "Начните сейчас, столкнитесь с мыслями за маской",
More: "Показать все",
},
URLCommand: {
Code: "Обнаружен код доступа в ссылке, автоматически заполнить?",
Settings:
"Обнаружены предустановленные настройки в ссылке, автоматически заполнить?",
},
UI: {
Confirm: "Подтвердить",
Cancel: "Отмена",
Close: "Закрыть",
Create: "Создать",
Edit: "Редактировать",
2024-07-23 07:21:38 +00:00
Export: "Экспортировать",
Import: "Импортировать",
Sync: "Синхронизировать",
Config: "Настройки",
},
Exporter: {
2024-07-23 07:21:38 +00:00
Description: {
Title: "Только сообщения после очистки контекста будут отображаться",
},
Model: "Модель",
Messages: "Сообщения",
Topic: "Тема",
Time: "Время",
},
};
export default ru;