面向英文网站的 Tampermonkey 汉化脚本,在动态渲染中自动翻译常用 UI 且不影响交互体验。
translate.user.js:用户脚本主体translations.json:独立维护的翻译词典translate-icon.png:脚本图标1.9.9*://*/*document-startGM_getResourceTextApache-2.0aria-label、placeholder、title、mattooltipinput 翻译 value,避免误改表单数据2 months ago -> 2 个月前pl-* 类并跳过对应内容,同时避开 pl-sm-*、pl-md-* 等布局类误判Map 存储词典,降低高频查找成本TreeWalker + NodeFilter 直接裁剪不可翻译子树MutationObserver 监听变更requestAnimationFrame 合并一帧内的多次更新Set 对同一批次节点去重translate.user.js。translate.user.js 内容。translations.json,需要把脚本头部的 @resource translations ... 改成你自己的可访问 JSON 地址,然后重新安装或更新脚本。http/https 页面生效。翻译词典维护在 translations.json。
格式示例:
{
"mappings": {
"English Text": "中文翻译",
"Another Text": "另一个翻译"
},
"contextRules": [
{
"text": "save",
"selector": "[class*=\"price\"]",
"translation": "节省"
}
]
}
维护建议:
@resource 指向的资源才能生效为什么有些文本没有被翻译?
可能原因有两类:
前者可以直接补充 translations.json,后者通常不建议强行翻译。
会明显影响页面性能吗?
通常不会。脚本做了子树裁剪、批处理、去重和延迟补扫;但如果你长期访问大型中文站或复杂后台页面,仍建议配置排除规则。
支持哪些网站?
当前为全站注入模式,即 *://*/*。只要页面里存在可匹配的英文 UI 文案,脚本就会尝试翻译。
为什么中文网站也会执行脚本?
因为当前版本没有按站点白名单运行,而是默认全站注入。对不需要翻译的站点,直接在 Tampermonkey 中添加排除规则即可。
欢迎提交 Issue 或 Pull Request,尤其是以下方向:
本项目基于 Apache-2.0 开源。