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

如何在WPML+Laravel Blade主题的WordPress代码中添加简体中文?

适配WPML添加简体中文(zh-hans)支持的代码修改方案

代码片段1 修改

原代码仅通过is_rtl()判断语言和排版方向,无法区分同为LTR的英语与简体中文,需改用WPML提供的ICL_LANGUAGE_CODE常量获取当前语言代码,再分别设置对应参数:

原代码:

$context['direction'] = (is_rtl()) ? 'rtl' : 'ltr';
$context['lang'] = (is_rtl()) ? 'ar' : 'en';

修改后代码:

// 获取当前WPML语言代码,默认 fallback 为英语
$current_lang = defined('ICL_LANGUAGE_CODE') ? ICL_LANGUAGE_CODE : 'en';

// 排版方向:仅阿拉伯语为RTL,英语、简体中文为LTR
$context['direction'] = ($current_lang === 'ar') ? 'rtl' : 'ltr';

// 直接赋值当前语言标识
$context['lang'] = $current_lang;

代码片段2 修改

原逻辑仅区分RTL(阿拉伯语)和LTR(英语),需替换is_rtl()判断为基于语言代码的逻辑,同时扩展多语言文本获取能力:

1. get_option 方法修改

原代码:

/**
 *  Get Customizer Options
 */
public static function get_option($option, $type = '', $default = '') {
    $option_trans = (is_rtl()) ? $option.'_ar' : $option;

    $value = ($default == 'trans') ? get_theme_mod($option, '') : get_theme_mod($option_trans, '');

    if ($type === 'img') {
        $option_trans = (is_rtl()) ? $option.'_ar' : $option;

        $value = ($default == 'trans')
            ? wp_get_attachment_image_url(get_theme_mod($option_trans, ''), 'full')
            : wp_get_attachment_image_url(get_theme_mod($option, ''), $default);
    }

    if ($type === 'editor') {
        $value = wpautop(get_theme_mod($option_trans, $default));
    }

    if ($type === 'group') {
        $trans_value = get_theme_mod($option_trans, '');

        $value = ($default == 'trans') ? $trans_value : get_theme_mod($option, '');
    }

    return $value;
}

修改后代码:

/**
 *  Get Customizer Options
 */
public static function get_option($option, $type = '', $default = '') {
    // 获取当前WPML语言代码,默认 fallback 为英语
    $current_lang = defined('ICL_LANGUAGE_CODE') ? ICL_LANGUAGE_CODE : 'en';
    
    // 根据语言代码生成带后缀的自定义izer选项名
    switch ($current_lang) {
        case 'ar':
            $option_trans = $option . '_ar';
            break;
        case 'zh-hans':
            $option_trans = $option . '_zh-hans';
            break;
        default: // 英语及未定义语言
            $option_trans = $option;
            break;
    }

    $value = ($default == 'trans') ? get_theme_mod($option, '') : get_theme_mod($option_trans, '');

    if ($type === 'img') {
        $value = ($default == 'trans')
            ? wp_get_attachment_image_url(get_theme_mod($option_trans, ''), 'full')
            : wp_get_attachment_image_url(get_theme_mod($option, ''), $default);
    }

    if ($type === 'editor') {
        $value = wpautop(get_theme_mod($option_trans, $default));
    }

    if ($type === 'group') {
        $trans_value = get_theme_mod($option_trans, '');

        $value = ($default == 'trans') ? $trans_value : get_theme_mod($option, '');
    }

    return $value;
}

2. get_trans 方法修改

原方法仅支持两种语言切换,需扩展为支持三种语言:

原代码:

/**
 * Get Translation
 */
public static function get_trans($rtl, $ltr) {
    $value = (is_rtl()) ? $rtl : $ltr;

    return $value;
}

修改后代码:

/**
 * Get Translation
 */
public static function get_trans($ar, $en, $zh_hans) {
    // 获取当前WPML语言代码,默认 fallback 为英语
    $current_lang = defined('ICL_LANGUAGE_CODE') ? ICL_LANGUAGE_CODE : 'en';
    
    switch ($current_lang) {
        case 'ar':
            $value = $ar;
            break;
        case 'zh-hans':
            $value = $zh_hans;
            break;
        default: // 英语
            $value = $en;
            break;
    }

    return $value;
}

补充说明

  • 需确保WPML后台已正确添加简体中文(zh-hans)语言,并设置为LTR排版方向。
  • 若未单独为简体中文配置带_zh-hans后缀的自定义izer选项,可将get_option方法中zh-hans分支的$option_trans直接设为$option,复用英语选项的配置值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 19:25:26