From 6db0decdb9a20241a6880350bf82de4e18af10e5 Mon Sep 17 00:00:00 2001 From: Romanok2805 <37216910+Romanok2805@users.noreply.github.com> Date: Mon, 19 Jun 2023 21:51:37 +0600 Subject: [PATCH] Add Russian translation (#363) * translate about.json * translate api.json * translate drive.json * Add Russian language * translate main.json * translate model.json * ci: add Azure Static Web Apps workflow file on-behalf-of: @Azure opensource@microsoft.com * Fix translation * Fix translation * Delete azure-static-web-apps-witty-plant-0f8ec9803.yml * author name not translated --- public/locales/ru/about.json | 27 +++++++++++++++++++++ public/locales/ru/api.json | 15 ++++++++++++ public/locales/ru/drive.json | 16 ++++++++++++ public/locales/ru/main.json | 47 ++++++++++++++++++++++++++++++++++++ public/locales/ru/model.json | 28 +++++++++++++++++++++ src/constants/language.ts | 3 +++ 6 files changed, 136 insertions(+) create mode 100644 public/locales/ru/about.json create mode 100644 public/locales/ru/api.json create mode 100644 public/locales/ru/drive.json create mode 100644 public/locales/ru/main.json create mode 100644 public/locales/ru/model.json diff --git a/public/locales/ru/about.json b/public/locales/ru/about.json new file mode 100644 index 0000000..a84fa2d --- /dev/null +++ b/public/locales/ru/about.json @@ -0,0 +1,27 @@ +{ + "description": "Better ChatGPT - это потрясающее открытое веб-приложение, позволяющее вам бесплатно использовать API ChatGPT от OpenAI!", + "sourceCode": "Ознакомьтесь с <0>исходным кодом на GitHub и поставьте ему ⭐️!", + "initiative": { + "description": "Ознакомьтесь с <0>Инициативой Open ChatGPT!", + "link": "https://medium.com/@ayaka_45434/the-open-chatgpt-initiative-e76b0b62a3ae" + }, + "support": { + "title": "Поддержка", + "paragraph1": "В Better ChatGPT мы стремимся предоставлять вам удивительные возможности круглосуточно. И, как и в любом проекте, ваша поддержка и мотивация играют важную роль в нашем развитии!", + "paragraph2": "Если вам понравилось наше приложение, удостойте его <0>⭐️. Ваше одобрение очень значимо для нас и мотивирует продолжать развивать лучший пользовательский опыт.", + "paragraph3": "Если вы хотите поддержать команду, рассмотрите возможность спонсирования через один из представленных ниже методов. Любая помощь, даже самая маленькая, способствует улучшению нашего сервиса.", + "paragraph4": "Спасибо, что являетесь частью нашего сообщества, и мы с нетерпением ждем возможности служить вам лучше в будущем.", + "alipay": "Alipay", + "wechatPay": "WeChat" + }, + "discordServer": { + "title": "Discord сервер", + "paragraph1": "Приглашаем вас присоединиться к нашему сообществу Discord! Наш сервер в Discord - отличное место для обмена идеями и советами по ChatGPT, а также для отправки пожеланий на развитие Better ChatGPT. Общайтесь с разработчиками Better ChatGPT и другими энтузиастами искусственного интеллекта, разделяющими вашу страсть.", + "paragraph2": "Чтобы присоединиться к нашему серверу, перейдите по следующей ссылке: <0>https://discord.gg/g3Qnwy4V6A. Ждем вас с нетерпением!" + }, + "privacyStatement": { + "title": "Заявление о конфиденциальности", + "paragraph1": "Ваша конфиденциальность важна для нас, и мы стремимся гарантировать защиту данных наших пользователей. Мы никаким образом не собираем или храним текст, отправленный или полученный от сервера OpenAI. Наш исходный код открыт для проверки этого утверждения.", + "paragraph2": "Мы очень внимательно относимся к безопасности вашего API-ключа и обрабатываем его с максимальной ответственностью. При использовании собственного ключа API, ваш ключ хранится только в вашем браузере и недоступен третьим сторонам. Он используется исключительно для предоставления доступа к API OpenAI без применения для других несанкционированных действий." + } +} diff --git a/public/locales/ru/api.json b/public/locales/ru/api.json new file mode 100644 index 0000000..3365b4c --- /dev/null +++ b/public/locales/ru/api.json @@ -0,0 +1,15 @@ +{ + "securityMessage": "Мы приоритизируем безопасность вашего API-ключа и обращаемся с ним с максимальной осторожностью. Ваш ключ хранится исключительно в вашем браузере и никогда не передается третьим лицам. Он используется только для предполагаемого доступа к API OpenAI и не применяется для других несанкционированных действий.", + "apiEndpoint": { + "inputLabel": "API Endpoint", + "description": "Когда вы выбираете неофициальный конечный пункт API, он функционирует в качестве прокси. Прокси работает, выступая в качестве посредника между вашим устройством и сервером назначения, в данном случае - API OpenAI. Таким образом, это позволяет вам получить доступ к API OpenAI в регионах, где он может быть ограничен.", + "warn": "Кроме того, если вы предоставите собственный конечный пункт API, который предоставляет бесплатный доступ к API OpenAI, вы можете использовать ChatGPT без необходимости предоставления API-ключа, оставив поле API-ключа пустым. Однако важно быть осторожными при использовании сторонних конечных точек API, так как ненадежные могут регистрировать вашу личную информацию в беседах. Всегда проверяйте надежность конечной точки API перед использованием, чтобы обеспечить вашу конфиденциальность и безопасность." + }, + "apiKey": { + "howTo": "Получите ваш личный API-ключ <0>здесь.", + "inputLabel": "API-ключ" + }, + "customEndpoint": "Использовать пользовательский API Endpoint", + "advancedConfig": "Посмотрите расширенную конфигурацию API <0>здесь", + "noApiKeyWarning": "API-ключ не указан! Пожалуйста, проверьте ваши настройки API." +} diff --git a/public/locales/ru/drive.json b/public/locales/ru/drive.json new file mode 100644 index 0000000..e144e5f --- /dev/null +++ b/public/locales/ru/drive.json @@ -0,0 +1,16 @@ +{ + "name": "Google Синхронизация", + "tagline": "Без усилий синхронизируйте ваши чаты и настройки с Google Диском.", + "button": { + "sync": "Синхронизировать чаты", + "stop": "Остановить синхронизацию", + "create": "Создать новый файл", + "confirm": "Подтвердить выбор" + }, + "notice": "Примечание: Вам потребуется повторный вход при каждом посещении или каждый час. Чтобы избежать перезаписи данных облачного хранения, не используйте BetterChatGPT одновременно на нескольких устройствах.", + "privacy": "Ваша конфиденциальность важна для нас, и чтобы обеспечить ее, Better ChatGPT имеет доступ только с низким уровнем чувствительности, что означает, что он может только создавать, просматривать и управлять своими собственными файлами и папками.", + "toast": { + "sync": "Синхронизация успешно выполнена!", + "stop": "Синхронизация остановлена" + } +} diff --git a/public/locales/ru/main.json b/public/locales/ru/main.json new file mode 100644 index 0000000..39c8e84 --- /dev/null +++ b/public/locales/ru/main.json @@ -0,0 +1,47 @@ +{ + "save": "Сохранить", + "saveAndSubmit": "Сохранить и отправить", + "cancel": "Отмена", + "confirm": "Подтвердить", + "warning": "Предупреждение", + "clearMessageWarning": "Обратите внимание, что после отправки этого сообщения все последующие сообщения будут удалены!", + "clearConversationWarning": "Обратите внимание, что подтверждение этого действия приведет к удалению всех сообщений!", + "clearConversation": "Очистить историю разговора", + "import": "Импорт", + "export": "Экспорт", + "author": "Автор: Jing Hua", + "about": "О программе и спонсоре", + "api": "API", + "personal": "Личный", + "free": "Бесплатный", + "downloadChat": "Скачать чат", + "user": "Пользователь", + "assistant": "Ассистент", + "system": "Система", + "newChat": "Новый чат", + "lightMode": "Светлый режим", + "darkMode": "Темный режим", + "setting": "Настройки", + "image": "Изображение", + "autoTitle": "Автоматическое создание заголовка", + "advancedMode": "Расширенный режим", + "inlineLatex": "Встроенный Latex", + "prompt": "Подсказка", + "promptLibrary": "Библиотека подсказок", + "name": "Имя", + "search": "Поиск", + "total": "Всего", + "resetCost": "Сбросить стоимость", + "countTotalTokens": "Посчитать общее количество токенов", + "morePrompts": "Больше подсказок вы можете найти здесь: ", + "clearPrompts": "Очистить подсказки", + "postOnShareGPT": { + "title": "Опубликовать на ShareGPT", + "warning": "Обратите внимание, что публикация вашей беседы на ShareGPT сделает ее общедоступной и видимой для всех. После публикации беседу нельзя скрыть или удалить, и другие могут архивировать или делиться ею. Мы советуем вам тщательно подумать и избегать обмена конфиденциальной или частной информацией на этой платформе." + }, + "newFolder": "Новая папка", + "cloneChat": "Клонировать чат", + "cloned": "Клонировано", + "enterToSubmit": "Нажмите Enter для отправки", + "submitPlaceholder": "Напишите сообщение или нажмите [/] для подсказок..." +} diff --git a/public/locales/ru/model.json b/public/locales/ru/model.json new file mode 100644 index 0000000..1739f2d --- /dev/null +++ b/public/locales/ru/model.json @@ -0,0 +1,28 @@ +{ + "configuration": "Конфигурация", + "model": "Модель", + "token": { + "label": "Макс. токенов", + "description": "Максимальное количество токенов для генерации в чате. Общая длина входных токенов и сгенерированных токенов ограничена контекстной длиной модели." + }, + "default": "По умолчанию", + "temperature": { + "label": "Температура", + "description": "Значение температуры выборки от 0 до 2. Более высокие значения, например 0.8, сделают выходной результат более случайным, в то время как более низкие значения, например 0.2, более фокусированными и детерминированными. Мы обычно рекомендуем изменять это или top-p, но не оба. (По умолчанию: 1)" + }, + "presencePenalty": { + "label": "Штраф за присутствие", + "description": "Число от -2.0 до 2.0. Положительные значения штрафуют новые токены на основе их появления в тексте до этого момента, увеличивая вероятность перехода модели к новым темам. (По умолчанию: 0)" + }, + "topP": { + "label": "Top-p", + "description": "Число от 0 до 1. Альтернатива выборке с температурой, называемая выборка ядра, при которой модель учитывает результаты токенов с верхним p вероятностных масс. Так, значение 0.1 означает, что рассматриваются только токены, составляющие верхние 10% вероятностной массы. Мы обычно рекомендуем изменять это или температуру, но не оба. (По умолчанию: 1)" + }, + "frequencyPenalty": { + "label": "Штраф за частоту", + "description": "Число от -2.0 до 2.0. Положительные значения штрафуют новые токены на основе их имеющейся частоты в тексте на данный момент, уменьшая вероятность повторения той же строки дословно. (По умолчанию: 0)" + }, + "defaultChatConfig": "Конфигурация чата по умолчанию", + "defaultSystemMessage": "Системное сообщение по умолчанию", + "resetToDefault": "Восстановить значения по умолчанию" +} diff --git a/src/constants/language.ts b/src/constants/language.ts index afaf988..c2dc2fc 100644 --- a/src/constants/language.ts +++ b/src/constants/language.ts @@ -14,6 +14,7 @@ export const i18nLanguages = [ 'ms', 'nb', 'ro', + 'ru', 'sv', // 'ug', 'yue', @@ -39,6 +40,7 @@ export const selectableLanguages = [ 'ms', 'nb', 'ro', + 'ru', 'sv', // 'ug', 'yue', @@ -63,6 +65,7 @@ export const languageCodeToName = { 'ms': 'Bahasa Melayu', 'nb': 'Norsk bokmål', 'ro': 'Română', + 'ru': 'Русский', 'sv': 'Svenska', // 'ug': 'ئۇيغۇرچە', 'yue': '廣東話',