translate="no"对chrome内置翻译有效,但绝大多数第三方翻译插件(如google翻译插件、沉浸式翻译)完全忽略该属性;仅极少数旧版插件可能部分识别,且不继承、不处理value等特殊场景,真正可靠需结合code标签、css隐藏或data属性等隔离策略。

translate="no" 对 Chrome 内置翻译有效,对第三方插件基本无效
Chrome 浏览器的右键“翻译成中文”、地址栏翻译提示等行为会尊重 translate="no",但绝大多数第三方翻译插件(如 Google 翻译插件、沉浸式翻译、沙拉查词)**完全忽略该属性**。它们按自己的规则提取文本:有的遍历所有文本节点,有的依赖正则匹配,有的甚至重写 DOM 后再扫描——translate 不在它们的解析逻辑里。
哪些第三方插件可能部分识别 translate="no"
极少数插件(如旧版 Google 翻译插件)会读取 translate 属性,但行为不一致:
- 只认
translate="no",写成translate="false"或translate=""就失效 - 不继承父级设置,
<div translate="no"><span>API_KEY</span></div>中的<span></span>仍可能被译 - 遇到
<input value="v5.2.0">这类 value 值,即使父级设了translate="no",插件也照抽不误
真正能拦住第三方插件的只有内容隔离策略
靠 translate 属性防第三方误译是徒劳的。实操中更可靠的方式是:
- 把技术字符串包进
<code translate="no">fetch()——多数插件默认跳过<code>和<pre class="brush:php;toolbar:false;"></pre>内容 - 用 CSS 隐藏再显示(如
visibility: hidden+aria-hidden="true"),部分插件会跳过不可见文本 - 对敏感区域(如编辑器内容区)加
data-no-translate自定义属性,再配合插件配置白名单(如果支持) - 富文本场景下,用
v-html渲染时,确保原始 HTML 字符串里已含translate="no",否则 JS 插入后插件早于属性补全就扫完了
最易被忽略的失效点:lang 值冲突导致 translate 被降级
哪怕你写了 translate="no",若页面 lang 值错误(比如中文页设 lang="en"),Chrome 会判定“语言不可信”,进而弱化 translate 的优先级——第三方插件更会直接无视。验证是否生效,别看渲染结果,直接打开 DevTools → Elements 面板,检查目标元素上是否存在字面值 translate="no",且父级 lang 与实际语言一致。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











