Cookie Consent by Free Privacy Policy Generator

Build International SEO with complete Hreflang ISO set

I am gifting the community my full hreflang ISO set. It is comprehensive and grouped in a way that maps cleanly to real markets. You will find the usual heavy hitters, the long tail across Europe, the Americas, Asia Pacific, Oceania, the Middle East and Africa, plus language-only codes and x-default. Use it to build a robust international targeting layer that does not break when you scale or to build your own tools.

Here is the tool that I built using the hreflang ISO array: https://chrisleverseo.com/tools/hreflang-generator/

Quick orientation. Hreflang tells search engines which URL serves which audience. It needs three things to work well. Correct ISO codes, absolute URLs, and full reciprocity. If page A references page B in hreflang, page B must reference page A. Every page in the cluster references itself too.

Correct usage combines a two-letter ISO 639-1 language code (e.g., en for English) and, where needed, a two-letter ISO 3166-1 alpha-2 country code (e.g., GB for the United Kingdom), like en-GB for British English.

Implementation choices are simple. Put tags in the head, or in an XML sitemap, or via HTTP headers. Do not do all three. For most teams, HTML head is easiest to debug and quickest to ship.

Basic pattern:
Code:
<link rel="canonical" href="https://example.com/gb/product-x/">
<link rel="alternate" href="https://example.com/gb/product-x/" hreflang="en-GB">
<link rel="alternate" href="https://example.com/us/product-x/" hreflang="en-US">
<link rel="alternate" href="https://example.com/" hreflang="x-default">

A few rules that save pain:
  1. Match language and market. If you have separate content for the UK and the US, use en-GB and en-US, not just en. Language-only codes suit single language sites that serve all regions with the same URL.
  2. Keep canonicals aligned. The canonical must point at the exact URL referenced by its own hreflang entry.
  3. Avoid mixing language-only and region-specific codes for the same content unless the language-only page truly serves every region without material differences.
  4. One canonical per page. No parameter noise. No soft redirects.
  5. Every template type must be supported. Homepages, categories, products, articles, and key utility pages such as delivery and returns.
  6. Use x-default for global selectors, geolocation splash pages, or fallbacks where a specific match is not available.
  7. Generate tags from a single source of truth. A market map in your CMS or PIM works well. Keep it versioned.
  8. Do not block these pages in robots.txt and do not noindex them. Hreflang needs indexable pages.
  9. Keep URL parity across markets where possible. If structures differ, maintain a reliable lookup table.
  10. Cache wisely. Hreflang rarely changes more than once per deployment, so cache the tags alongside your template or ship through the sitemap.
Drop the list below into your generator, map each code to its URL pattern, and ship. If your stack is Shopify, build it into theme.liquid and key templates. If it is WordPress, add it to your head with a small function hooked to wp_head and a sitewide market map.

Full array of hreflang ISO's:
Code:
const languages = [
    // Most Common
    { code: 'en-US', name: 'English (US)', region: 'common' },
    { code: 'en-GB', name: 'English (UK)', region: 'common' },
    { code: 'es-ES', name: 'Spanish (Spain)', region: 'common' },
    { code: 'es-MX', name: 'Spanish (Mexico)', region: 'common' },
    { code: 'fr-FR', name: 'French (France)', region: 'common' },
    { code: 'de-DE', name: 'German (Germany)', region: 'common' },
    { code: 'it-IT', name: 'Italian (Italy)', region: 'common' },
    { code: 'pt-BR', name: 'Portuguese (Brazil)', region: 'common' },
    { code: 'pt-PT', name: 'Portuguese (Portugal)', region: 'common' },
    { code: 'ja-JP', name: 'Japanese', region: 'common' },
    { code: 'ko-KR', name: 'Korean', region: 'common' },
    { code: 'zh-CN', name: 'Chinese (Simplified)', region: 'common' },
    { code: 'zh-TW', name: 'Chinese (Traditional)', region: 'common' },
  
    // Europe
    { code: 'sq-AL', name: 'Albanian', region: 'europe' },
    { code: 'de-AT', name: 'German (Austria)', region: 'europe' },
    { code: 'nl-BE', name: 'Dutch (Belgium)', region: 'europe' },
    { code: 'fr-BE', name: 'French (Belgium)', region: 'europe' },
    { code: 'de-BE', name: 'German (Belgium)', region: 'europe' },
    { code: 'bs-BA', name: 'Bosnian', region: 'europe' },
    { code: 'bg-BG', name: 'Bulgarian', region: 'europe' },
    { code: 'hr-HR', name: 'Croatian', region: 'europe' },
    { code: 'el-CY', name: 'Greek (Cyprus)', region: 'europe' },
    { code: 'tr-CY', name: 'Turkish (Cyprus)', region: 'europe' },
    { code: 'cs-CZ', name: 'Czech', region: 'europe' },
    { code: 'da-DK', name: 'Danish', region: 'europe' },
    { code: 'et-EE', name: 'Estonian', region: 'europe' },
    { code: 'fi-FI', name: 'Finnish', region: 'europe' },
    { code: 'sv-FI', name: 'Swedish (Finland)', region: 'europe' },
    { code: 'el-GR', name: 'Greek', region: 'europe' },
    { code: 'hu-HU', name: 'Hungarian', region: 'europe' },
    { code: 'is-IS', name: 'Icelandic', region: 'europe' },
    { code: 'ga-IE', name: 'Irish', region: 'europe' },
    { code: 'en-IE', name: 'English (Ireland)', region: 'europe' },
    { code: 'it-SM', name: 'Italian (San Marino)', region: 'europe' },
    { code: 'lv-LV', name: 'Latvian', region: 'europe' },
    { code: 'lt-LT', name: 'Lithuanian', region: 'europe' },
    { code: 'lb-LU', name: 'Luxembourgish', region: 'europe' },
    { code: 'fr-LU', name: 'French (Luxembourg)', region: 'europe' },
    { code: 'de-LU', name: 'German (Luxembourg)', region: 'europe' },
    { code: 'mk-MK', name: 'Macedonian', region: 'europe' },
    { code: 'mt-MT', name: 'Maltese', region: 'europe' },
    { code: 'en-MT', name: 'English (Malta)', region: 'europe' },
    { code: 'ro-MD', name: 'Romanian (Moldova)', region: 'europe' },
    { code: 'fr-MC', name: 'French (Monaco)', region: 'europe' },
    { code: 'sr-ME', name: 'Serbian (Montenegro)', region: 'europe' },
    { code: 'nl-NL', name: 'Dutch (Netherlands)', region: 'europe' },
    { code: 'nb-NO', name: 'Norwegian (Bokmål)', region: 'europe' },
    { code: 'nn-NO', name: 'Norwegian (Nynorsk)', region: 'europe' },
    { code: 'pl-PL', name: 'Polish', region: 'europe' },
    { code: 'ro-RO', name: 'Romanian', region: 'europe' },
    { code: 'ru-RU', name: 'Russian', region: 'europe' },
    { code: 'sr-RS', name: 'Serbian', region: 'europe' },
    { code: 'sk-SK', name: 'Slovak', region: 'europe' },
    { code: 'sl-SI', name: 'Slovenian', region: 'europe' },
    { code: 'ca-ES', name: 'Catalan', region: 'europe' },
    { code: 'eu-ES', name: 'Basque', region: 'europe' },
    { code: 'gl-ES', name: 'Galician', region: 'europe' },
    { code: 'sv-SE', name: 'Swedish', region: 'europe' },
    { code: 'de-CH', name: 'German (Switzerland)', region: 'europe' },
    { code: 'fr-CH', name: 'French (Switzerland)', region: 'europe' },
    { code: 'it-CH', name: 'Italian (Switzerland)', region: 'europe' },
    { code: 'rm-CH', name: 'Romansh (Switzerland)', region: 'europe' },
    { code: 'tr-TR', name: 'Turkish', region: 'europe' },
    { code: 'uk-UA', name: 'Ukrainian', region: 'europe' },
    { code: 'ru-UA', name: 'Russian (Ukraine)', region: 'europe' },
    { code: 'cy-GB', name: 'Welsh', region: 'europe' },
    { code: 'gd-GB', name: 'Scottish Gaelic', region: 'europe' },
    { code: 'kw-GB', name: 'Cornish', region: 'europe' },
    { code: 'fo-FO', name: 'Faroese', region: 'europe' },
    { code: 'kl-GL', name: 'Greenlandic', region: 'europe' },
    { code: 'se-NO', name: 'Northern Sami (Norway)', region: 'europe' },
    { code: 'se-SE', name: 'Northern Sami (Sweden)', region: 'europe' },
    { code: 'se-FI', name: 'Northern Sami (Finland)', region: 'europe' },
    { code: 'ca-AD', name: 'Catalan (Andorra)', region: 'europe' },
    { code: 'de-LI', name: 'German (Liechtenstein)', region: 'europe' },
  
    // Americas
    { code: 'es-AR', name: 'Spanish (Argentina)', region: 'americas' },
    { code: 'hy-AM', name: 'Armenian', region: 'americas' },
    { code: 'en-BB', name: 'English (Barbados)', region: 'americas' },
    { code: 'en-BZ', name: 'English (Belize)', region: 'americas' },
    { code: 'es-BO', name: 'Spanish (Bolivia)', region: 'americas' },
    { code: 'qu-BO', name: 'Quechua (Bolivia)', region: 'americas' },
    { code: 'ay-BO', name: 'Aymara (Bolivia)', region: 'americas' },
    { code: 'en-CA', name: 'English (Canada)', region: 'americas' },
    { code: 'fr-CA', name: 'French (Canada)', region: 'americas' },
    { code: 'iu-CA', name: 'Inuktitut (Canada)', region: 'americas' },
    { code: 'es-CL', name: 'Spanish (Chile)', region: 'americas' },
    { code: 'es-CO', name: 'Spanish (Colombia)', region: 'americas' },
    { code: 'es-CR', name: 'Spanish (Costa Rica)', region: 'americas' },
    { code: 'es-CU', name: 'Spanish (Cuba)', region: 'americas' },
    { code: 'es-DO', name: 'Spanish (Dominican Republic)', region: 'americas' },
    { code: 'es-EC', name: 'Spanish (Ecuador)', region: 'americas' },
    { code: 'qu-EC', name: 'Quechua (Ecuador)', region: 'americas' },
    { code: 'es-SV', name: 'Spanish (El Salvador)', region: 'americas' },
    { code: 'en-GY', name: 'English (Guyana)', region: 'americas' },
    { code: 'es-GT', name: 'Spanish (Guatemala)', region: 'americas' },
    { code: 'es-HN', name: 'Spanish (Honduras)', region: 'americas' },
    { code: 'ht-HT', name: 'Haitian Creole', region: 'americas' },
    { code: 'fr-HT', name: 'French (Haiti)', region: 'americas' },
    { code: 'en-JM', name: 'English (Jamaica)', region: 'americas' },
    { code: 'es-NI', name: 'Spanish (Nicaragua)', region: 'americas' },
    { code: 'es-PA', name: 'Spanish (Panama)', region: 'americas' },
    { code: 'es-PY', name: 'Spanish (Paraguay)', region: 'americas' },
    { code: 'gn-PY', name: 'Guarani (Paraguay)', region: 'americas' },
    { code: 'es-PE', name: 'Spanish (Peru)', region: 'americas' },
    { code: 'qu-PE', name: 'Quechua (Peru)', region: 'americas' },
    { code: 'en-PR', name: 'English (Puerto Rico)', region: 'americas' },
    { code: 'es-PR', name: 'Spanish (Puerto Rico)', region: 'americas' },
    { code: 'en-US', name: 'English (US)', region: 'americas' },
    { code: 'es-US', name: 'Spanish (US)', region: 'americas' },
    { code: 'haw-US', name: 'Hawaiian', region: 'americas' },
    { code: 'en-TT', name: 'English (Trinidad & Tobago)', region: 'americas' },
    { code: 'es-UY', name: 'Spanish (Uruguay)', region: 'americas' },
    { code: 'es-VE', name: 'Spanish (Venezuela)', region: 'americas' },
    { code: 'nl-SR', name: 'Dutch (Suriname)', region: 'americas' },
    { code: 'fr-GF', name: 'French (French Guiana)', region: 'americas' },
    { code: 'pt-GW', name: 'Portuguese (Guinea-Bissau)', region: 'americas' },
    { code: 'en-AG', name: 'English (Antigua & Barbuda)', region: 'americas' },
    { code: 'en-BS', name: 'English (Bahamas)', region: 'americas' },
    { code: 'en-DM', name: 'English (Dominica)', region: 'americas' },
    { code: 'en-GD', name: 'English (Grenada)', region: 'americas' },
    { code: 'en-KN', name: 'English (St. Kitts & Nevis)', region: 'americas' },
    { code: 'en-LC', name: 'English (St. Lucia)', region: 'americas' },
    { code: 'en-VC', name: 'English (St. Vincent)', region: 'americas' },
    { code: 'nl-AW', name: 'Dutch (Aruba)', region: 'americas' },
    { code: 'nl-CW', name: 'Dutch (Curaçao)', region: 'americas' },
    { code: 'nl-SX', name: 'Dutch (Sint Maarten)', region: 'americas' },
    { code: 'fr-MQ', name: 'French (Martinique)', region: 'americas' },
    { code: 'fr-GP', name: 'French (Guadeloupe)', region: 'americas' },
    { code: 'fr-BL', name: 'French (Saint Barthélemy)', region: 'americas' },
    { code: 'fr-MF', name: 'French (Saint Martin)', region: 'americas' },
    { code: 'en-AI', name: 'English (Anguilla)', region: 'americas' },
    { code: 'en-BM', name: 'English (Bermuda)', region: 'americas' },
    { code: 'en-KY', name: 'English (Cayman Islands)', region: 'americas' },
    { code: 'en-FK', name: 'English (Falkland Islands)', region: 'americas' },
    { code: 'en-MS', name: 'English (Montserrat)', region: 'americas' },
    { code: 'en-TC', name: 'English (Turks & Caicos)', region: 'americas' },
    { code: 'en-VG', name: 'English (British Virgin Islands)', region: 'americas' },
    { code: 'en-VI', name: 'English (US Virgin Islands)', region: 'americas' },
  
    // Asia-Pacific
    { code: 'zh-CN', name: 'Chinese (Simplified)', region: 'asia' },
    { code: 'zh-HK', name: 'Chinese (Hong Kong)', region: 'asia' },
    { code: 'en-HK', name: 'English (Hong Kong)', region: 'asia' },
    { code: 'zh-MO', name: 'Chinese (Macau)', region: 'asia' },
    { code: 'pt-MO', name: 'Portuguese (Macau)', region: 'asia' },
    { code: 'zh-TW', name: 'Chinese (Traditional)', region: 'asia' },
    { code: 'hi-IN', name: 'Hindi', region: 'asia' },
    { code: 'en-IN', name: 'English (India)', region: 'asia' },
    { code: 'bn-IN', name: 'Bengali (India)', region: 'asia' },
    { code: 'te-IN', name: 'Telugu', region: 'asia' },
    { code: 'mr-IN', name: 'Marathi', region: 'asia' },
    { code: 'ta-IN', name: 'Tamil (India)', region: 'asia' },
    { code: 'ur-IN', name: 'Urdu (India)', region: 'asia' },
    { code: 'gu-IN', name: 'Gujarati', region: 'asia' },
    { code: 'kn-IN', name: 'Kannada', region: 'asia' },
    { code: 'ml-IN', name: 'Malayalam', region: 'asia' },
    { code: 'or-IN', name: 'Odia', region: 'asia' },
    { code: 'pa-IN', name: 'Punjabi (India)', region: 'asia' },
    { code: 'as-IN', name: 'Assamese', region: 'asia' },
    { code: 'ks-IN', name: 'Kashmiri', region: 'asia' },
    { code: 'ne-IN', name: 'Nepali (India)', region: 'asia' },
    { code: 'sd-IN', name: 'Sindhi (India)', region: 'asia' },
    { code: 'sa-IN', name: 'Sanskrit', region: 'asia' },
    { code: 'id-ID', name: 'Indonesian', region: 'asia' },
    { code: 'jv-ID', name: 'Javanese', region: 'asia' },
    { code: 'su-ID', name: 'Sundanese', region: 'asia' },
    { code: 'ja-JP', name: 'Japanese', region: 'asia' },
    { code: 'ko-KR', name: 'Korean', region: 'asia' },
    { code: 'ko-KP', name: 'Korean (North Korea)', region: 'asia' },
    { code: 'ms-MY', name: 'Malay (Malaysia)', region: 'asia' },
    { code: 'en-MY', name: 'English (Malaysia)', region: 'asia' },
    { code: 'ta-MY', name: 'Tamil (Malaysia)', region: 'asia' },
    { code: 'zh-MY', name: 'Chinese (Malaysia)', region: 'asia' },
    { code: 'fil-PH', name: 'Filipino', region: 'asia' },
    { code: 'en-PH', name: 'English (Philippines)', region: 'asia' },
    { code: 'ceb-PH', name: 'Cebuano', region: 'asia' },
    { code: 'ilo-PH', name: 'Ilocano', region: 'asia' },
    { code: 'hil-PH', name: 'Hiligaynon', region: 'asia' },
    { code: 'en-SG', name: 'English (Singapore)', region: 'asia' },
    { code: 'zh-SG', name: 'Chinese (Singapore)', region: 'asia' },
    { code: 'ms-SG', name: 'Malay (Singapore)', region: 'asia' },
    { code: 'ta-SG', name: 'Tamil (Singapore)', region: 'asia' },
    { code: 'th-TH', name: 'Thai', region: 'asia' },
    { code: 'vi-VN', name: 'Vietnamese', region: 'asia' },
    { code: 'km-KH', name: 'Khmer', region: 'asia' },
    { code: 'lo-LA', name: 'Lao', region: 'asia' },
    { code: 'my-MM', name: 'Burmese', region: 'asia' },
    { code: 'ne-NP', name: 'Nepali', region: 'asia' },
    { code: 'dz-BT', name: 'Dzongkha', region: 'asia' },
    { code: 'bn-BD', name: 'Bengali (Bangladesh)', region: 'asia' },
    { code: 'si-LK', name: 'Sinhala', region: 'asia' },
    { code: 'ta-LK', name: 'Tamil (Sri Lanka)', region: 'asia' },
    { code: 'dv-MV', name: 'Dhivehi', region: 'asia' },
    { code: 'mn-MN', name: 'Mongolian', region: 'asia' },
    { code: 'bo-CN', name: 'Tibetan', region: 'asia' },
    { code: 'ug-CN', name: 'Uyghur', region: 'asia' },
    { code: 'kk-KZ', name: 'Kazakh', region: 'asia' },
    { code: 'ru-KZ', name: 'Russian (Kazakhstan)', region: 'asia' },
    { code: 'ky-KG', name: 'Kyrgyz', region: 'asia' },
    { code: 'ru-KG', name: 'Russian (Kyrgyzstan)', region: 'asia' },
    { code: 'tg-TJ', name: 'Tajik', region: 'asia' },
    { code: 'ru-TJ', name: 'Russian (Tajikistan)', region: 'asia' },
    { code: 'tk-TM', name: 'Turkmen', region: 'asia' },
    { code: 'ru-TM', name: 'Russian (Turkmenistan)', region: 'asia' },
    { code: 'uz-UZ', name: 'Uzbek', region: 'asia' },
    { code: 'ru-UZ', name: 'Russian (Uzbekistan)', region: 'asia' },
    { code: 'ps-AF', name: 'Pashto', region: 'asia' },
    { code: 'fa-AF', name: 'Dari', region: 'asia' },
    { code: 'ur-PK', name: 'Urdu (Pakistan)', region: 'asia' },
    { code: 'pa-PK', name: 'Punjabi (Pakistan)', region: 'asia' },
    { code: 'sd-PK', name: 'Sindhi (Pakistan)', region: 'asia' },
    { code: 'en-PK', name: 'English (Pakistan)', region: 'asia' },
    { code: 'az-AZ', name: 'Azerbaijani', region: 'asia' },
    { code: 'ka-GE', name: 'Georgian', region: 'asia' },
    { code: 'tl-PH', name: 'Tagalog', region: 'asia' },
    { code: 'ms-BN', name: 'Malay (Brunei)', region: 'asia' },
    { code: 'en-BN', name: 'English (Brunei)', region: 'asia' },
    { code: 'tet-TL', name: 'Tetum', region: 'asia' },
    { code: 'pt-TL', name: 'Portuguese (East Timor)', region: 'asia' },
  
    // Oceania
    { code: 'en-AU', name: 'English (Australia)', region: 'oceania' },
    { code: 'en-NZ', name: 'English (New Zealand)', region: 'oceania' },
    { code: 'mi-NZ', name: 'Māori', region: 'oceania' },
    { code: 'en-FJ', name: 'English (Fiji)', region: 'oceania' },
    { code: 'fj-FJ', name: 'Fijian', region: 'oceania' },
    { code: 'hi-FJ', name: 'Hindi (Fiji)', region: 'oceania' },
    { code: 'en-PG', name: 'English (Papua New Guinea)', region: 'oceania' },
    { code: 'ho-PG', name: 'Hiri Motu', region: 'oceania' },
    { code: 'en-SB', name: 'English (Solomon Islands)', region: 'oceania' },
    { code: 'en-VU', name: 'English (Vanuatu)', region: 'oceania' },
    { code: 'bi-VU', name: 'Bislama', region: 'oceania' },
    { code: 'fr-VU', name: 'French (Vanuatu)', region: 'oceania' },
    { code: 'en-WS', name: 'English (Samoa)', region: 'oceania' },
    { code: 'sm-WS', name: 'Samoan', region: 'oceania' },
    { code: 'en-TO', name: 'English (Tonga)', region: 'oceania' },
    { code: 'to-TO', name: 'Tongan', region: 'oceania' },
    { code: 'en-TV', name: 'English (Tuvalu)', region: 'oceania' },
    { code: 'en-NR', name: 'English (Nauru)', region: 'oceania' },
    { code: 'en-KI', name: 'English (Kiribati)', region: 'oceania' },
    { code: 'en-PW', name: 'English (Palau)', region: 'oceania' },
    { code: 'en-MH', name: 'English (Marshall Islands)', region: 'oceania' },
    { code: 'mh-MH', name: 'Marshallese', region: 'oceania' },
    { code: 'en-FM', name: 'English (Micronesia)', region: 'oceania' },
    { code: 'en-CK', name: 'English (Cook Islands)', region: 'oceania' },
    { code: 'en-NU', name: 'English (Niue)', region: 'oceania' },
    { code: 'fr-PF', name: 'French (French Polynesia)', region: 'oceania' },
    { code: 'ty-PF', name: 'Tahitian', region: 'oceania' },
    { code: 'fr-NC', name: 'French (New Caledonia)', region: 'oceania' },
    { code: 'fr-WF', name: 'French (Wallis & Futuna)', region: 'oceania' },
    { code: 'en-PN', name: 'English (Pitcairn)', region: 'oceania' },
    { code: 'en-TK', name: 'English (Tokelau)', region: 'oceania' },
    { code: 'en-NF', name: 'English (Norfolk Island)', region: 'oceania' },
    { code: 'en-CX', name: 'English (Christmas Island)', region: 'oceania' },
    { code: 'en-CC', name: 'English (Cocos Islands)', region: 'oceania' },
    { code: 'en-GU', name: 'English (Guam)', region: 'oceania' },
    { code: 'ch-GU', name: 'Chamorro (Guam)', region: 'oceania' },
    { code: 'en-AS', name: 'English (American Samoa)', region: 'oceania' },
    { code: 'sm-AS', name: 'Samoan (American Samoa)', region: 'oceania' },
    { code: 'en-MP', name: 'English (Northern Marianas)', region: 'oceania' },
    { code: 'ch-MP', name: 'Chamorro (Northern Marianas)', region: 'oceania' },
  
    // Middle East & Africa
    { code: 'ar-SA', name: 'Arabic (Saudi Arabia)', region: 'mea' },
    { code: 'ar-AE', name: 'Arabic (UAE)', region: 'mea' },
    { code: 'en-AE', name: 'English (UAE)', region: 'mea' },
    { code: 'ar-BH', name: 'Arabic (Bahrain)', region: 'mea' },
    { code: 'en-BH', name: 'English (Bahrain)', region: 'mea' },
    { code: 'ar-EG', name: 'Arabic (Egypt)', region: 'mea' },
    { code: 'ar-IQ', name: 'Arabic (Iraq)', region: 'mea' },
    { code: 'ku-IQ', name: 'Kurdish (Iraq)', region: 'mea' },
    { code: 'ar-JO', name: 'Arabic (Jordan)', region: 'mea' },
    { code: 'ar-KW', name: 'Arabic (Kuwait)', region: 'mea' },
    { code: 'ar-LB', name: 'Arabic (Lebanon)', region: 'mea' },
    { code: 'fr-LB', name: 'French (Lebanon)', region: 'mea' },
    { code: 'ar-LY', name: 'Arabic (Libya)', region: 'mea' },
    { code: 'ar-MA', name: 'Arabic (Morocco)', region: 'mea' },
    { code: 'fr-MA', name: 'French (Morocco)', region: 'mea' },
    { code: 'ar-OM', name: 'Arabic (Oman)', region: 'mea' },
    { code: 'ar-PS', name: 'Arabic (Palestine)', region: 'mea' },
    { code: 'ar-QA', name: 'Arabic (Qatar)', region: 'mea' },
    { code: 'ar-SY', name: 'Arabic (Syria)', region: 'mea' },
    { code: 'ar-TN', name: 'Arabic (Tunisia)', region: 'mea' },
    { code: 'fr-TN', name: 'French (Tunisia)', region: 'mea' },
    { code: 'ar-YE', name: 'Arabic (Yemen)', region: 'mea' },
    { code: 'he-IL', name: 'Hebrew', region: 'mea' },
    { code: 'en-IL', name: 'English (Israel)', region: 'mea' },
    { code: 'ar-IL', name: 'Arabic (Israel)', region: 'mea' },
    { code: 'fa-IR', name: 'Persian', region: 'mea' },
    { code: 'az-IR', name: 'Azerbaijani (Iran)', region: 'mea' },
    { code: 'ku-IR', name: 'Kurdish (Iran)', region: 'mea' },
  
    // Africa
    { code: 'ar-DZ', name: 'Arabic (Algeria)', region: 'africa' },
    { code: 'fr-DZ', name: 'French (Algeria)', region: 'africa' },
    { code: 'kab-DZ', name: 'Kabyle (Algeria)', region: 'africa' },
    { code: 'pt-AO', name: 'Portuguese (Angola)', region: 'africa' },
    { code: 'fr-BJ', name: 'French (Benin)', region: 'africa' },
    { code: 'en-BW', name: 'English (Botswana)', region: 'africa' },
    { code: 'tn-BW', name: 'Tswana (Botswana)', region: 'africa' },
    { code: 'fr-BF', name: 'French (Burkina Faso)', region: 'africa' },
    { code: 'fr-BI', name: 'French (Burundi)', region: 'africa' },
    { code: 'rn-BI', name: 'Kirundi', region: 'africa' },
    { code: 'fr-CM', name: 'French (Cameroon)', region: 'africa' },
    { code: 'en-CM', name: 'English (Cameroon)', region: 'africa' },
    { code: 'pt-CV', name: 'Portuguese (Cape Verde)', region: 'africa' },
    { code: 'fr-CF', name: 'French (Central African Rep.)', region: 'africa' },
    { code: 'sg-CF', name: 'Sango', region: 'africa' },
    { code: 'fr-TD', name: 'French (Chad)', region: 'africa' },
    { code: 'ar-TD', name: 'Arabic (Chad)', region: 'africa' },
    { code: 'fr-KM', name: 'French (Comoros)', region: 'africa' },
    { code: 'ar-KM', name: 'Arabic (Comoros)', region: 'africa' },
    { code: 'fr-CG', name: 'French (Congo-Brazzaville)', region: 'africa' },
    { code: 'fr-CD', name: 'French (Congo-Kinshasa)', region: 'africa' },
    { code: 'sw-CD', name: 'Swahili (Congo)', region: 'africa' },
    { code: 'fr-CI', name: 'French (Ivory Coast)', region: 'africa' },
    { code: 'fr-DJ', name: 'French (Djibouti)', region: 'africa' },
    { code: 'ar-DJ', name: 'Arabic (Djibouti)', region: 'africa' },
    { code: 'fr-GQ', name: 'French (Equatorial Guinea)', region: 'africa' },
    { code: 'es-GQ', name: 'Spanish (Equatorial Guinea)', region: 'africa' },
    { code: 'pt-GQ', name: 'Portuguese (Equatorial Guinea)', region: 'africa' },
    { code: 'ar-ER', name: 'Arabic (Eritrea)', region: 'africa' },
    { code: 'ti-ER', name: 'Tigrinya (Eritrea)', region: 'africa' },
    { code: 'en-ER', name: 'English (Eritrea)', region: 'africa' },
    { code: 'am-ET', name: 'Amharic', region: 'africa' },
    { code: 'om-ET', name: 'Oromo', region: 'africa' },
    { code: 'ti-ET', name: 'Tigrinya (Ethiopia)', region: 'africa' },
    { code: 'so-ET', name: 'Somali (Ethiopia)', region: 'africa' },
    { code: 'fr-GA', name: 'French (Gabon)', region: 'africa' },
    { code: 'en-GM', name: 'English (Gambia)', region: 'africa' },
    { code: 'en-GH', name: 'English (Ghana)', region: 'africa' },
    { code: 'tw-GH', name: 'Twi', region: 'africa' },
    { code: 'fr-GN', name: 'French (Guinea)', region: 'africa' },
    { code: 'pt-GW', name: 'Portuguese (Guinea-Bissau)', region: 'africa' },
    { code: 'en-KE', name: 'English (Kenya)', region: 'africa' },
    { code: 'sw-KE', name: 'Swahili (Kenya)', region: 'africa' },
    { code: 'en-LS', name: 'English (Lesotho)', region: 'africa' },
    { code: 'st-LS', name: 'Sotho', region: 'africa' },
    { code: 'en-LR', name: 'English (Liberia)', region: 'africa' },
    { code: 'fr-MG', name: 'French (Madagascar)', region: 'africa' },
    { code: 'mg-MG', name: 'Malagasy', region: 'africa' },
    { code: 'en-MW', name: 'English (Malawi)', region: 'africa' },
    { code: 'ny-MW', name: 'Chichewa', region: 'africa' },
    { code: 'fr-ML', name: 'French (Mali)', region: 'africa' },
    { code: 'bm-ML', name: 'Bambara', region: 'africa' },
    { code: 'ar-MR', name: 'Arabic (Mauritania)', region: 'africa' },
    { code: 'fr-MR', name: 'French (Mauritania)', region: 'africa' },
    { code: 'en-MU', name: 'English (Mauritius)', region: 'africa' },
    { code: 'fr-MU', name: 'French (Mauritius)', region: 'africa' },
    { code: 'pt-MZ', name: 'Portuguese (Mozambique)', region: 'africa' },
    { code: 'en-NA', name: 'English (Namibia)', region: 'africa' },
    { code: 'af-NA', name: 'Afrikaans (Namibia)', region: 'africa' },
    { code: 'fr-NE', name: 'French (Niger)', region: 'africa' },
    { code: 'ha-NE', name: 'Hausa (Niger)', region: 'africa' },
    { code: 'en-NG', name: 'English (Nigeria)', region: 'africa' },
    { code: 'ha-NG', name: 'Hausa (Nigeria)', region: 'africa' },
    { code: 'yo-NG', name: 'Yoruba', region: 'africa' },
    { code: 'ig-NG', name: 'Igbo', region: 'africa' },
    { code: 'fr-RW', name: 'French (Rwanda)', region: 'africa' },
    { code: 'en-RW', name: 'English (Rwanda)', region: 'africa' },
    { code: 'rw-RW', name: 'Kinyarwanda', region: 'africa' },
    { code: 'pt-ST', name: 'Portuguese (São Tomé)', region: 'africa' },
    { code: 'fr-SN', name: 'French (Senegal)', region: 'africa' },
    { code: 'wo-SN', name: 'Wolof', region: 'africa' },
    { code: 'en-SC', name: 'English (Seychelles)', region: 'africa' },
    { code: 'fr-SC', name: 'French (Seychelles)', region: 'africa' },
    { code: 'en-SL', name: 'English (Sierra Leone)', region: 'africa' },
    { code: 'so-SO', name: 'Somali', region: 'africa' },
    { code: 'ar-SO', name: 'Arabic (Somalia)', region: 'africa' },
    { code: 'en-ZA', name: 'English (South Africa)', region: 'africa' },
    { code: 'af-ZA', name: 'Afrikaans', region: 'africa' },
    { code: 'zu-ZA', name: 'Zulu', region: 'africa' },
    { code: 'xh-ZA', name: 'Xhosa', region: 'africa' },
    { code: 'st-ZA', name: 'Sotho (South Africa)', region: 'africa' },
    { code: 'tn-ZA', name: 'Tswana (South Africa)', region: 'africa' },
    { code: 've-ZA', name: 'Venda', region: 'africa' },
    { code: 'ts-ZA', name: 'Tsonga', region: 'africa' },
    { code: 'ss-ZA', name: 'Swati (South Africa)', region: 'africa' },
    { code: 'nr-ZA', name: 'Ndebele (South Africa)', region: 'africa' },
    { code: 'nso-ZA', name: 'Northern Sotho', region: 'africa' },
    { code: 'en-SS', name: 'English (South Sudan)', region: 'africa' },
    { code: 'ar-SD', name: 'Arabic (Sudan)', region: 'africa' },
    { code: 'en-SD', name: 'English (Sudan)', region: 'africa' },
    { code: 'en-SZ', name: 'English (Swaziland)', region: 'africa' },
    { code: 'ss-SZ', name: 'Swati (Swaziland)', region: 'africa' },
    { code: 'sw-TZ', name: 'Swahili (Tanzania)', region: 'africa' },
    { code: 'en-TZ', name: 'English (Tanzania)', region: 'africa' },
    { code: 'fr-TG', name: 'French (Togo)', region: 'africa' },
    { code: 'ee-TG', name: 'Ewe', region: 'africa' },
    { code: 'en-UG', name: 'English (Uganda)', region: 'africa' },
    { code: 'sw-UG', name: 'Swahili (Uganda)', region: 'africa' },
    { code: 'lg-UG', name: 'Luganda', region: 'africa' },
    { code: 'en-ZM', name: 'English (Zambia)', region: 'africa' },
    { code: 'bem-ZM', name: 'Bemba', region: 'africa' },
    { code: 'en-ZW', name: 'English (Zimbabwe)', region: 'africa' },
    { code: 'sn-ZW', name: 'Shona', region: 'africa' },
    { code: 'nd-ZW', name: 'Ndebele (Zimbabwe)', region: 'africa' },
    { code: 'fr-YT', name: 'French (Mayotte)', region: 'africa' },
    { code: 'fr-RE', name: 'French (Réunion)', region: 'africa' },
    { code: 'en-SH', name: 'English (St. Helena)', region: 'africa' },
    { code: 'ar-EH', name: 'Arabic (Western Sahara)', region: 'africa' },
  
    // Language-only options
    { code: 'en', name: 'English (All regions)', region: 'global' },
    { code: 'es', name: 'Spanish (All regions)', region: 'global' },
    { code: 'fr', name: 'French (All regions)', region: 'global' },
    { code: 'de', name: 'German (All regions)', region: 'global' },
    { code: 'it', name: 'Italian (All regions)', region: 'global' },
    { code: 'pt', name: 'Portuguese (All regions)', region: 'global' },
    { code: 'ru', name: 'Russian (All regions)', region: 'global' },
    { code: 'ja', name: 'Japanese (All regions)', region: 'global' },
    { code: 'ko', name: 'Korean (All regions)', region: 'global' },
    { code: 'zh', name: 'Chinese (All regions)', region: 'global' },
    { code: 'ar', name: 'Arabic (All regions)', region: 'global' },
    { code: 'hi', name: 'Hindi (All regions)', region: 'global' },
    { code: 'bn', name: 'Bengali (All regions)', region: 'global' },
    { code: 'pa', name: 'Punjabi (All regions)', region: 'global' },
    { code: 'ur', name: 'Urdu (All regions)', region: 'global' },
    { code: 'vi', name: 'Vietnamese (All regions)', region: 'global' },
    { code: 'th', name: 'Thai (All regions)', region: 'global' },
    { code: 'tr', name: 'Turkish (All regions)', region: 'global' },
    { code: 'pl', name: 'Polish (All regions)', region: 'global' },
    { code: 'uk', name: 'Ukrainian (All regions)', region: 'global' },
    { code: 'nl', name: 'Dutch (All regions)', region: 'global' },
    { code: 'sv', name: 'Swedish (All regions)', region: 'global' },
    { code: 'no', name: 'Norwegian (All regions)', region: 'global' },
    { code: 'da', name: 'Danish (All regions)', region: 'global' },
    { code: 'fi', name: 'Finnish (All regions)', region: 'global' },
    { code: 'el', name: 'Greek (All regions)', region: 'global' },
    { code: 'he', name: 'Hebrew (All regions)', region: 'global' },
    { code: 'id', name: 'Indonesian (All regions)', region: 'global' },
    { code: 'ms', name: 'Malay (All regions)', region: 'global' },
    { code: 'ta', name: 'Tamil (All regions)', region: 'global' },
    { code: 'te', name: 'Telugu (All regions)', region: 'global' },
    { code: 'sw', name: 'Swahili (All regions)', region: 'global' },
    { code: 'x-default', name: 'Default (fallback)', region: 'global' }
];
const languages = [
    // Most Common
    { code: 'en-US', name: 'English (US)', region: 'common' },
    { code: 'en-GB', name: 'English (UK)', region: 'common' },
    { code: 'es-ES', name: 'Spanish (Spain)', region: 'common' },
    { code: 'es-MX', name: 'Spanish (Mexico)', region: 'common' },
    { code: 'fr-FR', name: 'French (France)', region: 'common' },
    { code: 'de-DE', name: 'German (Germany)', region: 'common' },
    { code: 'it-IT', name: 'Italian (Italy)', region: 'common' },
    { code: 'pt-BR', name: 'Portuguese (Brazil)', region: 'common' },
    { code: 'pt-PT', name: 'Portuguese (Portugal)', region: 'common' },
    { code: 'ja-JP', name: 'Japanese', region: 'common' },
    { code: 'ko-KR', name: 'Korean', region: 'common' },
    { code: 'zh-CN', name: 'Chinese (Simplified)', region: 'common' },
    { code: 'zh-TW', name: 'Chinese (Traditional)', region: 'common' },
  
    // Europe
    { code: 'sq-AL', name: 'Albanian', region: 'europe' },
    { code: 'de-AT', name: 'German (Austria)', region: 'europe' },
    { code: 'nl-BE', name: 'Dutch (Belgium)', region: 'europe' },
    { code: 'fr-BE', name: 'French (Belgium)', region: 'europe' },
    { code: 'de-BE', name: 'German (Belgium)', region: 'europe' },
    { code: 'bs-BA', name: 'Bosnian', region: 'europe' },
    { code: 'bg-BG', name: 'Bulgarian', region: 'europe' },
    { code: 'hr-HR', name: 'Croatian', region: 'europe' },
    { code: 'el-CY', name: 'Greek (Cyprus)', region: 'europe' },
    { code: 'tr-CY', name: 'Turkish (Cyprus)', region: 'europe' },
    { code: 'cs-CZ', name: 'Czech', region: 'europe' },
    { code: 'da-DK', name: 'Danish', region: 'europe' },
    { code: 'et-EE', name: 'Estonian', region: 'europe' },
    { code: 'fi-FI', name: 'Finnish', region: 'europe' },
    { code: 'sv-FI', name: 'Swedish (Finland)', region: 'europe' },
    { code: 'el-GR', name: 'Greek', region: 'europe' },
    { code: 'hu-HU', name: 'Hungarian', region: 'europe' },
    { code: 'is-IS', name: 'Icelandic', region: 'europe' },
    { code: 'ga-IE', name: 'Irish', region: 'europe' },
    { code: 'en-IE', name: 'English (Ireland)', region: 'europe' },
    { code: 'it-SM', name: 'Italian (San Marino)', region: 'europe' },
    { code: 'lv-LV', name: 'Latvian', region: 'europe' },
    { code: 'lt-LT', name: 'Lithuanian', region: 'europe' },
    { code: 'lb-LU', name: 'Luxembourgish', region: 'europe' },
    { code: 'fr-LU', name: 'French (Luxembourg)', region: 'europe' },
    { code: 'de-LU', name: 'German (Luxembourg)', region: 'europe' },
    { code: 'mk-MK', name: 'Macedonian', region: 'europe' },
    { code: 'mt-MT', name: 'Maltese', region: 'europe' },
    { code: 'en-MT', name: 'English (Malta)', region: 'europe' },
    { code: 'ro-MD', name: 'Romanian (Moldova)', region: 'europe' },
    { code: 'fr-MC', name: 'French (Monaco)', region: 'europe' },
    { code: 'sr-ME', name: 'Serbian (Montenegro)', region: 'europe' },
    { code: 'nl-NL', name: 'Dutch (Netherlands)', region: 'europe' },
    { code: 'nb-NO', name: 'Norwegian (Bokmål)', region: 'europe' },
    { code: 'nn-NO', name: 'Norwegian (Nynorsk)', region: 'europe' },
    { code: 'pl-PL', name: 'Polish', region: 'europe' },
    { code: 'ro-RO', name: 'Romanian', region: 'europe' },
    { code: 'ru-RU', name: 'Russian', region: 'europe' },
    { code: 'sr-RS', name: 'Serbian', region: 'europe' },
    { code: 'sk-SK', name: 'Slovak', region: 'europe' },
    { code: 'sl-SI', name: 'Slovenian', region: 'europe' },
    { code: 'ca-ES', name: 'Catalan', region: 'europe' },
    { code: 'eu-ES', name: 'Basque', region: 'europe' },
    { code: 'gl-ES', name: 'Galician', region: 'europe' },
    { code: 'sv-SE', name: 'Swedish', region: 'europe' },
    { code: 'de-CH', name: 'German (Switzerland)', region: 'europe' },
    { code: 'fr-CH', name: 'French (Switzerland)', region: 'europe' },
    { code: 'it-CH', name: 'Italian (Switzerland)', region: 'europe' },
    { code: 'rm-CH', name: 'Romansh (Switzerland)', region: 'europe' },
    { code: 'tr-TR', name: 'Turkish', region: 'europe' },
    { code: 'uk-UA', name: 'Ukrainian', region: 'europe' },
    { code: 'ru-UA', name: 'Russian (Ukraine)', region: 'europe' },
    { code: 'cy-GB', name: 'Welsh', region: 'europe' },
    { code: 'gd-GB', name: 'Scottish Gaelic', region: 'europe' },
    { code: 'kw-GB', name: 'Cornish', region: 'europe' },
    { code: 'fo-FO', name: 'Faroese', region: 'europe' },
    { code: 'kl-GL', name: 'Greenlandic', region: 'europe' },
    { code: 'se-NO', name: 'Northern Sami (Norway)', region: 'europe' },
    { code: 'se-SE', name: 'Northern Sami (Sweden)', region: 'europe' },
    { code: 'se-FI', name: 'Northern Sami (Finland)', region: 'europe' },
    { code: 'ca-AD', name: 'Catalan (Andorra)', region: 'europe' },
    { code: 'de-LI', name: 'German (Liechtenstein)', region: 'europe' },
  
    // Americas
    { code: 'es-AR', name: 'Spanish (Argentina)', region: 'americas' },
    { code: 'hy-AM', name: 'Armenian', region: 'americas' },
    { code: 'en-BB', name: 'English (Barbados)', region: 'americas' },
    { code: 'en-BZ', name: 'English (Belize)', region: 'americas' },
    { code: 'es-BO', name: 'Spanish (Bolivia)', region: 'americas' },
    { code: 'qu-BO', name: 'Quechua (Bolivia)', region: 'americas' },
    { code: 'ay-BO', name: 'Aymara (Bolivia)', region: 'americas' },
    { code: 'en-CA', name: 'English (Canada)', region: 'americas' },
    { code: 'fr-CA', name: 'French (Canada)', region: 'americas' },
    { code: 'iu-CA', name: 'Inuktitut (Canada)', region: 'americas' },
    { code: 'es-CL', name: 'Spanish (Chile)', region: 'americas' },
    { code: 'es-CO', name: 'Spanish (Colombia)', region: 'americas' },
    { code: 'es-CR', name: 'Spanish (Costa Rica)', region: 'americas' },
    { code: 'es-CU', name: 'Spanish (Cuba)', region: 'americas' },
    { code: 'es-DO', name: 'Spanish (Dominican Republic)', region: 'americas' },
    { code: 'es-EC', name: 'Spanish (Ecuador)', region: 'americas' },
    { code: 'qu-EC', name: 'Quechua (Ecuador)', region: 'americas' },
    { code: 'es-SV', name: 'Spanish (El Salvador)', region: 'americas' },
    { code: 'en-GY', name: 'English (Guyana)', region: 'americas' },
    { code: 'es-GT', name: 'Spanish (Guatemala)', region: 'americas' },
    { code: 'es-HN', name: 'Spanish (Honduras)', region: 'americas' },
    { code: 'ht-HT', name: 'Haitian Creole', region: 'americas' },
    { code: 'fr-HT', name: 'French (Haiti)', region: 'americas' },
    { code: 'en-JM', name: 'English (Jamaica)', region: 'americas' },
    { code: 'es-NI', name: 'Spanish (Nicaragua)', region: 'americas' },
    { code: 'es-PA', name: 'Spanish (Panama)', region: 'americas' },
    { code: 'es-PY', name: 'Spanish (Paraguay)', region: 'americas' },
    { code: 'gn-PY', name: 'Guarani (Paraguay)', region: 'americas' },
    { code: 'es-PE', name: 'Spanish (Peru)', region: 'americas' },
    { code: 'qu-PE', name: 'Quechua (Peru)', region: 'americas' },
    { code: 'en-PR', name: 'English (Puerto Rico)', region: 'americas' },
    { code: 'es-PR', name: 'Spanish (Puerto Rico)', region: 'americas' },
    { code: 'en-US', name: 'English (US)', region: 'americas' },
    { code: 'es-US', name: 'Spanish (US)', region: 'americas' },
    { code: 'haw-US', name: 'Hawaiian', region: 'americas' },
    { code: 'en-TT', name: 'English (Trinidad & Tobago)', region: 'americas' },
    { code: 'es-UY', name: 'Spanish (Uruguay)', region: 'americas' },
    { code: 'es-VE', name: 'Spanish (Venezuela)', region: 'americas' },
    { code: 'nl-SR', name: 'Dutch (Suriname)', region: 'americas' },
    { code: 'fr-GF', name: 'French (French Guiana)', region: 'americas' },
    { code: 'pt-GW', name: 'Portuguese (Guinea-Bissau)', region: 'americas' },
    { code: 'en-AG', name: 'English (Antigua & Barbuda)', region: 'americas' },
    { code: 'en-BS', name: 'English (Bahamas)', region: 'americas' },
    { code: 'en-DM', name: 'English (Dominica)', region: 'americas' },
    { code: 'en-GD', name: 'English (Grenada)', region: 'americas' },
    { code: 'en-KN', name: 'English (St. Kitts & Nevis)', region: 'americas' },
    { code: 'en-LC', name: 'English (St. Lucia)', region: 'americas' },
    { code: 'en-VC', name: 'English (St. Vincent)', region: 'americas' },
    { code: 'nl-AW', name: 'Dutch (Aruba)', region: 'americas' },
    { code: 'nl-CW', name: 'Dutch (Curaçao)', region: 'americas' },
    { code: 'nl-SX', name: 'Dutch (Sint Maarten)', region: 'americas' },
    { code: 'fr-MQ', name: 'French (Martinique)', region: 'americas' },
    { code: 'fr-GP', name: 'French (Guadeloupe)', region: 'americas' },
    { code: 'fr-BL', name: 'French (Saint Barthélemy)', region: 'americas' },
    { code: 'fr-MF', name: 'French (Saint Martin)', region: 'americas' },
    { code: 'en-AI', name: 'English (Anguilla)', region: 'americas' },
    { code: 'en-BM', name: 'English (Bermuda)', region: 'americas' },
    { code: 'en-KY', name: 'English (Cayman Islands)', region: 'americas' },
    { code: 'en-FK', name: 'English (Falkland Islands)', region: 'americas' },
    { code: 'en-MS', name: 'English (Montserrat)', region: 'americas' },
    { code: 'en-TC', name: 'English (Turks & Caicos)', region: 'americas' },
    { code: 'en-VG', name: 'English (British Virgin Islands)', region: 'americas' },
    { code: 'en-VI', name: 'English (US Virgin Islands)', region: 'americas' },
  
    // Asia-Pacific
    { code: 'zh-CN', name: 'Chinese (Simplified)', region: 'asia' },
    { code: 'zh-HK', name: 'Chinese (Hong Kong)', region: 'asia' },
    { code: 'en-HK', name: 'English (Hong Kong)', region: 'asia' },
    { code: 'zh-MO', name: 'Chinese (Macau)', region: 'asia' },
    { code: 'pt-MO', name: 'Portuguese (Macau)', region: 'asia' },
    { code: 'zh-TW', name: 'Chinese (Traditional)', region: 'asia' },
    { code: 'hi-IN', name: 'Hindi', region: 'asia' },
    { code: 'en-IN', name: 'English (India)', region: 'asia' },
    { code: 'bn-IN', name: 'Bengali (India)', region: 'asia' },
    { code: 'te-IN', name: 'Telugu', region: 'asia' },
    { code: 'mr-IN', name: 'Marathi', region: 'asia' },
    { code: 'ta-IN', name: 'Tamil (India)', region: 'asia' },
    { code: 'ur-IN', name: 'Urdu (India)', region: 'asia' },
    { code: 'gu-IN', name: 'Gujarati', region: 'asia' },
    { code: 'kn-IN', name: 'Kannada', region: 'asia' },
    { code: 'ml-IN', name: 'Malayalam', region: 'asia' },
    { code: 'or-IN', name: 'Odia', region: 'asia' },
    { code: 'pa-IN', name: 'Punjabi (India)', region: 'asia' },
    { code: 'as-IN', name: 'Assamese', region: 'asia' },
    { code: 'ks-IN', name: 'Kashmiri', region: 'asia' },
    { code: 'ne-IN', name: 'Nepali (India)', region: 'asia' },
    { code: 'sd-IN', name: 'Sindhi (India)', region: 'asia' },
    { code: 'sa-IN', name: 'Sanskrit', region: 'asia' },
    { code: 'id-ID', name: 'Indonesian', region: 'asia' },
    { code: 'jv-ID', name: 'Javanese', region: 'asia' },
    { code: 'su-ID', name: 'Sundanese', region: 'asia' },
    { code: 'ja-JP', name: 'Japanese', region: 'asia' },
    { code: 'ko-KR', name: 'Korean', region: 'asia' },
    { code: 'ko-KP', name: 'Korean (North Korea)', region: 'asia' },
    { code: 'ms-MY', name: 'Malay (Malaysia)', region: 'asia' },
    { code: 'en-MY', name: 'English (Malaysia)', region: 'asia' },
    { code: 'ta-MY', name: 'Tamil (Malaysia)', region: 'asia' },
    { code: 'zh-MY', name: 'Chinese (Malaysia)', region: 'asia' },
    { code: 'fil-PH', name: 'Filipino', region: 'asia' },
    { code: 'en-PH', name: 'English (Philippines)', region: 'asia' },
    { code: 'ceb-PH', name: 'Cebuano', region: 'asia' },
    { code: 'ilo-PH', name: 'Ilocano', region: 'asia' },
    { code: 'hil-PH', name: 'Hiligaynon', region: 'asia' },
    { code: 'en-SG', name: 'English (Singapore)', region: 'asia' },
    { code: 'zh-SG', name: 'Chinese (Singapore)', region: 'asia' },
    { code: 'ms-SG', name: 'Malay (Singapore)', region: 'asia' },
    { code: 'ta-SG', name: 'Tamil (Singapore)', region: 'asia' },
    { code: 'th-TH', name: 'Thai', region: 'asia' },
    { code: 'vi-VN', name: 'Vietnamese', region: 'asia' },
    { code: 'km-KH', name: 'Khmer', region: 'asia' },
    { code: 'lo-LA', name: 'Lao', region: 'asia' },
    { code: 'my-MM', name: 'Burmese', region: 'asia' },
    { code: 'ne-NP', name: 'Nepali', region: 'asia' },
    { code: 'dz-BT', name: 'Dzongkha', region: 'asia' },
    { code: 'bn-BD', name: 'Bengali (Bangladesh)', region: 'asia' },
    { code: 'si-LK', name: 'Sinhala', region: 'asia' },
    { code: 'ta-LK', name: 'Tamil (Sri Lanka)', region: 'asia' },
    { code: 'dv-MV', name: 'Dhivehi', region: 'asia' },
    { code: 'mn-MN', name: 'Mongolian', region: 'asia' },
    { code: 'bo-CN', name: 'Tibetan', region: 'asia' },
    { code: 'ug-CN', name: 'Uyghur', region: 'asia' },
    { code: 'kk-KZ', name: 'Kazakh', region: 'asia' },
    { code: 'ru-KZ', name: 'Russian (Kazakhstan)', region: 'asia' },
    { code: 'ky-KG', name: 'Kyrgyz', region: 'asia' },
    { code: 'ru-KG', name: 'Russian (Kyrgyzstan)', region: 'asia' },
    { code: 'tg-TJ', name: 'Tajik', region: 'asia' },
    { code: 'ru-TJ', name: 'Russian (Tajikistan)', region: 'asia' },
    { code: 'tk-TM', name: 'Turkmen', region: 'asia' },
    { code: 'ru-TM', name: 'Russian (Turkmenistan)', region: 'asia' },
    { code: 'uz-UZ', name: 'Uzbek', region: 'asia' },
    { code: 'ru-UZ', name: 'Russian (Uzbekistan)', region: 'asia' },
    { code: 'ps-AF', name: 'Pashto', region: 'asia' },
    { code: 'fa-AF', name: 'Dari', region: 'asia' },
    { code: 'ur-PK', name: 'Urdu (Pakistan)', region: 'asia' },
    { code: 'pa-PK', name: 'Punjabi (Pakistan)', region: 'asia' },
    { code: 'sd-PK', name: 'Sindhi (Pakistan)', region: 'asia' },
    { code: 'en-PK', name: 'English (Pakistan)', region: 'asia' },
    { code: 'az-AZ', name: 'Azerbaijani', region: 'asia' },
    { code: 'ka-GE', name: 'Georgian', region: 'asia' },
    { code: 'tl-PH', name: 'Tagalog', region: 'asia' },
    { code: 'ms-BN', name: 'Malay (Brunei)', region: 'asia' },
    { code: 'en-BN', name: 'English (Brunei)', region: 'asia' },
    { code: 'tet-TL', name: 'Tetum', region: 'asia' },
    { code: 'pt-TL', name: 'Portuguese (East Timor)', region: 'asia' },
  
    // Oceania
    { code: 'en-AU', name: 'English (Australia)', region: 'oceania' },
    { code: 'en-NZ', name: 'English (New Zealand)', region: 'oceania' },
    { code: 'mi-NZ', name: 'Māori', region: 'oceania' },
    { code: 'en-FJ', name: 'English (Fiji)', region: 'oceania' },
    { code: 'fj-FJ', name: 'Fijian', region: 'oceania' },
    { code: 'hi-FJ', name: 'Hindi (Fiji)', region: 'oceania' },
    { code: 'en-PG', name: 'English (Papua New Guinea)', region: 'oceania' },
    { code: 'ho-PG', name: 'Hiri Motu', region: 'oceania' },
    { code: 'en-SB', name: 'English (Solomon Islands)', region: 'oceania' },
    { code: 'en-VU', name: 'English (Vanuatu)', region: 'oceania' },
    { code: 'bi-VU', name: 'Bislama', region: 'oceania' },
    { code: 'fr-VU', name: 'French (Vanuatu)', region: 'oceania' },
    { code: 'en-WS', name: 'English (Samoa)', region: 'oceania' },
    { code: 'sm-WS', name: 'Samoan', region: 'oceania' },
    { code: 'en-TO', name: 'English (Tonga)', region: 'oceania' },
    { code: 'to-TO', name: 'Tongan', region: 'oceania' },
    { code: 'en-TV', name: 'English (Tuvalu)', region: 'oceania' },
    { code: 'en-NR', name: 'English (Nauru)', region: 'oceania' },
    { code: 'en-KI', name: 'English (Kiribati)', region: 'oceania' },
    { code: 'en-PW', name: 'English (Palau)', region: 'oceania' },
    { code: 'en-MH', name: 'English (Marshall Islands)', region: 'oceania' },
    { code: 'mh-MH', name: 'Marshallese', region: 'oceania' },
    { code: 'en-FM', name: 'English (Micronesia)', region: 'oceania' },
    { code: 'en-CK', name: 'English (Cook Islands)', region: 'oceania' },
    { code: 'en-NU', name: 'English (Niue)', region: 'oceania' },
    { code: 'fr-PF', name: 'French (French Polynesia)', region: 'oceania' },
    { code: 'ty-PF', name: 'Tahitian', region: 'oceania' },
    { code: 'fr-NC', name: 'French (New Caledonia)', region: 'oceania' },
    { code: 'fr-WF', name: 'French (Wallis & Futuna)', region: 'oceania' },
    { code: 'en-PN', name: 'English (Pitcairn)', region: 'oceania' },
    { code: 'en-TK', name: 'English (Tokelau)', region: 'oceania' },
    { code: 'en-NF', name: 'English (Norfolk Island)', region: 'oceania' },
    { code: 'en-CX', name: 'English (Christmas Island)', region: 'oceania' },
    { code: 'en-CC', name: 'English (Cocos Islands)', region: 'oceania' },
    { code: 'en-GU', name: 'English (Guam)', region: 'oceania' },
    { code: 'ch-GU', name: 'Chamorro (Guam)', region: 'oceania' },
    { code: 'en-AS', name: 'English (American Samoa)', region: 'oceania' },
    { code: 'sm-AS', name: 'Samoan (American Samoa)', region: 'oceania' },
    { code: 'en-MP', name: 'English (Northern Marianas)', region: 'oceania' },
    { code: 'ch-MP', name: 'Chamorro (Northern Marianas)', region: 'oceania' },
  
    // Middle East & Africa
    { code: 'ar-SA', name: 'Arabic (Saudi Arabia)', region: 'mea' },
    { code: 'ar-AE', name: 'Arabic (UAE)', region: 'mea' },
    { code: 'en-AE', name: 'English (UAE)', region: 'mea' },
    { code: 'ar-BH', name: 'Arabic (Bahrain)', region: 'mea' },
    { code: 'en-BH', name: 'English (Bahrain)', region: 'mea' },
    { code: 'ar-EG', name: 'Arabic (Egypt)', region: 'mea' },
    { code: 'ar-IQ', name: 'Arabic (Iraq)', region: 'mea' },
    { code: 'ku-IQ', name: 'Kurdish (Iraq)', region: 'mea' },
    { code: 'ar-JO', name: 'Arabic (Jordan)', region: 'mea' },
    { code: 'ar-KW', name: 'Arabic (Kuwait)', region: 'mea' },
    { code: 'ar-LB', name: 'Arabic (Lebanon)', region: 'mea' },
    { code: 'fr-LB', name: 'French (Lebanon)', region: 'mea' },
    { code: 'ar-LY', name: 'Arabic (Libya)', region: 'mea' },
    { code: 'ar-MA', name: 'Arabic (Morocco)', region: 'mea' },
    { code: 'fr-MA', name: 'French (Morocco)', region: 'mea' },
    { code: 'ar-OM', name: 'Arabic (Oman)', region: 'mea' },
    { code: 'ar-PS', name: 'Arabic (Palestine)', region: 'mea' },
    { code: 'ar-QA', name: 'Arabic (Qatar)', region: 'mea' },
    { code: 'ar-SY', name: 'Arabic (Syria)', region: 'mea' },
    { code: 'ar-TN', name: 'Arabic (Tunisia)', region: 'mea' },
    { code: 'fr-TN', name: 'French (Tunisia)', region: 'mea' },
    { code: 'ar-YE', name: 'Arabic (Yemen)', region: 'mea' },
    { code: 'he-IL', name: 'Hebrew', region: 'mea' },
    { code: 'en-IL', name: 'English (Israel)', region: 'mea' },
    { code: 'ar-IL', name: 'Arabic (Israel)', region: 'mea' },
    { code: 'fa-IR', name: 'Persian', region: 'mea' },
    { code: 'az-IR', name: 'Azerbaijani (Iran)', region: 'mea' },
    { code: 'ku-IR', name: 'Kurdish (Iran)', region: 'mea' },
  
    // Africa
    { code: 'ar-DZ', name: 'Arabic (Algeria)', region: 'africa' },
    { code: 'fr-DZ', name: 'French (Algeria)', region: 'africa' },
    { code: 'kab-DZ', name: 'Kabyle (Algeria)', region: 'africa' },
    { code: 'pt-AO', name: 'Portuguese (Angola)', region: 'africa' },
    { code: 'fr-BJ', name: 'French (Benin)', region: 'africa' },
    { code: 'en-BW', name: 'English (Botswana)', region: 'africa' },
    { code: 'tn-BW', name: 'Tswana (Botswana)', region: 'africa' },
    { code: 'fr-BF', name: 'French (Burkina Faso)', region: 'africa' },
    { code: 'fr-BI', name: 'French (Burundi)', region: 'africa' },
    { code: 'rn-BI', name: 'Kirundi', region: 'africa' },
    { code: 'fr-CM', name: 'French (Cameroon)', region: 'africa' },
    { code: 'en-CM', name: 'English (Cameroon)', region: 'africa' },
    { code: 'pt-CV', name: 'Portuguese (Cape Verde)', region: 'africa' },
    { code: 'fr-CF', name: 'French (Central African Rep.)', region: 'africa' },
    { code: 'sg-CF', name: 'Sango', region: 'africa' },
    { code: 'fr-TD', name: 'French (Chad)', region: 'africa' },
    { code: 'ar-TD', name: 'Arabic (Chad)', region: 'africa' },
    { code: 'fr-KM', name: 'French (Comoros)', region: 'africa' },
    { code: 'ar-KM', name: 'Arabic (Comoros)', region: 'africa' },
    { code: 'fr-CG', name: 'French (Congo-Brazzaville)', region: 'africa' },
    { code: 'fr-CD', name: 'French (Congo-Kinshasa)', region: 'africa' },
    { code: 'sw-CD', name: 'Swahili (Congo)', region: 'africa' },
    { code: 'fr-CI', name: 'French (Ivory Coast)', region: 'africa' },
    { code: 'fr-DJ', name: 'French (Djibouti)', region: 'africa' },
    { code: 'ar-DJ', name: 'Arabic (Djibouti)', region: 'africa' },
    { code: 'fr-GQ', name: 'French (Equatorial Guinea)', region: 'africa' },
    { code: 'es-GQ', name: 'Spanish (Equatorial Guinea)', region: 'africa' },
    { code: 'pt-GQ', name: 'Portuguese (Equatorial Guinea)', region: 'africa' },
    { code: 'ar-ER', name: 'Arabic (Eritrea)', region: 'africa' },
    { code: 'ti-ER', name: 'Tigrinya (Eritrea)', region: 'africa' },
    { code: 'en-ER', name: 'English (Eritrea)', region: 'africa' },
    { code: 'am-ET', name: 'Amharic', region: 'africa' },
    { code: 'om-ET', name: 'Oromo', region: 'africa' },
    { code: 'ti-ET', name: 'Tigrinya (Ethiopia)', region: 'africa' },
    { code: 'so-ET', name: 'Somali (Ethiopia)', region: 'africa' },
    { code: 'fr-GA', name: 'French (Gabon)', region: 'africa' },
    { code: 'en-GM', name: 'English (Gambia)', region: 'africa' },
    { code: 'en-GH', name: 'English (Ghana)', region: 'africa' },
    { code: 'tw-GH', name: 'Twi', region: 'africa' },
    { code: 'fr-GN', name: 'French (Guinea)', region: 'africa' },
    { code: 'pt-GW', name: 'Portuguese (Guinea-Bissau)', region: 'africa' },
    { code: 'en-KE', name: 'English (Kenya)', region: 'africa' },
    { code: 'sw-KE', name: 'Swahili (Kenya)', region: 'africa' },
    { code: 'en-LS', name: 'English (Lesotho)', region: 'africa' },
    { code: 'st-LS', name: 'Sotho', region: 'africa' },
    { code: 'en-LR', name: 'English (Liberia)', region: 'africa' },
    { code: 'fr-MG', name: 'French (Madagascar)', region: 'africa' },
    { code: 'mg-MG', name: 'Malagasy', region: 'africa' },
    { code: 'en-MW', name: 'English (Malawi)', region: 'africa' },
    { code: 'ny-MW', name: 'Chichewa', region: 'africa' },
    { code: 'fr-ML', name: 'French (Mali)', region: 'africa' },
    { code: 'bm-ML', name: 'Bambara', region: 'africa' },
    { code: 'ar-MR', name: 'Arabic (Mauritania)', region: 'africa' },
    { code: 'fr-MR', name: 'French (Mauritania)', region: 'africa' },
    { code: 'en-MU', name: 'English (Mauritius)', region: 'africa' },
    { code: 'fr-MU', name: 'French (Mauritius)', region: 'africa' },
    { code: 'pt-MZ', name: 'Portuguese (Mozambique)', region: 'africa' },
    { code: 'en-NA', name: 'English (Namibia)', region: 'africa' },
    { code: 'af-NA', name: 'Afrikaans (Namibia)', region: 'africa' },
    { code: 'fr-NE', name: 'French (Niger)', region: 'africa' },
    { code: 'ha-NE', name: 'Hausa (Niger)', region: 'africa' },
    { code: 'en-NG', name: 'English (Nigeria)', region: 'africa' },
    { code: 'ha-NG', name: 'Hausa (Nigeria)', region: 'africa' },
    { code: 'yo-NG', name: 'Yoruba', region: 'africa' },
    { code: 'ig-NG', name: 'Igbo', region: 'africa' },
    { code: 'fr-RW', name: 'French (Rwanda)', region: 'africa' },
    { code: 'en-RW', name: 'English (Rwanda)', region: 'africa' },
    { code: 'rw-RW', name: 'Kinyarwanda', region: 'africa' },
    { code: 'pt-ST', name: 'Portuguese (São Tomé)', region: 'africa' },
    { code: 'fr-SN', name: 'French (Senegal)', region: 'africa' },
    { code: 'wo-SN', name: 'Wolof', region: 'africa' },
    { code: 'en-SC', name: 'English (Seychelles)', region: 'africa' },
    { code: 'fr-SC', name: 'French (Seychelles)', region: 'africa' },
    { code: 'en-SL', name: 'English (Sierra Leone)', region: 'africa' },
    { code: 'so-SO', name: 'Somali', region: 'africa' },
    { code: 'ar-SO', name: 'Arabic (Somalia)', region: 'africa' },
    { code: 'en-ZA', name: 'English (South Africa)', region: 'africa' },
    { code: 'af-ZA', name: 'Afrikaans', region: 'africa' },
    { code: 'zu-ZA', name: 'Zulu', region: 'africa' },
    { code: 'xh-ZA', name: 'Xhosa', region: 'africa' },
    { code: 'st-ZA', name: 'Sotho (South Africa)', region: 'africa' },
    { code: 'tn-ZA', name: 'Tswana (South Africa)', region: 'africa' },
    { code: 've-ZA', name: 'Venda', region: 'africa' },
    { code: 'ts-ZA', name: 'Tsonga', region: 'africa' },
    { code: 'ss-ZA', name: 'Swati (South Africa)', region: 'africa' },
    { code: 'nr-ZA', name: 'Ndebele (South Africa)', region: 'africa' },
    { code: 'nso-ZA', name: 'Northern Sotho', region: 'africa' },
    { code: 'en-SS', name: 'English (South Sudan)', region: 'africa' },
    { code: 'ar-SD', name: 'Arabic (Sudan)', region: 'africa' },
    { code: 'en-SD', name: 'English (Sudan)', region: 'africa' },
    { code: 'en-SZ', name: 'English (Swaziland)', region: 'africa' },
    { code: 'ss-SZ', name: 'Swati (Swaziland)', region: 'africa' },
    { code: 'sw-TZ', name: 'Swahili (Tanzania)', region: 'africa' },
    { code: 'en-TZ', name: 'English (Tanzania)', region: 'africa' },
    { code: 'fr-TG', name: 'French (Togo)', region: 'africa' },
    { code: 'ee-TG', name: 'Ewe', region: 'africa' },
    { code: 'en-UG', name: 'English (Uganda)', region: 'africa' },
    { code: 'sw-UG', name: 'Swahili (Uganda)', region: 'africa' },
    { code: 'lg-UG', name: 'Luganda', region: 'africa' },
    { code: 'en-ZM', name: 'English (Zambia)', region: 'africa' },
    { code: 'bem-ZM', name: 'Bemba', region: 'africa' },
    { code: 'en-ZW', name: 'English (Zimbabwe)', region: 'africa' },
    { code: 'sn-ZW', name: 'Shona', region: 'africa' },
    { code: 'nd-ZW', name: 'Ndebele (Zimbabwe)', region: 'africa' },
    { code: 'fr-YT', name: 'French (Mayotte)', region: 'africa' },
    { code: 'fr-RE', name: 'French (Réunion)', region: 'africa' },
    { code: 'en-SH', name: 'English (St. Helena)', region: 'africa' },
    { code: 'ar-EH', name: 'Arabic (Western Sahara)', region: 'africa' },
  
    // Language-only options
    { code: 'en', name: 'English (All regions)', region: 'global' },
    { code: 'es', name: 'Spanish (All regions)', region: 'global' },
    { code: 'fr', name: 'French (All regions)', region: 'global' },
    { code: 'de', name: 'German (All regions)', region: 'global' },
    { code: 'it', name: 'Italian (All regions)', region: 'global' },
    { code: 'pt', name: 'Portuguese (All regions)', region: 'global' },
    { code: 'ru', name: 'Russian (All regions)', region: 'global' },
    { code: 'ja', name: 'Japanese (All regions)', region: 'global' },
    { code: 'ko', name: 'Korean (All regions)', region: 'global' },
    { code: 'zh', name: 'Chinese (All regions)', region: 'global' },
    { code: 'ar', name: 'Arabic (All regions)', region: 'global' },
    { code: 'hi', name: 'Hindi (All regions)', region: 'global' },
    { code: 'bn', name: 'Bengali (All regions)', region: 'global' },
    { code: 'pa', name: 'Punjabi (All regions)', region: 'global' },
    { code: 'ur', name: 'Urdu (All regions)', region: 'global' },
    { code: 'vi', name: 'Vietnamese (All regions)', region: 'global' },
    { code: 'th', name: 'Thai (All regions)', region: 'global' },
    { code: 'tr', name: 'Turkish (All regions)', region: 'global' },
    { code: 'pl', name: 'Polish (All regions)', region: 'global' },
    { code: 'uk', name: 'Ukrainian (All regions)', region: 'global' },
    { code: 'nl', name: 'Dutch (All regions)', region: 'global' },
    { code: 'sv', name: 'Swedish (All regions)', region: 'global' },
    { code: 'no', name: 'Norwegian (All regions)', region: 'global' },
    { code: 'da', name: 'Danish (All regions)', region: 'global' },
    { code: 'fi', name: 'Finnish (All regions)', region: 'global' },
    { code: 'el', name: 'Greek (All regions)', region: 'global' },
    { code: 'he', name: 'Hebrew (All regions)', region: 'global' },
    { code: 'id', name: 'Indonesian (All regions)', region: 'global' },
    { code: 'ms', name: 'Malay (All regions)', region: 'global' },
    { code: 'ta', name: 'Tamil (All regions)', region: 'global' },
    { code: 'te', name: 'Telugu (All regions)', region: 'global' },
    { code: 'sw', name: 'Swahili (All regions)', region: 'global' },
    { code: 'x-default', name: 'Default (fallback)', region: 'global' }
];

Use this checklist to validate your rollout.
  1. Pick three templates across three markets. View source and confirm absolute URLs, correct ISO codes, and a self reference.
  2. Click every hreflang URL and check it returns 200, not a redirect.
  3. Run a round trip test. From GB to US to GB. All pages should reference each other.
  4. Confirm canonicals match the visible URL and not a different version.
  5. Crawl a sample set with a tool that reads hreflang. Look for missing entries, mismatched pairs, and unexpected language-only codes.
  6. Add x-default to the URL that handles choice or fallback.
  7. For paginated series, either add hreflang on each page to its direct counterparts or omit it cleanly. Never point page 4 to page 1 in other markets.
  8. Keep sitemaps lean. If you move hreflang to sitemaps, make sure only canonical URLs are listed.
  9. Watch Search Console. Coverage should be clean and “Hreflang conflicts” should be zero.

Edge cases to handle now, not later:

• Out of stock in one market only. Keep the page live with clear messaging. Do not 404.
• Country redirects based on IP. Disable for bots or you will break verification.
• Mixed TLDs and subfolders. Works fine. The hreflang map is the contract, not the domain shape.
• Language toggles. Make sure they link to the true canonical URLs, not JS anchors or query strings.

That is it. You now have a complete ISO set you can trust and a deployment plan that holds up under pressure. Ship this once, keep the market map updated, and your international layer will stop being a constant fire drill. If you find a gap in the list, add it to your source of truth, regenerate, and redeploy across the lot.
 
Last edited:
Back
Top