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

WordPress中Mailchimp for WooCommerce插件德语翻译问题求助

问题:Mailchimp for WooCommerce 我的账户页面文字无法德语化(子主题方案无效)

我在WordPress网站上安装了Mailchimp for WooCommerce插件,该插件在“我的账户(my-account)”页面提供订阅、退订及通知设置选项,但当前显示为英文,需改为德语。直接修改插件文件会在插件更新后丢失修改内容,尝试使用子主题方案但未生效,相关代码如下:

<?php
$user = wp_get_current_user();
$mailchimp_user_subscription_status = ($user && $user->ID) ? get_user_meta($user->ID, 'mailchimp_woocommerce_is_subscribed', true) : false;
if ($mailchimp_user_subscription_status !== false && $mailchimp_user_subscription_status !== 'archived') {
    $mailchimp_my_account = '<p class="woocommerce-form-row woocommerce-form-row--wide form-row form-row-wide">';
    $mailchimp_my_account .= '<label for="mailchimp_woocommerce_is_subscribed">';
    $mailchimp_my_account .= '<input type="radio" class="woocommerce-form__input woocommerce-form__input-radio input-radio" name="mailchimp_woocommerce_is_subscribed_radio" id="mailchimp_woocommerce_is_subscribed" value="1"';
    $mailchimp_my_account .= $mailchimp_user_subscription_status === '1' ? ' checked="checked"' : '';
    $mailchimp_my_account .= '>';
    $mailchimp_my_account .= __( 'zum Newsletter anmelden', 'mailchimp-for-woocommerce' );
    $mailchimp_my_account .= '</label>';
    $mailchimp_my_account .= '</p>';

    $mailchimp_my_account .= '<p class="woocommerce-form-row woocommerce-form-row--wide form-row form-row-wide">';
    $mailchimp_my_account .= '<label for="mailchimp_woocommerce_is_unsubscribed">';
    $mailchimp_my_account .= '<input type="radio" class="woocommerce-form__input woocommerce-form__input-radio input-radio" name="mailchimp_woocommerce_is_subscribed_radio" id="mailchimp_woocommerce_is_unsubscribed" value="unsubscribed"';
    $mailchimp_my_account .= $mailchimp_user_subscription_status === 'unsubscribed' ? ' checked="checked"' : '';
    $mailchimp_my_account .= '>';
    $mailchimp_my_account .= __( 'vom Newsletter abmelden', 'mailchimp-for-woocommerce' );
    $mailchimp_my_account .= '</label>';
    $mailchimp_my_account .= '</p>';

    $mailchimp_my_account .= '<p class="woocommerce-form-row woocommerce-form-row--wide form-row form-row-wide">';
    $mailchimp_my_account .= '<label for="mailchimp_woocommerce_is_transactional">';
    $mailchimp_my_account .= '<input type="radio" class="woocommerce-form__input woocommerce-form__input-radio input-radio" name="mailchimp_woocommerce_is_subscribed_radio" id="mailchimp_woocommerce_is_transactional" value="0"';
    $mailchimp_my_account .= $mailchimp_user_subscription_status === '0' ? ' checked="checked"' : '';
    $mailchimp_my_account .= '>';
    $mailchimp_my_account .= __( 'erhalte Benachrichtigungen', 'mailchimp-for-woocommerce' );
    $mailchimp_my_account .= '</label>';
    $mailchimp_my_account .= '</p>';


    echo wp_kses(
        apply_filters( 'mailchimp_woocommerce_my_account_field', $mailchimp_my_account, $mailchimp_user_subscription_status ),
        mailchimp_expanded_alowed_tags()
    );
    if (isset($gdpr_fields) && $gdpr_fields) {
        echo wp_kses($gdpr_fields, mailchimp_expanded_alowed_tags());
    }
} else {
    echo '<input type="hidden" name="mailchimp_woocommerce_is_subscribed_radio" id="mailchimp_woocommerce_is_subscribed" value="' . ($mailchimp_user_subscription_status === 'archived' ? 'archived' : '1') . '">';
}

?>

可行解决方法

方法1:用gettext过滤器直接覆盖文本

WordPress的gettext过滤器可指定覆盖插件文本域的翻译内容,不受插件更新影响。将以下代码添加到子主题的functions.php文件中:

add_filter('gettext', 'custom_mailchimp_woocommerce_translations', 10, 3);
function custom_mailchimp_woocommerce_translations($translated_text, $text, $domain) {
    if ($domain === 'mailchimp-for-woocommerce') {
        switch ($text) {
            case 'Subscribe to our newsletter': // 替换为插件原英文文本
                $translated_text = 'zum Newsletter anmelden';
                break;
            case 'Unsubscribe from our newsletter':
                $translated_text = 'vom Newsletter abmelden';
                break;
            case 'Receive transactional notifications only':
                $translated_text = 'erhalte Benachrichtigungen';
                break;
            // 如需翻译其他文本,继续添加对应case
        }
    }
    return $translated_text;
}

注意:需确保case中的英文文本与插件源码内的原始文本完全一致,可通过查看插件文件或开发者工具检查页面元素确认。

方法2:利用插件过滤器重写整个表单

代码中插件提供了mailchimp_woocommerce_my_account_field过滤器,可直接替换表单HTML内容,完全自定义文本。将以下代码添加到子主题functions.php:

add_filter('mailchimp_woocommerce_my_account_field', 'custom_mailchimp_my_account_form', 10, 2);
function custom_mailchimp_my_account_form($original_html, $subscription_status) {
    $user = wp_get_current_user();
    if ($user && $user->ID) {
        $status = get_user_meta($user->ID, 'mailchimp_woocommerce_is_subscribed', true);
        if ($status !== false && $status !== 'archived') {
            $custom_html = '<p class="woocommerce-form-row woocommerce-form-row--wide form-row form-row-wide">';
            $custom_html .= '<label for="mailchimp_woocommerce_is_subscribed">';
            $custom_html .= '<input type="radio" class="woocommerce-form__input woocommerce-form__input-radio input-radio" name="mailchimp_woocommerce_is_subscribed_radio" id="mailchimp_woocommerce_is_subscribed" value="1" ' . checked($status === '1', true, false) . '>';
            $custom_html .= 'zum Newsletter anmelden';
            $custom_html .= '</label></p>';

            $custom_html .= '<p class="woocommerce-form-row woocommerce-form-row--wide form-row form-row-wide">';
            $custom_html .= '<label for="mailchimp_woocommerce_is_unsubscribed">';
            $custom_html .= '<input type="radio" class="woocommerce-form__input woocommerce-form__input-radio input-radio" name="mailchimp_woocommerce_is_subscribed_radio" id="mailchimp_woocommerce_is_unsubscribed" value="unsubscribed" ' . checked($status === 'unsubscribed', true, false) . '>';
            $custom_html .= 'vom Newsletter abmelden';
            $custom_html .= '</label></p>';

            $custom_html .= '<p class="woocommerce-form-row woocommerce-form-row--wide form-row form-row-wide">';
            $custom_html .= '<label for="mailchimp_woocommerce_is_transactional">';
            $custom_html .= '<input type="radio" class="woocommerce-form__input woocommerce-form__input-radio input-radio" name="mailchimp_woocommerce_is_subscribed_radio" id="mailchimp_woocommerce_is_transactional" value="0" ' . checked($status === '0', true, false) . '>';
            $custom_html .= 'erhalte Benachrichtigungen';
            $custom_html .= '</label></p>';

            return $custom_html;
        }
    }
    return $original_html;
}

此方案直接接管表单输出,完全控制所有文本,不受插件翻译文件影响。

方法3:创建自定义PO/MO翻译文件

若需翻译插件更多文本,可创建专属德语翻译文件:

  • 进入插件语言目录:wp-content/plugins/mailchimp-for-woocommerce/languages
  • 复制mailchimp-for-woocommerce.pot文件,重命名为mailchimp-for-woocommerce-de_DE.po
  • 用Poedit工具打开该文件,将英文文本替换为德语
  • 生成对应的.mo文件,将两个文件上传至wp-content/languages/plugins目录(此目录优先级高于插件自带语言文件,更新不会被覆盖)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 11:00:25