chrome 给网页加翻译按钮是因为 标签未声明语言或 lang 属性不明确(如 lang="zh" 而非 lang="zh-cn"),其仅依据 html 信号判断,不分析内容;禁用整页翻译最有效方式是在 标签添加 translate="no",且需配合明确的 lang 值(如 zh-cn)并确保在源码中初始声明。

Chrome 为什么给网页加翻译按钮?
因为 标签没声明语言,或者 lang 属性值不明确(比如写成 lang="zh" 而不是 lang="zh-CN"),Chrome 就会怀疑这不是用户当前系统的界面语言,进而触发翻译浮层。它不看内容,只看信号。
用 translate="no" 禁用整页翻译
这是最直接、兼容性最好的方式,在 标签上加属性即可:
<html lang="zh-CN" translate="no">
注意两点:
-
translate="no"是 HTML5 原生属性,Chrome、Edge、Firefox 都支持,Safari 从 16.4+ 开始支持 - 必须加在
标签上才对整页生效;加在或某个<div> 上只影响该元素及其子节点 <li>如果页面是多语言混合(比如中英双语文档),别全局设 <code>translate="no",否则会影响真正需要翻译的段落
用 <meta name="google" content="notranslate"> 拦 Google 翻译
这个 meta 标签只对 Google 翻译插件和 Google 搜索结果页中的“网页翻译”功能起作用,对 Chrome 浏览器内置翻译无效:
立即学习“前端免费学习笔记(深入)”;
<meta name="google" content="notranslate">
常见误区:
- 写成
name="robots"或name="viewport"—— 完全无效 - 放在
里 —— 必须在中,且越靠前越好 - 以为它能阻止所有翻译行为 —— 实际只影响 Google 生态,Chrome 自己的翻译逻辑完全不认它
为什么加了 lang 还被翻译?
光写 lang="zh" 不够,Chrome 对语言识别很挑剔:
- 推荐用明确区域码:优先
lang="zh-CN"(简体中文)、lang="zh-TW"(繁体中文),避免lang="zh" - 如果页面实际是英文但写了
lang="zh-CN",可能触发校验失败,反而更易被标为“需翻译” - 服务端渲染时动态改
lang值(比如通过 JS 修改document.documentElement.lang)—— 浏览器读取的是初始 HTML,JS 后改无效
真正起效的语言声明,得在 HTML 源码第一行就定死。











