/* * Upstream source: https://wiki.openstreetmap.org/wiki/Nominatim/Country_Codes */ const COUNTRY_LANGUAGES = { ad: 'ca', ae: 'ar', af: 'fa,ps', ag: 'en', ai: 'en', al: 'sq', am: 'hy', ao: 'pt', aq: '', ar: 'es', as: 'en,sm', at: 'de', au: 'en', aw: 'nl,pap', ax: 'sv', az: 'az', ba: 'bs,hr,sr', bb: 'en', bd: 'bn', be: 'nl,fr,de', bf: 'fr', bg: 'bg', bh: 'ar', bi: 'fr', bj: 'fr', bl: 'fr', bm: 'en', bn: 'ms', bo: 'es,qu,ay', bq: 'nl', br: 'pt', bs: 'en', bt: 'dz', bv: 'no', bw: 'en,tn', by: 'be,ru', bz: 'en', ca: 'en,fr', cc: 'en', cd: 'fr', cf: 'fr', cg: 'fr', ch: 'de,fr,it,rm', ci: 'fr', ck: 'en,rar', cl: 'es', cm: 'fr,en', cn: 'zh', co: 'es', cr: 'es', cu: 'es', cv: 'pt', cw: 'nl,en', cx: 'en', cy: 'el,tr', cz: 'cs', de: 'de', dj: 'fr,ar', dk: 'da', dm: 'en', do: 'es', dz: 'ar,ber', ec: 'es', ee: 'et', eg: 'ar', eh: 'ar,es,fr', er: 'ti,ar,en', es: 'es', et: 'am,om', fi: 'fi,sv,se', fj: 'en', fk: 'en', fm: 'en', fo: 'fo', fr: 'fr', ga: 'fr', gb: 'en', gd: 'en', ge: 'ka', gf: 'fr', gg: 'en', gh: 'en', gi: 'en', gl: 'kl,da', gm: 'en', gn: 'fr', gp: 'fr', gq: 'es', gr: 'el', gs: 'en', gt: 'es', gu: 'en,ch', gw: 'pt', gy: 'en', hk: 'zh,en', hm: 'en', hn: 'es', hr: 'hr', ht: 'fr,ht', hu: 'hu', id: 'id', ie: 'en,ga', il: 'he', im: 'en', in: 'hi,en', io: 'en', iq: 'ar,ku', ir: 'fa', is: 'is', it: 'it', je: 'en', jm: 'en', jo: 'ar', jp: 'ja', ke: 'sw,en', kg: 'ky,ru', kh: 'km', ki: 'en', km: 'bnt,ar,fr', kn: 'en', kp: 'ko', kr: 'ko', kw: 'ar', ky: 'en', kz: 'kk,ru', la: 'lo', lb: 'ar,fr', lc: 'en', li: 'de', lk: 'si,ta', lr: 'en', ls: 'en,st', lt: 'lt', lu: 'lb,fr,de', lv: 'lv', ly: 'ar,ber', ma: 'ar,ber', mc: 'fr', md: 'ru,uk,ro', me: 'sr,sh', mf: 'fr', mg: 'mg,fr', mh: 'en,mh', mk: 'mk', ml: 'fr', mm: 'my', mn: 'mn', mo: 'zh,pt', mp: 'ch', mq: 'fr', mr: 'ar,fr', ms: 'en', mt: 'mt,en', mu: 'mfe,fr,en', mv: 'dv', mw: 'en,ny', mx: 'es', my: 'en,ms,zh,ta', mz: 'pt', na: 'en,sf,de', nc: 'fr', ne: 'fr', nf: 'en,pih', ng: 'en', ni: 'es', nl: 'nl', no: 'nb,nn,no', np: 'ne', nr: 'na,en', nu: 'niu,en', nz: 'mi,en', om: 'ar', pa: 'es', pe: 'es', pf: 'fr', pg: 'en,tpi,ho', ph: 'en,tl', pk: 'en,ur', pl: 'pl', pm: 'fr', pn: 'en,pih', pr: 'es,en', ps: 'ar,he', pt: 'pt', pw: 'en,pau,ja,sov,tox', py: 'es,gn', qa: 'ar', re: 'fr', ro: 'ro', rs: 'sr', ru: 'ru', rw: 'rw,fr,en', sa: 'ar', sb: 'en', sc: 'fr,en,crs', sd: 'ar,en', se: 'sv', sg: 'en,ms,zh,ta', sh: 'en', si: 'sl', sj: 'no', sk: 'sk', sl: 'en', sm: 'it', sn: 'fr', so: 'so,ar', sr: 'nl', st: 'pt', ss: 'en', sv: 'es', sx: 'nl,en', sy: 'ar', sz: 'en,ss', tc: 'en', td: 'fr,ar', tf: 'fr', tg: 'fr', th: 'th', tj: 'tg,ru', tk: 'tkl,en,sm', tl: 'pt,tet', tm: 'tk', tn: 'ar', to: 'en', tr: 'tr', tt: 'en', tv: 'en', tw: 'zh', tz: 'sw,en', ua: 'uk', ug: 'en,sw', um: 'en', us: 'en', uy: 'es', uz: 'uz,kaa', va: 'it', vc: 'en', ve: 'es', vg: 'en', vi: 'en', vn: 'vi', vu: 'bi,en,fr', wf: 'fr', ws: 'sm,en', ye: 'ar', yt: 'fr', za: 'af,zu,xh', zm: 'en', zw: 'en,sn,nd', }; export default function getLanguagesForCountry(countryCode) { const country = countryCode.toLowerCase(); const countryLanguages = COUNTRY_LANGUAGES[country]; if (!countryLanguages || countryLanguages.length === 0) return null; const languages = countryLanguages.split(','); // ----overrides---- if (country === 'br') return ['pt-BR']; const zhCountries = ['cn', 'hk', 'tw']; const zhLangs = ['zh-Hans', 'zh-Hant']; if (zhCountries.includes(country)) return zhLangs; if (languages.includes('zh')) { languages.filter((lang) => lang === 'zh'); languages.push(...zhLangs); } // ----------------- return languages; }