// ==UserScript== // @name Русификатор интерфейса DeepSeek // @namespace http://tampermonkey.net/ // @version 2.8 // @license MIT // @description Переводит на русский интерфейс сайта DeepSeek. // @author MrVovchick // @match https://chat.deepseek.com/* // @grant none // @downloadURL https://update.greasyfork.icu/scripts/531240/%D0%A0%D1%83%D1%81%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%82%D0%BE%D1%80%20%D0%B8%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81%D0%B0%20DeepSeek.user.js // @updateURL https://update.greasyfork.icu/scripts/531240/%D0%A0%D1%83%D1%81%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%82%D0%BE%D1%80%20%D0%B8%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81%D0%B0%20DeepSeek.meta.js // ==/UserScript== (function() { 'use strict'; // Словарь переводов (заполните его своими переводами) const translations = { 'How can I help you today?': 'Чем я могу вам помочь?', 'New chat': 'Новый чат', 'Search': 'Поиск', 'Text extraction only.': 'Только извлечение текста', 'Upload docs or images (Max 50, 100MB each)': 'Загрузите документы или изображения (Максимум 50, 100 МБ каждое)', 'Day': 'День', 'Days': 'Дней', 'My Profile': 'Мой профиль', 'Get App': 'Скачайте приложение', 'New': 'Новое', 'Log out': 'Выйти', 'Contact us': 'Связаться с нами', 'Language': 'Язык', 'Theme': 'Тема', 'System': 'Системный', 'Profile': 'Профиль', 'Name': 'Имя', 'Email address': 'Адрес электронной почты', 'Phone number': 'Номер телефона', 'Settings': 'Настройки', 'General': 'Общие', 'Improve the model for everyone': 'Улучшить модель для всех', 'Allow your content to be used to train our models and improve our services. We secure your data privacy.': 'Разрешите использовать ваш контент для обучения наших моделей и улучшения наших услуг. Мы обеспечиваем конфиденциальность ваших данных.', 'Log out of all devices': 'Выйти из всех устройств', 'Delete all chats': 'Удалить все чаты', 'Delete all': 'Удалить все', 'Delete account': 'Удалить аккаунт', 'Delete': 'Удалить', 'About': 'О сайте', 'Terms of Use': 'Условия использования', 'Privacy Policy': 'Политика конфиденциальности', 'View': 'Обзор', 'Light': 'Светлая', 'Dark': 'Тёмная', 'Close sidebar': 'Закрыть боковую панель', 'Rename': 'Переименовать', 'Message is empty': 'Сообщение пустое', 'Open sidebar': 'Открыть боковую панель', 'Scan to get DeepSeek App': 'Отсканируйте код', 'NEW': 'НОВОЕ', 'Think before responding to solve reasoning problems': 'Думает, прежде чем ответить, чтобы решить проблемы с рассуждениями', 'Search the web when necessary': 'Поиск в интернете при необходимости', 'AI-generated, for reference only': 'Создано ИИ, только для справки', 'Hi, I\'m DeepSeek.': 'Привет, я DeepSeek.', 'Today': 'Сегодня', 'Monday': 'Понедельник', 'Tuesday': 'Вторник', 'Wednesday': 'Среда', 'Thursday': 'Четверг', 'Friday': 'Пятница', 'Saturday': 'Суббота', 'Sunday': 'Воскресенье', 'Yesterday': 'Вчера', 'Like': 'Лайк', 'Dislike': 'Дизлайк', 'Copy': 'Копировать', 'Regenerate': 'Перегенерировать', '2 Days': '2 дня', '3 Days': '3 дня', '4 Days': '4 дня', '5 Days': '5 дней', '6 Days': '6 дней', '7 Days': '7 дней', '8 Days': '8 дней', '9 Days': '9 дней', '10 Days': '10 дней', 'You have signed out of your account, please log in again.': 'Вы вышли из своей учетной записи, пожалуйста, войдите снова.', 'Only login via email, Google, or +86 phone number login is supported in your region.': 'В вашем регионе поддерживается только вход по электронной почте, через Google или по номеру телефона +86.', 'Only login via email, Google, or +7 phone number login is supported in your region.': 'В вашем регионе поддерживается только вход через электронную почту, Google или номер телефона +7.', 'Phone number / email adress': 'Номер телефона / адрес электронной почты', 'Passworld': 'Пароль', 'passworld': 'Пароль', 'By signing up or logging in, you consent to DeepSeek\'s': 'Зарегистрировавшись или войдя в систему, вы соглашаетесь с тем, что DeepSeek ', 'and': ' и ', 'Log in': 'Войти', 'Forgot password?': 'Забыли пароль?', 'Sign up': 'Зарегистрироваться', 'OR': 'Или', 'Log in with Google': 'Войти с аккаунтом Google', 'Extract only text from images and files.': 'Извлечение только текста из изображений и файлов', 'Message DeepSeek': 'Сообщение DeepSeek', 'Pending...': 'Ожидается', 'Parsing...': 'Анализ', 'Delete chat?': 'Удалить чат?', 'Are you sure you want to delete this chat?': 'Вы точно хотите удалить этот чат?', 'Системный': 'Русский', 'Cancel': 'Отменить', 'If you confirm deletion, all chat history for this account will be permanently erased and cannot be recovered.': 'Если вы подтвердите удаление, вся история чата для этой учетной записи будет навсегда удалена и не сможет быть восстановлена.', 'Are you sure you want to delete all chat history?': 'Вы уверены, что хотите удалить всю историю чатов?', 'Confirm deletion': 'Подтвердить удаление', 'Deletion will prevent you from accessing DeepSeek services, including DeepSeek Chat and Platform.': 'Удаление лишит вас доступа к сервисам DeepSeek, включая чат DeepSeek и платформу.', 'If there is any unused balance in your account, deletion will be considered as forfeiting the balance. Frequent account deletions may be flagged as suspicious activity, resulting in restrictions or bans.': 'Если на вашем аккаунте есть неиспользованный баланс, удаление будет расцениваться как лишение баланса. Частое удаление аккаунта может быть отмечено как подозрительная активность, что приведет к ограничениям или запретам.', 'If you have any questions, please contact us by email at service@deepseek.com.': 'Если у вас возникли вопросы, пожалуйста, свяжитесь с нами по электронной почте по адресу service@deepseek.com.', 'Are you sure you want to delete your account?': 'Вы уверены, что хотите удалить аккаунт?', 'To verify, please type DELETE MY ACCOUNT below:': 'Чтобы проверить, пожалуйста, введите DELETE MY ACCOUNT ниже:', 'If you have any questions, please contact us by email at': 'Если у вас возникли вопросы, пожалуйста, свяжитесь с нами по электронной почте по адресу', 'To verify, please type': 'Чтобы проверить, пожалуйста, введите ', 'below:': ' ниже:', 'RPD rate limit reached': 'Достигнут лимит скорости RPD', 'Confirm delete my account': 'Подтвердите удаление', 'Clicking "Confirm Logout" will sign you out of all devices and browsers, including this device. Confirm logout?': 'Нажав кнопку «Подтвердить выход», вы выйдете из всех устройств и браузеров, включая это устройство. Подтвердить выход?', 'Confirm Logout': 'Подтвердить выход', 'Edit message': 'Изменить сообщение', 'Send': 'Отправить', 'One more step before you proceed...': 'Еще один шаг, прежде чем продолжить...', 'DeepSeek - Into the Unknown': 'DeepSeek', 'Drop files here to add to chat (Text extraction only)': 'Бросайте файлы сюда, чтобы добавить их в чат (только извлечение текста)', 'Max 50 files per chat at 100MB each. Text extraction only.': 'Не более 50 файлов в чате по 100 МБ каждый. Только извлечение текста.', 'Please enter the phone number / email address.': 'Пожалуйста, введите номер телефона / адрес электронной почты.', 'Please enter your password.': 'Пожалуйста, введите пароль.', 'Stop': 'Стоп', 'Continue': 'Продолжить', 'No chat history': 'Нет истории чата', 'Uploading files is unavailable for searching': 'Загрузка файлов недоступна для поиска', 'Edit': 'Редактировать', // Добавьте сюда все тексты с сайта и их переводы }; // Функция для перевода текста в узле function translateText(node) { // Если узел — текстовый if (node.nodeType === Node.TEXT_NODE) { const text = node.textContent.trim(); if (translations[text]) { node.textContent = translations[text]; } } // Если узел — элемент else if (node.nodeType === Node.ELEMENT_NODE) { // Перевод атрибута title if (node.hasAttribute('title')) { const title = node.getAttribute('title'); if (translations[title]) { node.setAttribute('title', translations[title]); } } // Перевод плейсхолдеров в input и textarea if (node.tagName === 'INPUT' || node.tagName === 'TEXTAREA') { if (node.hasAttribute('placeholder')) { const placeholder = node.getAttribute('placeholder'); if (translations[placeholder]) { node.setAttribute('placeholder', translations[placeholder]); } } } // Рекурсивно переводим дочерние элементы node.childNodes.forEach(translateText); } } // Функция для перевода всего документа function translateDocument() { translateText(document.body); } // Наблюдатель за изменениями в DOM const observer = new MutationObserver(function(mutations) { mutations.forEach(function(mutation) { mutation.addedNodes.forEach(function(node) { if (node.nodeType === Node.ELEMENT_NODE) { translateText(node); } }); }); }); // Настройка наблюдателя observer.observe(document.body, { childList: true, subtree: true }); // Первоначальный перевод страницы translateDocument(); })();