i18n: unify locale codes to match language structure (#104415)

This commit is contained in:
Laura Fernández 2025-04-24 11:08:57 +02:00 committed by GitHub
parent 1584349b99
commit 10df5d6f23
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 256 additions and 119 deletions

View File

@ -1,5 +1,4 @@
// List hard-coded locales from https://github.com/moment/moment/tree/develop/locale
// Info: https://www.iana.org/assignments/language-subtag-registry/language-subtag-registry
interface Locale {
name: string;
code: string;
@ -7,140 +6,278 @@ interface Locale {
// TODO re-check translations
export const LOCALES: Locale[] = [
// Afrikaans - Standard
{ name: 'Afrikaans', code: 'af' },
// Arabic - Standard
{ name: 'العربية', code: 'ar' },
{ name: 'العربية (الجزائر)', code: 'ar-dz' },
{ name: 'العربية (الكويت)', code: 'ar-kw' },
{ name: 'العربية (ليبيا)', code: 'ar-ly' },
{ name: 'العربية (المغرب)', code: 'ar-ma' },
{ name: 'العربية (فلسطين)', code: 'ar-ps' },
{ name: 'العربية (السعودية)', code: 'ar-sa' },
{ name: 'العربية (تونس)', code: 'ar-tn' },
{ name: 'Azərbaycanca', code: 'az' },
{ name: 'Беларуская', code: 'be' },
{ name: 'български език', code: 'bg' },
// Arabic - Algeria
{ name: 'العربية (الجزائر)', code: 'ar-DZ' },
// Arabic - Kuwait
{ name: 'العربية (الكويت)', code: 'ar-KW' },
// Arabic - Libya
{ name: 'العربية (ليبيا)', code: 'ar-LY' },
// Arabic - Morocco
{ name: 'العربية (المغرب)', code: 'ar-MA' },
// Arabic - Palestine
{ name: 'العربية (فلسطين)', code: 'ar-PS' },
// Arabic - Saudi Arabia
{ name: 'العربية (السعودية)', code: 'ar-SA' },
// Arabic - Tunisia
{ name: 'العربية (تونس)', code: 'ar-TN' },
// Azerbaijani - Azerbaijan
{ name: 'Azərbaycan dili', code: 'az' },
// Belarusian - Belarus
{ name: 'Беларуская мова', code: 'be-BY' },
// Bulgarian - Bulgaria
{ name: 'Български език', code: 'bg-BG' },
// Bambara - Mali
{ name: 'Bamanankan', code: 'bm' },
{ name: 'Bengali', code: 'bn' }, // TODO translate : বাংলা ???
{ name: 'Bengali (Bangladesh)', code: 'bn-bd' }, // TODO translate
{ name: 'Tibetan', code: 'bo' }, // TODO translate
// Bengali - Standard
{ name: 'বাংলা', code: 'bn' },
// Bengali - Bangladesh
{ name: 'বাংলা', code: 'bn-BD' },
// Tibetan - Tibet (China) and Bhutan
{ name: 'བོད་ཡིག', code: 'bo' },
// Breton - Brittany (France)
{ name: 'Brezhoneg', code: 'br' },
{ name: 'Босански', code: 'bs' },
{ name: 'Catalán', code: 'ca' },
{ name: 'Čeština', code: 'cs' },
{ name: 'Cymraeg', code: 'cy' },
{ name: 'Чӑвашла', code: 'cv' },
{ name: 'Dansk', code: 'da' },
{ name: 'Deutsch', code: 'de' },
{ name: 'Deutsch (Österreich)', code: 'de-at' },
{ name: 'Deutsch (Schweiz)', code: 'de-ch' },
{ name: 'ދިވެހި', code: 'dv' },
{ name: 'Ελληνικά', code: 'el' },
{ name: 'English (Australia)', code: 'en-au' },
{ name: 'English (Canada)', code: 'en-ca' },
{ name: 'English (United Kingdom)', code: 'en-gb' },
{ name: 'English (Ireland)', code: 'en-ie' },
{ name: 'English (Israel)', code: 'en-il' },
{ name: 'English (India)', code: 'en-in' },
{ name: 'English (New Zealand)', code: 'en-nz' },
{ name: 'English (Singapore)', code: 'en-sg' },
{ name: 'English (United States)', code: 'en' },
// Bosnian - Bosnia and Herzegovina
{ name: 'Bosanski jezik', code: 'bs' },
// Catalan - Catalonia (Spain)
{ name: 'Català', code: 'ca-ES' },
// Czech - Czech Republic
{ name: 'Čeština', code: 'cs-CZ' },
// Welsh - Wales (United Kingdom)
{ name: 'Cymraeg', code: 'cy-GB' },
// Chuvash - Chuvashia (Russia)
{ name: 'Чӑвашла', code: 'cv-RU' },
// Danish - Denmark
{ name: 'Dansk', code: 'da-DK' },
// German - Germany
{ name: 'Deutsch', code: 'de-DE' },
// German - Austria
{ name: 'Deutsch (Österreich)', code: 'de-AT' },
// German - Switzerland
{ name: 'Deutsch (Schweiz)', code: 'de-CH' },
// Divehi/Maldivian - Maldives
{ name: 'ދިވެހި', code: 'dv-MV' },
// Greek - Greece
{ name: 'Ελληνικά', code: 'el-GR' },
// English - Australia
{ name: 'English (Australia)', code: 'en-AU' },
// English - Canada
{ name: 'English (Canada)', code: 'en-CA' },
// English - United Kingdom
{ name: 'English (United Kingdom)', code: 'en-GB' },
// English - Ireland
{ name: 'English (Ireland)', code: 'en-IE' },
// English - Israel
{ name: 'English (Israel)', code: 'en-IL' },
// English - India
{ name: 'English (India)', code: 'en-IN' },
// English - New Zealand
{ name: 'English (New Zealand)', code: 'en-NZ' },
// English - Singapore
{ name: 'English (Singapore)', code: 'en-SG' },
// English - United States
{ name: 'English (United States)', code: 'en-US' },
// Esperanto - International Auxiliary Language
{ name: 'Esperanto', code: 'eo' },
{ name: 'Español', code: 'es' },
{ name: 'Español (República Dominicana)', code: 'es-do' },
{ name: 'Español (México)', code: 'es-mx' },
{ name: 'Español (Estados Unidos)', code: 'es-us' },
{ name: 'Eesti keel', code: 'et' },
{ name: 'Euskara', code: 'eu' },
{ name: 'فارسی', code: 'fa' },
{ name: 'Filipino', code: 'fil' },
{ name: 'Suomi', code: 'fi' },
{ name: 'Føroyskt', code: 'fo' },
{ name: 'Français', code: 'fr' },
{ name: 'Français (Canada)', code: 'fr-ca' },
{ name: 'Français (Suisse)', code: 'fr-ch' },
{ name: 'Frisian', code: 'fy' }, // TODO translate
{ name: 'Gaeilge', code: 'ga' },
{ name: 'Gàidhlig', code: 'gd' },
{ name: 'Galego', code: 'gl' },
{ name: 'Konkani Devanagari', code: 'gom-deva' }, // TODO translate
{ name: 'Konkani Latin', code: 'gom-latn' }, // TODO translate
{ name: 'ગુજરાતી', code: 'gu' },
{ name: 'עברית', code: 'he' },
// Spanish - Spain
{ name: 'Español', code: 'es-ES' },
// Spanish - Dominican Republic
{ name: 'Español (República Dominicana)', code: 'es-DO' },
// Spanish - Mexico
{ name: 'Español (México)', code: 'es-MX' },
// Spanish - United States
{ name: 'Español (Estados Unidos)', code: 'es-US' },
// Estonian - Estonia
{ name: 'Eesti keel', code: 'et-EE' },
// Basque - Basque Country
{ name: 'Euskara', code: 'eu-ES' },
// Persian - Iran
{ name: 'فارسی', code: 'fa-IR' },
// Filipino - Philippines
{ name: 'Wikang Filipino', code: 'fil-PH' },
// Finnish - Finland
{ name: 'Suomi', code: 'fi-FI' },
// Faroese - Faroe Islands
{ name: 'Føroyskt', code: 'fo-FO' },
// French - France
{ name: 'Français', code: 'fr-FR' },
// French - Canada
{ name: 'Français (Canada)', code: 'fr-CA' },
// French - Switzerland
{ name: 'Français (Suisse)', code: 'fr-CH' },
// West Frisian - Netherlands
{ name: 'Frysk', code: 'fy' },
// Irish - Ireland
{ name: 'Gaeilge', code: 'ga-IE' },
// Scottish Gaelic - Scotland (UK)
{ name: 'Gàidhlig', code: 'gd-GB' },
// Galician - Galicia (Spain)
{ name: 'Galego', code: 'gl-ES' },
// Konkani (Devanagari script) - India
{ name: 'कोंकणी', code: 'gom-Deva' },
// Konkani (Latin script) - India
{ name: 'Konkani', code: 'gom-Latn' },
// Gujarati - India
{ name: 'ગુજરાતી', code: 'gu-IN' },
// Hebrew - Israel
{ name: 'עברית', code: 'he-IL' },
// Hindi - India
{ name: 'हिन्दी', code: 'hi' },
{ name: 'Hrvatski', code: 'hr' },
{ name: 'Magyar', code: 'hu' },
{ name: 'Հայերեն', code: 'hy-am' },
{ name: 'Bahasa Indonesia', code: 'id' },
{ name: 'Íslenska', code: 'is' },
{ name: 'Italiano', code: 'it' },
{ name: 'Italiano (Switzerland)', code: 'it-ch' },
{ name: '日本語', code: 'ja' },
// Croatian - Croatia
{ name: 'Hrvatski jezik', code: 'hr' },
// Hungarian - Hungary
{ name: 'Magyar nyelv', code: 'hu-HU' },
// Armenian - Armenia
{ name: 'Հայերեն', code: 'hy-AM' },
// Indonesian - Indonesia
{ name: 'Bahasa Indonesia', code: 'id-ID' },
// Icelandic - Iceland
{ name: 'Íslenska', code: 'is-IS' },
// Italian - Italy
{ name: 'Italiano', code: 'it-IT' },
// Italian - Switzerland
{ name: 'Italiano (Svizzera)', code: 'it-CH' },
// Japanese - Japan
{ name: '日本語', code: 'ja-JP' },
// Javanese - Indonesia
{ name: 'ꦧꦱꦗꦮ', code: 'jv' },
{ name: 'ქართული', code: 'ka' },
{ name: 'Қазақ Tілі', code: 'kk' },
{ name: 'Cambodian', code: 'km' }, // TODO translate
{ name: 'ಕನ್ನಡ', code: 'kn' },
{ name: '한국어', code: 'ko' },
{ name: 'Kurdish', code: 'ku' }, // TODO translate
{ name: 'Northern Kurdish', code: 'ku' }, // TODO translate
{ name: 'Кыргыз тили', code: 'ky' },
{ name: 'Lëtzebuergesch', code: 'lb' },
{ name: 'ພາສາລາວ', code: 'lo' },
{ name: 'Lietuvių', code: 'lt' },
{ name: 'latviešu', code: 'lv' },
{ name: 'Mакедонски', code: 'mk' },
{ name: 'മലയാളം', code: 'ml' },
{ name: 'te Reo Māori', code: 'mi' },
{ name: 'crnogorski', code: 'me' },
// Georgian - Georgia
{ name: 'ქართული ენა', code: 'ka-GE' },
// Kazakh - Kazakhstan
{ name: 'Қазақ тілі', code: 'kk-KZ' },
// Khmer - Cambodia
{ name: 'ខ្មែរ', code: 'km-KH' },
// Kannada - India
{ name: 'ಕನ್ನಡ', code: 'kn-IN' },
// Korean - South Korea
{ name: '한국어', code: 'ko-KR' },
// Kurdish - Kurdistan (Iraq, Iran, Syria, Turkey)
{ name: 'Kurdî', code: 'ku' },
// Kyrgyz - Kyrgyzstan
{ name: 'Кыргыз тили', code: 'ky-KG' },
// Luxembourgish - Luxembourg
{ name: 'Lëtzebuergesch', code: 'lb-LU' },
// Lao - Laos
{ name: 'ພາສາລາວ', code: 'lo-LA' },
// Lithuanian - Lithuania
{ name: 'Lietuvių kalba', code: 'lt-LT' },
// Latvian - Latvia
{ name: 'Latviešu valoda', code: 'lv-LV' },
// Macedonian - North Macedonia
{ name: 'Македонски јазик', code: 'mk-MK' },
// Malayalam - Kerala (India)
{ name: 'മലയാളം', code: 'ml-IN' },
// Māori - New Zealand
{ name: 'Te Reo Māori', code: 'mi-NZ' },
// Montenegrin - Montenegro
{ name: 'Црногорски језик', code: 'cnr-ME' },
// Marathi - Maharashtra (India)
{ name: 'मराठी', code: 'mr' },
// Malay - Malaysia, Singapore, Brunei
{ name: 'Bahasa Melayu', code: 'ms' },
{ name: 'Malti', code: 'mt' },
{ name: 'Монгол Хэл', code: 'mn' },
{ name: 'Burmese', code: 'my' }, // TODO trasnlate: မြန်မာစာ ??
{ name: 'Norwegian Bokmål', code: 'nb' }, // TODO translate
// Maltese - Malta
{ name: 'Malti', code: 'mt-MT' },
// Mongolian - Mongolia
{ name: 'Монгол хэл', code: 'mn-MN' },
// Burmese - Myanmar
{ name: 'မြန်မာစာ', code: 'my-MM' },
// Norwegian Bokmål - Norway
{ name: 'Norsk bokmål', code: 'nb' },
// Nepali - Nepal and India
{ name: 'नेपाली', code: 'ne' },
{ name: 'Nederlands', code: 'nl' },
{ name: 'Nederlands (België)', code: 'nl-be' },
{ name: 'Ninorks', code: 'nn' }, //??
{ name: 'Occitan (Lengadocian)', code: 'oc-lnc' },
{ name: 'पंजाबी (ਭਾਰਤ)', code: 'pa-in' },
{ name: 'Polski', code: 'pl' },
{ name: 'Português', code: 'pt' },
{ name: 'Português (Brasil)', code: 'pt-br' },
{ name: 'Română', code: 'ro' },
{ name: 'Русский', code: 'ru' },
{ name: 'Nothern Sami', code: 'se' }, // TODO translate
// Dutch - Netherlands
{ name: 'Nederlands', code: 'nl-NL' },
// Dutch - Belgium (Flemish)
{ name: 'Nederlands (België)', code: 'nl-BE' },
// Norwegian Nynorsk - Norway
{ name: 'Nynorsk', code: 'nn-NO' },
// Occitan - Southern France, Monaco, Italy
{ name: 'Occitan', code: 'oc' },
// Punjabi - Punjab (India and Pakistan)
{ name: 'ਪੰਜਾਬੀ', code: 'pa' },
// Polish - Poland
{ name: 'Polski', code: 'pl-PL' },
// Portuguese - Portugal
{ name: 'Português', code: 'pt-PT' },
// Portuguese - Brazil
{ name: 'Português (Brasil)', code: 'pt-BR' },
// Romanian - Romania
{ name: 'Română', code: 'ro-RO' },
// Russian - Russia
{ name: 'Русский язык', code: 'ru-RU' },
// Northern Sami - Northern Scandinavia
{ name: 'Davvisámegiella', code: 'se' },
// Sindhi - Pakistan and India
{ name: 'سنڌي', code: 'sd' },
{ name: 'සිංහල', code: 'si' },
{ name: 'Slovenčina', code: 'sk' },
{ name: 'Slovenščina', code: 'sl' },
// Sinhala - Sri Lanka
{ name: 'සිංහල', code: 'si-LK' },
// Slovak - Slovakia
{ name: 'Slovenský jazyk', code: 'sk-SK' },
// Slovenian - Slovenia
{ name: 'Slovenski jezik', code: 'sl-SI' },
// Albanian - Albania, Kosovo
{ name: 'Shqip', code: 'sq' },
// Serbian - Serbia (Default)
{ name: 'Српски', code: 'sr' },
{ name: 'Serbian Cyrillic', code: 'sr-cyrl' }, // TODO translate
{ name: 'siSwati', code: 'ss' },
// Serbian - Serbia (Cyrillic script)
{ name: 'Српски (ћирилица)', code: 'sr-Cyrl' },
// Swati - Eswatini (Swaziland)
{ name: 'SiSwati', code: 'ss' },
// Swahili - East Africa
{ name: 'Kiswahili', code: 'sw' },
// Swedish - Sweden
{ name: 'Svenska', code: 'sv' },
// Tamil - Tamil Nadu (India), Sri Lanka, Singapore
{ name: 'தமிழ்', code: 'ta' },
// Telugu - Andhra Pradesh, Telangana (India)
{ name: 'తెలుగు', code: 'te' },
{ name: 'Lia-Tetun', code: 'tet' },
// Tetum - East Timor
{ name: 'Tetun', code: 'tet' },
// Tajik - Tajikistan
{ name: 'Тоҷикӣ', code: 'tg' },
{ name: 'ภาษาไทย', code: 'th' },
{ name: 'Türkmençe', code: 'tk' },
{ name: 'Tagalog (Philippines)', code: 'tl-ph' }, // TODO translate
// Thai - Thailand
{ name: 'ภาษาไทย', code: 'th-TH' },
// Turkmen - Turkmenistan
{ name: 'Türkmen dili', code: 'tk-TM' },
// Tagalog - Philippines
{ name: 'Wikang Tagalog', code: 'tl-PH' },
// Klingon - Constructed Language (Star Trek)
{ name: 'tlhIngan Hol', code: 'tlh' },
{ name: 'Türkçe', code: 'tr' },
{ name: 'Talossan', code: 'tzl' }, // TODO translate
{ name: 'أمازيغية أطلس الأوسط', code: 'tzm' },
{ name: 'Central Atlas Tamazight Latin', code: 'tzm-latn' }, // TODO translate
{ name: 'ئۇيغۇر تىلى', code: 'ug-cn' },
{ name: 'Українська', code: 'uk' },
{ name: 'اُردُو', code: 'ur' },
{ name: 'Ўзбек', code: 'uz' },
{ name: 'Uzbek (Latin)', code: 'uz-latn' }, // TODO translate
{ name: 'tiếng Việt', code: 'vi' },
{ name: 'Chinese (China)', code: 'zh-cn' }, // TODO translate
{ name: 'Chinese (Hong Kong)', code: 'zh-hk' }, // TODO translate
{ name: 'Chinese (Macau)', code: 'zh-mo' }, // TODO translate
{ name: 'Chinese (Taiwan)', code: 'zh-tw' }, // TODO translate
{ name: 'Èdè Yorùbá', code: 'yo-ng' },
// Turkish - Turkey
{ name: 'Türkçe', code: 'tr-TR' },
// Talossan - Constructed Language
{ name: 'Talossan', code: 'tzl' },
// Tamazight (Tifinagh script) - North Africa
{ name: 'ⵜⴰⵎⴰⵣⵉⵖⵜ', code: 'tzm' },
// Tamazight (Latin script) - North Africa
{ name: 'Tamazight', code: 'tzm-Latn' },
// Uyghur - Xinjiang (China)
{ name: 'ئۇيغۇرچە', code: 'ug-CN' },
// Ukrainian - Ukraine
{ name: 'Українська мова', code: 'uk-UA' },
// Urdu - Pakistan and India
{ name: 'اردو', code: 'ur-PK' },
// Uzbek - Uzbekistan (Cyrillic script)
{ name: 'Ўзбек тили', code: 'uz-UZ' },
// Uzbek - Uzbekistan (Latin script)
{ name: "O'zbek tili", code: 'uz-Latn' },
// Vietnamese - Vietnam
{ name: 'Tiếng Việt', code: 'vi-VN' },
// Chinese - China
{ name: '中文', code: 'zh-CN' },
// Chinese - Simplified
{ name: '简体中文', code: 'zh-Hans' },
// Chinese - Traditional
{ name: '繁體中文', code: 'zh-Hant' },
// Chinese - Hong Kong
{ name: '中文 (香港)', code: 'zh-HK' },
// Chinese - Taiwan
{ name: '正體中文 (台灣)', code: 'zh-TW' },
// Chinese - Macau
{ name: '中文 (澳門)', code: 'zh-MO' },
// Yoruba - Nigeria, Benin, Togo
{ name: 'Yorùbá', code: 'yo' },
];