Skip to main content
Glama
Flag.tsx17.8 kB
import { type Locale, Locales } from '@intlayer/types'; import { type FC, type ImgHTMLAttributes, type JSX, lazy, Suspense, } from 'react'; type FlagProps = ImgHTMLAttributes<HTMLImageElement> & { locale: Locale; }; // This ensures React.lazy always receives a valid component, // regardless of how your bundler loads SVGs. const dynamicFlag = (importFn: () => Promise<any>) => lazy(async () => { const module = await importFn(); const asset = module.default; // Case A: Bundler returns a URL string (e.g. file-loader) // We wrap it in a simple img component if (typeof asset === 'string') { return { default: (props: any) => <img src={asset} alt="flag" {...props} />, }; } // Case B: Bundler returns a React Component (SVGR) // We return it as-is return { default: asset }; }); const flagRecord: Partial<Record<Locale, ReturnType<typeof dynamicFlag>>> = { [Locales.ENGLISH]: dynamicFlag(() => import('./us.svg')), [Locales.FRENCH]: dynamicFlag(() => import('./fr.svg')), [Locales.SPANISH]: dynamicFlag(() => import('./es.svg')), [Locales.PORTUGUESE]: dynamicFlag(() => import('./pt.svg')), [Locales.GERMAN]: dynamicFlag(() => import('./de.svg')), [Locales.AFRIKAANS]: dynamicFlag(() => import('./za.svg')), [Locales.ARABIC]: dynamicFlag(() => import('./sa.svg')), [Locales.AZERI_LATIN]: dynamicFlag(() => import('./az.svg')), [Locales.BELARUSIAN]: dynamicFlag(() => import('./by.svg')), [Locales.BULGARIAN]: dynamicFlag(() => import('./bg.svg')), [Locales.BOSNIAN]: dynamicFlag(() => import('./ba.svg')), [Locales.CATALAN]: dynamicFlag(() => import('./es-ct.svg')), [Locales.CZECH]: dynamicFlag(() => import('./cz.svg')), [Locales.WELSH]: dynamicFlag(() => import('./gb-wls.svg')), [Locales.DANISH]: dynamicFlag(() => import('./dk.svg')), [Locales.DIVEHI]: dynamicFlag(() => import('./mv.svg')), [Locales.GREEK]: dynamicFlag(() => import('./gr.svg')), [Locales.ESPERANTO]: dynamicFlag(() => import('./xx.svg')), // No specific flag [Locales.ESTONIAN]: dynamicFlag(() => import('./ee.svg')), [Locales.BASQUE]: dynamicFlag(() => import('./es-pv.svg')), [Locales.FARSI]: dynamicFlag(() => import('./ir.svg')), [Locales.FINNISH]: dynamicFlag(() => import('./fi.svg')), [Locales.FAROESE]: dynamicFlag(() => import('./fo.svg')), [Locales.GALICIAN]: dynamicFlag(() => import('./es-ga.svg')), [Locales.GUJARATI]: dynamicFlag(() => import('./in.svg')), [Locales.HEBREW]: dynamicFlag(() => import('./il.svg')), [Locales.HINDI]: dynamicFlag(() => import('./in.svg')), [Locales.CROATIAN]: dynamicFlag(() => import('./hr.svg')), [Locales.HUNGARIAN]: dynamicFlag(() => import('./hu.svg')), [Locales.ARMENIAN]: dynamicFlag(() => import('./am.svg')), [Locales.INDONESIAN]: dynamicFlag(() => import('./id.svg')), [Locales.ICELANDIC]: dynamicFlag(() => import('./is.svg')), [Locales.ITALIAN]: dynamicFlag(() => import('./it.svg')), [Locales.JAPANESE]: dynamicFlag(() => import('./jp.svg')), [Locales.GEORGIAN]: dynamicFlag(() => import('./ge.svg')), [Locales.KAZAKH]: dynamicFlag(() => import('./kz.svg')), [Locales.KANNADA]: dynamicFlag(() => import('./in.svg')), [Locales.KOREAN]: dynamicFlag(() => import('./kr.svg')), [Locales.KONKANI]: dynamicFlag(() => import('./in.svg')), [Locales.KYRGYZ]: dynamicFlag(() => import('./kg.svg')), [Locales.LITHUANIAN]: dynamicFlag(() => import('./lt.svg')), [Locales.LATVIAN]: dynamicFlag(() => import('./lv.svg')), [Locales.MAORI]: dynamicFlag(() => import('./nz.svg')), [Locales.FYRO_MACEDONIAN]: dynamicFlag(() => import('./mk.svg')), [Locales.MONGOLIAN]: dynamicFlag(() => import('./mn.svg')), [Locales.MARATHI]: dynamicFlag(() => import('./in.svg')), [Locales.MALAY]: dynamicFlag(() => import('./my.svg')), [Locales.MALTESE]: dynamicFlag(() => import('./mt.svg')), [Locales.NORWEGIAN_BOKMAL]: dynamicFlag(() => import('./no.svg')), [Locales.DUTCH]: dynamicFlag(() => import('./nl.svg')), [Locales.NORTHERN_SOTHO]: dynamicFlag(() => import('./za.svg')), [Locales.PUNJABI]: dynamicFlag(() => import('./in.svg')), [Locales.POLISH]: dynamicFlag(() => import('./pl.svg')), [Locales.PASHTO]: dynamicFlag(() => import('./af.svg')), [Locales.QUECHUA]: dynamicFlag(() => import('./pe.svg')), [Locales.ROMANIAN]: dynamicFlag(() => import('./ro.svg')), [Locales.RUSSIAN]: dynamicFlag(() => import('./ru.svg')), [Locales.SANSKRIT]: dynamicFlag(() => import('./in.svg')), [Locales.SAMI_NORTHERN]: dynamicFlag(() => import('./no.svg')), // No specific flag, assuming Norway [Locales.SLOVAK]: dynamicFlag(() => import('./sk.svg')), [Locales.SLOVENIAN]: dynamicFlag(() => import('./si.svg')), [Locales.ALBANIAN]: dynamicFlag(() => import('./al.svg')), [Locales.SERBIAN_LATIN]: dynamicFlag(() => import('./rs.svg')), [Locales.SWEDISH]: dynamicFlag(() => import('./se.svg')), [Locales.SWEDISH_FINLAND]: dynamicFlag(() => import('./fi.svg')), [Locales.SWEDISH_SWEDEN]: dynamicFlag(() => import('./se.svg')), [Locales.SWAHILI]: dynamicFlag(() => import('./ke.svg')), [Locales.SYRIAC]: dynamicFlag(() => import('./sy.svg')), [Locales.TAMIL]: dynamicFlag(() => import('./in.svg')), [Locales.TELUGU]: dynamicFlag(() => import('./in.svg')), [Locales.THAI]: dynamicFlag(() => import('./th.svg')), [Locales.TAGALOG]: dynamicFlag(() => import('./ph.svg')), [Locales.TSWANA]: dynamicFlag(() => import('./za.svg')), [Locales.TURKISH]: dynamicFlag(() => import('./tr.svg')), [Locales.TATAR]: dynamicFlag(() => import('./ru.svg')), // Assuming Russian Federation [Locales.UKRAINIAN]: dynamicFlag(() => import('./ua.svg')), [Locales.URDU]: dynamicFlag(() => import('./pk.svg')), [Locales.UZBEK_LATIN]: dynamicFlag(() => import('./uz.svg')), [Locales.VIETNAMESE]: dynamicFlag(() => import('./vn.svg')), [Locales.XHOSA]: dynamicFlag(() => import('./za.svg')), [Locales.CHINESE_SIMPLIFIED]: dynamicFlag(() => import('./cn.svg')), [Locales.CHINESE_TRADITIONAL]: dynamicFlag(() => import('./tw.svg')), [Locales.ZULU]: dynamicFlag(() => import('./za.svg')), [Locales.AFRIKAANS_SOUTH_AFRICA]: dynamicFlag(() => import('./za.svg')), [Locales.ARABIC_UNITED_ARAB_EMIRATES]: dynamicFlag(() => import('./ae.svg')), [Locales.ARABIC_BAHRAIN]: dynamicFlag(() => import('./bh.svg')), [Locales.ARABIC_ALGERIA]: dynamicFlag(() => import('./dz.svg')), [Locales.ARABIC_EGYPT]: dynamicFlag(() => import('./eg.svg')), [Locales.ARABIC_IRAQ]: dynamicFlag(() => import('./iq.svg')), [Locales.ARABIC_JORDAN]: dynamicFlag(() => import('./jo.svg')), [Locales.ARABIC_KUWAIT]: dynamicFlag(() => import('./kw.svg')), [Locales.ARABIC_LEBANON]: dynamicFlag(() => import('./lb.svg')), [Locales.ARABIC_LIBYA]: dynamicFlag(() => import('./ly.svg')), [Locales.ARABIC_MOROCCO]: dynamicFlag(() => import('./ma.svg')), [Locales.ARABIC_OMAN]: dynamicFlag(() => import('./om.svg')), [Locales.ARABIC_QATAR]: dynamicFlag(() => import('./qa.svg')), [Locales.ARABIC_SAUDI_ARABIA]: dynamicFlag(() => import('./sa.svg')), [Locales.ARABIC_SYRIA]: dynamicFlag(() => import('./sy.svg')), [Locales.ARABIC_TUNISIA]: dynamicFlag(() => import('./tn.svg')), [Locales.ARABIC_YEMEN]: dynamicFlag(() => import('./ye.svg')), [Locales.AZERI_LATIN_AZERBAIJAN]: dynamicFlag(() => import('./az.svg')), [Locales.BELARUSIAN_BELARUS]: dynamicFlag(() => import('./by.svg')), [Locales.BULGARIAN_BULGARIA]: dynamicFlag(() => import('./bg.svg')), [Locales.BOSNIAN_BOSNIA_AND_HERZEGOVINA]: dynamicFlag( () => import('./ba.svg') ), [Locales.CATALAN_SPAIN]: dynamicFlag(() => import('./es-ct.svg')), [Locales.CZECH_CZECH_REPUBLIC]: dynamicFlag(() => import('./cz.svg')), [Locales.WELSH_UNITED_KINGDOM]: dynamicFlag(() => import('./gb-wls.svg')), [Locales.DANISH_DENMARK]: dynamicFlag(() => import('./dk.svg')), [Locales.GERMAN_AUSTRIA]: dynamicFlag(() => import('./at.svg')), [Locales.GERMAN_SWITZERLAND]: dynamicFlag(() => import('./ch.svg')), [Locales.GERMAN_GERMANY]: dynamicFlag(() => import('./de.svg')), [Locales.GERMAN_LIECHTENSTEIN]: dynamicFlag(() => import('./li.svg')), [Locales.GERMAN_LUXEMBOURG]: dynamicFlag(() => import('./lu.svg')), [Locales.DIVEHI_MALDIVES]: dynamicFlag(() => import('./mv.svg')), [Locales.GREEK_GREECE]: dynamicFlag(() => import('./gr.svg')), [Locales.ENGLISH_AUSTRALIA]: dynamicFlag(() => import('./au.svg')), [Locales.ENGLISH_BELIZE]: dynamicFlag(() => import('./bz.svg')), [Locales.ENGLISH_CANADA]: dynamicFlag(() => import('./ca.svg')), [Locales.ENGLISH_CARIBBEAN]: dynamicFlag(() => import('./xx.svg')), // No specific flag [Locales.ENGLISH_UNITED_KINGDOM]: dynamicFlag(() => import('./gb.svg')), [Locales.ENGLISH_IRELAND]: dynamicFlag(() => import('./ie.svg')), [Locales.ENGLISH_JAMAICA]: dynamicFlag(() => import('./jm.svg')), [Locales.ENGLISH_NEW_ZEALAND]: dynamicFlag(() => import('./nz.svg')), [Locales.ENGLISH_PHILIPPINES]: dynamicFlag(() => import('./ph.svg')), [Locales.ENGLISH_TRINIDAD_AND_TOBAGO]: dynamicFlag(() => import('./tt.svg')), [Locales.ENGLISH_UNITED_STATES]: dynamicFlag(() => import('./us.svg')), [Locales.ENGLISH_SOUTH_AFRICA]: dynamicFlag(() => import('./za.svg')), [Locales.ENGLISH_ZIMBABWE]: dynamicFlag(() => import('./zw.svg')), [Locales.SPANISH_ARGENTINA]: dynamicFlag(() => import('./ar.svg')), [Locales.SPANISH_BOLIVIA]: dynamicFlag(() => import('./bo.svg')), [Locales.SPANISH_CHILE]: dynamicFlag(() => import('./cl.svg')), [Locales.SPANISH_COLOMBIA]: dynamicFlag(() => import('./co.svg')), [Locales.SPANISH_COSTA_RICA]: dynamicFlag(() => import('./cr.svg')), [Locales.SPANISH_DOMINICAN_REPUBLIC]: dynamicFlag(() => import('./do.svg')), [Locales.SPANISH_ECUADOR]: dynamicFlag(() => import('./ec.svg')), [Locales.SPANISH_SPAIN]: dynamicFlag(() => import('./es.svg')), [Locales.SPANISH_GUATEMALA]: dynamicFlag(() => import('./gt.svg')), [Locales.SPANISH_HONDURAS]: dynamicFlag(() => import('./hn.svg')), [Locales.SPANISH_MEXICO]: dynamicFlag(() => import('./mx.svg')), [Locales.SPANISH_NICARAGUA]: dynamicFlag(() => import('./ni.svg')), [Locales.SPANISH_PANAMA]: dynamicFlag(() => import('./pa.svg')), [Locales.SPANISH_PERU]: dynamicFlag(() => import('./pe.svg')), [Locales.SPANISH_PUERTO_RICO]: dynamicFlag(() => import('./pr.svg')), [Locales.SPANISH_PARAGUAY]: dynamicFlag(() => import('./py.svg')), [Locales.SPANISH_EL_SALVADOR]: dynamicFlag(() => import('./sv.svg')), [Locales.SPANISH_URUGUAY]: dynamicFlag(() => import('./uy.svg')), [Locales.SPANISH_VENEZUELA]: dynamicFlag(() => import('./ve.svg')), [Locales.ESTONIAN_ESTONIA]: dynamicFlag(() => import('./ee.svg')), [Locales.BASQUE_SPAIN]: dynamicFlag(() => import('./es-pv.svg')), [Locales.FARSI_IRAN]: dynamicFlag(() => import('./ir.svg')), [Locales.FINNISH_FINLAND]: dynamicFlag(() => import('./fi.svg')), [Locales.FAROESE_FAROE_ISLANDS]: dynamicFlag(() => import('./fo.svg')), [Locales.FRENCH_BELGIUM]: dynamicFlag(() => import('./be.svg')), [Locales.FRENCH_CANADA]: dynamicFlag(() => import('./ca.svg')), [Locales.FRENCH_SWITZERLAND]: dynamicFlag(() => import('./ch.svg')), [Locales.FRENCH_FRANCE]: dynamicFlag(() => import('./fr.svg')), [Locales.FRENCH_LUXEMBOURG]: dynamicFlag(() => import('./lu.svg')), [Locales.FRENCH_PRINCIPALITY_OF_MONACO]: dynamicFlag( () => import('./mc.svg') ), [Locales.GALICIAN_SPAIN]: dynamicFlag(() => import('./es-ga.svg')), [Locales.GUJARATI_INDIA]: dynamicFlag(() => import('./in.svg')), [Locales.HEBREW_ISRAEL]: dynamicFlag(() => import('./il.svg')), [Locales.HINDI_INDIA]: dynamicFlag(() => import('./in.svg')), [Locales.CROATIAN_BOSNIA_AND_HERZEGOVINA]: dynamicFlag( () => import('./ba.svg') ), [Locales.CROATIAN_CROATIA]: dynamicFlag(() => import('./hr.svg')), [Locales.HUNGARIAN_HUNGARY]: dynamicFlag(() => import('./hu.svg')), [Locales.ARMENIAN_ARMENIA]: dynamicFlag(() => import('./am.svg')), [Locales.INDONESIAN_INDONESIA]: dynamicFlag(() => import('./id.svg')), [Locales.ICELANDIC_ICELAND]: dynamicFlag(() => import('./is.svg')), [Locales.ITALIAN_SWITZERLAND]: dynamicFlag(() => import('./ch.svg')), [Locales.ITALIAN_ITALY]: dynamicFlag(() => import('./it.svg')), [Locales.JAPANESE_JAPAN]: dynamicFlag(() => import('./jp.svg')), [Locales.GEORGIAN_GEORGIA]: dynamicFlag(() => import('./ge.svg')), [Locales.KAZAKH_KAZAKHSTAN]: dynamicFlag(() => import('./kz.svg')), [Locales.KANNADA_INDIA]: dynamicFlag(() => import('./in.svg')), [Locales.KOREAN_KOREA]: dynamicFlag(() => import('./kr.svg')), [Locales.KONKANI_INDIA]: dynamicFlag(() => import('./in.svg')), [Locales.KYRGYZ_KYRGYZSTAN]: dynamicFlag(() => import('./kg.svg')), [Locales.LITHUANIAN_LITHUANIA]: dynamicFlag(() => import('./lt.svg')), [Locales.LATVIAN_LATVIA]: dynamicFlag(() => import('./lv.svg')), [Locales.MAORI_NEW_ZEALAND]: dynamicFlag(() => import('./nz.svg')), [Locales.FYRO_MACEDONIAN_MACEDONIA]: dynamicFlag(() => import('./mk.svg')), [Locales.MONGOLIAN_MONGOLIA]: dynamicFlag(() => import('./mn.svg')), [Locales.MARATHI_INDIA]: dynamicFlag(() => import('./in.svg')), [Locales.MALAY_BRUNEI_DARUSSALAM]: dynamicFlag(() => import('./bn.svg')), [Locales.MALAY_MALAYSIA]: dynamicFlag(() => import('./my.svg')), [Locales.MALTESE_MALTA]: dynamicFlag(() => import('./mt.svg')), [Locales.NORWEGIAN_BOKMAL_NORWAY]: dynamicFlag(() => import('./no.svg')), [Locales.DUTCH_BELGIUM]: dynamicFlag(() => import('./be.svg')), [Locales.DUTCH_NETHERLANDS]: dynamicFlag(() => import('./nl.svg')), [Locales.NORWEGIAN_NYNORSK_NORWAY]: dynamicFlag(() => import('./no.svg')), [Locales.NORTHERN_SOTHO_SOUTH_AFRICA]: dynamicFlag(() => import('./za.svg')), [Locales.PUNJABI_INDIA]: dynamicFlag(() => import('./in.svg')), [Locales.POLISH_POLAND]: dynamicFlag(() => import('./pl.svg')), [Locales.PASHTO_AFGHANISTAN]: dynamicFlag(() => import('./af.svg')), [Locales.PORTUGUESE_BRAZIL]: dynamicFlag(() => import('./br.svg')), [Locales.PORTUGUESE_PORTUGAL]: dynamicFlag(() => import('./pt.svg')), [Locales.QUECHUA_BOLIVIA]: dynamicFlag(() => import('./bo.svg')), [Locales.QUECHUA_ECUADOR]: dynamicFlag(() => import('./ec.svg')), [Locales.QUECHUA_PERU]: dynamicFlag(() => import('./pe.svg')), [Locales.ROMANIAN_ROMANIA]: dynamicFlag(() => import('./ro.svg')), [Locales.RUSSIAN_RUSSIA]: dynamicFlag(() => import('./ru.svg')), [Locales.SANSKRIT_INDIA]: dynamicFlag(() => import('./in.svg')), [Locales.SAMI_NORTHERN_FINLAND]: dynamicFlag(() => import('./fi.svg')), [Locales.SAMI_NORTHERN_NORWAY]: dynamicFlag(() => import('./no.svg')), [Locales.SAMI_NORTHERN_SWEDEN]: dynamicFlag(() => import('./se.svg')), [Locales.SLOVAK_SLOVAKIA]: dynamicFlag(() => import('./sk.svg')), [Locales.SLOVENIAN_SLOVENIA]: dynamicFlag(() => import('./si.svg')), [Locales.ALBANIAN_ALBANIA]: dynamicFlag(() => import('./al.svg')), [Locales.SERBIAN_LATIN_BOSNIA_AND_HERZEGOVINA]: dynamicFlag( () => import('./ba.svg') ), [Locales.SERBIAN_LATIN_SERBIA_AND_MONTENEGRO]: dynamicFlag( () => import('./rs.svg') ), [Locales.SWAHILI_KENYA]: dynamicFlag(() => import('./ke.svg')), [Locales.SYRIAC_SYRIA]: dynamicFlag(() => import('./sy.svg')), [Locales.TAMIL_INDIA]: dynamicFlag(() => import('./in.svg')), [Locales.TELUGU_INDIA]: dynamicFlag(() => import('./in.svg')), [Locales.THAI_THAILAND]: dynamicFlag(() => import('./th.svg')), [Locales.TAGALOG_PHILIPPINES]: dynamicFlag(() => import('./ph.svg')), [Locales.TSWANA_SOUTH_AFRICA]: dynamicFlag(() => import('./za.svg')), [Locales.TURKISH_TURKEY]: dynamicFlag(() => import('./tr.svg')), [Locales.TATAR_RUSSIA]: dynamicFlag(() => import('./ru.svg')), [Locales.TSOGA]: dynamicFlag(() => import('./xx.svg')), // No specific flag [Locales.UKRAINIAN_UKRAINE]: dynamicFlag(() => import('./ua.svg')), [Locales.URDU_ISLAMIC_REPUBLIC_OF_PAKISTAN]: dynamicFlag( () => import('./pk.svg') ), [Locales.UZBEK_LATIN_UZBEKISTAN]: dynamicFlag(() => import('./uz.svg')), [Locales.VIETNAMESE_VIET_NAM]: dynamicFlag(() => import('./vn.svg')), [Locales.XHOSA_SOUTH_AFRICA]: dynamicFlag(() => import('./za.svg')), [Locales.CHINESE]: dynamicFlag(() => import('./cn.svg')), [Locales.CHINESE_SIMPLIFIED_CHINA]: dynamicFlag(() => import('./cn.svg')), [Locales.CHINESE_HONG_KONG]: dynamicFlag(() => import('./hk.svg')), [Locales.CHINESE_MACAU]: dynamicFlag(() => import('./mo.svg')), [Locales.CHINESE_SINGAPORE]: dynamicFlag(() => import('./sg.svg')), [Locales.ZULU_SOUTH_AFRICA]: dynamicFlag(() => import('./za.svg')), [Locales.BENGALI]: dynamicFlag(() => import('./in.svg')), [Locales.BENGALI_BANGLADESH]: dynamicFlag(() => import('./bd.svg')), [Locales.BENGALI_INDIA]: dynamicFlag(() => import('./in.svg')), [Locales.BENGALI_MYANMAR]: dynamicFlag(() => import('./mm.svg')), [Locales.BURMESE]: dynamicFlag(() => import('./mm.svg')), [Locales.BURMESE_MYANMAR]: dynamicFlag(() => import('./mm.svg')), [Locales.KHMER]: dynamicFlag(() => import('./kh.svg')), [Locales.KHMER_CAMBODIA]: dynamicFlag(() => import('./kh.svg')), [Locales.LAO]: dynamicFlag(() => import('./la.svg')), [Locales.LAO_LAOS]: dynamicFlag(() => import('./la.svg')), [Locales.YORUBA]: dynamicFlag(() => import('./ng.svg')), [Locales.YORUBA_NIGERIA]: dynamicFlag(() => import('./ng.svg')), [Locales.AMHARIC]: dynamicFlag(() => import('./et.svg')), [Locales.AMHARIC_ETHIOPIA]: dynamicFlag(() => import('./et.svg')), [Locales.NEPALI]: dynamicFlag(() => import('./np.svg')), [Locales.NEPALI_NEPAL]: dynamicFlag(() => import('./np.svg')), }; export const Flag: FC<FlagProps> = ({ locale, alt, ...props }): JSX.Element => { const LazyFlag = flagRecord[locale] ?? dynamicFlag(() => import('./xx.svg')); return ( <Suspense fallback={null}> <LazyFlag alt={alt ?? `${locale} flag`} {...(props as any)} role="img" /> </Suspense> ); };

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/aymericzip/intlayer'

If you have feedback or need assistance with the MCP directory API, please join our Discord server