// ==UserScript==
// @name Русификатор интерфейса DeepSeek
// @namespace http://tampermonkey.net/
// @version 2.8
// @license MIT
// @description Переводит на русский интерфейс сайта DeepSeek.
// @author MrVovchick
// @match https://chat.deepseek.com/*
// @grant none
// ==/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 [email protected].': 'Если у вас возникли вопросы, пожалуйста, свяжитесь с нами по электронной почте по адресу [email protected].',
'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();
})();