ru.ts 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592
  1. import { SubmitKey } from "../store/config";
  2. import { PartialLocaleType } from "../locales/index";
  3. import { getClientConfig } from "../config/client";
  4. import { SAAS_CHAT_UTM_URL } from "@/app/constant";
  5. const isApp = !!getClientConfig()?.isApp;
  6. const ru: PartialLocaleType = {
  7. WIP: "Скоро...",
  8. Error: {
  9. Unauthorized: isApp
  10. ? `😆 В разговоре возникли некоторые проблемы, не переживайте:
  11. \\ 1️⃣ Если вы хотите начать без настройки, [нажмите здесь, чтобы немедленно начать разговор 🚀](${SAAS_CHAT_UTM_URL})
  12. \\ 2️⃣ Если вы хотите использовать свои ресурсы OpenAI, нажмите [здесь](/#/settings), чтобы изменить настройки ⚙️`
  13. : `😆 В разговоре возникли некоторые проблемы, не переживайте:
  14. \ 1️⃣ Если вы хотите начать без настройки, [нажмите здесь, чтобы немедленно начать разговор 🚀](${SAAS_CHAT_UTM_URL})
  15. \ 2️⃣ Если вы используете частную версию развертывания, нажмите [здесь](/#/auth), чтобы ввести ключ доступа 🔑
  16. \ 3️⃣ Если вы хотите использовать свои ресурсы OpenAI, нажмите [здесь](/#/settings), чтобы изменить настройки ⚙️
  17. `,
  18. },
  19. Auth: {
  20. Title: "Требуется пароль",
  21. Tips: "Администратор включил проверку пароля. Пожалуйста, введите код доступа ниже",
  22. SubTips: "Или введите ваш API-ключ OpenAI или Google",
  23. Input: "Введите код доступа здесь",
  24. Confirm: "Подтвердить",
  25. Later: "Позже",
  26. Return: "Назад",
  27. SaasTips: "Настройка слишком сложна, я хочу использовать это немедленно",
  28. TopTips:
  29. "🥳 Предложение по запуску NextChat AI: разблокируйте OpenAI o1, GPT-4o, Claude-3.5 и новейшие большие модели прямо сейчас",
  30. },
  31. ChatItem: {
  32. ChatItemCount: (count: number) => `${count} бесед`,
  33. },
  34. Chat: {
  35. SubTitle: (count: number) => `Всего ${count} бесед`,
  36. EditMessage: {
  37. Title: "Редактировать сообщение",
  38. Topic: {
  39. Title: "Тема чата",
  40. SubTitle: "Изменить текущую тему чата",
  41. },
  42. },
  43. Actions: {
  44. ChatList: "Просмотреть список сообщений",
  45. CompressedHistory: "Просмотреть сжатую историю подсказок",
  46. Export: "Экспортировать чат",
  47. Copy: "Копировать",
  48. Stop: "Остановить",
  49. Retry: "Повторить",
  50. Pin: "Закрепить",
  51. PinToastContent: "1 беседа закреплена в предустановленных подсказках",
  52. PinToastAction: "Просмотреть",
  53. Delete: "Удалить",
  54. Edit: "Редактировать",
  55. RefreshTitle: "Обновить заголовок",
  56. RefreshToast: "Запрос на обновление заголовка отправлен",
  57. },
  58. Commands: {
  59. new: "Новый чат",
  60. newm: "Создать чат из маски",
  61. next: "Следующий чат",
  62. prev: "Предыдущий чат",
  63. clear: "Очистить контекст",
  64. del: "Удалить чат",
  65. },
  66. InputActions: {
  67. Stop: "Остановить ответ",
  68. ToBottom: "Перейти к последнему",
  69. Theme: {
  70. auto: "Автоматическая тема",
  71. light: "Светлая тема",
  72. dark: "Темная тема",
  73. },
  74. Prompt: "Быстрая команда",
  75. Masks: "Все маски",
  76. Clear: "Очистить чат",
  77. Settings: "Настройки чата",
  78. UploadImage: "Загрузить изображение",
  79. },
  80. Rename: "Переименовать чат",
  81. Typing: "Печатает…",
  82. Input: (submitKey: string) => {
  83. var inputHints = `${submitKey} Отправить`;
  84. if (submitKey === String(SubmitKey.Enter)) {
  85. inputHints += ",Shift + Enter для новой строки";
  86. }
  87. return inputHints + ",/ для автозаполнения,: для команд";
  88. },
  89. Send: "Отправить",
  90. Config: {
  91. Reset: "Очистить память",
  92. SaveAs: "Сохранить как маску",
  93. },
  94. IsContext: "Предустановленные подсказки",
  95. },
  96. Export: {
  97. Title: "Поделиться историей чата",
  98. Copy: "Копировать все",
  99. Download: "Скачать файл",
  100. Share: "Поделиться в ShareGPT",
  101. MessageFromYou: "Пользователь",
  102. MessageFromChatGPT: "ChatGPT",
  103. Format: {
  104. Title: "Формат экспорта",
  105. SubTitle: "Можно экспортировать как Markdown текст или PNG изображение",
  106. },
  107. IncludeContext: {
  108. Title: "Включить контекст маски",
  109. SubTitle: "Показывать ли контекст маски в сообщениях",
  110. },
  111. Steps: {
  112. Select: "Выбрать",
  113. Preview: "Предпросмотр",
  114. },
  115. Image: {
  116. Toast: "Создание скриншота",
  117. Modal: "Длительное нажатие или правый клик для сохранения изображения",
  118. },
  119. },
  120. Select: {
  121. Search: "Поиск сообщений",
  122. All: "Выбрать все",
  123. Latest: "Последние сообщения",
  124. Clear: "Очистить выбор",
  125. },
  126. Memory: {
  127. Title: "Историческое резюме",
  128. EmptyContent: "Содержимое чата слишком короткое, чтобы суммировать",
  129. Send: "Автоматически сжать историю чата и отправить как контекст",
  130. Copy: "Копировать резюме",
  131. Reset: "[не используется]",
  132. ResetConfirm: "Подтвердить очистку исторического резюме?",
  133. },
  134. Home: {
  135. NewChat: "Новый чат",
  136. DeleteChat: "Подтвердить удаление выбранного чата?",
  137. DeleteToast: "Беседа удалена",
  138. Revert: "Отменить",
  139. },
  140. Settings: {
  141. Title: "Настройки",
  142. SubTitle: "Все параметры настроек",
  143. Danger: {
  144. Reset: {
  145. Title: "Сброс всех настроек",
  146. SubTitle: "Сброс всех параметров до значений по умолчанию",
  147. Action: "Сбросить сейчас",
  148. Confirm: "Подтвердить сброс всех настроек?",
  149. },
  150. Clear: {
  151. Title: "Очистить все данные",
  152. SubTitle: "Очистить все чаты и данные настроек",
  153. Action: "Очистить сейчас",
  154. Confirm: "Подтвердить очистку всех чатов и данных настроек?",
  155. },
  156. },
  157. Lang: {
  158. Name: "Language", // ATTENTION: если вы хотите добавить новый перевод, не переводите это значение, оставьте его как `Language`
  159. All: "Все языки",
  160. },
  161. Avatar: "Аватар",
  162. FontSize: {
  163. Title: "Размер шрифта",
  164. SubTitle: "Размер шрифта в чате",
  165. },
  166. FontFamily: {
  167. Title: "Шрифт чата",
  168. SubTitle:
  169. "Шрифт содержимого чата, оставьте пустым для применения глобального шрифта по умолчанию",
  170. Placeholder: "Название шрифта",
  171. },
  172. InjectSystemPrompts: {
  173. Title: "Вставить системные подсказки",
  174. SubTitle:
  175. "Принудительно добавлять системную подсказку, имитирующую ChatGPT, в начале каждого запроса",
  176. },
  177. InputTemplate: {
  178. Title: "Предварительная обработка пользовательского ввода",
  179. SubTitle:
  180. "Последнее сообщение пользователя будет подставлено в этот шаблон",
  181. },
  182. SendKey: "Кнопка отправки",
  183. Theme: "Тема",
  184. TightBorder: "Режим без границ",
  185. SendPreviewBubble: {
  186. Title: "Предварительный просмотр пузырьков",
  187. SubTitle:
  188. "Просмотр содержимого Markdown в пузырьках предварительного просмотра",
  189. },
  190. AutoGenerateTitle: {
  191. Title: "Автоматическое создание заголовка",
  192. SubTitle: "Создание подходящего заголовка на основе содержания беседы",
  193. },
  194. Sync: {
  195. CloudState: "Облачные данные",
  196. NotSyncYet: "Синхронизация еще не проводилась",
  197. Success: "Синхронизация успешна",
  198. Fail: "Не удалось синхронизировать",
  199. Config: {
  200. Modal: {
  201. Title: "Настройки облачной синхронизации",
  202. Check: "Проверить доступность",
  203. },
  204. SyncType: {
  205. Title: "Тип синхронизации",
  206. SubTitle: "Выберите предпочитаемый сервер синхронизации",
  207. },
  208. Proxy: {
  209. Title: "Включить прокси",
  210. SubTitle:
  211. "При синхронизации в браузере необходимо включить прокси для предотвращения ограничений кросс-домена",
  212. },
  213. ProxyUrl: {
  214. Title: "Адрес прокси",
  215. SubTitle: "Только для встроенного прокси в проекте",
  216. },
  217. WebDav: {
  218. Endpoint: "WebDAV адрес",
  219. UserName: "Имя пользователя",
  220. Password: "Пароль",
  221. },
  222. UpStash: {
  223. Endpoint: "UpStash Redis REST Url",
  224. UserName: "Имя резервной копии",
  225. Password: "UpStash Redis REST Token",
  226. },
  227. },
  228. LocalState: "Локальные данные",
  229. Overview: (overview: any) => {
  230. return `${overview.chat} бесед, ${overview.message} сообщений, ${overview.prompt} подсказок, ${overview.mask} масок`;
  231. },
  232. ImportFailed: "Не удалось импортировать",
  233. },
  234. Mask: {
  235. Splash: {
  236. Title: "Стартовая страница масок",
  237. SubTitle:
  238. "При создании нового чата отображать стартовую страницу масок",
  239. },
  240. Builtin: {
  241. Title: "Скрыть встроенные маски",
  242. SubTitle: "Скрыть встроенные маски во всех списках масок",
  243. },
  244. },
  245. Prompt: {
  246. Disable: {
  247. Title: "Отключить автозаполнение подсказок",
  248. SubTitle: "Введите / в начале строки для активации автозаполнения",
  249. },
  250. List: "Список пользовательских подсказок",
  251. ListCount: (builtin: number, custom: number) =>
  252. `Встроенные ${builtin}, пользовательские ${custom}`,
  253. Edit: "Редактировать",
  254. Modal: {
  255. Title: "Список подсказок",
  256. Add: "Создать",
  257. Search: "Поиск подсказок",
  258. },
  259. EditModal: {
  260. Title: "Редактировать подсказки",
  261. },
  262. },
  263. HistoryCount: {
  264. Title: "Количество истории сообщений",
  265. SubTitle: "Количество историй сообщений, отправляемых с каждым запросом",
  266. },
  267. CompressThreshold: {
  268. Title: "Порог сжатия длины истории сообщений",
  269. SubTitle:
  270. "Когда не сжатая история сообщений превышает это значение, происходит сжатие",
  271. },
  272. Access: {
  273. SaasStart: {
  274. Title: "Используйте NextChat AI",
  275. Label: "(Самое экономичное решение)",
  276. SubTitle:
  277. "Официально поддерживается NextChat, готов к использованию без настройки, поддерживает последние крупные модели, такие как OpenAI o1, GPT-4o и Claude-3.5",
  278. ChatNow: "Начать чат",
  279. },
  280. AccessCode: {
  281. Title: "Пароль доступа",
  282. SubTitle: "Администратор включил защиту паролем",
  283. Placeholder: "Введите пароль доступа",
  284. },
  285. CustomEndpoint: {
  286. Title: "Пользовательский интерфейс",
  287. SubTitle: "Использовать ли пользовательский Azure или OpenAI сервис",
  288. },
  289. Provider: {
  290. Title: "Провайдер модели",
  291. SubTitle: "Переключиться на другого провайдера",
  292. },
  293. OpenAI: {
  294. ApiKey: {
  295. Title: "API-ключ",
  296. SubTitle:
  297. "Использовать пользовательский OpenAI-ключ для обхода ограничений пароля",
  298. Placeholder: "OpenAI API-ключ",
  299. },
  300. Endpoint: {
  301. Title: "Адрес интерфейса",
  302. SubTitle: "Кроме адреса по умолчанию, должен содержать http(s)://",
  303. },
  304. },
  305. Azure: {
  306. ApiKey: {
  307. Title: "Ключ интерфейса",
  308. SubTitle:
  309. "Использовать пользовательский Azure-ключ для обхода ограничений пароля",
  310. Placeholder: "Azure API-ключ",
  311. },
  312. Endpoint: {
  313. Title: "Адрес интерфейса",
  314. SubTitle: "Пример:",
  315. },
  316. ApiVerion: {
  317. Title: "Версия интерфейса (azure api version)",
  318. SubTitle: "Выберите конкретную версию",
  319. },
  320. },
  321. Anthropic: {
  322. ApiKey: {
  323. Title: "Ключ интерфейса",
  324. SubTitle:
  325. "Использовать пользовательский Anthropic-ключ для обхода ограничений пароля",
  326. Placeholder: "Anthropic API-ключ",
  327. },
  328. Endpoint: {
  329. Title: "Адрес интерфейса",
  330. SubTitle: "Пример:",
  331. },
  332. ApiVerion: {
  333. Title: "Версия интерфейса (claude api version)",
  334. SubTitle: "Выберите конкретную версию API",
  335. },
  336. },
  337. Google: {
  338. ApiKey: {
  339. Title: "API-ключ",
  340. SubTitle: "Получите ваш API-ключ Google AI",
  341. Placeholder: "Введите ваш API-ключ Google AI Studio",
  342. },
  343. Endpoint: {
  344. Title: "Адрес интерфейса",
  345. SubTitle: "Пример:",
  346. },
  347. ApiVersion: {
  348. Title: "Версия API (только для gemini-pro)",
  349. SubTitle: "Выберите конкретную версию API",
  350. },
  351. GoogleSafetySettings: {
  352. Title: "Уровень фильтрации Google",
  353. SubTitle: "Настроить уровень фильтрации контента",
  354. },
  355. },
  356. Baidu: {
  357. ApiKey: {
  358. Title: "API-ключ",
  359. SubTitle: "Использовать пользовательский Baidu API-ключ",
  360. Placeholder: "Baidu API-ключ",
  361. },
  362. SecretKey: {
  363. Title: "Секретный ключ",
  364. SubTitle: "Использовать пользовательский Baidu Secret Key",
  365. Placeholder: "Baidu Secret Key",
  366. },
  367. Endpoint: {
  368. Title: "Адрес интерфейса",
  369. SubTitle:
  370. "Не поддерживает пользовательскую настройку, перейдите в .env",
  371. },
  372. },
  373. ByteDance: {
  374. ApiKey: {
  375. Title: "Ключ интерфейса",
  376. SubTitle: "Использовать пользовательский ByteDance API-ключ",
  377. Placeholder: "ByteDance API-ключ",
  378. },
  379. Endpoint: {
  380. Title: "Адрес интерфейса",
  381. SubTitle: "Пример:",
  382. },
  383. },
  384. Alibaba: {
  385. ApiKey: {
  386. Title: "Ключ интерфейса",
  387. SubTitle: "Использовать пользовательский Alibaba Cloud API-ключ",
  388. Placeholder: "Alibaba Cloud API-ключ",
  389. },
  390. Endpoint: {
  391. Title: "Адрес интерфейса",
  392. SubTitle: "Пример:",
  393. },
  394. },
  395. AI302: {
  396. ApiKey: {
  397. Title: "Ключ интерфейса",
  398. SubTitle: "Использовать пользовательский 302.AI API-ключ",
  399. Placeholder: "302.AI API-ключ",
  400. },
  401. Endpoint: {
  402. Title: "Адрес интерфейса",
  403. SubTitle: "Пример:",
  404. },
  405. },
  406. CustomModel: {
  407. Title: "Название пользовательской модели",
  408. SubTitle:
  409. "Добавьте варианты пользовательских моделей, разделяя запятыми",
  410. },
  411. },
  412. Model: "Модель",
  413. CompressModel: {
  414. Title: "Модель сжатия",
  415. SubTitle: "Модель, используемая для сжатия истории",
  416. },
  417. Temperature: {
  418. Title: "Случайность (temperature)",
  419. SubTitle: "Чем больше значение, тем более случайные ответы",
  420. },
  421. TopP: {
  422. Title: "Ядро выборки (top_p)",
  423. SubTitle: "Похожие на случайность, но не изменяйте вместе с случайностью",
  424. },
  425. MaxTokens: {
  426. Title: "Ограничение на количество токенов за один раз (max_tokens)",
  427. SubTitle: "Максимальное количество токенов на одно взаимодействие",
  428. },
  429. PresencePenalty: {
  430. Title: "Наказание за новизну тем (presence_penalty)",
  431. SubTitle:
  432. "Чем больше значение, тем выше вероятность расширения на новые темы",
  433. },
  434. FrequencyPenalty: {
  435. Title: "Наказание за частоту (frequency_penalty)",
  436. SubTitle:
  437. "Чем больше значение, тем выше вероятность уменьшения повторяющихся слов",
  438. },
  439. },
  440. Store: {
  441. DefaultTopic: "Новый чат",
  442. BotHello: "Чем могу помочь?",
  443. Error: "Произошла ошибка, попробуйте позже",
  444. Prompt: {
  445. History: (content: string) =>
  446. "Это резюме истории чата как предыстория: " + content,
  447. Topic:
  448. "Укажите краткую тему этого сообщения в четырех-пяти словах, без объяснений, знаков препинания, междометий, лишнего текста или выделения. Если темы нет, просто напишите 'Болтовня'",
  449. Summarize:
  450. "Кратко подведите итоги содержимого беседы для использования в качестве последующего контекстного запроса, не более 200 слов",
  451. },
  452. },
  453. Copy: {
  454. Success: "Скопировано в буфер обмена",
  455. Failed: "Не удалось скопировать, предоставьте доступ к буферу обмена",
  456. },
  457. Download: {
  458. Success: "Содержимое успешно загружено в вашу директорию.",
  459. Failed: "Не удалось загрузить.",
  460. },
  461. Context: {
  462. Toast: (x: any) => `Содержит ${x} предустановленных подсказок`,
  463. Edit: "Текущие настройки чата",
  464. Add: "Добавить новый чат",
  465. Clear: "Контекст очищен",
  466. Revert: "Восстановить контекст",
  467. },
  468. Plugin: {
  469. Name: "Плагины",
  470. },
  471. FineTuned: {
  472. Sysmessage: "Вы - помощник",
  473. },
  474. SearchChat: {
  475. Name: "Поиск",
  476. Page: {
  477. Title: "Поиск в истории чатов",
  478. Search: "Введите ключевые слова для поиска",
  479. NoResult: "Результатов не найдено",
  480. NoData: "Нет данных",
  481. Loading: "Загрузка",
  482. SubTitle: (count: number) => `Найдено ${count} результатов`,
  483. },
  484. Item: {
  485. View: "Просмотр",
  486. },
  487. },
  488. Mask: {
  489. Name: "Маска",
  490. Page: {
  491. Title: "Предустановленные роли",
  492. SubTitle: (count: number) => `${count} предустановленных ролей`,
  493. Search: "Поиск ролей",
  494. Create: "Создать",
  495. },
  496. Item: {
  497. Info: (count: number) => `Содержит ${count} предустановленных диалогов`,
  498. Chat: "Диалог",
  499. View: "Просмотреть",
  500. Edit: "Редактировать",
  501. Delete: "Удалить",
  502. DeleteConfirm: "Подтвердить удаление?",
  503. },
  504. EditModal: {
  505. Title: (readonly: boolean) =>
  506. `Редактирование предустановленной маски ${
  507. readonly ? "(только для чтения)" : ""
  508. }`,
  509. Download: "Скачать предустановку",
  510. Clone: "Клонировать предустановку",
  511. },
  512. Config: {
  513. Avatar: "Аватар роли",
  514. Name: "Название роли",
  515. Sync: {
  516. Title: "Использовать глобальные настройки",
  517. SubTitle:
  518. "Будет ли текущий чат использовать глобальные настройки модели",
  519. Confirm:
  520. "Пользовательские настройки текущего чата будут автоматически заменены, подтвердите активацию глобальных настроек?",
  521. },
  522. HideContext: {
  523. Title: "Скрыть предустановленные диалоги",
  524. SubTitle:
  525. "После скрытия предустановленные диалоги не будут отображаться в чате",
  526. },
  527. Share: {
  528. Title: "Поделиться этой маской",
  529. SubTitle: "Создать прямую ссылку на эту маску",
  530. Action: "Скопировать ссылку",
  531. },
  532. },
  533. },
  534. NewChat: {
  535. Return: "Вернуться",
  536. Skip: "Начать сразу",
  537. NotShow: "Больше не показывать",
  538. ConfirmNoShow:
  539. "Подтвердить отключение? После отключения вы всегда сможете включить его снова в настройках.",
  540. Title: "Выберите маску",
  541. SubTitle: "Начните сейчас, столкнитесь с мыслями за маской",
  542. More: "Показать все",
  543. },
  544. URLCommand: {
  545. Code: "Обнаружен код доступа в ссылке, автоматически заполнить?",
  546. Settings:
  547. "Обнаружены предустановленные настройки в ссылке, автоматически заполнить?",
  548. },
  549. UI: {
  550. Confirm: "Подтвердить",
  551. Cancel: "Отмена",
  552. Close: "Закрыть",
  553. Create: "Создать",
  554. Edit: "Редактировать",
  555. Export: "Экспортировать",
  556. Import: "Импортировать",
  557. Sync: "Синхронизировать",
  558. Config: "Настройки",
  559. },
  560. Exporter: {
  561. Description: {
  562. Title: "Только сообщения после очистки контекста будут отображаться",
  563. },
  564. Model: "Модель",
  565. Messages: "Сообщения",
  566. Topic: "Тема",
  567. Time: "Время",
  568. },
  569. };
  570. export default ru;