汉化byruthub

汉化界面的部分菜单及内容

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

You will need to install an extension such as Tampermonkey to install this script.

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。

您需要先安装用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name        汉化byruthub
// @namespace   Violentmonkey Scripts
// @match       https://byruthub.org/*
// @version     1.0
// @author      -
// @description 汉化界面的部分菜单及内容
// @grant       none
// @author       sec
// @license MIT
// @namespace    https://t.me/KingRan_qun
// ==/UserScript==



(function() {
    'use strict';

    const i18n = new Map([

['Всего игр', '游戏总数'],
['Обновлений за месяц', '月更新'],
['Пользователей', '用户'],
['Комментариев', '评论'],
['Поиск', '搜索'],
['Избранное', '喜欢'],
['Новинки', '新增功能'],
['Обновления', '更新'],
['Игры года ТОП 250', '年度最佳游戏'],
['По сети', '前250名 '],
['По годам', '在线'],
['Вышедшие новинки', '按年份'],
['Chained Together', '新品发布'],
['BEHAVIOR', '链接在一起'],
['Мой профиль', '我的简介'],
['Комментарии', '评论'],
['Выйти', '注销'],
['Игры на ПК', '电脑游戏'],
['Экшены', '动作游戏'],
['Новая Версия', '新版本'],
['на Русском', '俄语'],
['Полная версия', '完整版'],
['Последняя', '最后版本'],
['Дата выхода', '发布日期'],
['Разработчик', '开发者'],
['Жанр', '游戏类型'],
['Экшены', '动作'],
['Приключения', '冒险'],
['Обновлено ', '已更新 '],
['подробности обновления', '更新详情'],
['Скачать торрент', '下载洪流'],
['Скриншоты из игры', '游戏截图'],
['Лицензия ', '许可证 '],
['Таблетка', '平板电脑'],
['Последняя', '最新版本'],
['Установка и запуск:', '安装和启动:'],
['Скачать .torrent', '下载 .torrent'],
['Публикация обновлена ', '出版更新 '],
['Информация', '信息'],
['Дата выхода', '发布日期'],
['Интерфейс', '界面'],
['Озвучка: Английская', '俄语'],
['Системные требования', '系统要求'],
['ОС:', '操作系统:'],
['Процессор', '处理器'],
['Оперативная память', '内存'],
['Видеокарта', '显卡'],
['Место на диске', '光盘空间'],
['рекомендуется SSD', '建议使用固态硬盘'],
['Ознакомьтесь с особенностями', '查看功能'],
['НАЖМИТЕ на', '点击'],
['Мы обновляем все раздачи до последних версий', '我们会将所有赠品更新至最新版本'],
['Дополнительные раздачи', '其他赠品'],
['Файловое хранилище', '文件存储'],
['Версия', '版本'],
['Открыть хранилище', '打开保险库'],
['Комментарии', '评论'],
['Информация', '信息'],
['Комментирование игры было временно отключено', '游戏评论已暂时关闭'],
['ПОСЛЕДНИЕ ОБНОВЛЕНИЯ', '最新更新'],
['ВСЕ ОБНОВЛЕНИЯ', '所有更新'],
['НАВИГАЦИЯ', '导航'],
['Ранний доступ', '早期访问'],
['Русская озвучка', '俄语画外音'],
['Для слабых ПК', '适用于电脑性能较弱的用户'],
['Старые - избранное', '旧版最爱'],
['Поддержка геймпада', '游戏手柄支持'],
['Игры для VR', 'VR 游戏'],
['Экшен', '动作游戏'],
['Стратегии', '策略类'],
['Симуляторы', '模拟器'],
['Гонки', '赛车'],
['Инди', '独立游戏'],
['Казуальные', '休闲'],
['Спортивные', '体育类'],
['ИЗБРАННЫЕ', '精选'],
['Шутеры', '射击游戏'],
['Платформеры', '平台游戏'],
['Выживание', '生存类'],
['Хоррор', '恐怖游戏'],
['Файтинги', '格斗'],
['Открытый мир', '开放世界'],
['Песочницы', '沙盒游戏'],
['Визуальные новеллы', '视觉小说'],
['Атмосферная', '大气'],
['Фэнтези', '奇幻'],
['Глубокий сюжет', '深度故事'],
['Пиксельная графика', '像素图形'],
['Ретро', '复古'],
['Олдскул', '老派'],
['Аниме', '动漫'],
['ВСЕ МЕТКИ', '所有标签'],
['ПОПУЛЯРНЫЕ', '热门'],
['ПОКАЗАТЬ БОЛЬШЕ', '显示更多'],
['КОММЕНТИРУЮТ', '评论'],
['часа назад', '小时前'],
['КОМАНДА САЙТА', '网站团队'],
['Команда', '团队'],
['Был', '曾经'],
['Только что', '刚刚'],
['Похожие игры', '相关游戏'],
['团队 САЙТА', '网站管理员'],
['Здешний', '本地'],
['Cамая полная база ПК-игр ', '最完整的 PC 游戏数据库 '],
['которая регулярно обновляется до актуальных версий', '定期更新至最新版本'],
['Выбирайте версию игры и тип раздачи в разделе', '在版块中选择您的游戏版本和分发类型'],
['Стань частью самого крупного игрового сообщества', '成为最大游戏社区的一员'],
['电脑游戏 торрент', '电脑游戏 torrent'],
['按年份 и обновления', '按年份和更新'],
['СОРТИРОВКА', '排序'],
['Видео из игры', '游戏视频'],
['电脑游戏 имеют полные и последние версии', '电脑游戏有完整和最新版本'],
['их можно скачать торрентом бесплатно', '您可以免费下载'],
['Наш сайт', '我们的网站'],
['это уникальный открытый торрент-трекер с играми на компьютер', '是一个独特的计算机游戏开放式洪流跟踪器'],
['ассортимент которого превосходит все ожидания геймеров', '游戏种类超出游戏玩家的所有预期'],
['На фоне однотипных проектов уникальность данного ресурса выражена в скрупулезном подходе команды к формированию контента', '在类似项目的背景下,本资源的独特性体现在团队对内容形成的严谨态度上'],
['а именно', '即'],
['структурированию видеоигр по жанрам', '按流派编排视频游戏'],
['поджанрам', '子类型'],
['темам', '主题'],
['годам', '年份'],
['типу геймплея и множеству меток', '游戏类型和许多标签。'],
['На просторах этого игрового торрент-трекера вы сможете отыскать себе виртуальное развлечение на любой вкус', '在这个广阔的游戏洪流跟踪器上,你可以找到适合各种口味的虚拟娱乐。'],
['Мы ежедневно обновляем торрент-файлы к ПК играм на самые свежие и актуальные версии', '我们每天都会将 PC 游戏的 torrent 文件更新为最新、最相关的版本。'],
['дополняем публикации новыми репаками', '用新的重装包补充出版物'],
['предоставляем пользователю достоверные технические данные', '为用户提供可靠的技术数据'],
['краткое и информативное описание, даем возможность провести первичное знакомство с игрой посредством скриншотов', '简短而翔实的说明,我们提供通过截图初步了解游戏的机会'],
['полноценного обзора игры или мини-трейлера', '完整的游戏评论或迷你预告片'],
['Мы предложим вам уникальный опыт', '我们将为您提供独特的体验'],
['который не оставит равнодушными даже самых требовательных геймеров', '即使是要求最苛刻的玩家也不会无动于衷'],
['Ответы на часто задаваемые вопросы', '常见问题的解答'],
['Почему игры на ПК стоит скачивать через торрент', '为什么 PC 游戏值得通过 torrent 下载'],
['Для скачивания игры необходима небольшая и простая программа', '下载游戏需要一个简单的小程序'],
['μTorrent', 'μTorrent'],
['Максимальная скорость загрузки через торрент-файл на компьютер', '通过洪流文件在电脑上实现最高下载速度'],
['Весь загружаемый контент абсолютно бесплатен', '所有下载内容完全免费'],
['нет необходимости регистрироваться на сайте', '无需在网站上注册'],
['загрузка по прямой или магнет ссылке', '直接下载或磁铁下载'],
['Всегда свежие и актуальные релизы игр', '始终提供最新的游戏版本'],
['cо всеми обновлениями и дополнениями', '包含所有更新和新增内容'],
['Как часто происходит обновление контента', '内容更新频率'],
['Игры, представленные на сайте', '网站上提供的游戏'],
['обновляются ежедневно по мере выхода последних версий', '每日更新最新版本'],
['新增功能 публикуются также очень часто, как ААА релизы', '新增功能也会经常发布,既有 AAA 版本'],
['так и множество инди-проектов от разных разработчиков', '以及许多来自不同开发商的独立项目'],
['Как я могу найти нужную мне игру', '如何找到我想要的游戏'],
['Прежде всего можно воспользоваться стандартным полем для поиска игр', '首先,您可以使用标准字段搜索游戏'],
['Также на сайте реализована навигация по 年份', '此外,网站上还有年份导航'],
['меткам', '标签'],
['по виду игрового процесса', '游戏类型'],
['разработчикам и другим критериям', '开发者和其他标准'],
['В случае отсутствия искомой игры можно напрямую обратиться к администрации через комментарии с просьбой добавить необходимую игру', '如果没有您要找的游戏,您可以通过评论直接向管理部门提出添加必要游戏的请求。'],
['Есть ли на сайте игры на русском языке', '网站上是否有俄语游戏'],
['У нас множество игр на русском языке', '我们有很多俄语游戏'],
['как только с русскими интерфейсом', '既有俄语界面'],
['так и полностью русифицированные в разделе', '和完全俄语化的游戏'],
['игры с русской озвучкой', '俄语语音游戏'],



['Database Cluster', '数据库集群'],
      ['instances are good for full-duty workloads where consistent performance is important.', '实例适合对性能要求较高的全负荷工作。'],








      ['with your bank or credit card.', '.'],

    ])

    replaceText(document.body)
//   |
//  ₘₙⁿ
// ▏n
// █▏ 、⺍             所以,不要停下來啊(指加入词条
// █▏ ⺰ʷʷィ
// █◣▄██◣
// ◥██████▋
//  ◥████ █▎
//   ███▉ █▎
//  ◢████◣⌠ₘ℩
//   ██◥█◣\≫
//   ██ ◥█◣
//   █▉  █▊
//   █▊  █▊
//   █▊  █▋
//    █▏  █▙
//    █ ​
    const bodyObserver = new MutationObserver(mutations => {
      mutations.forEach(mutation => {
        mutation.addedNodes.forEach(addedNode => replaceText(addedNode))
      })
    })
    bodyObserver.observe(document.body, { childList: true, subtree: true })

    function replaceText(node) {
      nodeForEach(node).forEach(htmlnode => {
        i18n.forEach((value, index) => {
          // includes可直接使用 === 以提高匹配精度
          const textReg = new RegExp(index, 'g')
          if (htmlnode instanceof Text && htmlnode.nodeValue.includes(index))
            htmlnode.nodeValue = htmlnode.nodeValue.replace(textReg, value)
          else if (htmlnode instanceof HTMLInputElement && htmlnode.value.includes(index))
            htmlnode.value = htmlnode.value.replace(textReg, value)
        })
      })
    }

    function nodeForEach(node) {
      const list = []
      if (node.childNodes.length === 0) list.push(node)
      else {
        node.childNodes.forEach(child => {
          if (child.childNodes.length === 0) list.push(child)
          else list.push(...nodeForEach(child))
        })
      }
      return list
    }
})();