diff --git a/src/assets/font.ttf b/src/assets/font.ttf index 937b1e9..6c77d20 100644 Binary files a/src/assets/font.ttf and b/src/assets/font.ttf differ diff --git a/src/assets/locale/ru/common.json b/src/assets/locale/ru/common.json new file mode 100644 index 0000000..e2920eb --- /dev/null +++ b/src/assets/locale/ru/common.json @@ -0,0 +1,54 @@ +{ + "pageAssist": "Помощник страницы", + "selectAModel": "Выберите модель", + "save": "Сохранить", + "saved": "Сохранено", + "cancel": "Отмена", + "retry": "Повторить", + "share": { + "tooltip": { + "share": "Поделиться" + }, + "modal": { + "title": "Поделиться ссылкой на чат" + }, + "form": { + "defaultValue": { + "name": "Аноним", + "title": "Безымянный чат" + }, + "title": { + "label": "Название чата", + "placeholder": "Введите название чата", + "required": "Название чата обязательно" + }, + "name": { + "label": "Ваше имя", + "placeholder": "Введите ваше имя", + "required": "Ваше имя обязательно" + }, + "btn": { + "save": "Создать ссылку", + "saving": "Создание ссылки..." + } + }, + "notification": { + "successGenerate": "Ссылка скопирована в буфер обмена", + "failGenerate": "Не удалось создать ссылку" + } + }, + "copyToClipboard": "Копировать в буфер обмена", + "webSearch": "Поиск в интернете", + "regenerate": "Пересоздать", + "edit": "Редактировать", + "saveAndSubmit": "Сохранить и отправить", + "editMessage": { + "placeholder": "Введите сообщение..." + }, + "submit": "Отправить", + "noData": "Нет данных", + "noHistory": "Нет истории чата", + "chatWithCurrentPage": "Чат с текущей страницей", + "beta": "Бета", + "tts": "Прочитать вслух" +} diff --git a/src/assets/locale/ru/knowledge.json b/src/assets/locale/ru/knowledge.json new file mode 100644 index 0000000..5c23e0c --- /dev/null +++ b/src/assets/locale/ru/knowledge.json @@ -0,0 +1,42 @@ +{ + "addBtn": "Добавить новое знание", + "columns": { + "title": "Название", + "status": "Статус", + "embeddings": "Модель вложения", + "createdAt": "Создано", + "action": "Действия" + }, + "expandedColumns": { + "name": "Имя" + }, + "tooltip": { + "delete": "Удалить" + }, + "confirm": { + "delete": "Вы уверены, что хотите удалить это знание?" + }, + "deleteSuccess": "Знание успешно удалено", + "status": { + "pending": "Ожидание", + "finished": "Завершено", + "processing": "Обработка" + }, + "addKnowledge": "Добавить знание", + "form": { + "title": { + "label": "Название знания", + "placeholder": "Введите название знания", + "required": "Название знания обязательно" + }, + "uploadFile": { + "label": "Загрузить файл", + "uploadText": "Перетащите файл сюда или нажмите, чтобы загрузить", + "uploadHint": "Поддерживаемые типы файлов: .pdf, .csv, .txt, .md", + "required": "Файл обязателен" + }, + "submit": "Отправить", + "success": "Знание успешно добавлено" + }, + "noEmbeddingModel": "Пожалуйста, сначала добавьте модель вложения на странице настроек Ollama" +} diff --git a/src/assets/locale/ru/option.json b/src/assets/locale/ru/option.json new file mode 100644 index 0000000..f15c106 --- /dev/null +++ b/src/assets/locale/ru/option.json @@ -0,0 +1,12 @@ +{ + "newChat": "Новый чат", + "selectAPrompt": "Выберите подсказку", + "githubRepository": "Репозиторий GitHub", + "settings": "Настройки", + "sidebarTitle": "История чата", + "error": "Ошибка", + "somethingWentWrong": "Что-то пошло не так", + "validationSelectModel": "Пожалуйста, выберите модель, чтобы продолжить", + "deleteHistoryConfirmation": "Вы уверены, что хотите удалить эту историю?", + "editHistoryTitle": "Введите новое название" +} diff --git a/src/assets/locale/ru/playground.json b/src/assets/locale/ru/playground.json new file mode 100644 index 0000000..498f2c8 --- /dev/null +++ b/src/assets/locale/ru/playground.json @@ -0,0 +1,28 @@ +{ + "ollamaState": { + "searching": "Поиск вашего Ollama 🦙", + "running": "Ollama работает 🦙", + "notRunning": "Не удалось подключиться к Ollama 🦙" + }, + "formError": { + "noModel": "Пожалуйста, выберите модель", + "noEmbeddingModel": "Пожалуйста, установите модель вложения на странице Настройки > Ollama" + }, + "form": { + "textarea": { + "placeholder": "Введите сообщение..." + }, + "webSearch": { + "on": "Вкл", + "off": "Выкл" + } + }, + "tooltip": { + "searchInternet": "Поиск в Интернете", + "speechToText": "Речь в текст", + "uploadImage": "Загрузить изображение", + "stopStreaming": "Остановить поток", + "knowledge": "Знание" + }, + "sendWhenEnter": "Отправить при нажатии клавиши Enter" +} diff --git a/src/assets/locale/ru/settings.json b/src/assets/locale/ru/settings.json new file mode 100644 index 0000000..b999c36 --- /dev/null +++ b/src/assets/locale/ru/settings.json @@ -0,0 +1,267 @@ +{ + "generalSettings": { + "title": "Общие настройки", + "settings": { + "heading": "Настройки веб-интерфейса", + "speechRecognitionLang": { + "label": "Язык распознавания речи", + "placeholder": "Выберите язык" + }, + "language": { + "label": "Язык", + "placeholder": "Выберите язык" + }, + "darkMode": { + "label": "Сменить тему", + "options": { + "light": "Светлая", + "dark": "Темная" + } + } + }, + "webSearch": { + "heading": "Управление веб-поиском", + "searchMode": { + "label": "Выполнить простой интернет-поиск" + }, + "provider": { + "label": "Поисковый движок", + "placeholder": "Выберите поисковый движок" + }, + "totalSearchResults": { + "label": "Общее количество результатов поиска", + "placeholder": "Введите общее количество результатов поиска" + } + }, + "system": { + "heading": "Настройки системы", + "deleteChatHistory": { + "label": "Удалить историю чата", + "button": "Удалить", + "confirm": "Вы уверены, что хотите удалить историю чата? Это действие нельзя отменить." + }, + "export": { + "label": "Экспорт истории чата, настроек и подсказок", + "button": "Экспорт данных", + "success": "Экспорт успешен" + }, + "import": { + "label": "Импорт истории чата, настроек и подсказок", + "button": "Импорт данных", + "success": "Импорт успешен", + "error": "Ошибка импорта" + } + }, + "tts": { + "heading": "Настройки текст в речь", + "ttsEnabled": { + "label": "Включить текст в речь" + }, + "ttsProvider": { + "label": "Поставщик текста в речь", + "placeholder": "Выберите поставщика" + }, + "ttsVoice": { + "label": "Голос текста в речь", + "placeholder": "Выберите голос" + }, + "ssmlEnabled": { + "label": "Включить SSML (язык разметки синтеза речи)" + } + } + }, + "manageModels": { + "title": "Управление моделями", + "addBtn": "Добавить новую модель", + "columns": { + "name": "Название", + "digest": "Дайджест", + "modifiedAt": "Изменено", + "size": "Размер", + "actions": "Действия" + }, + "expandedColumns": { + "parentModel": "Родительская модель", + "format": "Формат", + "family": "Семейство", + "parameterSize": "Размер параметров", + "quantizationLevel": "Уровень квантования" + }, + "tooltip": { + "delete": "Удалить модель", + "repull": "Переполучить модель" + }, + "confirm": { + "delete": "Вы уверены, что хотите удалить эту модель?", + "repull": "Вы уверены, что хотите переполучить эту модель?" + }, + "modal": { + "title": "Добавить новую модель", + "placeholder": "Введите название модели", + "pull": "Получить модель" + }, + "notification": { + "pullModel": "Получение модели", + "pullModelDescription": "Получение модели {{modelName}}. Для получения дополнительной информации проверьте значок расширения.", + "success": "Успех", + "error": "Ошибка", + "successDescription": "Модель успешно получена", + "successDeleteDescription": "Модель успешно удалена", + "someError": "Что-то пошло не так. Пожалуйста, попробуйте позже" + } + }, + "managePrompts": { + "title": "Управление подсказками", + "addBtn": "Добавить новую подсказку", + "option1": "Обычная", + "option2": "RAG", + "questionPrompt": "Вопросная подсказка", + "columns": { + "title": "Название", + "prompt": "Подсказка", + "type": "Тип подсказки", + "actions": "Действия" + }, + "systemPrompt": "Системная подсказка", + "quickPrompt": "Быстрая подсказка", + "tooltip": { + "delete": "Удалить подсказку", + "edit": "Редактировать подсказку" + }, + "confirm": { + "delete": "Вы уверены, что хотите удалить эту подсказку? Это действие нельзя отменить." + }, + "modal": { + "addTitle": "Добавить новую подсказку", + "editTitle": "Редактировать подсказку" + }, + "form": { + "title": { + "label": "Название", + "placeholder": "Моя замечательная подсказка", + "required": "Пожалуйста, введите название" + }, + "prompt": { + "label": "Подсказка", + "placeholder": "Введите подсказку", + "required": "Пожалуйста, введите подсказку", + "help": "Вы можете использовать {key} в качестве переменной в своей подсказке." + }, + "isSystem": { + "label": "Это системная подсказка" + }, + "btnSave": { + "saving": "Добавление подсказки...", + "save": "Добавить подсказку" + }, + "btnEdit": { + "saving": "Обновление подсказки...", + "save": "Обновить подсказку" + } + }, + "notification": { + "addSuccess": "Подсказка добавлена", + "addSuccessDesc": "Подсказка успешно добавлена", + "error": "Ошибка", + "someError": "Что-то пошло не так. Пожалуйста, попробуйте позже", + "updatedSuccess": "Подсказка обновлена", + "updatedSuccessDesc": "Подсказка успешно обновлена", + "deletedSuccess": "Подсказка удалена", + "deletedSuccessDesc": "Подсказка успешно удалена" + } + }, + "manageShare": { + "title": "Управление обменом", + "heading": "Настройка URL обмена страницей", + "form": { + "url": { + "label": "URL обмена страницей", + "placeholder": "Введите URL обмена страницей", + "required": "Пожалуйста, введите ваш URL обмена страницей!", + "help": "По соображениям конфиденциальности вы можете самостоятельно разместить страницу обмена и указать здесь URL. Узнать больше." + } + }, + "webshare": { + "heading": "Веб-обмен", + "columns": { + "title": "Название", + "url": "URL", + "actions": "Действия" + }, + "tooltip": { + "delete": "Удалить обмен" + }, + "confirm": { + "delete": "Вы уверены, что хотите удалить этот обмен? Это действие нельзя отменить." + } + }, + "notification": { + "pageShareSuccess": "URL обмена страницей успешно обновлен", + "someError": "Что-то пошло не так. Пожалуйста, попробуйте позже", + "webShareDeleteSuccess": "Веб-обмен успешно удален" + } + }, + "ollamaSettings": { + "title": "Настройки Ollama", + "heading": "Настройка Ollama", + "settings": { + "ollamaUrl": { + "label": "URL Ollama", + "placeholder": "Введите URL Ollama" + }, + "ragSettings": { + "label": "Настройки RAG", + "model": { + "label": "Модель вложения", + "required": "Пожалуйста, выберите модель", + "help": "Настоятельно рекомендуется использовать модели вложения, например, `nomic-embed-text`.", + "placeholder": "Выберите модель" + }, + "chunkSize": { + "label": "Размер фрагмента", + "placeholder": "Введите размер фрагмента", + "required": "Пожалуйста, введите размер фрагмента" + }, + "chunkOverlap": { + "label": "Перекрытие фрагментов", + "placeholder": "Введите перекрытие фрагментов", + "required": "Пожалуйста, введите перекрытие фрагментов" + } + }, + "prompt": { + "label": "Настройка системной подсказки RAG", + "option1": "Обычная", + "option2": "Веб", + "alert": "Настройка системной подсказки здесь устарела. Используйте раздел Управление подсказками для добавления или редактирования подсказок. Этот раздел будет удален в будущем выпуске", + "systemPrompt": "Системная подсказка", + "systemPromptPlaceholder": "Введите системную подсказку", + "webSearchPrompt": "Подсказка для веб-поиска", + "webSearchPromptHelp": "Не удаляйте `{search_results}` из подсказки.", + "webSearchPromptError": "Пожалуйста, введите подсказку для веб-поиска", + "webSearchPromptPlaceholder": "Введите подсказку для веб-поиска", + "webSearchFollowUpPrompt": "Последующая подсказка для веб-поиска", + "webSearchFollowUpPromptHelp": "Не удаляйте `{chat_history}` и `{question}` из подсказки.", + "webSearchFollowUpPromptError": "Введите подсказку для последующего веб-поиска!", + "webSearchFollowUpPromptPlaceholder": "Ваша подсказка для последующего веб-поиска" + } + } + }, + "manageSearch": { + "title": "Управление веб-поиском", + "heading": "Настройка веб-поиска" + }, + "about": { + "title": "О программе", + "heading": "О программе", + "chromeVersion": "Версия Page Assist", + "ollamaVersion": "Версия Ollama", + "support": "Вы можете поддержать проект Page Assist, сделав пожертвование или спонсорирование через следующие платформы:", + "koFi": "Поддержать на Ko-fi", + "githubSponsor": "Стать спонсором на GitHub", + "githubRepo": "Репозиторий GitHub" + }, + "manageKnowledge": { + "title": "Управление знаниями", + "heading": "Настройка базы знаний" + } +} diff --git a/src/assets/locale/ru/sidepanel.json b/src/assets/locale/ru/sidepanel.json new file mode 100644 index 0000000..9fc0820 --- /dev/null +++ b/src/assets/locale/ru/sidepanel.json @@ -0,0 +1,7 @@ +{ + "tooltip": { + "embed": "Внедрение страницы может занять несколько минут. Пожалуйста, подождите...", + "clear": "Очистить историю чата", + "history": "История чата" + } +} diff --git a/src/i18n/index.ts b/src/i18n/index.ts index 7c8820c..3a28a6e 100644 --- a/src/i18n/index.ts +++ b/src/i18n/index.ts @@ -1,6 +1,7 @@ import i18n from "i18next"; import { initReactI18next } from "react-i18next"; import { en } from "./lang/en"; +import { ru } from "./lang/ru"; import { ml } from "./lang/ml"; import { zh } from "./lang/zh"; import { ja } from "./lang/ja"; @@ -14,6 +15,8 @@ i18n en: en, ml: ml, "zh-CN": zh, + ru: ru, + "ru-RU": ru, zh: zh, ja: ja, "ja-JP": ja diff --git a/src/i18n/lang/ru.ts b/src/i18n/lang/ru.ts new file mode 100644 index 0000000..3887fa7 --- /dev/null +++ b/src/i18n/lang/ru.ts @@ -0,0 +1,15 @@ +import option from "@/assets/locale/ru/option.json"; +import playground from "@/assets/locale/ru/playground.json"; +import common from "@/assets/locale/ru/common.json"; +import sidepanel from "@/assets/locale/ru/sidepanel.json"; +import settings from "@/assets/locale/ru/settings.json"; +import knowledge from "@/assets/locale/ru/knowledge.json"; + +export const ru = { + option, + playground, + common, + sidepanel, + settings, + knowledge +} \ No newline at end of file diff --git a/src/i18n/support-language.ts b/src/i18n/support-language.ts index 37a52ce..af7db40 100644 --- a/src/i18n/support-language.ts +++ b/src/i18n/support-language.ts @@ -4,6 +4,10 @@ export const supportLanguage = [ label: "English", value: "en" }, + { + label: "Russian", + value: "ru" + }, { label: "മലയാളം", value: "ml"