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

如何在WordPress翻译文本域中添加span等HTML标签及CSS类

实现方法

你可以直接把HTML标签写入翻译字符串中,调整后的代码如下:

function my_text_strings( $translated_text, $text, $domain ) {
    switch ( $translated_text ) {
        case 'No se han encontrado opciones de envío para %s.' :
            $translated_text = __( '<span class="something">No vendemos en</span> %s', 'woocommerce' );
            break;
    }
    return $translated_text;
}
add_filter( 'gettext', 'my_text_strings', 20, 3 );
注意事项
  • 确保输出该文本的前端位置没有强制做HTML实体转义,WooCommerce默认的配送提示场景本身支持HTML输出,一般不会出现标签直接显示为明文的问题。
  • 如果出现标签被转义的情况,检查对应输出逻辑是否用了esc_html()、esc_attr()等转义函数包裹翻译结果,可根据场景调整转义规则,或通过wp_kses()放行span标签和class属性,示例如下:
// 仅放行span标签和class属性,提升安全性
function my_text_strings( $translated_text, $text, $domain ) {
    switch ( $translated_text ) {
        case 'No se han encontrado opciones de envío para %s.' :
            $translated_text = __( '<span class="something">No vendemos en</span> %s', 'woocommerce' );
            $translated_text = wp_kses( $translated_text, [
                'span' => [
                    'class' => []
                ]
            ] );
            break;
    }
    return $translated_text;
}
add_filter( 'gettext', 'my_text_strings', 20, 3 );
  • 若要避免翻译人员误修改HTML结构,也可以将文本和标签拆分后拼接,写法如下:
function my_text_strings( $translated_text, $text, $domain ) {
    switch ( $translated_text ) {
        case 'No se han encontrado opciones de envío para %s.' :
            $prefix_text = __( 'No vendemos en', 'woocommerce' );
            // 手动拼接标签和原占位符,翻译字符串仅保留纯文本内容
            $translated_text = sprintf( '<span class="something">%s</span> %%s', $prefix_text );
            break;
    }
    return $translated_text;
}
add_filter( 'gettext', 'my_text_strings', 20, 3 );

注意这里拼接占位符时需要写%%s做转义,避免sprintf提前替换掉占位符。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 00:15:01