You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何禁止Google翻译翻译HTML类名

解决HTML类名被翻译的问题

你需要阻止动态生成的HTML类名被翻译,而非阻止元素内文本翻译,现有的notranslate是针对文本的,解决不了属性里的类名翻译问题,给你几个可行的实现方法:

方法1:用data属性暂存类名,JS动态添加

翻译工具通常不会解析data-*属性的内容,你可以先把动态类名存到自定义data属性里,再通过JavaScript把它加到元素的class列表中:

<!-- 模板里先存到data-class -->
<div data-bind="attr : { 'data-class': headerLabel() }" class="notranslate"></div>

<!-- 绑定完成后执行JS -->
<script>
document.querySelectorAll('[data-class]').forEach(el => {
  // 把data-class的值添加到class
  el.classList.add(el.dataset.class);
  // 用完移除data属性(可选)
  el.removeAttribute('data-class');
});
</script>

方法2:用框架的CSS绑定替代attr绑定类名

以你用的Knockout为例,直接使用css绑定来设置动态类名,翻译工具一般不会解析框架绑定逻辑里的变量内容:

<!-- 单独设置动态类 -->
<div data-bind="css: headerLabel()" class="notranslate"></div>

<!-- 同时结合固定类和动态类 -->
<div data-bind="css: ['notranslate', headerLabel()]"></div>

这种方式更符合Knockout的规范,也能避开翻译工具对属性值的扫描。

方法3:给类名所在元素加notranslate,文本单独放子元素

如果必须在attr里拼接类名,你可以给包含动态类名的元素加notranslate,但把需要翻译的文本放到不带notranslate的子元素里,这样类名所在的元素被标记不翻译,文本仍能正常翻译:

<div data-bind="attr : { 'class':'notranslate '+headerLabel()}">
  <span>这里的文本会被正常翻译</span>
</div>

内容的提问来源于stack exchange,提问作者Saravana

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 22:18:20