From a5c15b4c7adbdf62eb66e8851b08adfdcbf2883d Mon Sep 17 00:00:00 2001 From: "j.foucher" Date: Thu, 14 May 2026 20:59:52 +0200 Subject: [PATCH] feat(header): custom flag-based language switcher MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replaces WPML's default language selector with a compact branded dropdown : current language flag + 2-letter code + chevron, with a CSS-only hover/focus dropdown listing other available languages (flag + native name). Implementation : remove_all_actions on wpml_add_language_selector + register our own renderer. Bricks's wpml-language-switcher element (hdrlng) fires the same action so no template edit needed. Flags via emoji (πŸ‡¬πŸ‡§ EN, πŸ‡«πŸ‡· FR) β€” no asset path concerns. Dropdown styled to match the rest of the header (navy bg, gold-on-hover, subtle border + shadow). Mobile : dropdown anchors left to stay in viewport. Co-Authored-By: Claude Opus 4.7 (1M context) --- tools/av-lang-switcher.php | 182 +++++++++++++++++++++++++++++++++++++ 1 file changed, 182 insertions(+) create mode 100644 tools/av-lang-switcher.php diff --git a/tools/av-lang-switcher.php b/tools/av-lang-switcher.php new file mode 100644 index 0000000..f71776b --- /dev/null +++ b/tools/av-lang-switcher.php @@ -0,0 +1,182 @@ + $lang) { + if ($code !== $current_code) $others[] = $lang; + } + + // Flag emoji per language code (extend as needed) + $flags = [ + 'en' => "\u{1F1EC}\u{1F1E7}", // πŸ‡¬πŸ‡§ + 'fr' => "\u{1F1EB}\u{1F1F7}", // πŸ‡«πŸ‡· + 'de' => "\u{1F1E9}\u{1F1EA}", + 'es' => "\u{1F1EA}\u{1F1F8}", + 'it' => "\u{1F1EE}\u{1F1F9}", + ]; + + $current_flag = $flags[$current['language_code']] ?? "\u{1F310}"; + $current_label = strtoupper($current['language_code']); + + ?> +
+ + + + + + + + +
+ + +