*/ function aksrt_get_available_languages(): array { $languages = []; // Polylang if (function_exists('pll_the_languages')) { $pll_langs = pll_the_languages(['raw' => 1]); if (is_array($pll_langs)) { foreach ($pll_langs as $lang) { $languages[] = [ 'code' => $lang['slug'] ?? '', 'name' => $lang['name'] ?? '', 'url' => $lang['url'] ?? '#', 'flag' => $lang['flag'] ?? '', 'active' => !empty($lang['current_lang']), ]; } } return $languages; } // WPML if (defined('ICL_LANGUAGE_CODE') && function_exists('icl_get_languages')) { $wpml_langs = icl_get_languages('skip_missing=0'); if (is_array($wpml_langs)) { foreach ($wpml_langs as $lang) { $languages[] = [ 'code' => $lang['language_code'] ?? '', 'name' => $lang['native_name'] ?? '', 'url' => $lang['url'] ?? '#', 'flag' => $lang['country_flag_url'] ?? '', 'active' => !empty($lang['active']), ]; } } return $languages; } // WordPress 内置:通过 filter 提供语言列表 $filtered = apply_filters('aksrt_available_languages', []); if (is_array($filtered) && !empty($filtered)) { return $filtered; } return []; } /** * 检查是否有多语言插件可用 */ function aksrt_has_multilingual(): bool { if (function_exists('pll_the_languages')) return true; if (defined('ICL_LANGUAGE_CODE')) return true; if (!empty(apply_filters('aksrt_available_languages', []))) return true; return false; } /** * 获取当前语言代码 */ function aksrt_get_current_language(): string { if (function_exists('pll_current_language')) { return pll_current_language('slug'); } if (defined('ICL_LANGUAGE_CODE')) { return ICL_LANGUAGE_CODE; } return get_locale(); } /** * 渲染语言切换器 HTML * * @param string $style dropdown | inline | flags * @return string */ function aksrt_render_language_switcher(string $style = 'dropdown'): string { $languages = aksrt_get_available_languages(); if (count($languages) < 2) return ''; $current = aksrt_get_current_language(); if ($style === 'flags') { $html = '