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

修改WooCommerce订阅价格字符串:3个字段翻译失效求助

问题解决思路与修正代码

你遇到的问题核心是匹配了已翻译后的文本而非原始未翻译字符串,另外部分字段可能存在匹配精度或专用过滤器的问题,以下是针对性修正方案:

核心问题分析

原代码里switch ($translated_text)是判断已经经过翻译处理后的文本,但你要替换的是原始的英文字段(比如"USD"、"/ Month"),应该匹配$text参数——这才是WooCommerce输出的原始未翻译字符串。

修正后的代码方案

方案1:修正gettext过滤器逻辑

把判断对象改为$text,同时确保字符串完全匹配(注意空格、大小写):

function wc_billing_field_strings( $translated_text, $text, $domain ) {
    // 匹配原始未翻译的字符串,而非已翻译后的文本
    switch ( $text ) {
        case '/ Month' :
            $translated_text = __( 'Monthly-Cycle', 'woocommerce' );
            break;
        case '/ Month for 1 Month For' :
            $translated_text = __( 'Monthly-Cycle for a Month', 'woocommerce' );
            break;
        case 'USD' :
            $translated_text = __( 'US-Dollar', 'woocommerce' );
            break;
        case 'First renewal' :
            $translated_text = __( 'First-Cycle', 'woocommerce' );
            break;
    }
    return $translated_text;
}
// 提高优先级,确保在其他翻译逻辑后执行
add_filter( 'gettext', 'wc_billing_field_strings', 99, 3 );

方案2:货币符号专用处理(更推荐)

对于"USD"这类货币符号,WooCommerce有专门的woocommerce_currency_symbol过滤器,比gettext更精准:

function custom_woocommerce_currency_symbol( $symbol, $currency ) {
    switch( $currency ) {
        case 'USD':
            $symbol = 'US-Dollar';
            break;
    }
    return $symbol;
}
add_filter( 'woocommerce_currency_symbol', 'custom_woocommerce_currency_symbol', 10, 2 );

额外注意事项

  • 检查原始字符串的精确格式:比如确认"/ Month"是否是"/Month"(无空格),如果实际输出是无空格的,要同步修改case里的字符串
  • 清除WooCommerce缓存:修改代码后刷新页面缓存,避免旧翻译缓存影响结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 10:24:50