HTML 的 translate 属性非必需,默认即 translate="yes";仅当需阻止翻译专有名词、代码、版本号等固定内容时才用 translate="no";translate="yes" 显式声明冗余,lang 与 translate 职责不同,不可互换。

translate 属性该不该加
HTML 的 translate 属性不是必须的,绝大多数场景下可以完全不写。浏览器默认对所有文本节点做翻译(translate="yes"),只有当你明确想阻止某段文本被翻译时,才需要加 translate="no"。
常见误用是给整个页面或大量元素统一加 translate="no",结果导致按钮文字、提示文案等本该本地化的部分也被跳过——翻译服务(如 Chrome 翻译、Edge 翻译)会尊重这个标记,但人容易忽略它对 UX 的实际影响。
哪些地方必须用 translate="no"
典型场景:专有名词、代码标识符、品牌名、版本号、URL 路径、时间格式字符串等不随语言变化的内容。
<code>fetch()、<pre class="brush:php;toolbar:false;"><code>npm install -D vite</code></pre>—— 保留原始大小写和符号-
<span translate="no">v5.2.0</span>—— 版本号不翻译 -
<time datetime="2024-06-15">2024/06/15</time>建议外层套<span translate="no"></span>,避免某些翻译工具把日期数字转成本地格式 - 用户生成内容中嵌入的 ID、token、路径:
/api/v1/users/:id、abc123-token
translate="yes" 有没有必要显式写
没必要。显式写 translate="yes" 和不写效果完全一样,且增加冗余 HTML 体积。W3C 明确说明:未声明时默认为 yes。
例外只有一种:父元素设了 translate="no",而你希望某个子元素「破例可译」——这时才需要子元素显式写 translate="yes"。但这种嵌套控制极少出现,多数项目连父级 translate="no" 都不用。
和 lang 属性的关系容易混淆
lang 是告诉浏览器「这段内容当前是什么语言」,影响拼写检查、语音朗读、字体回退;translate 是告诉翻译工具「这段要不要参与翻译」,两者互不替代。
比如:<div lang="zh-CN" translate="no">React</div> 表示“这是中文环境下的一个不可翻译的英文词”,语义清晰;但如果写成 <div lang="en">React</div> 却没设 translate,某些翻译插件仍可能把它当成待译内容尝试替换(尤其当页面整体是中文时)。
所以关键不是「标不标语言」,而是「翻不翻这个词」——后者才是 translate 的唯一职责。
真正容易被忽略的是:第三方组件库或 CMS 输出的 HTML 可能自带 translate,你覆盖时得查 DOM 实际渲染结果,不能只看模板源码。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











