INNER CODE UNIT · TypeScript
matchLocale
arc53/DocsGPT · extensions/react-widget/src/locale/index.ts:44
export const matchLocale = (tag: string): SupportedLocale | null => {
const parts = String(tag).trim().replace(/_/g, '-').toLowerCase().split('-');
const base = parts[0];
if (!base) return null;
if (base === 'zh') {
const script = parts.find((part) => part.length === 4);
if (script === 'hant') return 'zh-TW';
if (script === 'hans') return 'zh';
return parts.some((part) => ['tw', 'hk', 'mo'].includes(part))
? 'zh-TW'
: 'zh';
}
const exact = SUPPORTED_LOCALES.find(
(code) => code.toLowerCase() === parts.join('-'),
);
if (exact) return exact;
return SUPPORTED_LOCALES.find((code) => code === base) ?? null;
};