javascript中“带有国际化属性的节点”指含lang、dir或data-i18n等自定义属性的元素,可用queryselectorall('[lang], [dir], [data-i18n], [data-locale], [data-translation]')一次性获取。

在 JavaScript 中,“带有国际化属性的节点”通常指含有 lang 属性、dir 属性,或使用 data-i18n、data-locale 等自定义国际化标记的元素。标准做法是通过 querySelectorAll 组合选择器一次性获取。
匹配原生国际化属性(lang 和 dir)
HTML 原生支持国际化语义的属性主要是 lang(语言)和 dir(文本方向)。它们可出现在任意元素上:
-
[lang]匹配所有设置了lang的元素,如<p lang="zh-CN"></p> -
[dir]匹配所有设置了dir的元素,如<div dir="rtl"> <li>可合并为 <code>[lang], [dir]获取任一属性存在的节点 -
[data-i18n]—— 最通用的翻译键标识 -
[data-locale]、[data-lang]、[data-translation] - 组合写法:
[lang], [dir], [data-i18n], [data-locale]
包含常见 i18n 自定义属性
很多前端框架或 i18n 库(如 i18next、vue-i18n)会用 data- 属性标记待翻译内容。常用命名包括:
实际获取代码示例
一行即可获取全部目标节点:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
const i18nNodes = document.querySelectorAll('[lang], [dir], [data-i18n], [data-locale], [data-translation]');
如果需排除重复(比如一个元素同时有 lang 和 data-i18n),该结果天然去重,因为 querySelectorAll 返回的是元素集合,不重复计数。
进阶:按值筛选或区分类型
若需进一步处理,例如只取 lang="en" 或提取所有 data-i18n 的键值,可遍历后过滤:
const nodes = Array.from(document.querySelectorAll('[lang], [data-i18n]'));
const enNodes = nodes.filter(el => el.lang === 'en');
const keys = nodes
.filter(el => el.hasAttribute('data-i18n'))
.map(el => el.getAttribute('data-i18n'));
不复杂但容易忽略:记得检查是否在 DOM 加载完成后执行,否则可能查不到节点。










