X/Twitter & Discord 实时翻译插件
基本信息
- 名称: X/Twitter & Discord 实时翻译插件
- 版本: 1.8
- 作者: Antigravity
- 仓库: Greasyfork
- 许可证: MIT
- 兼容: Tampermonkey / Violentmonkey
功能
在浏览器端实时翻译以下平台的聊天/帖子内容,支持三种显示模式:
| 平台 | 范围 |
|---|---|
| Discord | 频道消息、嵌入描述(discord.com/channels) |
| X/Twitter | 推文、私信、时间线 |
| Patreon | 帖子标题、正文 |
| Ko-fi | 文章、评论区 |
工作原理
- MutationObserver 监听 DOM 变化,新消息出现时自动扫描
- 语言检测:中文字符占比 < 30% 且长度 > 3 的文本视为外语
- 调用 Google Translate API(
translate.googleapis.com/translate_a/single)翻译为简体中文 - 渲染:根据用户选择的模式显示翻译结果
选择器参考
Discord: div[id^="message-content"], div.embedDescription__623de
X/Twitter: div[data-testid="tweetText"], div[data-testid^="message-text-"]
Patreon: [data-tag="post-title"], [data-tag="post-content"] p
Ko-fi: .caption-pdg, .post-story-text, .kfds-top-mrgn-8
注意:Discord 的
.embedDescription__623de后缀随版本变更,建议用[class*="embedDescription"]代替。
三种显示模式
| 模式 | 说明 |
|---|---|
| 下方显示 | 在原文下方插入翻译框 |
| 悬浮显示 | 鼠标悬停时显示翻译 tooltip |
| 双语模式 | 原文删除线 + 译文替换 |
自定义设置
点击悬浮的 “Tran” 按钮打开面板,支持调整:
- 翻译文字颜色
- 翻译字号大小
- 翻译模式
设置通过 GM_setValue 持久化保存。
安全评估(2026-05-16)
结论:代码干净,无后门风险。
- 网络请求:仅发往
translate.googleapis.com,无第三方服务器 - 存储:仅保存用户偏好(颜色/字号/模式),无敏感数据
- DOM 操作:使用
textContent渲染翻译结果,无 XSS 风险 - 无 eval / 动态注入 / 外部脚本加载
- 唯一的页面跳转逻辑:X/Twitter 搜索页强制切换到 Live 模式(功能设计)
注意事项
- 文本内容经过 Google 服务器翻译,如有隐私顾虑可自行替换翻译 API
- Discord 的类名带 hash 后缀,部分选择器可能随版本更新失效
- 脚本会尝试自动将 X/Twitter 时间线切换为”最新”排序
- X/Twitter 搜索页会自动添加
?f=live参数
改进方向(KISS Translator 规则)
如果用 KISS Translator 扩展替代,可直接添加以下规则(不需要油猴脚本):
{
"rootsSelector": "[role=\"log\"], div[class*=\"chatContent\"]",
"selector": "div[id^=\"message-content-\"], div[class*=\"embedDescription\"], div[class*=\"embedFieldValue\"]",
"keepSelector": "a[href], code, span[class*=\"mention\"], img, svg, span[class*=\"emoji\"]",
"ignoreSelector": "button, [class*=\"systemMessage\"], [class*=\"poll\"]",
"autoScan": "false",
"selectStyle": "-webkit-line-clamp: unset; max-height: none; height: auto;",
"pattern": "discord.com/channels"
}