更改 WooCommerce 订阅价格字符串

Change WooCommerce Subscriptions price strings

提问人:DDJ 提问时间:10/4/2023 最后编辑:LoicTheAztecDDJ 更新时间:10/5/2023 访问量:30

问:

我已经能够使用下面的代码翻译网站上的大多数内容,但不能翻译 3 个字段。

“美元” “/月” “/月为 1 个月”。

我想说一些不同的话,这样以后更容易翻译。

function wc_billing_field_strings( $translated_text, $text, $domain ) {
    switch ( $translated_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', 20, 3 );
php wordpress woocommerce gettext woocommerce-订阅

评论


答:

1赞 LoicTheAztec 10/5/2023 #1

最好尝试对“USD”、“/Month”和“/Month for 1 Month For”字符串使用以下方法:

add_filter( 'woocommerce_subscriptions_product_price_string', 'subscr_price_string_replacement', 10 );
add_filter( 'woocommerce_subscription_price_string', 'subscr_price_string_replacement', 10 );
function subscr_price_string_replacement( $price_string ){
    $original_string1    = "/ Month for 1 Month For";
    $original_string2    = "/ Month";
    $original_string3    = "USD";

    if ( strpos($subscription_string, $original_string1) !== false ) {
        $replacement_string = __( "Monthly-Cycle for a Month", 'woocommerce' );
        $price_string       = str_replace( $original_string1, $replacement_string, $subscription_string );
    }

    if ( strpos($subscription_string, $original_string2) !== false ) {
        $replacement_string = __( "Monthly-Cycle", 'woocommerce' );
        $price_string       = str_replace( $original_string2, $replacement_string, $subscription_string );
    }

    if ( strpos($subscription_string, $original_string3) !== false ) {
        $replacement_string = __( "US-Dollar", 'woocommerce' );
        $price_string       = str_replace( $original_string3, $replacement_string, $subscription_string );
    }
    return $price_string;
}

对于“首次续订”字符串,最好使用:

add_filter( 'gettext', 'subscr_string_replacement', 20, 3 );
function subscr_string_replacement( $translated_text, $original_text, $domain ) {
    if ( $original_text === 'First renewal: %s' ) {
        $translated_text = __( 'First-Cycle: %s', 'woocommerce' );
    }
    return $translated_text;
}

代码位于子主题的函数.php文件中(或插件中)。它应该适用于大多数字符串。

评论

0赞 DDJ 10/15/2023
唯一有效的是第一次更新。更近了一步!