UNPKG

@intlayer/core

Version:

Includes core Intlayer functions like translation, dictionary, and utility functions shared across multiple packages.

1 lines 1.5 kB
{"version":3,"sources":["../../../src/localization/getLocaleName.ts"],"sourcesContent":["import type { LocalesValues } from '@intlayer/config/client';\n\nconst dnCache = new Map<LocalesValues, Intl.DisplayNames>();\n\nexport const getLocaleName = (\n displayLocale: LocalesValues,\n targetLocale: LocalesValues = displayLocale\n): string => {\n if (typeof Intl?.DisplayNames !== 'function') {\n if (process.env.NODE_ENV === 'development') {\n console.warn(\n `Intl.DisplayNames is not supported; falling back to raw locale (${displayLocale}). Consider adding a polyfill as https://formatjs.github.io/docs/polyfills/intl-displaynames/`\n );\n }\n return displayLocale;\n }\n\n // new Intl.DisplayNames() is fairly heavy: under the hood every call parses CLDR data and builds a resolver table. In your LocaleSwitcher it’s invoked:\n let dn = dnCache.get(targetLocale);\n if (!dn) {\n dn = new Intl.DisplayNames([targetLocale], { type: 'language' });\n dnCache.set(targetLocale, dn);\n }\n\n return dn.of(displayLocale) ?? 'Unknown locale';\n};\n"],"mappings":"AAEA,MAAM,UAAU,oBAAI,IAAsC;AAEnD,MAAM,gBAAgB,CAC3B,eACA,eAA8B,kBACnB;AACX,MAAI,OAAO,MAAM,iBAAiB,YAAY;AAC5C,QAAI,QAAQ,IAAI,aAAa,eAAe;AAC1C,cAAQ;AAAA,QACN,mEAAmE,aAAa;AAAA,MAClF;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAGA,MAAI,KAAK,QAAQ,IAAI,YAAY;AACjC,MAAI,CAAC,IAAI;AACP,SAAK,IAAI,KAAK,aAAa,CAAC,YAAY,GAAG,EAAE,MAAM,WAAW,CAAC;AAC/D,YAAQ,IAAI,cAAc,EAAE;AAAA,EAC9B;AAEA,SAAO,GAAG,GAAG,aAAa,KAAK;AACjC;","names":[]}