{
 "api_version": "1",
 "name": "Nordic Crypto",
 "generated_at": "2026-10-06T14:06:45+00:00",
 "preview": false,
 "note": "by_country is a default guess from the visitor's IP country. It is not a stored profile. The nc_lang cookie, set when the reader uses the language switcher, always wins. The same choice is also kept in localStorage under nc_lang; if the cookie is missing, that stored choice is the override. The country comes from the tipworker GET /api/geo, which returns Cloudflare's request.cf.country (XX and T1 count as unknown). Nothing about the lookup is stored or logged, and no third-party geo-IP service is used. If the Worker is unreachable, the browser's navigator.languages is used, then English. A country that is not listed defaults to en. Norwegian browser tags (no, nb, nn) default to nynorsk; bokmål stays one click away. India defaults to Hindi; Marathi (mr) has no country row. Mauritania (MR) defaults to Arabic (ar). The language code mr is Marathi, not Mauritania.",
 "cookie": "nc_lang",
 "storage": "localStorage key nc_lang, the same switcher override. The cookie wins when both are set.",
 "order": [
  "nc_lang cookie (language switcher; always wins)",
  "localStorage nc_lang (same override when the cookie is missing)",
  "GET /api/geo on the tipworker (Cloudflare request.cf.country)",
  "navigator.languages",
  "en"
 ],
 "geo": {
  "path": "/api/geo",
  "source": "tipworker, Cloudflare request.cf.country",
  "stored": false
 },
 "default": "en",
 "unmapped_country": "en",
 "by_country": {
  "NO": "nn",
  "SJ": "nn",
  "SE": "sv",
  "AX": "sv",
  "DK": "da",
  "FO": "da",
  "GL": "da",
  "FI": "fi",
  "IS": "is",
  "CN": "zh",
  "TW": "zh",
  "HK": "zh",
  "MO": "zh",
  "SG": "zh",
  "IN": "hi",
  "ES": "es",
  "MX": "es",
  "AR": "es",
  "CO": "es",
  "CL": "es",
  "PE": "es",
  "VE": "es",
  "EC": "es",
  "GT": "es",
  "CU": "es",
  "BO": "es",
  "DO": "es",
  "HN": "es",
  "PY": "es",
  "SV": "es",
  "NI": "es",
  "CR": "es",
  "PA": "es",
  "UY": "es",
  "PR": "es",
  "GQ": "es",
  "FR": "fr",
  "MC": "fr",
  "SN": "fr",
  "CI": "fr",
  "CM": "fr",
  "CD": "fr",
  "MG": "fr",
  "ML": "fr",
  "NE": "fr",
  "BF": "fr",
  "TG": "fr",
  "BJ": "fr",
  "GA": "fr",
  "CG": "fr",
  "GN": "fr",
  "TD": "fr",
  "CF": "fr",
  "HT": "fr",
  "SA": "ar",
  "EG": "ar",
  "AE": "ar",
  "QA": "ar",
  "KW": "ar",
  "BH": "ar",
  "OM": "ar",
  "JO": "ar",
  "LB": "ar",
  "SY": "ar",
  "IQ": "ar",
  "YE": "ar",
  "LY": "ar",
  "TN": "ar",
  "DZ": "ar",
  "MA": "ar",
  "SD": "ar",
  "PS": "ar",
  "MR": "ar",
  "BD": "bn",
  "BR": "pt",
  "PT": "pt",
  "AO": "pt",
  "MZ": "pt",
  "CV": "pt",
  "GW": "pt",
  "ST": "pt",
  "TL": "pt",
  "RU": "ru",
  "BY": "ru",
  "PK": "ur",
  "ID": "id",
  "DE": "de",
  "AT": "de",
  "CH": "de",
  "LI": "de",
  "JP": "ja",
  "KE": "sw",
  "TZ": "sw",
  "UG": "sw"
 }
}
