X/Twitter & Discord 实时翻译插件

基本信息

  • 名称: X/Twitter & Discord 实时翻译插件
  • 版本: 1.8
  • 作者: Antigravity
  • 仓库: Greasyfork
  • 许可证: MIT
  • 兼容: Tampermonkey / Violentmonkey

功能

在浏览器端实时翻译以下平台的聊天/帖子内容,支持三种显示模式:

平台范围
Discord频道消息、嵌入描述(discord.com/channels
X/Twitter推文、私信、时间线
Patreon帖子标题、正文
Ko-fi文章、评论区

工作原理

  1. MutationObserver 监听 DOM 变化,新消息出现时自动扫描
  2. 语言检测:中文字符占比 < 30% 且长度 > 3 的文本视为外语
  3. 调用 Google Translate APItranslate.googleapis.com/translate_a/single)翻译为简体中文
  4. 渲染:根据用户选择的模式显示翻译结果

选择器参考

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 模式(功能设计)

注意事项

  1. 文本内容经过 Google 服务器翻译,如有隐私顾虑可自行替换翻译 API
  2. Discord 的类名带 hash 后缀,部分选择器可能随版本更新失效
  3. 脚本会尝试自动将 X/Twitter 时间线切换为”最新”排序
  4. 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"
}