如何在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
相关产品推荐
相关产品推荐

