// ==UserScript==
// @name Русификатор интерфейса Sidekick (Tobit)
// @namespace http://tampermonkey.net/
// @version 3.0
// @license MIT
// @description Переводит на русский интерфейс сайта Sidekick (Tobit)
// @author MrVovchick
// @match https://sidekick.ki/*
// @grant none
// ==/UserScript==
(function() {
'use strict';
// Словарь переводов (добавляйте вручную все найденные фразы)
const translations = {
// Примеры переводов
'Neu': 'Новый',
'Chats': 'Чаты',
'Unified Artificial Intelligence.': 'Единый искусственный интеллект.',
'Intelligent Agent': 'Интеллектуальный агент',
'Support': 'Поддержка',
'Natives Modell': 'Нативная модель',
'PRO': 'ПРО',
'Persönliche und sensible Daten können manuell oder automatisch durch Pseudonymisierung geschützt werden. Das kann die Ergebnisqualität beeinträchtigen.': 'Личные и конфиденциальные данные могут быть защищены вручную или автоматически с помощью псевдонимизации. Это может ухудшить качество результатов.',
'Erweiterter Datenschutz (DSGVO)': 'Расширенная защита данных (РЗД)',
'Nicht aktiv': 'Не активна',
'Aktiv': 'Активна',
'Automatische Erkennung von Personendaten zur manuellen Freigabe.': 'Автоматическое распознавание личных данных для ручного освобождения.',
'Aktiv (erweitert)': 'Активная (расширенная)',
'Automatisch': 'Автоматический',
'Automatisch (erweitert)': 'Автоматический (расширенная)',
'Neuer Chat': 'Новый чат',
'Älter': 'Старые',
'Löschen': 'Удалить',
'Ja': 'Да',
'Nein': 'Нет',
'Bist Du Dir sicher, dass Du den Chat löschen möchtest?': 'Вы уверены, что хотите удалить чат?',
'Bild versenden': 'Отправить изображение',
'Person hinzufügen': 'Добавить человека',
'Natives Modell hinzufügen': 'Добавить нативную модель',
'Dateien versenden': 'Отправить файл',
'Antworten': 'Ответить',
'Kopieren': 'Копировать',
'Upgrade': 'Обновить',
'Wechsle zu Sidekick™ Pro für volle Geschwindigkeit und zusätzliche Funktionen.': 'Переключитесь на Sidekick™ Pro, чтобы получить полную скорость и дополнительные функции.',
'Finden': 'Найти',
'Account': 'Аккаунт',
'money': 'Деньги',
'cards': 'Карты',
'Abmelden': 'Выход',
'Authentifizierung': 'Аутентификация',
'Persönliche Daten': 'Персональные данные',
'Unterschrift': 'Подпись',
'Dokumente': 'Документы',
'Verifizieren': 'Проверка',
'Homepage': 'Домашняя страница',
'Personen': 'Лица',
'Sites': 'Сайты',
'Erweitert': 'Расширенный',
'Heute': 'Сегодня',
'Erkläre das Konzept von...': 'Объясните, что такое...',
'Übersetze den Satz...': 'Переведите предложение...',
'Gib mir Informationen über...': 'Дайте мне информацию о...',
'Erstelle eine Einladung für...': 'Создайте приглашение для...',
'Entschuldige, aber beim Erzeugen meiner Antwort ist etwas fehlgeschlagen. Kannst du es noch einmal versuchen?': 'Извините, но при создании моего ответа что-то пошло не так. Вы можете попробовать еще раз?',
'Was kann ich für Dich tun, ??????': 'Что я могу для вас сделать?',
'Albert, 55 Jahre': 'Альберт, 55 лет',
'Anna, 30 Jahre': 'Анна, 30 лет',
'Elisabeth, 80 Jahre': 'Елизавета, 80 лет',
'Hubert, 57 Jahre': 'Хьюберт, 57 лет',
'Wissenschaftler': 'Ученый',
'Jonas, 20 Jahre': 'Джон, 20 лет',
'Karla, 41 Jahre': 'Карла, 41 год',
'Journalistin': 'Журналист',
'Lisa, 10 Jahre': 'Лиза, 10 лет',
'Max, 35 Jahre': 'Максим, 35 лет',
'Programmierer': 'Программист',
'Stefan, 35 Jahre': 'Стефан, 35 лет',
'Agent wählen': 'Выборочный агент',
'Modell wählen': 'Выборочная модель',
'?????': 'MrVovchick',
'Dateien hinzufügen': 'Добавить файлы',
'Hinzufügen': 'Добавить',
'Name oder chaynsID': 'Имя или chaynsID',
'Sidekick™ von Tobit – Unified KI, sicher und DSGVO-konform für den täglichen Einsatz': 'Sidekick™',
'Nachrichten werden geladen': 'Загрузка сообщений',
'online': 'онлайн',
'Bist Du Dir sicher, dass Du Dich abmelden möchtest?': 'Вы уверены, что хотите выйти из аккаунта?',
'Anderer': 'Другой',
'Aus Verlauf entfernen': 'Удалить историю чатов',
'Abbrechen': 'Отменить',
'Cards': 'Карты',
'space': 'Облако',
'Dateien und Ordner hier ablegen': 'Храните здесь файлы и папки',
'Bist Du Dir sicher, dass Du zu diesem Chat hinzufügen möchtest?': 'Вы уверены, что хотите добавить в этот чат?',
'Dieses KI-Modell steht nur Sidekick™ Pro Nutzern zur Verfügung. Möchtest Du Dir Sidekick™ Pro ansehen?': 'Эта модель искусственного интеллекта доступна только пользователям Sidekick™ Pro. Хотите взглянуть на Sidekick™ Pro?',
'Pro ansehen': 'Посмотреть Про',
'Bist Du Dir sicher, dass Du DeepSeek R1 zu diesem Chat hinzufügen möchtest?': 'Вы уверены, что хотите добавить DeepSeek R1 в этот чат?',
'Bist Du Dir sicher, dass Du Claude 3.5 Haiku zu diesem Chat hinzufügen möchtest?': 'Вы уверены, что хотите добавить Claude 3.5 Haiku в этот чат?',
'Bist Du Dir sicher, dass Du Gemini 2.0 Flash zu diesem Chat hinzufügen möchtest?': 'Вы уверены, что хотите добавить Gemini 2.0 Flash в этот чат?',
'Bist Du Dir sicher, dass Du Gemini 2.0 Flash-Lite zu diesem Chat hinzufügen möchtest?': 'Вы уверены, что хотите добавить Gemini 2.0 Flash-Lite в этот чат?',
'Bist Du Dir sicher, dass Du GPT-4.1 Mini zu diesem Chat hinzufügen möchtest?': 'Вы уверены, что хотите добавить GPT-4.1 Mini в этот чат?',
'Bist Du Dir sicher, dass Du GPT-4.1 Nano zu diesem Chat hinzufügen möchtest?': 'Вы уверены, что хотите добавить GPT-4.1 Nano в этот чат?',
'Bist Du Dir sicher, dass Du GPT-4o mini zu diesem Chat hinzufügen möchtest?': 'Вы уверены, что хотите добавить GPT-4o mini в этот чат?',
'Bist Du Dir sicher, dass Du Llama 3.2 90B zu diesem Chat hinzufügen möchtest?': 'Вы уверены, что хотите добавить Llama 3.2 90B в этот чат?',
'Bist Du Dir sicher, dass Du Llama 4 Scout zu diesem Chat hinzufügen möchtest?': 'Вы уверены, что хотите добавить Llama 4 Scout в этот чат?',
'Bist Du Dir sicher, dass Du Mistral Small 3 zu diesem Chat hinzufügen möchtest?': 'Вы уверены, что хотите добавить Mistral Small 3 в этот чат?',
'Bist Du Dir sicher, dass Du Qwen 2.5 14B 1M zu diesem Chat hinzufügen möchtest?': 'Вы уверены, что хотите добавить Qwen 2.5 14B 1M в этот чат?',
'Bist Du Dir sicher, dass Du Claude 3.5 Sonnet zu diesem Chat hinzufügen möchtest?': 'Вы уверены, что хотите добавить Claude 3.5 Sonnet в этот чат?',
'Bist Du Dir sicher, dass Du Claude 3.7 Sonnet zu diesem Chat hinzufügen möchtest?': 'Вы уверены, что хотите добавить Claude 3.7 Sonnet в этот чат?',
'Bist Du Dir sicher, dass Du Gemini 2.0 Flash Thinking zu diesem Chat hinzufügen möchtest?': 'Вы уверены, что хотите добавить Gemini 2.0 Flash Thinking в этот чат?',
'Bist Du Dir sicher, dass Du Gemini 2.5 Pro zu diesem Chat hinzufügen möchtest?': 'Вы уверены, что хотите добавить Gemini 2.5 Pro в этот чат?',
'Bist Du Dir sicher, dass Du GPT-4.1 zu diesem Chat hinzufügen möchtest?': 'Вы уверены, что хотите добавить GPT-4.1 в этот чат?',
'Bist Du Dir sicher, dass Du Llama 3.3 70B diesem Chat hinzufügen möchtest?': 'Вы уверены, что хотите добавить Llama 3.3 70B в этот чат?',
'Bist Du Dir sicher, dass Du Llama 4 Maverick zu diesem Chat hinzufügen möchtest?': 'Вы уверены, что хотите добавить Llama 4 Maverick в этот чат?',
'Bist Du Dir sicher, dass Du o1 zu diesem Chat hinzufügen möchtest?': 'Вы уверены, что хотите добавить o1 в этот чат?',
'Bist Du Dir sicher, dass Du o3 mini zu diesem Chat hinzufügen möchtest?': 'Вы уверены, что хотите добавить o3 mini в этот чат?',
'Bist Du Dir sicher, dass Du Perplexity zu diesem Chat hinzufügen möchtest?': 'Вы уверены, что хотите добавить Perplexity в этот чат?',
'Bist Du Dir sicher, dass Du QwQ 32B zu diesem Chat hinzufügen möchtest?': 'Вы уверены, что хотите добавить QwQ 32B в этот чат?',
'"????? ???????" hat "Sidekick™ DeepSeek R1" hinzugefügt. Teilnehmer können mit @ einbezogen werden.': '«????? ???????» добавил „Sidekick™ DeepSeek R1“. Участники могут быть включены с помощью @.',
'"????? ???????" hat "Sidekick™ Claude 3.5 Haiku" hinzugefügt. Teilnehmer können mit @ einbezogen werden.': '«????? ???????» добавил «Sidekick™ Claude 3.5 Haiku». Участники могут быть включены с помощью @.',
'"????? ???????" hat "Sidekick™ Gemini 2.0 Flash" hinzugefügt. Teilnehmer können mit @ einbezogen werden.': '«????? ???????» добавил «Sidekick™ Gemini 2.0 Flash». Участники могут быть включены с помощью @.',
'"????? ???????" hat "Sidekick™ Gemini 2.0 Flash-Lite" hinzugefügt. Teilnehmer können mit @ einbezogen werden.': '«????? ???????» добавил «Sidekick™ Gemini 2.0 Flash-Lite». Участники могут быть включены с помощью @.',
'"????? ???????" hat "Sidekick™ GPT-4.1 Mini" hinzugefügt. Teilnehmer können mit @ einbezogen werden.': '«????? ???????» добавил «Sidekick™ GPT-4.1 Mini». Участники могут быть включены с помощью @.',
'"????? ???????" hat "Sidekick™ GPT-4.1 Nano" hinzugefügt. Teilnehmer können mit @ einbezogen werden.': '«????? ???????» добавил «Sidekick™ GPT-4.1 Nano». Участники могут быть включены с помощью @.',
'"????? ???????" hat "Sidekick™ GPT-4o mini" hinzugefügt. Teilnehmer können mit @ einbezogen werden.': '«????? ???????» добавил «Sidekick™ GPT-4o mini». Участники могут быть включены с помощью @.',
'"????? ???????" hat "Sidekick™ Llama 3.2 90B" hinzugefügt. Teilnehmer können mit @ einbezogen werden.': '«????? ???????» добавил «Sidekick™ Llama 3.2 90B». Участники могут быть включены с помощью @.',
'"????? ???????" hat "Sidekick™ Llama 4 Scout" hinzugefügt. Teilnehmer können mit @ einbezogen werden.': '«????? ???????» добавил «Sidekick™ Llama 4 Scout». Участники могут быть включены с помощью @.',
'"????? ???????" hat "Sidekick™ Mistral Small 3" hinzugefügt. Teilnehmer können mit @ einbezogen werden.': '«????? ???????» добавил «Sidekick™ Mistral Small 3». Участники могут быть включены с помощью @.',
'"????? ???????" hat "Sidekick™ Qwen 2.5 14B 1M" hinzugefügt. Teilnehmer können mit @ einbezogen werden.': '«????? ???????» добавил «Sidekick™ Qwen 2.5 14B 1M». Участники могут быть включены с помощью @.',
'"????? ???????" hat "Sidekick™ Claude 3.5 Sonnet" hinzugefügt. Teilnehmer können mit @ einbezogen werden.': '«????? ???????» добавил «Sidekick™ Claude 3.5 Sonnet». Участники могут быть включены с помощью @.',
'"????? ???????" hat "Sidekick™ Claude 3.7 Sonnet" hinzugefügt. Teilnehmer können mit @ einbezogen werden.': '«????? ???????» добавил «Sidekick™ Claude 3.7 Sonnet». Участники могут быть включены с помощью @.',
'"????? ???????" hat "Sidekick™ Gemini 2.0 Flash Thinking" hinzugefügt. Teilnehmer können mit @ einbezogen werden.': '«????? ???????» добавил «Sidekick™ Gemini 2.0 Flash Thinking». Участников можно включить с помощью @.',
'"????? ???????" hat "Sidekick™ Gemini 2.5 Pro" hinzugefügt. Teilnehmer können mit @ einbezogen werden.': '«????? ???????» добавил «Sidekick™ Gemini 2.5 Pro». Участники могут быть включены с помощью @.',
'"????? ???????" hat "Sidekick™ GPT-4.1" hinzugefügt. Teilnehmer können mit @ einbezogen werden.': '«????? ???????» добавил «Sidekick™ GPT-4.1». Участники могут быть включены с помощью @.',
'"????? ???????" hat "Sidekick™ Llama 3.3 70B" hinzugefügt. Teilnehmer können mit @ einbezogen werden.': '«????? ???????» добавил «Sidekick™ Llama 3.3 70B». Участники могут быть включены с помощью @.',
'"????? ???????" hat "Sidekick™ Llama 4 Maverick" hinzugefügt. Teilnehmer können mit @ einbezogen werden.': '«????? ???????» добавил «Sidekick™ Llama 4 Maverick». Участники могут быть включены с помощью @.',
'"????? ???????" hat "Sidekick™ o1" hinzugefügt. Teilnehmer können mit @ einbezogen werden.': '«????? ???????» добавил «Sidekick™ o1». Участники могут быть включены с помощью @.',
'"????? ???????" hat "Sidekick™ o3 mini" hinzugefügt. Teilnehmer können mit @ einbezogen werden.': '«????? ???????» добавил «Sidekick™ o3 mini». Участники могут быть включены с помощью @.',
'"????? ???????" hat "Sidekick™ Perplexity" hinzugefügt. Teilnehmer können mit @ einbezogen werden.': '«????? ???????» добавил «Sidekick™ Perplexity». Участники могут быть включены с помощью @.',
'"????? ???????" hat "Sidekick™ QwQ 32B" hinzugefügt. Teilnehmer können mit @ einbezogen werden.': '«????? ???????» добавил «Sidekick™ QwQ 32B». Участники могут быть включены с помощью @.',
'Upgrade Angebot': 'Предложение по обновлению',
'Nutze das gesamte Potenzial der generativen KI mit der PRO-Version.': 'Используйте весь потенциал генеративного ИИ с помощью версии PRO.',
'Voller Zugriff auf alle KI-Modelle': 'Полный доступ ко всем моделям ИИ',
'Neue PRO-Agents': 'Новые агенты PRO',
'Bildgenerierung': 'Генерация изображений',
'Mehr Highspeed-Chats': 'Больше высокоскоростных чатов',
'Jederzeit kündbar': 'Возможность отмены в любое время',
'(In Kürze)': '(Скоро будет)',
'Nur 18,00 EUR mtl.': 'Всего 1680 RUB в месяц',
'Abonnieren': 'Подписаться',
'Eigenen Sidekick Server einrichten?': 'Создать свой собственный сервер Sidekick?',
// Месяцы с числами от 1 до 31 для 2024 и 2025 годов
...generateDateTranslations(2024),
...generateDateTranslations(2025),
// Добавьте ВСЕ остальные элементы интерфейса
};
// Функция для генерации переводов дат
function generateDateTranslations(year) {
const months = [
{ de: 'Januar', ru: 'Января' },
{ de: 'Februar', ru: 'Февраля' },
{ de: 'März', ru: 'Марта' },
{ de: 'April', ru: 'Апреля' },
{ de: 'Mai', ru: 'Мая' },
{ de: 'Juni', ru: 'Июня' },
{ de: 'Juli', ru: 'Июля' },
{ de: 'August', ru: 'Августа' },
{ de: 'September', ru: 'Сентября' },
{ de: 'Oktober', ru: 'Октября' },
{ de: 'November', ru: 'Ноября' },
{ de: 'Dezember', ru: 'Декабря' }
];
const result = {};
// Добавляем полные названия месяцев
months.forEach(month => {
result[`${month.de} ${year}`] = `${month.ru} ${year}`;
});
// Добавляем даты с числами от 1 до 31
months.forEach(month => {
for (let day = 1; day <= 31; day++) {
result[`${day}. ${month.de} ${year}`] = `${day}. ${month.ru} ${year}`;
}
});
return result;
}
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', 'placeholder', 'aria-label'].forEach(attr => {
if (node.hasAttribute(attr)) {
const value = node.getAttribute(attr);
if (translations[value]) {
node.setAttribute(attr, translations[value]);
}
}
});
// Спецкейс для кнопок с составным текстом
if (node.tagName === 'BUTTON') {
const childText = Array.from(node.childNodes)
.filter(n => n.nodeType === Node.TEXT_NODE)
.map(n => n.textContent.trim())
.join(' ');
if (translations[childText]) {
node.childNodes.forEach(n => {
if (n.nodeType === Node.TEXT_NODE) {
n.textContent = translations[childText];
}
});
}
}
node.childNodes.forEach(translateText);
}
}
const observer = new MutationObserver(mutations => {
mutations.forEach(mutation => {
mutation.addedNodes.forEach(node => {
if (node.nodeType === Node.ELEMENT_NODE) {
translateText(node);
}
});
});
});
observer.observe(document.body, {
childList: true,
subtree: true,
attributes: true,
characterData: true
});
translateDocument();
setInterval(translateDocument, 1000); // Для динамических элементов
function translateDocument() {
translateText(document.body);
// Специальные случаи
document.querySelectorAll('input, textarea').forEach(el => {
if (el.placeholder && translations[el.placeholder]) {
el.placeholder = translations[el.placeholder];
}
});
}
})();