From 7a6aa60e7db7d9990b1774615ed276424873d38f Mon Sep 17 00:00:00 2001 From: Samuel Newman Date: Sat, 6 Dec 2025 17:45:22 +0200 Subject: [PATCH] use Intl.DisplayNames, add polyfill --- package.json | 7 +- .../InternationalPhoneCodeSelect.tsx | 23 +- src/lib/international-telephone-codes.ts | 255 ------------------ src/locale/helpers.ts | 43 ++- src/locale/i18n.ts | 46 ++++ yarn.lock | 132 +++++---- 6 files changed, 179 insertions(+), 327 deletions(-) diff --git a/package.json b/package.json index a983bfee7c..2f45617601 100644 --- a/package.json +++ b/package.json @@ -83,9 +83,10 @@ "@expo/webpack-config": "^19.0.1", "@floating-ui/dom": "^1.6.3", "@floating-ui/react-dom": "^2.0.8", - "@formatjs/intl-locale": "^4.2.8", - "@formatjs/intl-numberformat": "^8.15.1", - "@formatjs/intl-pluralrules": "^5.4.1", + "@formatjs/intl-displaynames": "^6.8.13", + "@formatjs/intl-locale": "^4.2.13", + "@formatjs/intl-numberformat": "^8.15.6", + "@formatjs/intl-pluralrules": "^5.4.6", "@fortawesome/fontawesome-svg-core": "^6.1.1", "@fortawesome/free-regular-svg-icons": "^6.1.1", "@fortawesome/free-solid-svg-icons": "^6.1.1", diff --git a/src/components/InternationalPhoneCodeSelect.tsx b/src/components/InternationalPhoneCodeSelect.tsx index ea29edeffd..f42f4a21a3 100644 --- a/src/components/InternationalPhoneCodeSelect.tsx +++ b/src/components/InternationalPhoneCodeSelect.tsx @@ -7,6 +7,7 @@ import { getDefaultCountry, INTERNATIONAL_TELEPHONE_CODES, } from '#/lib/international-telephone-codes' +import {regionName} from '#/locale/helpers' import {isWeb} from '#/platform/detection' import {atoms as a, web} from '#/alf' import * as Select from '#/components/Select' @@ -35,14 +36,18 @@ export function InternationalPhoneCodeSelect({ const items = useMemo(() => { return ( Object.entries(INTERNATIONAL_TELEPHONE_CODES) - .map(([value, {name, code, unicodeFlag, svgFlag}]) => ({ - value, - name: name(i18n), - code, - label: `${name(i18n)} ${code}`, - unicodeFlag, - svgFlag, - })) + .map(([value, {code, unicodeFlag, svgFlag}]) => { + const name = regionName(value, i18n.locale) + + return { + value, + name, + code, + label: `${name} ${code}`, + unicodeFlag, + svgFlag, + } + }) // boost the default value to the top, then sort by name .sort((a, b) => { if (a.value === defaultCountry) return -1 @@ -50,7 +55,7 @@ export function InternationalPhoneCodeSelect({ return a.name.localeCompare(b.name) }) ) - }, [i18n, defaultCountry]) + }, [i18n.locale, defaultCountry]) const selected = useMemo(() => { return items.find(item => item.value === value) diff --git a/src/lib/international-telephone-codes.ts b/src/lib/international-telephone-codes.ts index 7a3445df1a..65a4de5278 100644 --- a/src/lib/international-telephone-codes.ts +++ b/src/lib/international-telephone-codes.ts @@ -1,1505 +1,1250 @@ -import {type I18n} from '@lingui/core' -import {msg} from '@lingui/macro' - export const INTERNATIONAL_TELEPHONE_CODES = { AD: { - name: (i18n: I18n) => i18n._(msg`Andorra`), code: '+376', unicodeFlag: '๐Ÿ‡ฆ๐Ÿ‡ฉ', svgFlag: require('../../assets/icons/flags/AD.svg'), }, AF: { - name: (i18n: I18n) => i18n._(msg`Afghanistan`), code: '+93', unicodeFlag: '๐Ÿ‡ฆ๐Ÿ‡ซ', svgFlag: require('../../assets/icons/flags/AF.svg'), }, AG: { - name: (i18n: I18n) => i18n._(msg`Antigua and Barbuda`), code: '+1268', unicodeFlag: '๐Ÿ‡ฆ๐Ÿ‡ฌ', svgFlag: require('../../assets/icons/flags/AG.svg'), }, AI: { - name: (i18n: I18n) => i18n._(msg`Anguilla`), code: '+1264', unicodeFlag: '๐Ÿ‡ฆ๐Ÿ‡ฎ', svgFlag: require('../../assets/icons/flags/AI.svg'), }, AL: { - name: (i18n: I18n) => i18n._(msg`Albania`), code: '+355', unicodeFlag: '๐Ÿ‡ฆ๐Ÿ‡ฑ', svgFlag: require('../../assets/icons/flags/AL.svg'), }, AM: { - name: (i18n: I18n) => i18n._(msg`Armenia`), code: '+374', unicodeFlag: '๐Ÿ‡ฆ๐Ÿ‡ฒ', svgFlag: require('../../assets/icons/flags/AM.svg'), }, AO: { - name: (i18n: I18n) => i18n._(msg`Angola`), code: '+244', unicodeFlag: '๐Ÿ‡ฆ๐Ÿ‡ด', svgFlag: require('../../assets/icons/flags/AO.svg'), }, AQ: { - name: (i18n: I18n) => i18n._(msg`Antarctica`), code: '+672', unicodeFlag: '๐Ÿ‡ฆ๐Ÿ‡ถ', svgFlag: require('../../assets/icons/flags/AQ.svg'), }, AR: { - name: (i18n: I18n) => i18n._(msg`Argentina`), code: '+54', unicodeFlag: '๐Ÿ‡ฆ๐Ÿ‡ท', svgFlag: require('../../assets/icons/flags/AR.svg'), }, AS: { - name: (i18n: I18n) => i18n._(msg`American Samoa`), code: '+1684', unicodeFlag: '๐Ÿ‡ฆ๐Ÿ‡ธ', svgFlag: require('../../assets/icons/flags/AS.svg'), }, AT: { - name: (i18n: I18n) => i18n._(msg`Austria`), code: '+43', unicodeFlag: '๐Ÿ‡ฆ๐Ÿ‡น', svgFlag: require('../../assets/icons/flags/AT.svg'), }, AU: { - name: (i18n: I18n) => i18n._(msg`Australia`), code: '+61', unicodeFlag: '๐Ÿ‡ฆ๐Ÿ‡บ', svgFlag: require('../../assets/icons/flags/AU.svg'), }, AW: { - name: (i18n: I18n) => i18n._(msg`Aruba`), code: '+297', unicodeFlag: '๐Ÿ‡ฆ๐Ÿ‡ผ', svgFlag: require('../../assets/icons/flags/AW.svg'), }, AX: { - name: (i18n: I18n) => i18n._(msg`ร…land Islands`), code: '+358', unicodeFlag: '๐Ÿ‡ฆ๐Ÿ‡ฝ', svgFlag: require('../../assets/icons/flags/AX.svg'), }, AZ: { - name: (i18n: I18n) => i18n._(msg`Azerbaijan`), code: '+994', unicodeFlag: '๐Ÿ‡ฆ๐Ÿ‡ฟ', svgFlag: require('../../assets/icons/flags/AZ.svg'), }, BA: { - name: (i18n: I18n) => i18n._(msg`Bosnia and Herzegovina`), code: '+387', unicodeFlag: '๐Ÿ‡ง๐Ÿ‡ฆ', svgFlag: require('../../assets/icons/flags/BA.svg'), }, BB: { - name: (i18n: I18n) => i18n._(msg`Barbados`), code: '+1246', unicodeFlag: '๐Ÿ‡ง๐Ÿ‡ง', svgFlag: require('../../assets/icons/flags/BB.svg'), }, BD: { - name: (i18n: I18n) => i18n._(msg`Bangladesh`), code: '+880', unicodeFlag: '๐Ÿ‡ง๐Ÿ‡ฉ', svgFlag: require('../../assets/icons/flags/BD.svg'), }, BE: { - name: (i18n: I18n) => i18n._(msg`Belgium`), code: '+32', unicodeFlag: '๐Ÿ‡ง๐Ÿ‡ช', svgFlag: require('../../assets/icons/flags/BE.svg'), }, BF: { - name: (i18n: I18n) => i18n._(msg`Burkina Faso`), code: '+226', unicodeFlag: '๐Ÿ‡ง๐Ÿ‡ซ', svgFlag: require('../../assets/icons/flags/BF.svg'), }, BG: { - name: (i18n: I18n) => i18n._(msg`Bulgaria`), code: '+359', unicodeFlag: '๐Ÿ‡ง๐Ÿ‡ฌ', svgFlag: require('../../assets/icons/flags/BG.svg'), }, BH: { - name: (i18n: I18n) => i18n._(msg`Bahrain`), code: '+973', unicodeFlag: '๐Ÿ‡ง๐Ÿ‡ญ', svgFlag: require('../../assets/icons/flags/BH.svg'), }, BI: { - name: (i18n: I18n) => i18n._(msg`Burundi`), code: '+257', unicodeFlag: '๐Ÿ‡ง๐Ÿ‡ฎ', svgFlag: require('../../assets/icons/flags/BI.svg'), }, BJ: { - name: (i18n: I18n) => i18n._(msg`Benin`), code: '+229', unicodeFlag: '๐Ÿ‡ง๐Ÿ‡ฏ', svgFlag: require('../../assets/icons/flags/BJ.svg'), }, BL: { - name: (i18n: I18n) => i18n._(msg`Saint Barthรฉlemy`), code: '+590', unicodeFlag: '๐Ÿ‡ง๐Ÿ‡ฑ', svgFlag: require('../../assets/icons/flags/BL.svg'), }, BM: { - name: (i18n: I18n) => i18n._(msg`Bermuda`), code: '+1441', unicodeFlag: '๐Ÿ‡ง๐Ÿ‡ฒ', svgFlag: require('../../assets/icons/flags/BM.svg'), }, BN: { - name: (i18n: I18n) => i18n._(msg`Brunei Darussalam`), code: '+673', unicodeFlag: '๐Ÿ‡ง๐Ÿ‡ณ', svgFlag: require('../../assets/icons/flags/BN.svg'), }, BO: { - name: (i18n: I18n) => i18n._(msg`Bolivia`), code: '+591', unicodeFlag: '๐Ÿ‡ง๐Ÿ‡ด', svgFlag: require('../../assets/icons/flags/BO.svg'), }, BQ: { - name: (i18n: I18n) => i18n._(msg`Bonaire, Sint Eustatius and Saba`), code: '+5997', unicodeFlag: '๐Ÿ‡ง๐Ÿ‡ถ', svgFlag: require('../../assets/icons/flags/BQ.svg'), }, BR: { - name: (i18n: I18n) => i18n._(msg`Brazil`), code: '+55', unicodeFlag: '๐Ÿ‡ง๐Ÿ‡ท', svgFlag: require('../../assets/icons/flags/BR.svg'), }, BT: { - name: (i18n: I18n) => i18n._(msg`Bhutan`), code: '+975', unicodeFlag: '๐Ÿ‡ง๐Ÿ‡น', svgFlag: require('../../assets/icons/flags/BT.svg'), }, BV: { - name: (i18n: I18n) => i18n._(msg`Bouvet Island`), code: '+47', unicodeFlag: '๐Ÿ‡ง๐Ÿ‡ป', svgFlag: require('../../assets/icons/flags/BV.svg'), }, BW: { - name: (i18n: I18n) => i18n._(msg`Botswana`), code: '+267', unicodeFlag: '๐Ÿ‡ง๐Ÿ‡ผ', svgFlag: require('../../assets/icons/flags/BW.svg'), }, BY: { - name: (i18n: I18n) => i18n._(msg`Belarus`), code: '+375', unicodeFlag: '๐Ÿ‡ง๐Ÿ‡พ', svgFlag: require('../../assets/icons/flags/BY.svg'), }, BZ: { - name: (i18n: I18n) => i18n._(msg`Belize`), code: '+501', unicodeFlag: '๐Ÿ‡ง๐Ÿ‡ฟ', svgFlag: require('../../assets/icons/flags/BZ.svg'), }, CA: { - name: (i18n: I18n) => i18n._(msg`Canada`), code: '+1', unicodeFlag: '๐Ÿ‡จ๐Ÿ‡ฆ', svgFlag: require('../../assets/icons/flags/CA.svg'), }, CH: { - name: (i18n: I18n) => i18n._(msg`Switzerland`), code: '+41', unicodeFlag: '๐Ÿ‡จ๐Ÿ‡ญ', svgFlag: require('../../assets/icons/flags/CH.svg'), }, CI: { - name: (i18n: I18n) => i18n._(msg`Cรดte d'Ivoire`), code: '+225', unicodeFlag: '๐Ÿ‡จ๐Ÿ‡ฎ', svgFlag: require('../../assets/icons/flags/CI.svg'), }, CL: { - name: (i18n: I18n) => i18n._(msg`Chile`), code: '+56', unicodeFlag: '๐Ÿ‡จ๐Ÿ‡ฑ', svgFlag: require('../../assets/icons/flags/CL.svg'), }, CM: { - name: (i18n: I18n) => i18n._(msg`Cameroon`), code: '+237', unicodeFlag: '๐Ÿ‡จ๐Ÿ‡ฒ', svgFlag: require('../../assets/icons/flags/CM.svg'), }, CN: { - name: (i18n: I18n) => i18n._(msg`China`), code: '+86', unicodeFlag: '๐Ÿ‡จ๐Ÿ‡ณ', svgFlag: require('../../assets/icons/flags/CN.svg'), }, CO: { - name: (i18n: I18n) => i18n._(msg`Colombia`), code: '+57', unicodeFlag: '๐Ÿ‡จ๐Ÿ‡ด', svgFlag: require('../../assets/icons/flags/CO.svg'), }, CR: { - name: (i18n: I18n) => i18n._(msg`Costa Rica`), code: '+506', unicodeFlag: '๐Ÿ‡จ๐Ÿ‡ท', svgFlag: require('../../assets/icons/flags/CR.svg'), }, CU: { - name: (i18n: I18n) => i18n._(msg`Cuba`), code: '+53', unicodeFlag: '๐Ÿ‡จ๐Ÿ‡บ', svgFlag: require('../../assets/icons/flags/CU.svg'), }, CV: { - name: (i18n: I18n) => i18n._(msg`Cabo Verde`), code: '+238', unicodeFlag: '๐Ÿ‡จ๐Ÿ‡ป', svgFlag: require('../../assets/icons/flags/CV.svg'), }, CW: { - name: (i18n: I18n) => i18n._(msg`Curaรงao`), code: '+599', unicodeFlag: '๐Ÿ‡จ๐Ÿ‡ผ', svgFlag: require('../../assets/icons/flags/CW.svg'), }, CX: { - name: (i18n: I18n) => i18n._(msg`Christmas Island`), code: '+61', unicodeFlag: '๐Ÿ‡จ๐Ÿ‡ฝ', svgFlag: require('../../assets/icons/flags/CX.svg'), }, CY: { - name: (i18n: I18n) => i18n._(msg`Cyprus`), code: '+357', unicodeFlag: '๐Ÿ‡จ๐Ÿ‡พ', svgFlag: require('../../assets/icons/flags/CY.svg'), }, DE: { - name: (i18n: I18n) => i18n._(msg`Germany`), code: '+49', unicodeFlag: '๐Ÿ‡ฉ๐Ÿ‡ช', svgFlag: require('../../assets/icons/flags/DE.svg'), }, DJ: { - name: (i18n: I18n) => i18n._(msg`Djibouti`), code: '+253', unicodeFlag: '๐Ÿ‡ฉ๐Ÿ‡ฏ', svgFlag: require('../../assets/icons/flags/DJ.svg'), }, DK: { - name: (i18n: I18n) => i18n._(msg`Denmark`), code: '+45', unicodeFlag: '๐Ÿ‡ฉ๐Ÿ‡ฐ', svgFlag: require('../../assets/icons/flags/DK.svg'), }, DM: { - name: (i18n: I18n) => i18n._(msg`Dominica`), code: '+767', unicodeFlag: '๐Ÿ‡ฉ๐Ÿ‡ฒ', svgFlag: require('../../assets/icons/flags/DM.svg'), }, DZ: { - name: (i18n: I18n) => i18n._(msg`Algeria`), code: '+213', unicodeFlag: '๐Ÿ‡ฉ๐Ÿ‡ฟ', svgFlag: require('../../assets/icons/flags/DZ.svg'), }, EC: { - name: (i18n: I18n) => i18n._(msg`Ecuador`), code: '+593', unicodeFlag: '๐Ÿ‡ช๐Ÿ‡จ', svgFlag: require('../../assets/icons/flags/EC.svg'), }, EE: { - name: (i18n: I18n) => i18n._(msg`Estonia`), code: '+372', unicodeFlag: '๐Ÿ‡ช๐Ÿ‡ช', svgFlag: require('../../assets/icons/flags/EE.svg'), }, EG: { - name: (i18n: I18n) => i18n._(msg`Egypt`), code: '+20', unicodeFlag: '๐Ÿ‡ช๐Ÿ‡ฌ', svgFlag: require('../../assets/icons/flags/EG.svg'), }, EH: { - name: (i18n: I18n) => i18n._(msg`Western Sahara`), code: '+212', unicodeFlag: '๐Ÿ‡ช๐Ÿ‡ญ', svgFlag: require('../../assets/icons/flags/EH.svg'), }, ER: { - name: (i18n: I18n) => i18n._(msg`Eritrea`), code: '+291', unicodeFlag: '๐Ÿ‡ช๐Ÿ‡ท', svgFlag: require('../../assets/icons/flags/ER.svg'), }, ES: { - name: (i18n: I18n) => i18n._(msg`Spain`), code: '+34', unicodeFlag: '๐Ÿ‡ช๐Ÿ‡ธ', svgFlag: require('../../assets/icons/flags/ES.svg'), }, ET: { - name: (i18n: I18n) => i18n._(msg`Ethiopia`), code: '+251', unicodeFlag: '๐Ÿ‡ช๐Ÿ‡น', svgFlag: require('../../assets/icons/flags/ET.svg'), }, FI: { - name: (i18n: I18n) => i18n._(msg`Finland`), code: '+358', unicodeFlag: '๐Ÿ‡ซ๐Ÿ‡ฎ', svgFlag: require('../../assets/icons/flags/FI.svg'), }, FJ: { - name: (i18n: I18n) => i18n._(msg`Fiji`), code: '+679', unicodeFlag: '๐Ÿ‡ซ๐Ÿ‡ฏ', svgFlag: require('../../assets/icons/flags/FJ.svg'), }, FM: { - name: (i18n: I18n) => i18n._(msg`Micronesia`), code: '+691', unicodeFlag: '๐Ÿ‡ซ๐Ÿ‡ฒ', svgFlag: require('../../assets/icons/flags/FM.svg'), }, FR: { - name: (i18n: I18n) => i18n._(msg`France`), code: '+33', unicodeFlag: '๐Ÿ‡ซ๐Ÿ‡ท', svgFlag: require('../../assets/icons/flags/FR.svg'), }, GA: { - name: (i18n: I18n) => i18n._(msg`Gabon`), code: '+241', unicodeFlag: '๐Ÿ‡ฌ๐Ÿ‡ฆ', svgFlag: require('../../assets/icons/flags/GA.svg'), }, GD: { - name: (i18n: I18n) => i18n._(msg`Grenada`), code: '+1473', unicodeFlag: '๐Ÿ‡ฌ๐Ÿ‡ฉ', svgFlag: require('../../assets/icons/flags/GD.svg'), }, GE: { - name: (i18n: I18n) => i18n._(msg`Georgia`), code: '+995', unicodeFlag: '๐Ÿ‡ฌ๐Ÿ‡ช', svgFlag: require('../../assets/icons/flags/GE.svg'), }, GF: { - name: (i18n: I18n) => i18n._(msg`French Guiana`), code: '+594', unicodeFlag: '๐Ÿ‡ฌ๐Ÿ‡ซ', svgFlag: require('../../assets/icons/flags/GF.svg'), }, GG: { - name: (i18n: I18n) => i18n._(msg`Guernsey`), code: '+44', unicodeFlag: '๐Ÿ‡ฌ๐Ÿ‡ฌ', svgFlag: require('../../assets/icons/flags/GG.svg'), }, GH: { - name: (i18n: I18n) => i18n._(msg`Ghana`), code: '+233', unicodeFlag: '๐Ÿ‡ฌ๐Ÿ‡ญ', svgFlag: require('../../assets/icons/flags/GH.svg'), }, GI: { - name: (i18n: I18n) => i18n._(msg`Gibraltar`), code: '+350', unicodeFlag: '๐Ÿ‡ฌ๐Ÿ‡ฎ', svgFlag: require('../../assets/icons/flags/GI.svg'), }, GL: { - name: (i18n: I18n) => i18n._(msg`Greenland`), code: '+299', unicodeFlag: '๐Ÿ‡ฌ๐Ÿ‡ฑ', svgFlag: require('../../assets/icons/flags/GL.svg'), }, GN: { - name: (i18n: I18n) => i18n._(msg`Guinea`), code: '+224', unicodeFlag: '๐Ÿ‡ฌ๐Ÿ‡ณ', svgFlag: require('../../assets/icons/flags/GN.svg'), }, GP: { - name: (i18n: I18n) => i18n._(msg`Guadeloupe`), code: '+590', unicodeFlag: '๐Ÿ‡ฌ๐Ÿ‡ต', svgFlag: require('../../assets/icons/flags/GP.svg'), }, GQ: { - name: (i18n: I18n) => i18n._(msg`Equatorial Guinea`), code: '+240', unicodeFlag: '๐Ÿ‡ฌ๐Ÿ‡ถ', svgFlag: require('../../assets/icons/flags/GQ.svg'), }, GR: { - name: (i18n: I18n) => i18n._(msg`Greece`), code: '+30', unicodeFlag: '๐Ÿ‡ฌ๐Ÿ‡ท', svgFlag: require('../../assets/icons/flags/GR.svg'), }, GS: { - name: (i18n: I18n) => - i18n._(msg`South Georgia and the South Sandwich Islands`), code: '+500', unicodeFlag: '๐Ÿ‡ฌ๐Ÿ‡ธ', svgFlag: require('../../assets/icons/flags/GS.svg'), }, GT: { - name: (i18n: I18n) => i18n._(msg`Guatemala`), code: '+502', unicodeFlag: '๐Ÿ‡ฌ๐Ÿ‡น', svgFlag: require('../../assets/icons/flags/GT.svg'), }, GU: { - name: (i18n: I18n) => i18n._(msg`Guam`), code: '+1', unicodeFlag: '๐Ÿ‡ฌ๐Ÿ‡บ', svgFlag: require('../../assets/icons/flags/GU.svg'), }, GW: { - name: (i18n: I18n) => i18n._(msg`Guinea-Bissau`), code: '+245', unicodeFlag: '๐Ÿ‡ฌ๐Ÿ‡ผ', svgFlag: require('../../assets/icons/flags/GW.svg'), }, GY: { - name: (i18n: I18n) => i18n._(msg`Guyana`), code: '+592', unicodeFlag: '๐Ÿ‡ฌ๐Ÿ‡พ', svgFlag: require('../../assets/icons/flags/GY.svg'), }, HK: { - name: (i18n: I18n) => i18n._(msg`Hong Kong`), code: '+852', unicodeFlag: '๐Ÿ‡ญ๐Ÿ‡ฐ', svgFlag: require('../../assets/icons/flags/HK.svg'), }, HN: { - name: (i18n: I18n) => i18n._(msg`Honduras`), code: '+504', unicodeFlag: '๐Ÿ‡ญ๐Ÿ‡ณ', svgFlag: require('../../assets/icons/flags/HN.svg'), }, HR: { - name: (i18n: I18n) => i18n._(msg`Croatia`), code: '+385', unicodeFlag: '๐Ÿ‡ญ๐Ÿ‡ท', svgFlag: require('../../assets/icons/flags/HR.svg'), }, HT: { - name: (i18n: I18n) => i18n._(msg`Haiti`), code: '+509', unicodeFlag: '๐Ÿ‡ญ๐Ÿ‡น', svgFlag: require('../../assets/icons/flags/HT.svg'), }, HU: { - name: (i18n: I18n) => i18n._(msg`Hungary`), code: '+36', unicodeFlag: '๐Ÿ‡ญ๐Ÿ‡บ', svgFlag: require('../../assets/icons/flags/HU.svg'), }, ID: { - name: (i18n: I18n) => i18n._(msg`Indonesia`), code: '+62', unicodeFlag: '๐Ÿ‡ฎ๐Ÿ‡ฉ', svgFlag: require('../../assets/icons/flags/ID.svg'), }, IE: { - name: (i18n: I18n) => i18n._(msg`Ireland`), code: '+353', unicodeFlag: '๐Ÿ‡ฎ๐Ÿ‡ช', svgFlag: require('../../assets/icons/flags/IE.svg'), }, IL: { - name: (i18n: I18n) => i18n._(msg`Israel`), code: '+972', unicodeFlag: '๐Ÿ‡ฎ๐Ÿ‡ฑ', svgFlag: require('../../assets/icons/flags/IL.svg'), }, IM: { - name: (i18n: I18n) => i18n._(msg`Isle of Man`), code: '+44', unicodeFlag: '๐Ÿ‡ฎ๐Ÿ‡ฒ', svgFlag: require('../../assets/icons/flags/IM.svg'), }, IN: { - name: (i18n: I18n) => i18n._(msg`India`), code: '+91', unicodeFlag: '๐Ÿ‡ฎ๐Ÿ‡ณ', svgFlag: require('../../assets/icons/flags/IN.svg'), }, IO: { - name: (i18n: I18n) => i18n._(msg`British Indian Ocean Territory`), code: '+246', unicodeFlag: '๐Ÿ‡ฎ๐Ÿ‡ด', svgFlag: require('../../assets/icons/flags/IO.svg'), }, IQ: { - name: (i18n: I18n) => i18n._(msg`Iraq`), code: '+964', unicodeFlag: '๐Ÿ‡ฎ๐Ÿ‡ถ', svgFlag: require('../../assets/icons/flags/IQ.svg'), }, IR: { - name: (i18n: I18n) => i18n._(msg`Iran`), code: '+98', unicodeFlag: '๐Ÿ‡ฎ๐Ÿ‡ท', svgFlag: require('../../assets/icons/flags/IR.svg'), }, IS: { - name: (i18n: I18n) => i18n._(msg`Iceland`), code: '+354', unicodeFlag: '๐Ÿ‡ฎ๐Ÿ‡ธ', svgFlag: require('../../assets/icons/flags/IS.svg'), }, IT: { - name: (i18n: I18n) => i18n._(msg`Italy`), code: '+39', unicodeFlag: '๐Ÿ‡ฎ๐Ÿ‡น', svgFlag: require('../../assets/icons/flags/IT.svg'), }, JE: { - name: (i18n: I18n) => i18n._(msg`Jersey`), code: '+44', unicodeFlag: '๐Ÿ‡ฏ๐Ÿ‡ช', svgFlag: require('../../assets/icons/flags/JE.svg'), }, JM: { - name: (i18n: I18n) => i18n._(msg`Jamaica`), code: '+876', unicodeFlag: '๐Ÿ‡ฏ๐Ÿ‡ฒ', svgFlag: require('../../assets/icons/flags/JM.svg'), }, JO: { - name: (i18n: I18n) => i18n._(msg`Jordan`), code: '+962', unicodeFlag: '๐Ÿ‡ฏ๐Ÿ‡ด', svgFlag: require('../../assets/icons/flags/JO.svg'), }, JP: { - name: (i18n: I18n) => i18n._(msg`Japan`), code: '+81', unicodeFlag: '๐Ÿ‡ฏ๐Ÿ‡ต', svgFlag: require('../../assets/icons/flags/JP.svg'), }, KE: { - name: (i18n: I18n) => i18n._(msg`Kenya`), code: '+254', unicodeFlag: '๐Ÿ‡ฐ๐Ÿ‡ช', svgFlag: require('../../assets/icons/flags/KE.svg'), }, KG: { - name: (i18n: I18n) => i18n._(msg`Kyrgyzstan`), code: '+996', unicodeFlag: '๐Ÿ‡ฐ๐Ÿ‡ฌ', svgFlag: require('../../assets/icons/flags/KG.svg'), }, KH: { - name: (i18n: I18n) => i18n._(msg`Cambodia`), code: '+855', unicodeFlag: '๐Ÿ‡ฐ๐Ÿ‡ญ', svgFlag: require('../../assets/icons/flags/KH.svg'), }, KP: { - name: (i18n: I18n) => i18n._(msg`North Korea`), code: '+850', unicodeFlag: '๐Ÿ‡ฐ๐Ÿ‡ต', svgFlag: require('../../assets/icons/flags/KP.svg'), }, KR: { - name: (i18n: I18n) => i18n._(msg`South Korea`), code: '+82', unicodeFlag: '๐Ÿ‡ฐ๐Ÿ‡ท', svgFlag: require('../../assets/icons/flags/KR.svg'), }, KI: { - name: (i18n: I18n) => i18n._(msg`Kiribati`), code: '+686', unicodeFlag: '๐Ÿ‡ฐ๐Ÿ‡ฎ', svgFlag: require('../../assets/icons/flags/KI.svg'), }, KN: { - name: (i18n: I18n) => i18n._(msg`Saint Kitts and Nevis`), code: '+1869', unicodeFlag: '๐Ÿ‡ฐ๐Ÿ‡ณ', svgFlag: require('../../assets/icons/flags/KN.svg'), }, KW: { - name: (i18n: I18n) => i18n._(msg`Kuwait`), code: '+965', unicodeFlag: '๐Ÿ‡ฐ๐Ÿ‡ผ', svgFlag: require('../../assets/icons/flags/KW.svg'), }, KZ: { - name: (i18n: I18n) => i18n._(msg`Kazakhstan`), code: '+7', unicodeFlag: '๐Ÿ‡ฐ๐Ÿ‡ฟ', svgFlag: require('../../assets/icons/flags/KZ.svg'), }, LB: { - name: (i18n: I18n) => i18n._(msg`Lebanon`), code: '+961', unicodeFlag: '๐Ÿ‡ฑ๐Ÿ‡ง', svgFlag: require('../../assets/icons/flags/LB.svg'), }, LC: { - name: (i18n: I18n) => i18n._(msg`Saint Lucia`), code: '+1758', unicodeFlag: '๐Ÿ‡ฑ๐Ÿ‡จ', svgFlag: require('../../assets/icons/flags/LC.svg'), }, LI: { - name: (i18n: I18n) => i18n._(msg`Liechtenstein`), code: '+423', unicodeFlag: '๐Ÿ‡ฑ๐Ÿ‡ฎ', svgFlag: require('../../assets/icons/flags/LI.svg'), }, LK: { - name: (i18n: I18n) => i18n._(msg`Sri Lanka`), code: '+94', unicodeFlag: '๐Ÿ‡ฑ๐Ÿ‡ฐ', svgFlag: require('../../assets/icons/flags/LK.svg'), }, LR: { - name: (i18n: I18n) => i18n._(msg`Liberia`), code: '+231', unicodeFlag: '๐Ÿ‡ฑ๐Ÿ‡ท', svgFlag: require('../../assets/icons/flags/LR.svg'), }, LS: { - name: (i18n: I18n) => i18n._(msg`Lesotho`), code: '+266', unicodeFlag: '๐Ÿ‡ฑ๐Ÿ‡ธ', svgFlag: require('../../assets/icons/flags/LS.svg'), }, LT: { - name: (i18n: I18n) => i18n._(msg`Lithuania`), code: '+370', unicodeFlag: '๐Ÿ‡ฑ๐Ÿ‡น', svgFlag: require('../../assets/icons/flags/LT.svg'), }, LU: { - name: (i18n: I18n) => i18n._(msg`Luxembourg`), code: '+352', unicodeFlag: '๐Ÿ‡ฑ๐Ÿ‡บ', svgFlag: require('../../assets/icons/flags/LU.svg'), }, LV: { - name: (i18n: I18n) => i18n._(msg`Latvia`), code: '+371', unicodeFlag: '๐Ÿ‡ฑ๐Ÿ‡ป', svgFlag: require('../../assets/icons/flags/LV.svg'), }, LY: { - name: (i18n: I18n) => i18n._(msg`Libya`), code: '+218', unicodeFlag: '๐Ÿ‡ฑ๐Ÿ‡พ', svgFlag: require('../../assets/icons/flags/LY.svg'), }, MA: { - name: (i18n: I18n) => i18n._(msg`Morocco`), code: '+212', unicodeFlag: '๐Ÿ‡ฒ๐Ÿ‡ฆ', svgFlag: require('../../assets/icons/flags/MA.svg'), }, MC: { - name: (i18n: I18n) => i18n._(msg`Monaco`), code: '+377', unicodeFlag: '๐Ÿ‡ฒ๐Ÿ‡จ', svgFlag: require('../../assets/icons/flags/MC.svg'), }, ME: { - name: (i18n: I18n) => i18n._(msg`Montenegro`), code: '+382', unicodeFlag: '๐Ÿ‡ฒ๐Ÿ‡ช', svgFlag: require('../../assets/icons/flags/ME.svg'), }, MF: { - name: (i18n: I18n) => i18n._(msg`Saint Martin (French part)`), code: '+590', unicodeFlag: '๐Ÿ‡ฒ๐Ÿ‡ซ', svgFlag: require('../../assets/icons/flags/MF.svg'), }, MG: { - name: (i18n: I18n) => i18n._(msg`Madagascar`), code: '+261', unicodeFlag: '๐Ÿ‡ฒ๐Ÿ‡ฌ', svgFlag: require('../../assets/icons/flags/MG.svg'), }, ML: { - name: (i18n: I18n) => i18n._(msg`Mali`), code: '+223', unicodeFlag: '๐Ÿ‡ฒ๐Ÿ‡ฑ', svgFlag: require('../../assets/icons/flags/ML.svg'), }, MM: { - name: (i18n: I18n) => i18n._(msg`Myanmar`), code: '+95', unicodeFlag: '๐Ÿ‡ฒ๐Ÿ‡ฒ', svgFlag: require('../../assets/icons/flags/MM.svg'), }, MN: { - name: (i18n: I18n) => i18n._(msg`Mongolia`), code: '+976', unicodeFlag: '๐Ÿ‡ฒ๐Ÿ‡ณ', svgFlag: require('../../assets/icons/flags/MN.svg'), }, MO: { - name: (i18n: I18n) => i18n._(msg`Macao`), code: '+853', unicodeFlag: '๐Ÿ‡ฒ๐Ÿ‡ด', svgFlag: require('../../assets/icons/flags/MO.svg'), }, MQ: { - name: (i18n: I18n) => i18n._(msg`Martinique`), code: '+596', unicodeFlag: '๐Ÿ‡ฒ๐Ÿ‡ถ', svgFlag: require('../../assets/icons/flags/MQ.svg'), }, MR: { - name: (i18n: I18n) => i18n._(msg`Mauritania`), code: '+222', unicodeFlag: '๐Ÿ‡ฒ๐Ÿ‡ท', svgFlag: require('../../assets/icons/flags/MR.svg'), }, MS: { - name: (i18n: I18n) => i18n._(msg`Montserrat`), code: '+1664', unicodeFlag: '๐Ÿ‡ฒ๐Ÿ‡ธ', svgFlag: require('../../assets/icons/flags/MS.svg'), }, MT: { - name: (i18n: I18n) => i18n._(msg`Malta`), code: '+356', unicodeFlag: '๐Ÿ‡ฒ๐Ÿ‡น', svgFlag: require('../../assets/icons/flags/MT.svg'), }, MU: { - name: (i18n: I18n) => i18n._(msg`Mauritius`), code: '+230', unicodeFlag: '๐Ÿ‡ฒ๐Ÿ‡บ', svgFlag: require('../../assets/icons/flags/MU.svg'), }, MV: { - name: (i18n: I18n) => i18n._(msg`Maldives`), code: '+960', unicodeFlag: '๐Ÿ‡ฒ๐Ÿ‡ป', svgFlag: require('../../assets/icons/flags/MV.svg'), }, MW: { - name: (i18n: I18n) => i18n._(msg`Malawi`), code: '+265', unicodeFlag: '๐Ÿ‡ฒ๐Ÿ‡ผ', svgFlag: require('../../assets/icons/flags/MW.svg'), }, MX: { - name: (i18n: I18n) => i18n._(msg`Mexico`), code: '+52', unicodeFlag: '๐Ÿ‡ฒ๐Ÿ‡ฝ', svgFlag: require('../../assets/icons/flags/MX.svg'), }, MY: { - name: (i18n: I18n) => i18n._(msg`Malaysia`), code: '+60', unicodeFlag: '๐Ÿ‡ฒ๐Ÿ‡พ', svgFlag: require('../../assets/icons/flags/MY.svg'), }, MZ: { - name: (i18n: I18n) => i18n._(msg`Mozambique`), code: '+258', unicodeFlag: '๐Ÿ‡ฒ๐Ÿ‡ฟ', svgFlag: require('../../assets/icons/flags/MZ.svg'), }, NA: { - name: (i18n: I18n) => i18n._(msg`Namibia`), code: '+264', unicodeFlag: '๐Ÿ‡ณ๐Ÿ‡ฆ', svgFlag: require('../../assets/icons/flags/NA.svg'), }, NC: { - name: (i18n: I18n) => i18n._(msg`New Caledonia`), code: '+687', unicodeFlag: '๐Ÿ‡ณ๐Ÿ‡จ', svgFlag: require('../../assets/icons/flags/NC.svg'), }, NF: { - name: (i18n: I18n) => i18n._(msg`Norfolk Island`), code: '+672', unicodeFlag: '๐Ÿ‡ณ๐Ÿ‡ซ', svgFlag: require('../../assets/icons/flags/NF.svg'), }, NG: { - name: (i18n: I18n) => i18n._(msg`Nigeria`), code: '+234', unicodeFlag: '๐Ÿ‡ณ๐Ÿ‡ฌ', svgFlag: require('../../assets/icons/flags/NG.svg'), }, NI: { - name: (i18n: I18n) => i18n._(msg`Nicaragua`), code: '+505', unicodeFlag: '๐Ÿ‡ณ๐Ÿ‡ฎ', svgFlag: require('../../assets/icons/flags/NI.svg'), }, NO: { - name: (i18n: I18n) => i18n._(msg`Norway`), code: '+47', unicodeFlag: '๐Ÿ‡ณ๐Ÿ‡ด', svgFlag: require('../../assets/icons/flags/NO.svg'), }, NP: { - name: (i18n: I18n) => i18n._(msg`Nepal`), code: '+977', unicodeFlag: '๐Ÿ‡ณ๐Ÿ‡ต', svgFlag: require('../../assets/icons/flags/NP.svg'), }, NR: { - name: (i18n: I18n) => i18n._(msg`Nauru`), code: '+674', unicodeFlag: '๐Ÿ‡ณ๐Ÿ‡ท', svgFlag: require('../../assets/icons/flags/NR.svg'), }, NU: { - name: (i18n: I18n) => i18n._(msg`Niue`), code: '+683', unicodeFlag: '๐Ÿ‡ณ๐Ÿ‡บ', svgFlag: require('../../assets/icons/flags/NU.svg'), }, NZ: { - name: (i18n: I18n) => i18n._(msg`New Zealand`), code: '+64', unicodeFlag: '๐Ÿ‡ณ๐Ÿ‡ฟ', svgFlag: require('../../assets/icons/flags/NZ.svg'), }, OM: { - name: (i18n: I18n) => i18n._(msg`Oman`), code: '+968', unicodeFlag: '๐Ÿ‡ด๐Ÿ‡ฒ', svgFlag: require('../../assets/icons/flags/OM.svg'), }, PA: { - name: (i18n: I18n) => i18n._(msg`Panama`), code: '+507', unicodeFlag: '๐Ÿ‡ต๐Ÿ‡ฆ', svgFlag: require('../../assets/icons/flags/PA.svg'), }, PE: { - name: (i18n: I18n) => i18n._(msg`Peru`), code: '+51', unicodeFlag: '๐Ÿ‡ต๐Ÿ‡ช', svgFlag: require('../../assets/icons/flags/PE.svg'), }, PF: { - name: (i18n: I18n) => i18n._(msg`French Polynesia`), code: '+689', unicodeFlag: '๐Ÿ‡ต๐Ÿ‡ซ', svgFlag: require('../../assets/icons/flags/PF.svg'), }, PG: { - name: (i18n: I18n) => i18n._(msg`Papua New Guinea`), code: '+675', unicodeFlag: '๐Ÿ‡ต๐Ÿ‡ฌ', svgFlag: require('../../assets/icons/flags/PG.svg'), }, PK: { - name: (i18n: I18n) => i18n._(msg`Pakistan`), code: '+92', unicodeFlag: '๐Ÿ‡ต๐Ÿ‡ฐ', svgFlag: require('../../assets/icons/flags/PK.svg'), }, PL: { - name: (i18n: I18n) => i18n._(msg`Poland`), code: '+48', unicodeFlag: '๐Ÿ‡ต๐Ÿ‡ฑ', svgFlag: require('../../assets/icons/flags/PL.svg'), }, PM: { - name: (i18n: I18n) => i18n._(msg`Saint Pierre and Miquelon`), code: '+508', unicodeFlag: '๐Ÿ‡ต๐Ÿ‡ฒ', svgFlag: require('../../assets/icons/flags/PM.svg'), }, PN: { - name: (i18n: I18n) => i18n._(msg`Pitcairn`), code: '+64', unicodeFlag: '๐Ÿ‡ต๐Ÿ‡ณ', svgFlag: require('../../assets/icons/flags/PN.svg'), }, PR: { - name: (i18n: I18n) => i18n._(msg`Puerto Rico`), code: '+1', unicodeFlag: '๐Ÿ‡ต๐Ÿ‡ท', svgFlag: require('../../assets/icons/flags/PR.svg'), }, PS: { - name: (i18n: I18n) => i18n._(msg`Palestine`), code: '+970', unicodeFlag: '๐Ÿ‡ต๐Ÿ‡ธ', svgFlag: require('../../assets/icons/flags/PS.svg'), }, PT: { - name: (i18n: I18n) => i18n._(msg`Portugal`), code: '+351', unicodeFlag: '๐Ÿ‡ต๐Ÿ‡น', svgFlag: require('../../assets/icons/flags/PT.svg'), }, PW: { - name: (i18n: I18n) => i18n._(msg`Palau`), code: '+680', unicodeFlag: '๐Ÿ‡ต๐Ÿ‡ผ', svgFlag: require('../../assets/icons/flags/PW.svg'), }, PY: { - name: (i18n: I18n) => i18n._(msg`Paraguay`), code: '+595', unicodeFlag: '๐Ÿ‡ต๐Ÿ‡พ', svgFlag: require('../../assets/icons/flags/PY.svg'), }, QA: { - name: (i18n: I18n) => i18n._(msg`Qatar`), code: '+974', unicodeFlag: '๐Ÿ‡ถ๐Ÿ‡ฆ', svgFlag: require('../../assets/icons/flags/QA.svg'), }, RE: { - name: (i18n: I18n) => i18n._(msg`Rรฉunion`), code: '+262', unicodeFlag: '๐Ÿ‡ท๐Ÿ‡ช', svgFlag: require('../../assets/icons/flags/RE.svg'), }, RO: { - name: (i18n: I18n) => i18n._(msg`Romania`), code: '+40', unicodeFlag: '๐Ÿ‡ท๐Ÿ‡ด', svgFlag: require('../../assets/icons/flags/RO.svg'), }, RS: { - name: (i18n: I18n) => i18n._(msg`Serbia`), code: '+381', unicodeFlag: '๐Ÿ‡ท๐Ÿ‡ธ', svgFlag: require('../../assets/icons/flags/RS.svg'), }, RU: { - name: (i18n: I18n) => i18n._(msg`Russia`), code: '+7', unicodeFlag: '๐Ÿ‡ท๐Ÿ‡บ', svgFlag: require('../../assets/icons/flags/RU.svg'), }, RW: { - name: (i18n: I18n) => i18n._(msg`Rwanda`), code: '+250', unicodeFlag: '๐Ÿ‡ท๐Ÿ‡ผ', svgFlag: require('../../assets/icons/flags/RW.svg'), }, SA: { - name: (i18n: I18n) => i18n._(msg`Saudi Arabia`), code: '+966', unicodeFlag: '๐Ÿ‡ธ๐Ÿ‡ฆ', svgFlag: require('../../assets/icons/flags/SA.svg'), }, SB: { - name: (i18n: I18n) => i18n._(msg`Solomon Islands`), code: '+677', unicodeFlag: '๐Ÿ‡ธ๐Ÿ‡ง', svgFlag: require('../../assets/icons/flags/SB.svg'), }, SC: { - name: (i18n: I18n) => i18n._(msg`Seychelles`), code: '+248', unicodeFlag: '๐Ÿ‡ธ๐Ÿ‡จ', svgFlag: require('../../assets/icons/flags/SC.svg'), }, SE: { - name: (i18n: I18n) => i18n._(msg`Sweden`), code: '+46', unicodeFlag: '๐Ÿ‡ธ๐Ÿ‡ช', svgFlag: require('../../assets/icons/flags/SE.svg'), }, SG: { - name: (i18n: I18n) => i18n._(msg`Singapore`), code: '+65', unicodeFlag: '๐Ÿ‡ธ๐Ÿ‡ฌ', svgFlag: require('../../assets/icons/flags/SG.svg'), }, SH: { - name: (i18n: I18n) => - i18n._(msg`Saint Helena, Ascension and Tristan da Cunha`), code: '+290', unicodeFlag: '๐Ÿ‡ธ๐Ÿ‡ญ', svgFlag: require('../../assets/icons/flags/SH.svg'), }, SI: { - name: (i18n: I18n) => i18n._(msg`Slovenia`), code: '+386', unicodeFlag: '๐Ÿ‡ธ๐Ÿ‡ฎ', svgFlag: require('../../assets/icons/flags/SI.svg'), }, SJ: { - name: (i18n: I18n) => i18n._(msg`Svalbard and Jan Mayen`), code: '+4779', unicodeFlag: '๐Ÿ‡ธ๐Ÿ‡ฏ', svgFlag: require('../../assets/icons/flags/SJ.svg'), }, SK: { - name: (i18n: I18n) => i18n._(msg`Slovakia`), code: '+421', unicodeFlag: '๐Ÿ‡ธ๐Ÿ‡ฐ', svgFlag: require('../../assets/icons/flags/SK.svg'), }, SL: { - name: (i18n: I18n) => i18n._(msg`Sierra Leone`), code: '+232', unicodeFlag: '๐Ÿ‡ธ๐Ÿ‡ฑ', svgFlag: require('../../assets/icons/flags/SL.svg'), }, SM: { - name: (i18n: I18n) => i18n._(msg`Republic of San Marino`), code: '+378', unicodeFlag: '๐Ÿ‡ธ๐Ÿ‡ฒ', svgFlag: require('../../assets/icons/flags/SM.svg'), }, SN: { - name: (i18n: I18n) => i18n._(msg`Senegal`), code: '+221', unicodeFlag: '๐Ÿ‡ธ๐Ÿ‡ณ', svgFlag: require('../../assets/icons/flags/SN.svg'), }, SO: { - name: (i18n: I18n) => i18n._(msg`Somalia`), code: '+252', unicodeFlag: '๐Ÿ‡ธ๐Ÿ‡ด', svgFlag: require('../../assets/icons/flags/SO.svg'), }, SR: { - name: (i18n: I18n) => i18n._(msg`Suriname`), code: '+597', unicodeFlag: '๐Ÿ‡ธ๐Ÿ‡ท', svgFlag: require('../../assets/icons/flags/SR.svg'), }, SS: { - name: (i18n: I18n) => i18n._(msg`South Sudan`), code: '+211', unicodeFlag: '๐Ÿ‡ธ๐Ÿ‡ธ', svgFlag: require('../../assets/icons/flags/SS.svg'), }, ST: { - name: (i18n: I18n) => i18n._(msg`Sao Tome and Principe`), code: '+239', unicodeFlag: '๐Ÿ‡ธ๐Ÿ‡น', svgFlag: require('../../assets/icons/flags/ST.svg'), }, SV: { - name: (i18n: I18n) => i18n._(msg`El Salvador`), code: '+503', unicodeFlag: '๐Ÿ‡ธ๐Ÿ‡ป', svgFlag: require('../../assets/icons/flags/SV.svg'), }, SX: { - name: (i18n: I18n) => i18n._(msg`Sint Maarten (Dutch part)`), code: '+1721', unicodeFlag: '๐Ÿ‡ธ๐Ÿ‡ฝ', svgFlag: require('../../assets/icons/flags/SX.svg'), }, SY: { - name: (i18n: I18n) => i18n._(msg`Syrian Arab Republic`), code: '+963', unicodeFlag: '๐Ÿ‡ธ๐Ÿ‡พ', svgFlag: require('../../assets/icons/flags/SY.svg'), }, TD: { - name: (i18n: I18n) => i18n._(msg`Chad`), code: '+235', unicodeFlag: '๐Ÿ‡น๐Ÿ‡ฉ', svgFlag: require('../../assets/icons/flags/TD.svg'), }, TG: { - name: (i18n: I18n) => i18n._(msg`Togo`), code: '+228', unicodeFlag: '๐Ÿ‡น๐Ÿ‡ฌ', svgFlag: require('../../assets/icons/flags/TG.svg'), }, TH: { - name: (i18n: I18n) => i18n._(msg`Thailand`), code: '+66', unicodeFlag: '๐Ÿ‡น๐Ÿ‡ญ', svgFlag: require('../../assets/icons/flags/TH.svg'), }, TJ: { - name: (i18n: I18n) => i18n._(msg`Tajikistan`), code: '+992', unicodeFlag: '๐Ÿ‡น๐Ÿ‡ฏ', svgFlag: require('../../assets/icons/flags/TJ.svg'), }, TK: { - name: (i18n: I18n) => i18n._(msg`Tokelau`), code: '+690', unicodeFlag: '๐Ÿ‡น๐Ÿ‡ฐ', svgFlag: require('../../assets/icons/flags/TK.svg'), }, TL: { - name: (i18n: I18n) => i18n._(msg`Timor-Leste`), code: '+670', unicodeFlag: '๐Ÿ‡น๐Ÿ‡ฑ', svgFlag: require('../../assets/icons/flags/TL.svg'), }, TM: { - name: (i18n: I18n) => i18n._(msg`Turkmenistan`), code: '+993', unicodeFlag: '๐Ÿ‡น๐Ÿ‡ฒ', svgFlag: require('../../assets/icons/flags/TM.svg'), }, TN: { - name: (i18n: I18n) => i18n._(msg`Tunisia`), code: '+216', unicodeFlag: '๐Ÿ‡น๐Ÿ‡ณ', svgFlag: require('../../assets/icons/flags/TN.svg'), }, TO: { - name: (i18n: I18n) => i18n._(msg`Tonga`), code: '+676', unicodeFlag: '๐Ÿ‡น๐Ÿ‡ด', svgFlag: require('../../assets/icons/flags/TO.svg'), }, TR: { - name: (i18n: I18n) => i18n._(msg`Turkey`), code: '+90', unicodeFlag: '๐Ÿ‡น๐Ÿ‡ท', svgFlag: require('../../assets/icons/flags/TR.svg'), }, TT: { - name: (i18n: I18n) => i18n._(msg`Trinidad and Tobago`), code: '+868', unicodeFlag: '๐Ÿ‡น๐Ÿ‡น', svgFlag: require('../../assets/icons/flags/TT.svg'), }, TV: { - name: (i18n: I18n) => i18n._(msg`Tuvalu`), code: '+688', unicodeFlag: '๐Ÿ‡น๐Ÿ‡ป', svgFlag: require('../../assets/icons/flags/TV.svg'), }, TZ: { - name: (i18n: I18n) => i18n._(msg`United Republic of Tanzania`), code: '+255', unicodeFlag: '๐Ÿ‡น๐Ÿ‡ฟ', svgFlag: require('../../assets/icons/flags/TZ.svg'), }, UA: { - name: (i18n: I18n) => i18n._(msg`Ukraine`), code: '+380', unicodeFlag: '๐Ÿ‡บ๐Ÿ‡ฆ', svgFlag: require('../../assets/icons/flags/UA.svg'), }, UG: { - name: (i18n: I18n) => i18n._(msg`Uganda`), code: '+256', unicodeFlag: '๐Ÿ‡บ๐Ÿ‡ฌ', svgFlag: require('../../assets/icons/flags/UG.svg'), }, US: { - name: (i18n: I18n) => i18n._(msg`United States of America`), code: '+1', unicodeFlag: '๐Ÿ‡บ๐Ÿ‡ธ', svgFlag: require('../../assets/icons/flags/US.svg'), }, UY: { - name: (i18n: I18n) => i18n._(msg`Uruguay`), code: '+598', unicodeFlag: '๐Ÿ‡บ๐Ÿ‡พ', svgFlag: require('../../assets/icons/flags/UY.svg'), }, UZ: { - name: (i18n: I18n) => i18n._(msg`Uzbekistan`), code: '+998', unicodeFlag: '๐Ÿ‡บ๐Ÿ‡ฟ', svgFlag: require('../../assets/icons/flags/UZ.svg'), }, VC: { - name: (i18n: I18n) => i18n._(msg`Saint Vincent and the Grenadines`), code: '+1784', unicodeFlag: '๐Ÿ‡ป๐Ÿ‡จ', svgFlag: require('../../assets/icons/flags/VC.svg'), }, VE: { - name: (i18n: I18n) => i18n._(msg`Venezuela`), code: '+58', unicodeFlag: '๐Ÿ‡ป๐Ÿ‡ช', svgFlag: require('../../assets/icons/flags/VE.svg'), }, VG: { - name: (i18n: I18n) => i18n._(msg`Virgin Islands (British)`), code: '+1284', unicodeFlag: '๐Ÿ‡ป๐Ÿ‡ฌ', svgFlag: require('../../assets/icons/flags/VG.svg'), }, VI: { - name: (i18n: I18n) => i18n._(msg`Virgin Islands (U.S.)`), code: '+1340', unicodeFlag: '๐Ÿ‡ป๐Ÿ‡ฎ', svgFlag: require('../../assets/icons/flags/VI.svg'), }, VN: { - name: (i18n: I18n) => i18n._(msg`Vietnam`), code: '+84', unicodeFlag: '๐Ÿ‡ป๐Ÿ‡ณ', svgFlag: require('../../assets/icons/flags/VN.svg'), }, VU: { - name: (i18n: I18n) => i18n._(msg`Vanuatu`), code: '+678', unicodeFlag: '๐Ÿ‡ป๐Ÿ‡บ', svgFlag: require('../../assets/icons/flags/VU.svg'), }, WF: { - name: (i18n: I18n) => i18n._(msg`Wallis and Futuna`), code: '+681', unicodeFlag: '๐Ÿ‡ผ๐Ÿ‡ซ', svgFlag: require('../../assets/icons/flags/WF.svg'), }, WS: { - name: (i18n: I18n) => i18n._(msg`Samoa`), code: '+685', unicodeFlag: '๐Ÿ‡ผ๐Ÿ‡ธ', svgFlag: require('../../assets/icons/flags/WS.svg'), }, YE: { - name: (i18n: I18n) => i18n._(msg`Yemen`), code: '+967', unicodeFlag: '๐Ÿ‡พ๐Ÿ‡ช', svgFlag: require('../../assets/icons/flags/YE.svg'), }, YT: { - name: (i18n: I18n) => i18n._(msg`Mayotte`), code: '+262', unicodeFlag: '๐Ÿ‡พ๐Ÿ‡น', svgFlag: require('../../assets/icons/flags/YT.svg'), }, ZA: { - name: (i18n: I18n) => i18n._(msg`South Africa`), code: '+27', unicodeFlag: '๐Ÿ‡ฟ๐Ÿ‡ฆ', svgFlag: require('../../assets/icons/flags/ZA.svg'), }, ZM: { - name: (i18n: I18n) => i18n._(msg`Zambia`), code: '+260', unicodeFlag: '๐Ÿ‡ฟ๐Ÿ‡ฒ', svgFlag: require('../../assets/icons/flags/ZM.svg'), }, ZW: { - name: (i18n: I18n) => i18n._(msg`Zimbabwe`), code: '+263', unicodeFlag: '๐Ÿ‡ฟ๐Ÿ‡ผ', svgFlag: require('../../assets/icons/flags/ZW.svg'), }, SZ: { - name: (i18n: I18n) => i18n._(msg`Eswatini`), code: '+268', unicodeFlag: '๐Ÿ‡ธ๐Ÿ‡ฟ', svgFlag: require('../../assets/icons/flags/SZ.svg'), }, MK: { - name: (i18n: I18n) => i18n._(msg`North Macedonia`), code: '+389', unicodeFlag: '๐Ÿ‡ฒ๐Ÿ‡ฐ', svgFlag: require('../../assets/icons/flags/MK.svg'), }, PH: { - name: (i18n: I18n) => i18n._(msg`Philippines`), code: '+63', unicodeFlag: '๐Ÿ‡ต๐Ÿ‡ญ', svgFlag: require('../../assets/icons/flags/PH.svg'), }, NL: { - name: (i18n: I18n) => i18n._(msg`Netherlands`), code: '+31', unicodeFlag: '๐Ÿ‡ณ๐Ÿ‡ฑ', svgFlag: require('../../assets/icons/flags/NL.svg'), }, AE: { - name: (i18n: I18n) => i18n._(msg`United Arab Emirates`), code: '+971', unicodeFlag: '๐Ÿ‡ฆ๐Ÿ‡ช', svgFlag: require('../../assets/icons/flags/AE.svg'), }, MD: { - name: (i18n: I18n) => i18n._(msg`Republic of Moldova`), code: '+373', unicodeFlag: '๐Ÿ‡ฒ๐Ÿ‡ฉ', svgFlag: require('../../assets/icons/flags/MD.svg'), }, GM: { - name: (i18n: I18n) => i18n._(msg`Gambia`), code: '+220', unicodeFlag: '๐Ÿ‡ฌ๐Ÿ‡ฒ', svgFlag: require('../../assets/icons/flags/GM.svg'), }, DO: { - name: (i18n: I18n) => i18n._(msg`Dominican Republic`), code: '+1', unicodeFlag: '๐Ÿ‡ฉ๐Ÿ‡ด', svgFlag: require('../../assets/icons/flags/DO.svg'), }, SD: { - name: (i18n: I18n) => i18n._(msg`Sudan`), code: '+249', unicodeFlag: '๐Ÿ‡ธ๐Ÿ‡ฉ', svgFlag: require('../../assets/icons/flags/SD.svg'), }, LA: { - name: (i18n: I18n) => i18n._(msg`Lao People's Democratic Republic`), code: '+856', unicodeFlag: '๐Ÿ‡ฑ๐Ÿ‡ฆ', svgFlag: require('../../assets/icons/flags/LA.svg'), }, TW: { - name: (i18n: I18n) => i18n._(msg`Taiwan`), code: '+886', unicodeFlag: '๐Ÿ‡น๐Ÿ‡ผ', svgFlag: require('../../assets/icons/flags/TW.svg'), }, CG: { - name: (i18n: I18n) => i18n._(msg`Republic of the Congo`), code: '+242', unicodeFlag: '๐Ÿ‡จ๐Ÿ‡ฌ', svgFlag: require('../../assets/icons/flags/CG.svg'), }, CZ: { - name: (i18n: I18n) => i18n._(msg`Czechia`), code: '+420', unicodeFlag: '๐Ÿ‡จ๐Ÿ‡ฟ', svgFlag: require('../../assets/icons/flags/CZ.svg'), }, GB: { - name: (i18n: I18n) => i18n._(msg`United Kingdom`), code: '+44', unicodeFlag: '๐Ÿ‡ฌ๐Ÿ‡ง', svgFlag: require('../../assets/icons/flags/GB.svg'), }, NE: { - name: (i18n: I18n) => i18n._(msg`Niger`), code: '+227', unicodeFlag: '๐Ÿ‡ณ๐Ÿ‡ช', svgFlag: require('../../assets/icons/flags/NE.svg'), }, CD: { - name: (i18n: I18n) => i18n._(msg`Democratic Republic of the Congo`), code: '+243', unicodeFlag: '๐Ÿ‡จ๐Ÿ‡ฉ', svgFlag: require('../../assets/icons/flags/CD.svg'), }, BS: { - name: (i18n: I18n) => i18n._(msg`The Bahamas`), code: '+1 242', unicodeFlag: '๐Ÿ‡ง๐Ÿ‡ธ', svgFlag: require('../../assets/icons/flags/BS.svg'), }, CC: { - name: (i18n: I18n) => i18n._(msg`Cocos (Keeling) Islands`), code: '+61 891', unicodeFlag: '๐Ÿ‡จ๐Ÿ‡จ', svgFlag: require('../../assets/icons/flags/CC.svg'), }, CF: { - name: (i18n: I18n) => i18n._(msg`Central African Republic`), code: '+236', unicodeFlag: '๐Ÿ‡จ๐Ÿ‡ซ', svgFlag: require('../../assets/icons/flags/CF.svg'), }, CK: { - name: (i18n: I18n) => i18n._(msg`Cook Islands`), code: '+682', unicodeFlag: '๐Ÿ‡จ๐Ÿ‡ฐ', svgFlag: require('../../assets/icons/flags/CK.svg'), }, FK: { - name: (i18n: I18n) => i18n._(msg`Falkland Islands`), code: '+500', unicodeFlag: '๐Ÿ‡ซ๐Ÿ‡ฐ', svgFlag: require('../../assets/icons/flags/FK.svg'), }, FO: { - name: (i18n: I18n) => i18n._(msg`Faroe Islands`), code: '+298', unicodeFlag: '๐Ÿ‡ซ๐Ÿ‡ด', svgFlag: require('../../assets/icons/flags/FO.svg'), }, HM: { - name: (i18n: I18n) => i18n._(msg`Heard Island and McDonald Islands`), code: '+672', unicodeFlag: '๐Ÿ‡ญ๐Ÿ‡ฒ', svgFlag: require('../../assets/icons/flags/HM.svg'), }, KM: { - name: (i18n: I18n) => i18n._(msg`Comoros`), code: '+269', unicodeFlag: '๐Ÿ‡ฐ๐Ÿ‡ฒ', svgFlag: require('../../assets/icons/flags/KM.svg'), }, KY: { - name: (i18n: I18n) => i18n._(msg`Cayman Islands`), code: '+1 345', unicodeFlag: '๐Ÿ‡ฐ๐Ÿ‡พ', svgFlag: require('../../assets/icons/flags/KY.svg'), }, MH: { - name: (i18n: I18n) => i18n._(msg`Marshall Islands`), code: '+692', unicodeFlag: '๐Ÿ‡ฒ๐Ÿ‡ญ', svgFlag: require('../../assets/icons/flags/MH.svg'), }, MP: { - name: (i18n: I18n) => i18n._(msg`Northern Mariana Islands`), code: '+1 670', unicodeFlag: '๐Ÿ‡ฒ๐Ÿ‡ต', svgFlag: require('../../assets/icons/flags/MP.svg'), }, TC: { - name: (i18n: I18n) => i18n._(msg`Turks and Caicos Islands`), code: '+1 649', unicodeFlag: '๐Ÿ‡น๐Ÿ‡จ', svgFlag: require('../../assets/icons/flags/TC.svg'), }, TF: { - name: (i18n: I18n) => i18n._(msg`French Southern and Antarctic Lands`), code: '+672', unicodeFlag: '๐Ÿ‡น๐Ÿ‡ซ', svgFlag: require('../../assets/icons/flags/TF.svg'), }, UM: { - name: (i18n: I18n) => i18n._(msg`United States Minor Outlying Islands`), code: '+1', unicodeFlag: '๐Ÿ‡บ๐Ÿ‡ฒ', svgFlag: require('../../assets/icons/flags/UM.svg'), }, VA: { - name: (i18n: I18n) => i18n._(msg`Holy See`), code: '+39', unicodeFlag: '๐Ÿ‡ป๐Ÿ‡ฆ', svgFlag: require('../../assets/icons/flags/VA.svg'), }, XK: { - name: (i18n: I18n) => i18n._(msg`Kosovo`), code: '+383', unicodeFlag: '๐Ÿ‡ฝ๐Ÿ‡ฐ', svgFlag: require('../../assets/icons/flags/XK.svg'), diff --git a/src/locale/helpers.ts b/src/locale/helpers.ts index f7c8d31609..9c1b669ca1 100644 --- a/src/locale/helpers.ts +++ b/src/locale/helpers.ts @@ -57,7 +57,7 @@ function getLocalizedLanguage( export function languageName(language: Language, appLang: string): string { // if Intl.DisplayNames is unavailable on the target, display the English name - if (!(Intl as any).DisplayNames) { + if (!Intl.DisplayNames) { return language.name } @@ -279,3 +279,44 @@ export function findSupportedAppLanguage(languageTags: (string | undefined)[]) { } return AppLanguage.en } + +/** + * Gets region name for a given country code and language. + * + * Falls back to English if unavailable/error, and if that fails, returns the country code. + * + * Intl.DisplayNames is widely available + has been polyfilled on native + */ +export function regionName(countryCode: string, appLang: string): string { + const translatedName = getLocalizedRegionName(countryCode, appLang) + + if (translatedName) { + return translatedName + } + + // Fallback: get English name. Needed for i.e. Esperanto + const englishName = getLocalizedRegionName(countryCode, 'en') + if (englishName) { + return englishName + } + + // Final fallback: return country code + return countryCode +} + +function getLocalizedRegionName( + countryCode: string, + appLang: string, +): string | undefined { + try { + const allNames = new Intl.DisplayNames([appLang], { + type: 'region', + fallback: 'none', + }) + + return allNames.of(countryCode) + } catch (err) { + console.warn('Error getting localized region name:', err) + return undefined + } +} diff --git a/src/locale/i18n.ts b/src/locale/i18n.ts index c5e03f5370..39b6e231af 100644 --- a/src/locale/i18n.ts +++ b/src/locale/i18n.ts @@ -3,8 +3,10 @@ import '@formatjs/intl-locale/polyfill-force' import '@formatjs/intl-pluralrules/polyfill-force' import '@formatjs/intl-numberformat/polyfill-force' +import '@formatjs/intl-displaynames/polyfill-force' import '@formatjs/intl-pluralrules/locale-data/en' import '@formatjs/intl-numberformat/locale-data/en' +import '@formatjs/intl-displaynames/locale-data/en' import {useEffect} from 'react' import {i18n} from '@lingui/core' @@ -64,6 +66,7 @@ export async function dynamicActivate(locale: AppLanguage) { await Promise.all([ import('@formatjs/intl-pluralrules/locale-data/an'), import('@formatjs/intl-numberformat/locale-data/es'), + import('@formatjs/intl-displaynames/locale-data/es'), ]) break } @@ -72,6 +75,7 @@ export async function dynamicActivate(locale: AppLanguage) { await Promise.all([ import('@formatjs/intl-pluralrules/locale-data/ast'), import('@formatjs/intl-numberformat/locale-data/ast'), + import('@formatjs/intl-displaynames/locale-data/ast'), ]) break } @@ -80,6 +84,7 @@ export async function dynamicActivate(locale: AppLanguage) { await Promise.all([ import('@formatjs/intl-pluralrules/locale-data/ca'), import('@formatjs/intl-numberformat/locale-data/ca'), + import('@formatjs/intl-displaynames/locale-data/ca'), ]) break } @@ -88,6 +93,7 @@ export async function dynamicActivate(locale: AppLanguage) { await Promise.all([ import('@formatjs/intl-pluralrules/locale-data/cy'), import('@formatjs/intl-numberformat/locale-data/cy'), + import('@formatjs/intl-displaynames/locale-data/cy'), ]) break } @@ -96,6 +102,7 @@ export async function dynamicActivate(locale: AppLanguage) { await Promise.all([ import('@formatjs/intl-pluralrules/locale-data/da'), import('@formatjs/intl-numberformat/locale-data/da'), + import('@formatjs/intl-displaynames/locale-data/da'), ]) break } @@ -104,6 +111,7 @@ export async function dynamicActivate(locale: AppLanguage) { await Promise.all([ import('@formatjs/intl-pluralrules/locale-data/de'), import('@formatjs/intl-numberformat/locale-data/de'), + import('@formatjs/intl-displaynames/locale-data/de'), ]) break } @@ -112,6 +120,7 @@ export async function dynamicActivate(locale: AppLanguage) { await Promise.all([ import('@formatjs/intl-pluralrules/locale-data/el'), import('@formatjs/intl-numberformat/locale-data/el'), + import('@formatjs/intl-displaynames/locale-data/el'), ]) break } @@ -120,6 +129,7 @@ export async function dynamicActivate(locale: AppLanguage) { await Promise.all([ import('@formatjs/intl-pluralrules/locale-data/en'), import('@formatjs/intl-numberformat/locale-data/en-GB'), + import('@formatjs/intl-displaynames/locale-data/en-GB'), ]) break } @@ -128,6 +138,7 @@ export async function dynamicActivate(locale: AppLanguage) { await Promise.all([ import('@formatjs/intl-pluralrules/locale-data/eo'), import('@formatjs/intl-numberformat/locale-data/eo'), + import('@formatjs/intl-displaynames/locale-data/eo'), ]) break } @@ -136,6 +147,7 @@ export async function dynamicActivate(locale: AppLanguage) { await Promise.all([ import('@formatjs/intl-pluralrules/locale-data/es'), import('@formatjs/intl-numberformat/locale-data/es'), + import('@formatjs/intl-displaynames/locale-data/es'), ]) break } @@ -144,6 +156,7 @@ export async function dynamicActivate(locale: AppLanguage) { await Promise.all([ import('@formatjs/intl-pluralrules/locale-data/eu'), import('@formatjs/intl-numberformat/locale-data/eu'), + import('@formatjs/intl-displaynames/locale-data/eu'), ]) break } @@ -152,6 +165,7 @@ export async function dynamicActivate(locale: AppLanguage) { await Promise.all([ import('@formatjs/intl-pluralrules/locale-data/fi'), import('@formatjs/intl-numberformat/locale-data/fi'), + import('@formatjs/intl-displaynames/locale-data/fi'), ]) break } @@ -160,6 +174,7 @@ export async function dynamicActivate(locale: AppLanguage) { await Promise.all([ import('@formatjs/intl-pluralrules/locale-data/fr'), import('@formatjs/intl-numberformat/locale-data/fr'), + import('@formatjs/intl-displaynames/locale-data/fr'), ]) break } @@ -168,6 +183,7 @@ export async function dynamicActivate(locale: AppLanguage) { await Promise.all([ import('@formatjs/intl-pluralrules/locale-data/fy'), import('@formatjs/intl-numberformat/locale-data/fy'), + import('@formatjs/intl-displaynames/locale-data/fy'), ]) break } @@ -176,6 +192,7 @@ export async function dynamicActivate(locale: AppLanguage) { await Promise.all([ import('@formatjs/intl-pluralrules/locale-data/ga'), import('@formatjs/intl-numberformat/locale-data/ga'), + import('@formatjs/intl-displaynames/locale-data/ga'), ]) break } @@ -184,6 +201,7 @@ export async function dynamicActivate(locale: AppLanguage) { await Promise.all([ import('@formatjs/intl-pluralrules/locale-data/gd'), import('@formatjs/intl-numberformat/locale-data/gd'), + import('@formatjs/intl-displaynames/locale-data/gd'), ]) break } @@ -192,6 +210,7 @@ export async function dynamicActivate(locale: AppLanguage) { await Promise.all([ import('@formatjs/intl-pluralrules/locale-data/gl'), import('@formatjs/intl-numberformat/locale-data/gl'), + import('@formatjs/intl-displaynames/locale-data/gl'), ]) break } @@ -200,6 +219,7 @@ export async function dynamicActivate(locale: AppLanguage) { await Promise.all([ import('@formatjs/intl-pluralrules/locale-data/hi'), import('@formatjs/intl-numberformat/locale-data/hi'), + import('@formatjs/intl-displaynames/locale-data/hi'), ]) break } @@ -208,6 +228,7 @@ export async function dynamicActivate(locale: AppLanguage) { await Promise.all([ import('@formatjs/intl-pluralrules/locale-data/hu'), import('@formatjs/intl-numberformat/locale-data/hu'), + import('@formatjs/intl-displaynames/locale-data/hu'), ]) break } @@ -216,6 +237,7 @@ export async function dynamicActivate(locale: AppLanguage) { await Promise.all([ import('@formatjs/intl-pluralrules/locale-data/ia'), import('@formatjs/intl-numberformat/locale-data/ia'), + import('@formatjs/intl-displaynames/locale-data/ia'), ]) break } @@ -224,6 +246,7 @@ export async function dynamicActivate(locale: AppLanguage) { await Promise.all([ import('@formatjs/intl-pluralrules/locale-data/id'), import('@formatjs/intl-numberformat/locale-data/id'), + import('@formatjs/intl-displaynames/locale-data/id'), ]) break } @@ -232,6 +255,7 @@ export async function dynamicActivate(locale: AppLanguage) { await Promise.all([ import('@formatjs/intl-pluralrules/locale-data/it'), import('@formatjs/intl-numberformat/locale-data/it'), + import('@formatjs/intl-displaynames/locale-data/it'), ]) break } @@ -240,6 +264,7 @@ export async function dynamicActivate(locale: AppLanguage) { await Promise.all([ import('@formatjs/intl-pluralrules/locale-data/ja'), import('@formatjs/intl-numberformat/locale-data/ja'), + import('@formatjs/intl-displaynames/locale-data/ja'), ]) break } @@ -248,6 +273,7 @@ export async function dynamicActivate(locale: AppLanguage) { await Promise.all([ import('@formatjs/intl-pluralrules/locale-data/km'), import('@formatjs/intl-numberformat/locale-data/km'), + import('@formatjs/intl-displaynames/locale-data/km'), ]) break } @@ -256,11 +282,17 @@ export async function dynamicActivate(locale: AppLanguage) { await Promise.all([ import('@formatjs/intl-pluralrules/locale-data/ko'), import('@formatjs/intl-numberformat/locale-data/ko'), + import('@formatjs/intl-displaynames/locale-data/ko'), ]) break } case AppLanguage.ne: { i18n.loadAndActivate({locale, messages: messagesNe}) + await Promise.all([ + import('@formatjs/intl-pluralrules/locale-data/ne'), + import('@formatjs/intl-numberformat/locale-data/ne'), + import('@formatjs/intl-displaynames/locale-data/ne'), + ]) break } case AppLanguage.nl: { @@ -268,6 +300,7 @@ export async function dynamicActivate(locale: AppLanguage) { await Promise.all([ import('@formatjs/intl-pluralrules/locale-data/nl'), import('@formatjs/intl-numberformat/locale-data/nl'), + import('@formatjs/intl-displaynames/locale-data/nl'), ]) break } @@ -276,6 +309,7 @@ export async function dynamicActivate(locale: AppLanguage) { await Promise.all([ import('@formatjs/intl-pluralrules/locale-data/pl'), import('@formatjs/intl-numberformat/locale-data/pl'), + import('@formatjs/intl-displaynames/locale-data/pl'), ]) break } @@ -284,6 +318,7 @@ export async function dynamicActivate(locale: AppLanguage) { await Promise.all([ import('@formatjs/intl-pluralrules/locale-data/pt'), import('@formatjs/intl-numberformat/locale-data/pt'), + import('@formatjs/intl-displaynames/locale-data/pt'), ]) break } @@ -292,6 +327,7 @@ export async function dynamicActivate(locale: AppLanguage) { await Promise.all([ import('@formatjs/intl-pluralrules/locale-data/pt-PT'), import('@formatjs/intl-numberformat/locale-data/pt-PT'), + import('@formatjs/intl-displaynames/locale-data/pt-PT'), ]) break } @@ -300,6 +336,7 @@ export async function dynamicActivate(locale: AppLanguage) { await Promise.all([ import('@formatjs/intl-pluralrules/locale-data/ro'), import('@formatjs/intl-numberformat/locale-data/ro'), + import('@formatjs/intl-displaynames/locale-data/ro'), ]) break } @@ -308,6 +345,7 @@ export async function dynamicActivate(locale: AppLanguage) { await Promise.all([ import('@formatjs/intl-pluralrules/locale-data/ru'), import('@formatjs/intl-numberformat/locale-data/ru'), + import('@formatjs/intl-displaynames/locale-data/ru'), ]) break } @@ -316,6 +354,7 @@ export async function dynamicActivate(locale: AppLanguage) { await Promise.all([ import('@formatjs/intl-pluralrules/locale-data/sv'), import('@formatjs/intl-numberformat/locale-data/sv'), + import('@formatjs/intl-displaynames/locale-data/sv'), ]) break } @@ -324,6 +363,7 @@ export async function dynamicActivate(locale: AppLanguage) { await Promise.all([ import('@formatjs/intl-pluralrules/locale-data/th'), import('@formatjs/intl-numberformat/locale-data/th'), + import('@formatjs/intl-displaynames/locale-data/th'), ]) break } @@ -332,6 +372,7 @@ export async function dynamicActivate(locale: AppLanguage) { await Promise.all([ import('@formatjs/intl-pluralrules/locale-data/tr'), import('@formatjs/intl-numberformat/locale-data/tr'), + import('@formatjs/intl-displaynames/locale-data/tr'), ]) break } @@ -340,6 +381,7 @@ export async function dynamicActivate(locale: AppLanguage) { await Promise.all([ import('@formatjs/intl-pluralrules/locale-data/uk'), import('@formatjs/intl-numberformat/locale-data/uk'), + import('@formatjs/intl-displaynames/locale-data/uk'), ]) break } @@ -348,6 +390,7 @@ export async function dynamicActivate(locale: AppLanguage) { await Promise.all([ import('@formatjs/intl-pluralrules/locale-data/vi'), import('@formatjs/intl-numberformat/locale-data/vi'), + import('@formatjs/intl-displaynames/locale-data/vi'), ]) break } @@ -356,6 +399,7 @@ export async function dynamicActivate(locale: AppLanguage) { await Promise.all([ import('@formatjs/intl-pluralrules/locale-data/zh'), import('@formatjs/intl-numberformat/locale-data/zh'), + import('@formatjs/intl-displaynames/locale-data/zh'), ]) break } @@ -364,6 +408,7 @@ export async function dynamicActivate(locale: AppLanguage) { await Promise.all([ import('@formatjs/intl-pluralrules/locale-data/zh'), import('@formatjs/intl-numberformat/locale-data/zh'), + import('@formatjs/intl-displaynames/locale-data/zh'), ]) break } @@ -372,6 +417,7 @@ export async function dynamicActivate(locale: AppLanguage) { await Promise.all([ import('@formatjs/intl-pluralrules/locale-data/zh'), import('@formatjs/intl-numberformat/locale-data/zh'), + import('@formatjs/intl-displaynames/locale-data/zh'), ]) break } diff --git a/yarn.lock b/yarn.lock index 747859356e..d8e84c06a8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4551,74 +4551,83 @@ resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.2.1.tgz#16308cea045f0fc777b6ff20a9f25474dd8293d2" integrity sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q== -"@formatjs/ecma402-abstract@2.3.1": - version "2.3.1" - resolved "https://registry.yarnpkg.com/@formatjs/ecma402-abstract/-/ecma402-abstract-2.3.1.tgz#cdeb3ffe1aeea9c4284b85b7e37e8e8615314c39" - integrity sha512-Ip9uV+/MpLXWRk03U/GzeJMuPeOXpJBSB5V1tjA6kJhvqssye5J5LoYLc7Z5IAHb7nR62sRoguzrFiVCP/hnzw== +"@formatjs/ecma402-abstract@2.3.6": + version "2.3.6" + resolved "https://registry.yarnpkg.com/@formatjs/ecma402-abstract/-/ecma402-abstract-2.3.6.tgz#d6ca9d3579054fe1e1a0a0b5e872e0d64922e4e1" + integrity sha512-HJnTFeRM2kVFVr5gr5kH1XP6K0JcJtE7Lzvtr3FS/so5f1kpsqqqxy5JF+FRaO6H2qmcMfAUIox7AJteieRtVw== dependencies: - "@formatjs/fast-memoize" "2.2.5" - "@formatjs/intl-localematcher" "0.5.9" - decimal.js "10" - tslib "2" + "@formatjs/fast-memoize" "2.2.7" + "@formatjs/intl-localematcher" "0.6.2" + decimal.js "^10.4.3" + tslib "^2.8.0" -"@formatjs/fast-memoize@2.2.5": - version "2.2.5" - resolved "https://registry.yarnpkg.com/@formatjs/fast-memoize/-/fast-memoize-2.2.5.tgz#54a4a1793d773b72c372d3dcab3595149aee7880" - integrity sha512-6PoewUMrrcqxSoBXAOJDiW1m+AmkrAj0RiXnOMD59GRaswjXhm3MDhgepXPBgonc09oSirAJTsAggzAGQf6A6g== +"@formatjs/fast-memoize@2.2.7": + version "2.2.7" + resolved "https://registry.yarnpkg.com/@formatjs/fast-memoize/-/fast-memoize-2.2.7.tgz#707f9ddaeb522a32f6715bb7950b0831f4cc7b15" + integrity sha512-Yabmi9nSvyOMrlSeGGWDiH7rf3a7sIwplbvo/dlz9WCIjzIQAfy1RMf4S0X3yG724n5Ghu2GmEl5NJIV6O9sZQ== dependencies: - tslib "2" + tslib "^2.8.0" -"@formatjs/intl-enumerator@1.8.7": - version "1.8.7" - resolved "https://registry.yarnpkg.com/@formatjs/intl-enumerator/-/intl-enumerator-1.8.7.tgz#3f004753333f80cc468ae34046bd8416772a0412" - integrity sha512-qd7UlWUivKRJ073btssUqMSqzWW9yN3Ki6EqfCZ6uvIv19mONelE5q3GMmdPWBEjgqZikBzBE2qPTqfrgJ4TCA== +"@formatjs/intl-displaynames@^6.8.13": + version "6.8.13" + resolved "https://registry.yarnpkg.com/@formatjs/intl-displaynames/-/intl-displaynames-6.8.13.tgz#5e85980b40fbaa0b81e504608e33db6e16a3891e" + integrity sha512-VbY7BdYJX5eURVKLk2grndUQtnbCLNbcJId/Sb/PsX7fWXiqWvg7qt/mecVHRzqoSEoGCQToKDxzpJj8RC0s3g== dependencies: - "@formatjs/ecma402-abstract" "2.3.1" - tslib "2" + "@formatjs/ecma402-abstract" "2.3.6" + "@formatjs/intl-localematcher" "0.6.2" + tslib "^2.8.0" -"@formatjs/intl-getcanonicallocales@2.5.4": - version "2.5.4" - resolved "https://registry.yarnpkg.com/@formatjs/intl-getcanonicallocales/-/intl-getcanonicallocales-2.5.4.tgz#9b843e1891dea83405c51eb3d00c42ef9cb6cab9" - integrity sha512-vSDOsAcc3U+Kl/0b3de8wCQkb3W30H8LUuslyz67wTAHOPSQhPimZyquhwxXpJR+K5yy9CkzTgk5YE5kFT+PFg== +"@formatjs/intl-enumerator@1.8.12": + version "1.8.12" + resolved "https://registry.yarnpkg.com/@formatjs/intl-enumerator/-/intl-enumerator-1.8.12.tgz#8c94a9bff855fb942a95a4c93b5bdeb1a8f54007" + integrity sha512-rT2hnyQ0q6RDG1jISMH+MP6wlHQLUC81C0BeYEzabJb48S4tU2HGCPUxsOqMa3vDAUmpnz9Kw5vYTD5hTkOVgg== dependencies: - tslib "2" + "@formatjs/ecma402-abstract" "2.3.6" + tslib "^2.8.0" -"@formatjs/intl-locale@^4.2.8": - version "4.2.8" - resolved "https://registry.yarnpkg.com/@formatjs/intl-locale/-/intl-locale-4.2.8.tgz#571d44e92b6eb43b7410b37f25e280ec384a32cf" - integrity sha512-6RY/npeA0kyoZ8QW0JRAT+VBAFBT6+4ZVeGkKCNIDjbLX2LPuU73emGR35Mbwcc6pquVFrxyo6mXxKNzib0kEA== +"@formatjs/intl-getcanonicallocales@2.5.6": + version "2.5.6" + resolved "https://registry.yarnpkg.com/@formatjs/intl-getcanonicallocales/-/intl-getcanonicallocales-2.5.6.tgz#d4a8e13dad31f83c142746b423462dcbdf839503" + integrity sha512-CnBbc4St61RL06gDXlCZG08Gt41uiySgsdZNBExh8/c0FBONJCrAlQ9FsyalUdq9ze0nCeknJtMmO8JnB9xHgQ== dependencies: - "@formatjs/ecma402-abstract" "2.3.1" - "@formatjs/intl-enumerator" "1.8.7" - "@formatjs/intl-getcanonicallocales" "2.5.4" - tslib "2" + tslib "^2.8.0" -"@formatjs/intl-localematcher@0.5.9": - version "0.5.9" - resolved "https://registry.yarnpkg.com/@formatjs/intl-localematcher/-/intl-localematcher-0.5.9.tgz#43c6ee22be85b83340bcb09bdfed53657a2720db" - integrity sha512-8zkGu/sv5euxbjfZ/xmklqLyDGQSxsLqg8XOq88JW3cmJtzhCP8EtSJXlaKZnVO4beEaoiT9wj4eIoCQ9smwxA== +"@formatjs/intl-locale@^4.2.13": + version "4.2.13" + resolved "https://registry.yarnpkg.com/@formatjs/intl-locale/-/intl-locale-4.2.13.tgz#21d4b54ee03b75a7b7384a122510be7ee080a9c5" + integrity sha512-Qcs0mP9JhEPCinPfpZ5JKzOa+VYDg94TQSFZozYuqG8R+hEGUTKyoyMqB5xi5QZT/hlB0CSgeNc/0fWMGtTFXA== dependencies: - tslib "2" + "@formatjs/ecma402-abstract" "2.3.6" + "@formatjs/intl-enumerator" "1.8.12" + "@formatjs/intl-getcanonicallocales" "2.5.6" + tslib "^2.8.0" -"@formatjs/intl-numberformat@^8.15.1": - version "8.15.1" - resolved "https://registry.yarnpkg.com/@formatjs/intl-numberformat/-/intl-numberformat-8.15.1.tgz#b2a5b00889ed31dbef9d4e5aeee1dea3d040b068" - integrity sha512-NIouSY50xpH/SMJrRbX1Q3hMsGyQmT5MQrta/bOYhpZda1bztOlEYZAKLytk8VGs10wkGz875602mCMhtg4/LA== +"@formatjs/intl-localematcher@0.6.2": + version "0.6.2" + resolved "https://registry.yarnpkg.com/@formatjs/intl-localematcher/-/intl-localematcher-0.6.2.tgz#e9ebe0b4082d7d48e5b2d753579fb7ece4eaefea" + integrity sha512-XOMO2Hupl0wdd172Y06h6kLpBz6Dv+J4okPLl4LPtzbr8f66WbIoy4ev98EBuZ6ZK4h5ydTN6XneT4QVpD7cdA== dependencies: - "@formatjs/ecma402-abstract" "2.3.1" - "@formatjs/intl-localematcher" "0.5.9" - decimal.js "10" - tslib "2" + tslib "^2.8.0" -"@formatjs/intl-pluralrules@^5.4.1": - version "5.4.1" - resolved "https://registry.yarnpkg.com/@formatjs/intl-pluralrules/-/intl-pluralrules-5.4.1.tgz#1c03cd2da449e1871bb7c54ea36fec1de68b7e7e" - integrity sha512-kKK4ixTsfKAzyJIVRiJGuw4zd18nEHXiKloYBO9VmLpxrwJTgLQHv2+1hcbxQcwbbo2uc8moUFQuyvxeGEFOfw== +"@formatjs/intl-numberformat@^8.15.6": + version "8.15.6" + resolved "https://registry.yarnpkg.com/@formatjs/intl-numberformat/-/intl-numberformat-8.15.6.tgz#baf3a00e97887366eddfb4b9782830e06b96883f" + integrity sha512-htynTNKm5WOnbR521tNSMkWzX3yO6Z77qjOxvRujh5/A/UBKeoNElyuKCJltizdx3X33QNWQZC4aWjLKcccyeQ== dependencies: - "@formatjs/ecma402-abstract" "2.3.1" - "@formatjs/intl-localematcher" "0.5.9" - decimal.js "10" - tslib "2" + "@formatjs/ecma402-abstract" "2.3.6" + "@formatjs/intl-localematcher" "0.6.2" + decimal.js "^10.4.3" + tslib "^2.8.0" + +"@formatjs/intl-pluralrules@^5.4.6": + version "5.4.6" + resolved "https://registry.yarnpkg.com/@formatjs/intl-pluralrules/-/intl-pluralrules-5.4.6.tgz#4bd73c4e87974265a7962b6caf0d146e3310f3ad" + integrity sha512-2HlOq+c7KsSps829SJ3B5987coX5mzKx9NbPcNwQ07eq8FBHgB3HfMoxt5HvLsdk4oQwCjAEnocbtd+wVwZ2Kg== + dependencies: + "@formatjs/ecma402-abstract" "2.3.6" + "@formatjs/intl-localematcher" "0.6.2" + decimal.js "^10.4.3" + tslib "^2.8.0" "@fortawesome/fontawesome-common-types@6.4.2": version "6.4.2" @@ -10096,11 +10105,16 @@ decamelize@^1.2.0: resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== -decimal.js@10, decimal.js@^10.4.2: +decimal.js@^10.4.2: version "10.4.3" resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.4.3.tgz#1044092884d245d1b7f65725fa4ad4c6f781cc23" integrity sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA== +decimal.js@^10.4.3: + version "10.6.0" + resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.6.0.tgz#e649a43e3ab953a72192ff5983865e509f37ed9a" + integrity sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg== + decode-uri-component@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9" @@ -19064,11 +19078,6 @@ tsconfig-paths@^3.15.0: minimist "^1.2.6" strip-bom "^3.0.0" -tslib@2, tslib@^2.6.2, tslib@^2.8.1: - version "2.8.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" - integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== - tslib@^1.8.1, tslib@^1.9.0: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" @@ -19079,6 +19088,11 @@ tslib@^2.0.0, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.4.0, tslib@^2.5.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== +tslib@^2.6.2, tslib@^2.8.0, tslib@^2.8.1: + version "2.8.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" + integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== + tsutils@^3.21.0: version "3.21.0" resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623"