chrome和edge仅识别字面值translate="no",大小写敏感且不可简写;firefox和safari完全不支持;需与匹配语种的lang属性配对使用才稳定生效;第三方翻译插件普遍无视该属性。

Chrome 和 Edge 识别 translate="no" 的硬性条件
Chrome 和 Edge 是目前唯一稳定支持 translate 属性的主流浏览器,但它们只认字面值 translate="no",大小写敏感、不可简写、不能用布尔形式。写成 translate="false"、translate=""、translate="off" 或 translate(无值)全部无效。它不是提示,而是解析时的硬性开关——只在 HTML 初始加载阶段读取,JS 后续赋值如 el.translate = "no" 或 document.documentElement.setAttribute("translate", "no") 都不触发禁译逻辑。
Firefox 和 Safari 对 translate 属性基本无视
Firefox 当前(2026 年)完全不解析 translate 属性,无论设成 "yes" 还是 "no",其内置翻译功能(如有)或第三方插件行为不受影响。Safari 同样不支持,且没有计划加入的公开路线图。这意味着:如果你依赖 translate="no" 保护 fetch()、v5.2.0 或 /api/v1/users/:id,在 Firefox/Safari 中这些内容仍可能被翻译插件(如 Google Translate 扩展)误处理——你得靠其他手段兜底,比如用 <code> 标签包裹 + CSS font-family: monospace 增加识别阻力,或服务端输出时对关键字符串做 HTML 实体转义(如 v5.2.0)。
translate 和 lang 必须配对才在 Chrome/Edge 稳定生效
单独写 translate="no" 容易失效,尤其在中英文混排页面。Chrome 会先校验 lang 值的可信度:若 缺区域码、或写成 lang="en" 但页面主体是中文,它可能判定上下文混乱,直接忽略 translate 指令。必须满足:
-
(整页禁译)或<code lang="en" translate="no">useState(局部) -
lang值需匹配内容真实语种:英文代码块写lang="en",中文说明文字保持默认或显式lang="zh-CN" - 动态插入节点(如 JS
innerHTML注入)必须同时带lang和translate,不能只靠继承
第三方翻译插件不遵循 translate 属性
Google Translate 插件、DeepL 浏览器扩展等,多数不读取或不遵守 translate 属性。它们有自己的文本提取策略,常绕过 DOM 属性直取 textContent。验证是否真被保护,不能只看 Chrome 内置翻译浮层是否消失——得在开启插件后手动右键选“翻译为中文”,观察目标文本是否变动。真正能对抗插件的,只有更底层手段:<span></span> 包裹后用 CSS unicode-bidi: bidi-override 扰乱词序(慎用,可访问性受损),或服务端将关键字符串渲染为 SVG 文本(<text></text> 节点不参与翻译提取)。但这些属于非常规方案,translate="no" 仍是当前最轻量、标准兼容性最好的起点。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











