diff --git a/src/shared/components/LanguageSelector.tsx b/src/shared/components/LanguageSelector.tsx index 7786e3fbfa..94d6f70b0c 100644 --- a/src/shared/components/LanguageSelector.tsx +++ b/src/shared/components/LanguageSelector.tsx @@ -16,6 +16,31 @@ function persistLocale(code: Locale) { } } +function CountryFlag({ emoji, alt }: { emoji: string; alt: string }) { + const [error, setError] = useState(false); + + if (!emoji) return null; + + const chars = [...emoji]; + const codePoints = chars.map((c) => c.codePointAt(0) || 0); + const isRegional = codePoints.every((cp) => cp >= 127462 && cp <= 127487); + + if (!isRegional || codePoints.length !== 2 || error) { + return {emoji}; + } + + const countryCode = codePoints.map((cp) => String.fromCharCode(cp - 127462 + 97)).join(""); + + return ( + {alt} setError(true)} + /> + ); +} + export default function LanguageSelector() { const locale = useLocale(); const router = useRouter(); @@ -54,7 +79,7 @@ export default function LanguageSelector() { className="flex items-center gap-1.5 px-2.5 py-1.5 rounded-lg text-sm font-medium text-text-main hover:bg-surface-hover transition-all border border-transparent hover:border-border" title={currentLang.name} > - {currentLang.flag} + {currentLang.label} - {lang.flag} + {lang.name} {lang.code === locale && ( check