Greasy Fork is available in English.
Lsposed 模块仓库汉化插件,中文化界面。
// ==UserScript== // @name Lsposed 模块仓库汉化插件 // @namespace http://tampermonkey.net/ // @version 1.5.1 // @description Lsposed 模块仓库汉化插件,中文化界面。 // @author TC999 // @match https://modules.lsposed.org/* // @grant none // @license GPL-3.0 // @icon https://modules.lsposed.org/icons/icon-512x512.png // @supportURL https://github.com/TC999/module-lsposed-chinese/issues // ==/UserScript== (function() { 'use strict'; // 如果页面 lang 属性为 "en",则将其更改为 "zh" if (document.documentElement.lang === "en") { document.documentElement.lang = "zh"; } // 页面内容的词条替换表:左边为英文,右边为对应的中文 const translationMap = { "Xposed Module Repository": "Xposed 模块仓库", "Search": "搜索", "No r###lts found": "无结果", // 左侧 "Browse": "浏览", "Submission": "提交", "Website": "网站", "Source": "源码", // 具体某个模块页面 "Package": "包名", "Authors": "作者", "Support / Discussion URL": "支持 / 讨论地址", "源码 URL": "源码仓库", "Release Type": "类型", "Releases": "发行版", "View all releases": "查看所有发行版", "Downloads": "下载", "Show older versions": "显示旧版", // 提交页 "Submit Your Xposed Module": "提交您的 Xposed 模块", "I'd like to": "操作:", "Select": "选择", "Submit a new package": "提交新模块", "Transfer package ownership": "转让模块所有权", "Appeal for package name/ownership": " 呼吁包名/所有权", "Report an issue": "提交议题", "Give some suggestions": "提供建议", "Title": "标题", "Description (Reason)": "描述(理由)", "Describe it": "描述", "Submit": "提交", // 错误页 "try somewhere else": "未找到", // 你可以继续添加其他词条及其对应的翻译 }; // 页面标题的词条替换表 const titleTranslationMap = { "Browse Modules - Xposed Module Repository": "浏览 - Xposed 模块仓库", "Submission - Xposed Module Repository": "提交 - Xposed 模块仓库", "Not Found - Xposed Module Repository": "未找到 - Xposed 模块仓库", "Xposed Module Repository": "Xposed 模块仓库", // 其他标题词条可继续添加 }; // 替换页面中的文本 function replaceTextContent(node, map) { for (const [enText, zhText] of Object.entries(map)) { const regex = new RegExp(`\\b${enText}\\b(?=\\W|$)`, 'g'); node.textContent = node.textContent.replace(regex, zhText); } } // 替换页面标题 function translateTitle() { let title = document.title; for (const [enTitle, zhTitle] of Object.entries(titleTranslationMap)) { const regex = new RegExp(`\\b${enTitle}\\b(?=\\W|$)`, 'g'); title = title.replace(regex, zhTitle); } // 更新页面标题 if (document.title !== title) { document.title = title; } } // 遍历所有页面中的文本节点 function translatePage() { const walker = document.createTreeWalker(document.body, NodeFilter.SHOW_TEXT, null, false); let node; while (node = walker.nextNode()) { replaceTextContent(node, translationMap); } } // 监听页面内容更新(例如动态加载内容) const observer = new MutationObserver(translatePage); observer.observe(document.body, { childList: true, subtree: true }); // 定时检查标题并翻译 setInterval(translateTitle, 1000); // 每秒检查一次标题 // 初始翻译页面内容和标题 translatePage(); translateTitle(); })();