lang属性必须显式设置在每个含文本的语义化容器上,data-i18n需覆盖所有可翻译属性,语言包须用fetch+try/catch按bcp 47规范加载并校验,含html文案须用innerhtml安全替换。

lang属性必须显式设置在每个语义化容器上,不是只改html>就够了
只给document.documentElement.lang赋值,其他元素不设lang,会导致屏幕阅读器读错语言、标点间距异常(比如中文顿号被当英文逗号处理)、字体回退失效(如<pre class="brush:php;toolbar:false;" lang="bash"></pre>没设lang就可能用中文字体渲染代码)。
- 所有含文本的语义化标签——
<h1></h1>、<p></p>、<section></section>、@#@#@#@#@#@#@#@#@#@0”这种带标签的文案,如果只替换<code>textContent,链接会丢失;若直接插入未校验的HTML字符串,又可能触发XSS。- 语言包中对应字段值必须是可信的纯HTML片段(如
"请阅读@#@#@#@#@#@#@#@#@#@1") - 替换时必须用
element.innerHTML = translatedHtml,不能用textContent - 动态插入的DOM(弹窗、AJAX表格行)插入后必须立即调用翻译函数,不会自动监听
真正难的不是写翻译键,而是让每个
lang、每个data-i18n-*、每次innerHTML替换都落在正确位置且不被遗漏——尤其在多人协作或老项目迭代时,漏一处,无障碍体验就断一环。 - 语言包中对应字段值必须是可信的纯HTML片段(如
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











