首页/新闻资讯/正文详情

FigmaCN翻译引擎深度解析:MutationObserver + TreeWalker实时翻译DOM的完整机制

发布时间:2026/9/25 1:57:09 来源:云帆数科 栏目:资讯中心
FigmaCN翻译引擎深度解析:MutationObserver + TreeWalker实时翻译DOM的完整机制
FigmaCN翻译引擎深度解析MutationObserver TreeWalker实时翻译DOM的完整机制【免费下载链接】figmaCN中文 Figma 插件设计师人工翻译校验项目地址: https://gitcode.com/gh_mirrors/fi/figmaCNFigmaCN 是一款 Figma 中文插件Figma 汉化插件它用 MutationObserver TreeWalker 实时翻译 Figma 网页的 DOM 节点把界面菜单、属性面板、提示文案统统变成中文。本文带你完整看懂这套 Figma 翻译引擎的运作机制——即使不精通前端也能明白它是怎么做到打开即中文、操作不丢字的。项目说明当前版本1.8.0见 manifest.json翻译词典translations.json4300 条人工翻译、设计师校验过的词条核心引擎content.js自动注入*.figma.com的所有页面与 iframe 30 秒看懂FigmaCN 翻译引擎的运行流程Figma 页面加载document_end │ ├─ ① fetch 词典 translations.json ├─ ② 构建 dataMap / reverseDataMap / patternEntries ├─ ③ TreeWalker 全量扫描 document.body首屏翻译 │ └─ ④ MutationObserver 持续监听 ├─ 新增节点 → 局部 TreeWalker 子树扫描 ├─ 文本变化 → 单节点翻译 └─ 属性变化 → 属性翻译一句话总结先翻存量再听增量。首屏由 TreeWalker 一次性扫完之后切换面板、打开菜单、弹出提示时新出现的文字都会被 MutationObserver 捕获并即时翻译——这就是实时二字的来源。 第 1 步加载 4000 条翻译词典content.js 启动时先用fetch拉取 translations.json。词典是一个英文 → 中文的二维数组示例[ [Zoom to fit, 缩放以适应大小], [Youre about to move the file {} to trash., 您即将把文件 {1} 移到回收站。] ]加载完成后引擎把词典拆成 3 份结构content.js#L32-L52结构作用dataMap精确匹配主表英文原文 → 中文译文reverseDataMap反向表中文 → 英文用于后文的译文还原patternEntries含{}通配符的模式词条会被转换成正则捕获组{}是万能占位符一条词条即可覆盖带动态内容的文案比如任意文件名而{1}、{2}编号占位符还支持语序调整——英文的 move the file A to trash 能自然译成中文语序的把文件 A 移到回收站。 第 2 步TreeWalker 全量扫描首屏页面加载完成后translateSubtree() 用document.createTreeWalker从document.body开始逐节点遍历配合NodeFilter做精准过滤文本节点→ 接受翻译textContentFigma 自定义i18n-text元素→ 接受交给专门的translateI18nText()处理带目标属性的元素data-label、placeholder、data-tooltip等 5 个属性见 content.js#L59→ 接受翻译属性值其他节点→ 跳过FILTER_SKIP遇到禁止区则整棵子树直接拒绝FILTER_REJECT扫描完 body 后还会用querySelectorAll(i18n-text)再兜底扫一遍content.js#L406-L407。至此首屏翻译完成。 第 3 步MutationObserver 接管实时翻译首屏之后Figma 是一个活的单页应用切面板、开菜单、弹 Toast 都在不停改写 DOM。FigmaCN 用一个单一合并观察者content.js#L364-L401监听document.body配置只有 4 项content.js#L24-L29配置项值监听什么childListtrue节点增删新面板、新菜单subtreetrue整个子树而不只是直接子级attributeFilter5 个属性只盯翻译相关的属性变化characterDatatrue文本内容本身的修改观察者回调按 3 种变化分流处理childList新增节点文本节点直接翻译元素节点则触发一次局部 TreeWalker 子树扫描覆盖其内部的文本、属性与i18n-textattributes属性变化只处理 5 个目标属性逐个translateAttribute()characterData文本变化单节点翻译i18n-text走专门通道为什么不用setInterval轮询轮询是定时瞎扫MutationObserver 是有变化才通知开销更低、延迟更小而且只有译文 ≠ 原文时才写回 DOM天然避免自我触发的死循环。 防误伤清单这些区域 FigmaCN 绝不翻译实时的另一面是克制。以下区域会被shouldSkipTranslation()content.js#L130-L146识别并跳过区域判断方式为什么跳过代码 / 插件编辑器translateno 编辑器特征PRE/CODE/monaco/codemirror避免export、const等代码关键字被翻译变量名面板祖先节点含variable_name--root类名用户自定义的变量名不能动正在编辑的富文本contenteditabletrue输入区评论、标注正在打字替换会打断输入i18n-text内部文本父级是 Figma 自定义元素交给整句翻译避免中英文混排性能细节skipRootCache会缓存最近判定为跳过区的根节点其子树再有变化时直接跳过省去反复向上查找父级的开销content.js#L61-L62。还有一个巧思是译文还原i18n-text里可能嵌着子元素FigmaCN 先把子元素译成中文再用reverseDataMap把中文还原成英文原文去匹配整句词条命中后重建文本片段——保证整句译文完整、子元素不丢失content.js#L238-L254。⏱️ 完整时序从打开 Figma 到看到中文浏览器在*.figma.com页面document_end时机注入 content.jsall_frames: true保证 iframe 同样生效manifest.json#L13-L24fetch词典文件通过web_accessible_resources对 Figma 页面暴露见 manifest.json#L28-L33构建 3 份匹配结构TreeWalker 全量扫描 body → 首屏变中文observer.observe(document.body)→ 此后一切 DOM 变化实时翻译background.js 只在首次安装时打开项目主页更新时不弹页面打扰用户️ 三种安装方式体验同一个翻译引擎方式适合谁特点Chrome / Edge / Firefox 商店版普通用户一键安装刷新 Figma 页面即生效油猴脚本版脚本玩家scripts/figmaCN.user.js 远程拉取 master 最新代码跟随仓库自动更新手动加载已解压扩展开发者在扩展管理页开启开发者模式选择解压后的插件文件夹详细的逐步安装说明见 README.md。 想看懂源码克隆仓库动手看看git clone https://gitcode.com/gh_mirrors/fi/figmaCN推荐阅读顺序src/manifest.json —— 插件如何被注入 Figma 页面src/js/content.js —— 翻译引擎的全部逻辑400 行出头src/js/translations.json —— 4300 条人工翻译词条scripts/figmaCN.user.js —— 油猴版如何远程复用同一套引擎一个内容脚本 一份词典就能让 Figma 全程说中文——这就是 FigmaCN 翻译引擎的完整机制。【免费下载链接】figmaCN中文 Figma 插件设计师人工翻译校验项目地址: https://gitcode.com/gh_mirrors/fi/figmaCN创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

LLC谐振变换器多模态原理与ZVS/ZCS工程实现
LLC谐振变换器多模态原理与ZVS/ZCS工程实现

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:57:03

QQ登录测试实战:从环境搭建到OAuth2.0自动化与弱网模拟
QQ登录测试实战:从环境搭建到OAuth2.0自动化与弱网模拟

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:57:03

AMS电路流片前必查:BGR-LDO-VCO-PLL耦合设计清单
AMS电路流片前必查:BGR-LDO-VCO-PLL耦合设计清单

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:57:03

FOFA网络空间测绘实战:语法、指纹识别与API自动化资产收集指南
FOFA网络空间测绘实战:语法、指纹识别与API自动化资产收集指南

1. 网络空间测绘与FOFA的核心定位1.1 从一个真实场景说起:为什么要用FOFA很多做安全测试、资产梳理或者互联网暴露面管理的朋友,最开始接触FOFA的时候,往往是因为一个很具体的需求:手里有一个目标单位,想知道它在公网上… · 2026/9/25 3:57:22

AI Agent在汽车研发与智能制造中的落地实践:架构、场景与避坑指南
AI Agent在汽车研发与智能制造中的落地实践:架构、场景与避坑指南

1. 从CNCC2026议题说起:AI Agent为什么突然在工业圈火了如果你这两年一直在关注AI领域的动态,应该能明显感觉到一个变化:前两年大家聊的都是大模型本身有多强、参数有多大、榜单刷到了多少分,但从2025年下半年开始,话题… · 2026/9/25 3:57:10

kuba-car酷霸小车基础运动:前进、后退、转弯与停止的5种玩法
kuba-car酷霸小车基础运动:前进、后退、转弯与停止的5种玩法

kuba-car酷霸小车基础运动:前进、后退、转弯与停止的5种玩法 【免费下载链接】kuba-car 源师兄扩展项目: 酷霸小车 | 由源师兄组织创建 项目地址: https://gitcode.com/yuanshixiong/kuba-car kuba-car 是酷霸小车在 oh-code 图形化编程平台上的扩展项目&… · 2026/9/25 3:57:10

Clawith架构深度剖析:FastAPI + LangGraph + PostgreSQL 持久化检查点执行链路(初学者完整指南)
Clawith架构深度剖析:FastAPI + LangGraph + PostgreSQL 持久化检查点执行链路(初学者完整指南)

Clawith架构深度剖析:FastAPI LangGraph PostgreSQL 持久化检查点执行链路(初学者完整指南) 【免费下载链接】Clawith Your First AI Agents Company 项目地址: https://gitcode.com/gh_mirrors/cl/Clawith Clawith 是一款开源的多智… · 2026/9/25 3:57:10

PaddleNLP SimpleServing 服务化部署实战:基于 UIE-X 的文档信息抽取 HTTP 服务搭建指南
PaddleNLP SimpleServing 服务化部署实战:基于 UIE-X 的文档信息抽取 HTTP 服务搭建指南

人工智能大模型预训练微调LoRARLHF强化学习分布式训练 【免费下载链接】PaddleNLP Easy-to-use and powerful LLM and SLM library with awesome model zoo. 项目地址: https://gitcode.com/gh_mirrors/pa/PaddleNLP 点击查看 免费下载 本文面向需要在生产环境中上… · 2026/9/25 3:57:04

OpenShift Origin QuickStart 模板详解:应用骨架的构建原理、参数体系与自动同步机制
OpenShift Origin QuickStart 模板详解:应用骨架的构建原理、参数体系与自动同步机制

测试云原生质量保障 【免费下载链接】origin Conformance test suite for OpenShift 项目地址: https://gitcode.com/gh_mirrors/or/origin 点击查看 免费下载 本篇技术文章基于 examples/quickstarts/README.md 展开,系统讲解 OpenShift Origin 中 Qui… · 2026/9/25 3:57:03

数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)
数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31

创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战
创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31

MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX
MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:37

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码