translate="no"仅控制浏览器自动翻译引擎是否处理文本,与后端接口、i18n库、API响应完全无关;它必须与lang属性共用、显式写在目标元素上,且和的value值不继承该属性,需单独设置。

translate 属性和后端多语言接口完全不打交道——它只管浏览器自动翻译引擎要不要动这段文本,对任何 API、i18n 库、服务端返回的 JSON 或模板渲染都毫无影响。
为什么translate="no"对后端接口返回的文案无效
后端接口(比如 /api/i18n?lang=zh-CN)返回的是原始文案字符串,前端拿到后插入 DOM 时,那段文本就“裸奔”在页面上。此时浏览器才开始扫描:有没有 translate="no"?有没有 lang?它不管这串文字是从 fetch 来的、还是 SSR 直出的、还是 localStorage 读的。
- 你用
el.textContent = response.message插入 “Invalid email”,没加translate属性 → Chrome 看到英文 + 页面是中文环境,大概率会弹翻译提示 - 你手动补上
el.setAttribute('translate', 'no')→ 有效,但必须在插入后立刻执行,且仅对这个元素生效 - 你指望后端在 JSON 里返回
{"message": "Invalid email"}→ 可行,但前提是前端用innerHTML渲染,且信任该字段内容(有 XSS 风险)
translate 和 lang 必须同时出现在同一元素上才可靠
只设 lang="en",Chrome 仍可能把 React 翻成“反应”;只设 translate="no" 而不声明语言,某些旧版 Edge 会因语言上下文模糊而忽略指令。
把任意文章或文档内容转换成精美的全屏翻页 HTML 演示文件(幻灯片风格)。当用户发来一篇文章、文档链接、Markdown 内容、或粘贴的文本,并且希望生成演示用的 HTML 时触发。支持任意内容来源:iWiki 链接、KM 链接、本地文件路径、直接粘贴的文本。生成的 HTML 文件保存到本地工作区,并通过企微直接发送给用户。触发词示例:帮我把这篇文章做成PPT、转成演示文档、生成HTML幻灯片、做个演示、转成可以演示的格式、article to deck、make a slide。
- 正确写法:
useState - 动态插入时别漏掉
lang:el.lang = 'en'; el.translate = 'no'; - 后端若返回带语言标记的 HTML 片段(如 CMS 富文本),需确保原始字符串里已含这两个属性,前端 runtime 补不了
和 的 value 值不继承 translate,必须单独处理
这是最容易翻车的地方:父容器加了 translate="no",里面一个 依然可能被 Chrome 错译成“五点二零”,因为 value 是属性值,不是子节点文本,不走继承逻辑。
- 必须显式写:
- JS 动态设置时:
inputEl.value = 'X-Auth-Token'; inputEl.translate = 'no'; - 后端若控制表单字段占位符(如
placeholder),返回的 JSON 里不能只给字符串,得带结构:{"placeholder": {"text": "user_email", "lang": "en", "noTranslate": true}},前端渲染时据此补属性
真正要对接后端多语言,靠的是 data-i18n、i18next 或服务端模板变量,而不是 translate。这个属性只解决一个具体问题:防止浏览器把技术字符串当自然语言乱翻。它不参与任何翻译流程,也不触发任何网络请求——写错位置、漏掉 lang、或误以为它能替代 i18n,都是线上真实发生过的故障点。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










