@shelchin/svelte-i18n
Version:
The last Svelte i18n library you'll ever need. Type-safe, AI-powered, zero-config.
934 lines (933 loc) • 45.8 kB
JavaScript
/**
* Language search utilities
* THIS IS THE SINGLE SOURCE OF TRUTH for all language codes in the library
*/
/**
* Comprehensive language metadata
* This is the authoritative source for all language codes in the library
* Other modules should import and use this data
*
* Covers all UN member states and recognized regions
*/
export const commonLanguages = [
// ========== ISO 639-1 codes (2 letters) - UN Official Languages ==========
{ code: 'en', name: 'English', englishName: 'English', direction: 'ltr', flag: '🇬🇧' },
{ code: 'zh', name: '中文', englishName: 'Chinese', direction: 'ltr', flag: '🇨🇳' },
{ code: 'es', name: 'Español', englishName: 'Spanish', direction: 'ltr', flag: '🇪🇸' },
{ code: 'fr', name: 'Français', englishName: 'French', direction: 'ltr', flag: '🇫🇷' },
{ code: 'ru', name: 'Русский', englishName: 'Russian', direction: 'ltr', flag: '🇷🇺' },
{ code: 'ar', name: 'العربية', englishName: 'Arabic', direction: 'rtl', flag: '🇸🇦' },
// ========== ISO 639-1 codes - Major World Languages ==========
{ code: 'de', name: 'Deutsch', englishName: 'German', direction: 'ltr', flag: '🇩🇪' },
{ code: 'ja', name: '日本語', englishName: 'Japanese', direction: 'ltr', flag: '🇯🇵' },
{ code: 'ko', name: '한국어', englishName: 'Korean', direction: 'ltr', flag: '🇰🇷' },
{ code: 'pt', name: 'Português', englishName: 'Portuguese', direction: 'ltr', flag: '🇵🇹' },
{ code: 'hi', name: 'हिन्दी', englishName: 'Hindi', direction: 'ltr', flag: '🇮🇳' },
{ code: 'it', name: 'Italiano', englishName: 'Italian', direction: 'ltr', flag: '🇮🇹' },
{ code: 'nl', name: 'Nederlands', englishName: 'Dutch', direction: 'ltr', flag: '🇳🇱' },
{ code: 'pl', name: 'Polski', englishName: 'Polish', direction: 'ltr', flag: '🇵🇱' },
{ code: 'tr', name: 'Türkçe', englishName: 'Turkish', direction: 'ltr', flag: '🇹🇷' },
{ code: 'vi', name: 'Tiếng Việt', englishName: 'Vietnamese', direction: 'ltr', flag: '🇻🇳' },
{ code: 'th', name: 'ไทย', englishName: 'Thai', direction: 'ltr', flag: '🇹🇭' },
{ code: 'id', name: 'Bahasa Indonesia', englishName: 'Indonesian', direction: 'ltr', flag: '🇮🇩' },
{ code: 'he', name: 'עברית', englishName: 'Hebrew', direction: 'rtl', flag: '🇮🇱' },
// ========== European Languages (EU + Others) ==========
{ code: 'sv', name: 'Svenska', englishName: 'Swedish', direction: 'ltr', flag: '🇸🇪' },
{ code: 'no', name: 'Norsk', englishName: 'Norwegian', direction: 'ltr', flag: '🇳🇴' },
{ code: 'da', name: 'Dansk', englishName: 'Danish', direction: 'ltr', flag: '🇩🇰' },
{ code: 'fi', name: 'Suomi', englishName: 'Finnish', direction: 'ltr', flag: '🇫🇮' },
{ code: 'cs', name: 'Čeština', englishName: 'Czech', direction: 'ltr', flag: '🇨🇿' },
{ code: 'hu', name: 'Magyar', englishName: 'Hungarian', direction: 'ltr', flag: '🇭🇺' },
{ code: 'el', name: 'Ελληνικά', englishName: 'Greek', direction: 'ltr', flag: '🇬🇷' },
{ code: 'ro', name: 'Română', englishName: 'Romanian', direction: 'ltr', flag: '🇷🇴' },
{ code: 'uk', name: 'Українська', englishName: 'Ukrainian', direction: 'ltr', flag: '🇺🇦' },
{ code: 'bg', name: 'Български', englishName: 'Bulgarian', direction: 'ltr', flag: '🇧🇬' },
{ code: 'sk', name: 'Slovenčina', englishName: 'Slovak', direction: 'ltr', flag: '🇸🇰' },
{ code: 'hr', name: 'Hrvatski', englishName: 'Croatian', direction: 'ltr', flag: '🇭🇷' },
{ code: 'sr', name: 'Српски', englishName: 'Serbian', direction: 'ltr', flag: '🇷🇸' },
{ code: 'sl', name: 'Slovenščina', englishName: 'Slovenian', direction: 'ltr', flag: '🇸🇮' },
{ code: 'lt', name: 'Lietuvių', englishName: 'Lithuanian', direction: 'ltr', flag: '🇱🇹' },
{ code: 'lv', name: 'Latviešu', englishName: 'Latvian', direction: 'ltr', flag: '🇱🇻' },
{ code: 'et', name: 'Eesti', englishName: 'Estonian', direction: 'ltr', flag: '🇪🇪' },
{ code: 'is', name: 'Íslenska', englishName: 'Icelandic', direction: 'ltr', flag: '🇮🇸' },
{ code: 'ga', name: 'Gaeilge', englishName: 'Irish', direction: 'ltr', flag: '🇮🇪' },
{ code: 'mt', name: 'Malti', englishName: 'Maltese', direction: 'ltr', flag: '🇲🇹' },
{ code: 'sq', name: 'Shqip', englishName: 'Albanian', direction: 'ltr', flag: '🇦🇱' },
{ code: 'mk', name: 'Македонски', englishName: 'Macedonian', direction: 'ltr', flag: '🇲🇰' },
{ code: 'ca', name: 'Català', englishName: 'Catalan', direction: 'ltr', flag: '🇪🇸' },
{ code: 'eu', name: 'Euskara', englishName: 'Basque', direction: 'ltr', flag: '🇪🇸' },
{ code: 'gl', name: 'Galego', englishName: 'Galician', direction: 'ltr', flag: '🇪🇸' },
{
code: 'nb',
name: 'Norsk Bokmål',
englishName: 'Norwegian Bokmål',
direction: 'ltr',
flag: '🇳🇴'
},
{
code: 'nn',
name: 'Norsk Nynorsk',
englishName: 'Norwegian Nynorsk',
direction: 'ltr',
flag: '🇳🇴'
},
{
code: 'lb',
name: 'Lëtzebuergesch',
englishName: 'Luxembourgish',
direction: 'ltr',
flag: '🇱🇺'
},
// ========== Asian Languages (South Asia) ==========
{ code: 'bn', name: 'বাংলা', englishName: 'Bengali', direction: 'ltr', flag: '🇧🇩' },
{ code: 'pa', name: 'ਪੰਜਾਬੀ', englishName: 'Punjabi', direction: 'ltr', flag: '🇮🇳' },
{ code: 'te', name: 'తెలుగు', englishName: 'Telugu', direction: 'ltr', flag: '🇮🇳' },
{ code: 'mr', name: 'मराठी', englishName: 'Marathi', direction: 'ltr', flag: '🇮🇳' },
{ code: 'ta', name: 'தமிழ்', englishName: 'Tamil', direction: 'ltr', flag: '🇮🇳' },
{ code: 'ur', name: 'اردو', englishName: 'Urdu', direction: 'rtl', flag: '🇵🇰' },
{ code: 'gu', name: 'ગુજરાતી', englishName: 'Gujarati', direction: 'ltr', flag: '🇮🇳' },
{ code: 'kn', name: 'ಕನ್ನಡ', englishName: 'Kannada', direction: 'ltr', flag: '🇮🇳' },
{ code: 'ml', name: 'മലയാളം', englishName: 'Malayalam', direction: 'ltr', flag: '🇮🇳' },
{ code: 'or', name: 'ଓଡ଼ିଆ', englishName: 'Odia', direction: 'ltr', flag: '🇮🇳' },
{ code: 'si', name: 'සිංහල', englishName: 'Sinhala', direction: 'ltr', flag: '🇱🇰' },
{ code: 'ne', name: 'नेपाली', englishName: 'Nepali', direction: 'ltr', flag: '🇳🇵' },
{ code: 'dz', name: 'རྫོང་ཁ', englishName: 'Dzongkha', direction: 'ltr', flag: '🇧🇹' },
// ========== Southeast Asian Languages ==========
{ code: 'my', name: 'မြန်မာ', englishName: 'Burmese', direction: 'ltr', flag: '🇲🇲' },
{ code: 'km', name: 'ខ្មែរ', englishName: 'Khmer', direction: 'ltr', flag: '🇰🇭' },
{ code: 'lo', name: 'ລາວ', englishName: 'Lao', direction: 'ltr', flag: '🇱🇦' },
{ code: 'ms', name: 'Bahasa Melayu', englishName: 'Malay', direction: 'ltr', flag: '🇲🇾' },
{ code: 'tl', name: 'Tagalog', englishName: 'Tagalog', direction: 'ltr', flag: '🇵🇭' },
{ code: 'fil', name: 'Filipino', englishName: 'Filipino', direction: 'ltr', flag: '🇵🇭' },
{ code: 'jv', name: 'Basa Jawa', englishName: 'Javanese', direction: 'ltr', flag: '🇮🇩' },
{ code: 'su', name: 'Basa Sunda', englishName: 'Sundanese', direction: 'ltr', flag: '🇮🇩' },
// ========== Central Asian Languages ==========
{ code: 'kk', name: 'Қазақ', englishName: 'Kazakh', direction: 'ltr', flag: '🇰🇿' },
{ code: 'uz', name: 'Oʻzbek', englishName: 'Uzbek', direction: 'ltr', flag: '🇺🇿' },
{ code: 'ky', name: 'Кыргызча', englishName: 'Kyrgyz', direction: 'ltr', flag: '🇰🇬' },
{ code: 'tg', name: 'Тоҷикӣ', englishName: 'Tajik', direction: 'ltr', flag: '🇹🇯' },
{ code: 'tk', name: 'Türkmen', englishName: 'Turkmen', direction: 'ltr', flag: '🇹🇲' },
{ code: 'mn', name: 'Монгол', englishName: 'Mongolian', direction: 'ltr', flag: '🇲🇳' },
// ========== Caucasus Region ==========
{ code: 'ka', name: 'ქართული', englishName: 'Georgian', direction: 'ltr', flag: '🇬🇪' },
{ code: 'hy', name: 'Հայերեն', englishName: 'Armenian', direction: 'ltr', flag: '🇦🇲' },
{ code: 'az', name: 'Azərbaycan', englishName: 'Azerbaijani', direction: 'ltr', flag: '🇦🇿' },
// ========== Middle Eastern Languages ==========
{ code: 'fa', name: 'فارسی', englishName: 'Persian', direction: 'rtl', flag: '🇮🇷' },
{ code: 'ps', name: 'پښتو', englishName: 'Pashto', direction: 'rtl', flag: '🇦🇫' },
{ code: 'ku', name: 'کوردی', englishName: 'Kurdish', direction: 'rtl', flag: '🇮🇶' },
{ code: 'iw', name: 'עברית', englishName: 'Hebrew (deprecated)', direction: 'rtl', flag: '🇮🇱' }, // Deprecated code
// ========== African Languages ==========
{ code: 'sw', name: 'Kiswahili', englishName: 'Swahili', direction: 'ltr', flag: '🇰🇪' },
{ code: 'am', name: 'አማርኛ', englishName: 'Amharic', direction: 'ltr', flag: '🇪🇹' },
{ code: 'ha', name: 'Hausa', englishName: 'Hausa', direction: 'ltr', flag: '🇳🇬' },
{ code: 'yo', name: 'Yorùbá', englishName: 'Yoruba', direction: 'ltr', flag: '🇳🇬' },
{ code: 'ig', name: 'Igbo', englishName: 'Igbo', direction: 'ltr', flag: '🇳🇬' },
{ code: 'zu', name: 'isiZulu', englishName: 'Zulu', direction: 'ltr', flag: '🇿🇦' },
{ code: 'xh', name: 'isiXhosa', englishName: 'Xhosa', direction: 'ltr', flag: '🇿🇦' },
{ code: 'af', name: 'Afrikaans', englishName: 'Afrikaans', direction: 'ltr', flag: '🇿🇦' },
{ code: 'so', name: 'Soomaali', englishName: 'Somali', direction: 'ltr', flag: '🇸🇴' },
{ code: 'ti', name: 'ትግርኛ', englishName: 'Tigrinya', direction: 'ltr', flag: '🇪🇷' },
{ code: 'om', name: 'Oromoo', englishName: 'Oromo', direction: 'ltr', flag: '🇪🇹' },
{ code: 'rw', name: 'Kinyarwanda', englishName: 'Kinyarwanda', direction: 'ltr', flag: '🇷🇼' },
{ code: 'rn', name: 'Kirundi', englishName: 'Kirundi', direction: 'ltr', flag: '🇧🇮' },
{ code: 'ny', name: 'Chichewa', englishName: 'Chichewa', direction: 'ltr', flag: '🇲🇼' },
{ code: 'sn', name: 'chiShona', englishName: 'Shona', direction: 'ltr', flag: '🇿🇼' },
{ code: 'st', name: 'Sesotho', englishName: 'Sesotho', direction: 'ltr', flag: '🇱🇸' },
{ code: 'tn', name: 'Setswana', englishName: 'Tswana', direction: 'ltr', flag: '🇧🇼' },
{ code: 'ts', name: 'Xitsonga', englishName: 'Tsonga', direction: 'ltr', flag: '🇿🇦' },
{ code: 've', name: 'Tshivenḓa', englishName: 'Venda', direction: 'ltr', flag: '🇿🇦' },
{ code: 'wo', name: 'Wolof', englishName: 'Wolof', direction: 'ltr', flag: '🇸🇳' },
{ code: 'ff', name: 'Fulfulde', englishName: 'Fulah', direction: 'ltr', flag: '🇸🇳' },
{ code: 'lg', name: 'Luganda', englishName: 'Ganda', direction: 'ltr', flag: '🇺🇬' },
{ code: 'ak', name: 'Akan', englishName: 'Akan', direction: 'ltr', flag: '🇬🇭' },
{ code: 'tw', name: 'Twi', englishName: 'Twi', direction: 'ltr', flag: '🇬🇭' },
{ code: 'ee', name: 'Eʋegbe', englishName: 'Ewe', direction: 'ltr', flag: '🇬🇭' },
{ code: 'kg', name: 'Kikongo', englishName: 'Kongo', direction: 'ltr', flag: '🇨🇩' },
{ code: 'ln', name: 'Lingála', englishName: 'Lingala', direction: 'ltr', flag: '🇨🇩' },
{ code: 'lu', name: 'Tshiluba', englishName: 'Luba-Katanga', direction: 'ltr', flag: '🇨🇩' },
{ code: 'sg', name: 'Sängö', englishName: 'Sango', direction: 'ltr', flag: '🇨🇫' },
{ code: 'mg', name: 'Malagasy', englishName: 'Malagasy', direction: 'ltr', flag: '🇲🇬' },
// ========== Pacific Islands Languages ==========
{ code: 'mi', name: 'Te Reo Māori', englishName: 'Maori', direction: 'ltr', flag: '🇳🇿' },
{ code: 'sm', name: 'Gagana Samoa', englishName: 'Samoan', direction: 'ltr', flag: '🇼🇸' },
{ code: 'to', name: 'Lea faka-Tonga', englishName: 'Tongan', direction: 'ltr', flag: '🇹🇴' },
{ code: 'fj', name: 'Na Vosa Vakaviti', englishName: 'Fijian', direction: 'ltr', flag: '🇫🇯' },
{ code: 'ty', name: 'Reo Tahiti', englishName: 'Tahitian', direction: 'ltr', flag: '🇵🇫' },
{ code: 'haw', name: 'ʻŌlelo Hawaiʻi', englishName: 'Hawaiian', direction: 'ltr', flag: '🇺🇸' },
{ code: 'mh', name: 'Kajin M̧ajeļ', englishName: 'Marshallese', direction: 'ltr', flag: '🇲🇭' },
{ code: 'nau', name: 'Dorerin Naoero', englishName: 'Nauruan', direction: 'ltr', flag: '🇳🇷' },
{ code: 'tvl', name: 'Te Ggana Tuuvalu', englishName: 'Tuvaluan', direction: 'ltr', flag: '🇹🇻' },
{ code: 'pau', name: 'Tekoi ra Belau', englishName: 'Palauan', direction: 'ltr', flag: '🇵🇼' },
{
code: 'gil',
name: 'Te taetae ni Kiribati',
englishName: 'Gilbertese',
direction: 'ltr',
flag: '🇰🇮'
},
{ code: 'bi', name: 'Bislama', englishName: 'Bislama', direction: 'ltr', flag: '🇻🇺' },
{ code: 'tpi', name: 'Tok Pisin', englishName: 'Tok Pisin', direction: 'ltr', flag: '🇵🇬' },
{ code: 'ho', name: 'Hiri Motu', englishName: 'Hiri Motu', direction: 'ltr', flag: '🇵🇬' },
// ========== Americas - Indigenous Languages ==========
{ code: 'qu', name: 'Runa Simi', englishName: 'Quechua', direction: 'ltr', flag: '🇵🇪' },
{ code: 'ay', name: 'Aymar aru', englishName: 'Aymara', direction: 'ltr', flag: '🇧🇴' },
{ code: 'gn', name: "Avañe'ẽ", englishName: 'Guarani', direction: 'ltr', flag: '🇵🇾' },
{
code: 'ht',
name: 'Kreyòl ayisyen',
englishName: 'Haitian Creole',
direction: 'ltr',
flag: '🇭🇹'
},
// ========== Caribbean Languages ==========
{ code: 'pap', name: 'Papiamentu', englishName: 'Papiamento', direction: 'ltr', flag: '🇦🇼' },
// ========== Sign Languages (Optional - may need special handling) ==========
{ code: 'ase', name: 'American Sign Language', englishName: 'ASL', direction: 'ltr', flag: '🇺🇸' },
{ code: 'bfi', name: 'British Sign Language', englishName: 'BSL', direction: 'ltr', flag: '🇬🇧' },
// ========== Constructed Languages (Optional) ==========
{ code: 'eo', name: 'Esperanto', englishName: 'Esperanto', direction: 'ltr', flag: '🌐' },
{ code: 'ia', name: 'Interlingua', englishName: 'Interlingua', direction: 'ltr', flag: '🌐' },
{ code: 'ie', name: 'Interlingue', englishName: 'Interlingue', direction: 'ltr', flag: '🌐' },
{ code: 'io', name: 'Ido', englishName: 'Ido', direction: 'ltr', flag: '🌐' },
{ code: 'vo', name: 'Volapük', englishName: 'Volapük', direction: 'ltr', flag: '🌐' },
// ========== Latin & Ancient Languages (Optional - for academic/religious texts) ==========
{ code: 'la', name: 'Latina', englishName: 'Latin', direction: 'ltr', flag: '🇻🇦' },
{ code: 'sa', name: 'संस्कृतम्', englishName: 'Sanskrit', direction: 'ltr', flag: '🇮🇳' },
{ code: 'grc', name: 'Ἑλληνική', englishName: 'Ancient Greek', direction: 'ltr', flag: '🇬🇷' },
// ========== BCP 47 Regional Variants ==========
{
code: 'zh-TW',
name: '繁體中文',
englishName: 'Traditional Chinese',
direction: 'ltr',
flag: '🇹🇼'
},
{
code: 'zh-CN',
name: '简体中文',
englishName: 'Simplified Chinese',
direction: 'ltr',
flag: '🇨🇳'
},
{
code: 'zh-HK',
name: '繁體中文 (香港)',
englishName: 'Chinese (Hong Kong)',
direction: 'ltr',
flag: '🇭🇰'
},
{
code: 'zh-SG',
name: '简体中文 (新加坡)',
englishName: 'Chinese (Singapore)',
direction: 'ltr',
flag: '🇸🇬'
},
{
code: 'zh-MO',
name: '繁體中文 (澳門)',
englishName: 'Chinese (Macau)',
direction: 'ltr',
flag: '🇲🇴'
},
{
code: 'pt-BR',
name: 'Português (Brasil)',
englishName: 'Portuguese (Brazil)',
direction: 'ltr',
flag: '🇧🇷'
},
{
code: 'pt-PT',
name: 'Português (Portugal)',
englishName: 'Portuguese (Portugal)',
direction: 'ltr',
flag: '🇵🇹'
},
{
code: 'pt-AO',
name: 'Português (Angola)',
englishName: 'Portuguese (Angola)',
direction: 'ltr',
flag: '🇦🇴'
},
{
code: 'pt-MZ',
name: 'Português (Moçambique)',
englishName: 'Portuguese (Mozambique)',
direction: 'ltr',
flag: '🇲🇿'
},
{
code: 'en-US',
name: 'English (US)',
englishName: 'English (United States)',
direction: 'ltr',
flag: '🇺🇸'
},
{
code: 'en-GB',
name: 'English (UK)',
englishName: 'English (United Kingdom)',
direction: 'ltr',
flag: '🇬🇧'
},
{
code: 'en-AU',
name: 'English (Australia)',
englishName: 'English (Australia)',
direction: 'ltr',
flag: '🇦🇺'
},
{
code: 'en-CA',
name: 'English (Canada)',
englishName: 'English (Canada)',
direction: 'ltr',
flag: '🇨🇦'
},
{
code: 'en-IN',
name: 'English (India)',
englishName: 'English (India)',
direction: 'ltr',
flag: '🇮🇳'
},
{
code: 'en-IE',
name: 'English (Ireland)',
englishName: 'English (Ireland)',
direction: 'ltr',
flag: '🇮🇪'
},
{
code: 'en-NZ',
name: 'English (New Zealand)',
englishName: 'English (New Zealand)',
direction: 'ltr',
flag: '🇳🇿'
},
{
code: 'en-ZA',
name: 'English (South Africa)',
englishName: 'English (South Africa)',
direction: 'ltr',
flag: '🇿🇦'
},
{
code: 'en-SG',
name: 'English (Singapore)',
englishName: 'English (Singapore)',
direction: 'ltr',
flag: '🇸🇬'
},
{
code: 'en-HK',
name: 'English (Hong Kong)',
englishName: 'English (Hong Kong)',
direction: 'ltr',
flag: '🇭🇰'
},
{
code: 'fr-CA',
name: 'Français (Canada)',
englishName: 'French (Canada)',
direction: 'ltr',
flag: '🇨🇦'
},
{
code: 'fr-FR',
name: 'Français (France)',
englishName: 'French (France)',
direction: 'ltr',
flag: '🇫🇷'
},
{
code: 'fr-BE',
name: 'Français (Belgique)',
englishName: 'French (Belgium)',
direction: 'ltr',
flag: '🇧🇪'
},
{
code: 'fr-CH',
name: 'Français (Suisse)',
englishName: 'French (Switzerland)',
direction: 'ltr',
flag: '🇨🇭'
},
{
code: 'fr-LU',
name: 'Français (Luxembourg)',
englishName: 'French (Luxembourg)',
direction: 'ltr',
flag: '🇱🇺'
},
{
code: 'es-ES',
name: 'Español (España)',
englishName: 'Spanish (Spain)',
direction: 'ltr',
flag: '🇪🇸'
},
{
code: 'es-MX',
name: 'Español (México)',
englishName: 'Spanish (Mexico)',
direction: 'ltr',
flag: '🇲🇽'
},
{
code: 'es-AR',
name: 'Español (Argentina)',
englishName: 'Spanish (Argentina)',
direction: 'ltr',
flag: '🇦🇷'
},
{
code: 'es-CO',
name: 'Español (Colombia)',
englishName: 'Spanish (Colombia)',
direction: 'ltr',
flag: '🇨🇴'
},
{
code: 'es-CL',
name: 'Español (Chile)',
englishName: 'Spanish (Chile)',
direction: 'ltr',
flag: '🇨🇱'
},
{
code: 'es-PE',
name: 'Español (Perú)',
englishName: 'Spanish (Peru)',
direction: 'ltr',
flag: '🇵🇪'
},
{
code: 'es-VE',
name: 'Español (Venezuela)',
englishName: 'Spanish (Venezuela)',
direction: 'ltr',
flag: '🇻🇪'
},
{
code: 'es-EC',
name: 'Español (Ecuador)',
englishName: 'Spanish (Ecuador)',
direction: 'ltr',
flag: '🇪🇨'
},
{
code: 'es-GT',
name: 'Español (Guatemala)',
englishName: 'Spanish (Guatemala)',
direction: 'ltr',
flag: '🇬🇹'
},
{
code: 'es-CU',
name: 'Español (Cuba)',
englishName: 'Spanish (Cuba)',
direction: 'ltr',
flag: '🇨🇺'
},
{
code: 'es-BO',
name: 'Español (Bolivia)',
englishName: 'Spanish (Bolivia)',
direction: 'ltr',
flag: '🇧🇴'
},
{
code: 'es-DO',
name: 'Español (República Dominicana)',
englishName: 'Spanish (Dominican Republic)',
direction: 'ltr',
flag: '🇩🇴'
},
{
code: 'es-HN',
name: 'Español (Honduras)',
englishName: 'Spanish (Honduras)',
direction: 'ltr',
flag: '🇭🇳'
},
{
code: 'es-PY',
name: 'Español (Paraguay)',
englishName: 'Spanish (Paraguay)',
direction: 'ltr',
flag: '🇵🇾'
},
{
code: 'es-SV',
name: 'Español (El Salvador)',
englishName: 'Spanish (El Salvador)',
direction: 'ltr',
flag: '🇸🇻'
},
{
code: 'es-NI',
name: 'Español (Nicaragua)',
englishName: 'Spanish (Nicaragua)',
direction: 'ltr',
flag: '🇳🇮'
},
{
code: 'es-CR',
name: 'Español (Costa Rica)',
englishName: 'Spanish (Costa Rica)',
direction: 'ltr',
flag: '🇨🇷'
},
{
code: 'es-PA',
name: 'Español (Panamá)',
englishName: 'Spanish (Panama)',
direction: 'ltr',
flag: '🇵🇦'
},
{
code: 'es-UY',
name: 'Español (Uruguay)',
englishName: 'Spanish (Uruguay)',
direction: 'ltr',
flag: '🇺🇾'
},
{
code: 'es-PR',
name: 'Español (Puerto Rico)',
englishName: 'Spanish (Puerto Rico)',
direction: 'ltr',
flag: '🇵🇷'
},
{
code: 'ar-SA',
name: 'العربية (السعودية)',
englishName: 'Arabic (Saudi Arabia)',
direction: 'rtl',
flag: '🇸🇦'
},
{
code: 'ar-EG',
name: 'العربية (مصر)',
englishName: 'Arabic (Egypt)',
direction: 'rtl',
flag: '🇪🇬'
},
{
code: 'ar-AE',
name: 'العربية (الإمارات)',
englishName: 'Arabic (UAE)',
direction: 'rtl',
flag: '🇦🇪'
},
{
code: 'ar-IQ',
name: 'العربية (العراق)',
englishName: 'Arabic (Iraq)',
direction: 'rtl',
flag: '🇮🇶'
},
{
code: 'ar-JO',
name: 'العربية (الأردن)',
englishName: 'Arabic (Jordan)',
direction: 'rtl',
flag: '🇯🇴'
},
{
code: 'ar-LB',
name: 'العربية (لبنان)',
englishName: 'Arabic (Lebanon)',
direction: 'rtl',
flag: '🇱🇧'
},
{
code: 'ar-SY',
name: 'العربية (سوريا)',
englishName: 'Arabic (Syria)',
direction: 'rtl',
flag: '🇸🇾'
},
{
code: 'ar-MA',
name: 'العربية (المغرب)',
englishName: 'Arabic (Morocco)',
direction: 'rtl',
flag: '🇲🇦'
},
{
code: 'ar-TN',
name: 'العربية (تونس)',
englishName: 'Arabic (Tunisia)',
direction: 'rtl',
flag: '🇹🇳'
},
{
code: 'ar-DZ',
name: 'العربية (الجزائر)',
englishName: 'Arabic (Algeria)',
direction: 'rtl',
flag: '🇩🇿'
},
{
code: 'ar-LY',
name: 'العربية (ليبيا)',
englishName: 'Arabic (Libya)',
direction: 'rtl',
flag: '🇱🇾'
},
{
code: 'ar-OM',
name: 'العربية (عُمان)',
englishName: 'Arabic (Oman)',
direction: 'rtl',
flag: '🇴🇲'
},
{
code: 'ar-YE',
name: 'العربية (اليمن)',
englishName: 'Arabic (Yemen)',
direction: 'rtl',
flag: '🇾🇪'
},
{
code: 'ar-BH',
name: 'العربية (البحرين)',
englishName: 'Arabic (Bahrain)',
direction: 'rtl',
flag: '🇧🇭'
},
{
code: 'ar-KW',
name: 'العربية (الكويت)',
englishName: 'Arabic (Kuwait)',
direction: 'rtl',
flag: '🇰🇼'
},
{
code: 'ar-QA',
name: 'العربية (قطر)',
englishName: 'Arabic (Qatar)',
direction: 'rtl',
flag: '🇶🇦'
},
{
code: 'de-DE',
name: 'Deutsch (Deutschland)',
englishName: 'German (Germany)',
direction: 'ltr',
flag: '🇩🇪'
},
{
code: 'de-AT',
name: 'Deutsch (Österreich)',
englishName: 'German (Austria)',
direction: 'ltr',
flag: '🇦🇹'
},
{
code: 'de-CH',
name: 'Deutsch (Schweiz)',
englishName: 'German (Switzerland)',
direction: 'ltr',
flag: '🇨🇭'
},
{
code: 'de-LI',
name: 'Deutsch (Liechtenstein)',
englishName: 'German (Liechtenstein)',
direction: 'ltr',
flag: '🇱🇮'
},
{
code: 'de-LU',
name: 'Deutsch (Luxemburg)',
englishName: 'German (Luxembourg)',
direction: 'ltr',
flag: '🇱🇺'
},
{
code: 'it-IT',
name: 'Italiano (Italia)',
englishName: 'Italian (Italy)',
direction: 'ltr',
flag: '🇮🇹'
},
{
code: 'it-CH',
name: 'Italiano (Svizzera)',
englishName: 'Italian (Switzerland)',
direction: 'ltr',
flag: '🇨🇭'
},
{
code: 'it-SM',
name: 'Italiano (San Marino)',
englishName: 'Italian (San Marino)',
direction: 'ltr',
flag: '🇸🇲'
},
{
code: 'nl-NL',
name: 'Nederlands (Nederland)',
englishName: 'Dutch (Netherlands)',
direction: 'ltr',
flag: '🇳🇱'
},
{
code: 'nl-BE',
name: 'Nederlands (België)',
englishName: 'Dutch (Belgium)',
direction: 'ltr',
flag: '🇧🇪'
},
{
code: 'nl-SR',
name: 'Nederlands (Suriname)',
englishName: 'Dutch (Suriname)',
direction: 'ltr',
flag: '🇸🇷'
},
{
code: 'ru-RU',
name: 'Русский (Россия)',
englishName: 'Russian (Russia)',
direction: 'ltr',
flag: '🇷🇺'
},
{
code: 'ru-BY',
name: 'Русский (Беларусь)',
englishName: 'Russian (Belarus)',
direction: 'ltr',
flag: '🇧🇾'
},
{
code: 'ru-KZ',
name: 'Русский (Казахстан)',
englishName: 'Russian (Kazakhstan)',
direction: 'ltr',
flag: '🇰🇿'
},
{
code: 'ru-KG',
name: 'Русский (Кыргызстан)',
englishName: 'Russian (Kyrgyzstan)',
direction: 'ltr',
flag: '🇰🇬'
},
// ========== ISO 639-2/3 codes (3 letters) ==========
// ISO 639-2 codes for major languages (bibliographic codes)
{ code: 'eng', name: 'English', englishName: 'English', direction: 'ltr', flag: '🇬🇧' },
{ code: 'chi', name: '中文', englishName: 'Chinese', direction: 'ltr', flag: '🇨🇳' }, // ISO 639-2/B
{ code: 'zho', name: '中文', englishName: 'Chinese', direction: 'ltr', flag: '🇨🇳' }, // ISO 639-2/T
{ code: 'spa', name: 'Español', englishName: 'Spanish', direction: 'ltr', flag: '🇪🇸' },
{ code: 'fra', name: 'Français', englishName: 'French', direction: 'ltr', flag: '🇫🇷' },
{ code: 'fre', name: 'Français', englishName: 'French', direction: 'ltr', flag: '🇫🇷' }, // ISO 639-2/B
{ code: 'ger', name: 'Deutsch', englishName: 'German', direction: 'ltr', flag: '🇩🇪' }, // ISO 639-2/B
{ code: 'deu', name: 'Deutsch', englishName: 'German', direction: 'ltr', flag: '🇩🇪' }, // ISO 639-2/T
{ code: 'jpn', name: '日本語', englishName: 'Japanese', direction: 'ltr', flag: '🇯🇵' },
{ code: 'kor', name: '한국어', englishName: 'Korean', direction: 'ltr', flag: '🇰🇷' },
{ code: 'por', name: 'Português', englishName: 'Portuguese', direction: 'ltr', flag: '🇵🇹' },
{ code: 'rus', name: 'Русский', englishName: 'Russian', direction: 'ltr', flag: '🇷🇺' },
{ code: 'ara', name: 'العربية', englishName: 'Arabic', direction: 'rtl', flag: '🇸🇦' },
{ code: 'hin', name: 'हिन्दी', englishName: 'Hindi', direction: 'ltr', flag: '🇮🇳' },
{ code: 'ita', name: 'Italiano', englishName: 'Italian', direction: 'ltr', flag: '🇮🇹' },
{ code: 'dut', name: 'Nederlands', englishName: 'Dutch', direction: 'ltr', flag: '🇳🇱' }, // ISO 639-2/B
{ code: 'nld', name: 'Nederlands', englishName: 'Dutch', direction: 'ltr', flag: '🇳🇱' }, // ISO 639-2/T
{ code: 'pol', name: 'Polski', englishName: 'Polish', direction: 'ltr', flag: '🇵🇱' },
{ code: 'tur', name: 'Türkçe', englishName: 'Turkish', direction: 'ltr', flag: '🇹🇷' },
{ code: 'vie', name: 'Tiếng Việt', englishName: 'Vietnamese', direction: 'ltr', flag: '🇻🇳' },
{ code: 'tha', name: 'ไทย', englishName: 'Thai', direction: 'ltr', flag: '🇹🇭' },
{
code: 'ind',
name: 'Bahasa Indonesia',
englishName: 'Indonesian',
direction: 'ltr',
flag: '🇮🇩'
},
{ code: 'heb', name: 'עברית', englishName: 'Hebrew', direction: 'rtl', flag: '🇮🇱' },
{ code: 'swe', name: 'Svenska', englishName: 'Swedish', direction: 'ltr', flag: '🇸🇪' },
{ code: 'nor', name: 'Norsk', englishName: 'Norwegian', direction: 'ltr', flag: '🇳🇴' },
{ code: 'dan', name: 'Dansk', englishName: 'Danish', direction: 'ltr', flag: '🇩🇰' },
{ code: 'fin', name: 'Suomi', englishName: 'Finnish', direction: 'ltr', flag: '🇫🇮' },
{ code: 'cze', name: 'Čeština', englishName: 'Czech', direction: 'ltr', flag: '🇨🇿' }, // ISO 639-2/B
{ code: 'ces', name: 'Čeština', englishName: 'Czech', direction: 'ltr', flag: '🇨🇿' }, // ISO 639-2/T
{ code: 'hun', name: 'Magyar', englishName: 'Hungarian', direction: 'ltr', flag: '🇭🇺' },
{ code: 'gre', name: 'Ελληνικά', englishName: 'Greek', direction: 'ltr', flag: '🇬🇷' }, // ISO 639-2/B
{ code: 'ell', name: 'Ελληνικά', englishName: 'Greek', direction: 'ltr', flag: '🇬🇷' }, // ISO 639-2/T
{ code: 'rum', name: 'Română', englishName: 'Romanian', direction: 'ltr', flag: '🇷🇴' }, // ISO 639-2/B
{ code: 'ron', name: 'Română', englishName: 'Romanian', direction: 'ltr', flag: '🇷🇴' }, // ISO 639-2/T
{ code: 'ukr', name: 'Українська', englishName: 'Ukrainian', direction: 'ltr', flag: '🇺🇦' },
{ code: 'bul', name: 'Български', englishName: 'Bulgarian', direction: 'ltr', flag: '🇧🇬' },
{ code: 'ben', name: 'বাংলা', englishName: 'Bengali', direction: 'ltr', flag: '🇧🇩' },
{ code: 'pan', name: 'ਪੰਜਾਬੀ', englishName: 'Punjabi', direction: 'ltr', flag: '🇮🇳' },
{ code: 'tel', name: 'తెలుగు', englishName: 'Telugu', direction: 'ltr', flag: '🇮🇳' },
{ code: 'mar', name: 'मराठी', englishName: 'Marathi', direction: 'ltr', flag: '🇮🇳' },
{ code: 'tam', name: 'தமிழ்', englishName: 'Tamil', direction: 'ltr', flag: '🇮🇳' },
{ code: 'urd', name: 'اردو', englishName: 'Urdu', direction: 'rtl', flag: '🇵🇰' },
{ code: 'guj', name: 'ગુજરાતી', englishName: 'Gujarati', direction: 'ltr', flag: '🇮🇳' },
{ code: 'kan', name: 'ಕನ್ನಡ', englishName: 'Kannada', direction: 'ltr', flag: '🇮🇳' },
{ code: 'mal', name: 'മലയാളം', englishName: 'Malayalam', direction: 'ltr', flag: '🇮🇳' },
{ code: 'ori', name: 'ଓଡ଼ିଆ', englishName: 'Odia', direction: 'ltr', flag: '🇮🇳' },
{ code: 'sin', name: 'සිංහල', englishName: 'Sinhala', direction: 'ltr', flag: '🇱🇰' },
{ code: 'nep', name: 'नेपाली', englishName: 'Nepali', direction: 'ltr', flag: '🇳🇵' },
{ code: 'bur', name: 'မြန်မာ', englishName: 'Burmese', direction: 'ltr', flag: '🇲🇲' }, // ISO 639-2/B
{ code: 'mya', name: 'မြန်မာ', englishName: 'Burmese', direction: 'ltr', flag: '🇲🇲' }, // ISO 639-2/T
{ code: 'khm', name: 'ខ្មែរ', englishName: 'Khmer', direction: 'ltr', flag: '🇰🇭' },
{ code: 'lao', name: 'ລາວ', englishName: 'Lao', direction: 'ltr', flag: '🇱🇦' },
{ code: 'may', name: 'Bahasa Melayu', englishName: 'Malay', direction: 'ltr', flag: '🇲🇾' }, // ISO 639-2/B
{ code: 'msa', name: 'Bahasa Melayu', englishName: 'Malay', direction: 'ltr', flag: '🇲🇾' }, // ISO 639-2/T
{ code: 'tgl', name: 'Tagalog', englishName: 'Tagalog', direction: 'ltr', flag: '🇵🇭' },
{ code: 'jav', name: 'Basa Jawa', englishName: 'Javanese', direction: 'ltr', flag: '🇮🇩' },
{ code: 'kaz', name: 'Қазақ', englishName: 'Kazakh', direction: 'ltr', flag: '🇰🇿' },
{ code: 'uzb', name: 'Oʻzbek', englishName: 'Uzbek', direction: 'ltr', flag: '🇺🇿' },
{ code: 'kir', name: 'Кыргызча', englishName: 'Kyrgyz', direction: 'ltr', flag: '🇰🇬' },
{ code: 'tgk', name: 'Тоҷикӣ', englishName: 'Tajik', direction: 'ltr', flag: '🇹🇯' },
{ code: 'tuk', name: 'Türkmen', englishName: 'Turkmen', direction: 'ltr', flag: '🇹🇲' },
{ code: 'mon', name: 'Монгол', englishName: 'Mongolian', direction: 'ltr', flag: '🇲🇳' },
{ code: 'geo', name: 'ქართული', englishName: 'Georgian', direction: 'ltr', flag: '🇬🇪' }, // ISO 639-2/B
{ code: 'kat', name: 'ქართული', englishName: 'Georgian', direction: 'ltr', flag: '🇬🇪' }, // ISO 639-2/T
{ code: 'arm', name: 'Հայերեն', englishName: 'Armenian', direction: 'ltr', flag: '🇦🇲' }, // ISO 639-2/B
{ code: 'hye', name: 'Հայերեն', englishName: 'Armenian', direction: 'ltr', flag: '🇦🇲' }, // ISO 639-2/T
{ code: 'aze', name: 'Azərbaycan', englishName: 'Azerbaijani', direction: 'ltr', flag: '🇦🇿' },
{ code: 'per', name: 'فارسی', englishName: 'Persian', direction: 'rtl', flag: '🇮🇷' }, // ISO 639-2/B
{ code: 'fas', name: 'فارسی', englishName: 'Persian', direction: 'rtl', flag: '🇮🇷' }, // ISO 639-2/T
{ code: 'pus', name: 'پښتو', englishName: 'Pashto', direction: 'rtl', flag: '🇦🇫' },
{ code: 'kur', name: 'کوردی', englishName: 'Kurdish', direction: 'rtl', flag: '🇮🇶' },
{ code: 'swa', name: 'Kiswahili', englishName: 'Swahili', direction: 'ltr', flag: '🇰🇪' },
{ code: 'amh', name: 'አማርኛ', englishName: 'Amharic', direction: 'ltr', flag: '🇪🇹' },
{ code: 'hau', name: 'Hausa', englishName: 'Hausa', direction: 'ltr', flag: '🇳🇬' },
{ code: 'yor', name: 'Yorùbá', englishName: 'Yoruba', direction: 'ltr', flag: '🇳🇬' },
{ code: 'ibo', name: 'Igbo', englishName: 'Igbo', direction: 'ltr', flag: '🇳🇬' },
{ code: 'zul', name: 'isiZulu', englishName: 'Zulu', direction: 'ltr', flag: '🇿🇦' },
{ code: 'xho', name: 'isiXhosa', englishName: 'Xhosa', direction: 'ltr', flag: '🇿🇦' },
{ code: 'afr', name: 'Afrikaans', englishName: 'Afrikaans', direction: 'ltr', flag: '🇿🇦' },
{ code: 'som', name: 'Soomaali', englishName: 'Somali', direction: 'ltr', flag: '🇸🇴' },
{ code: 'tir', name: 'ትግርኛ', englishName: 'Tigrinya', direction: 'ltr', flag: '🇪🇷' },
{ code: 'orm', name: 'Oromoo', englishName: 'Oromo', direction: 'ltr', flag: '🇪🇹' },
{ code: 'kin', name: 'Kinyarwanda', englishName: 'Kinyarwanda', direction: 'ltr', flag: '🇷🇼' },
{ code: 'run', name: 'Kirundi', englishName: 'Kirundi', direction: 'ltr', flag: '🇧🇮' },
{ code: 'nya', name: 'Chichewa', englishName: 'Chichewa', direction: 'ltr', flag: '🇲🇼' },
{ code: 'sna', name: 'chiShona', englishName: 'Shona', direction: 'ltr', flag: '🇿🇼' },
{ code: 'sot', name: 'Sesotho', englishName: 'Sesotho', direction: 'ltr', flag: '🇱🇸' },
{ code: 'tsn', name: 'Setswana', englishName: 'Tswana', direction: 'ltr', flag: '🇧🇼' },
{ code: 'tso', name: 'Xitsonga', englishName: 'Tsonga', direction: 'ltr', flag: '🇿🇦' },
{ code: 'ven', name: 'Tshivenḓa', englishName: 'Venda', direction: 'ltr', flag: '🇿🇦' },
{ code: 'wol', name: 'Wolof', englishName: 'Wolof', direction: 'ltr', flag: '🇸🇳' },
{ code: 'ful', name: 'Fulfulde', englishName: 'Fulah', direction: 'ltr', flag: '🇸🇳' },
{ code: 'lug', name: 'Luganda', englishName: 'Ganda', direction: 'ltr', flag: '🇺🇬' },
{ code: 'aka', name: 'Akan', englishName: 'Akan', direction: 'ltr', flag: '🇬🇭' },
{ code: 'twi', name: 'Twi', englishName: 'Twi', direction: 'ltr', flag: '🇬🇭' },
{ code: 'ewe', name: 'Eʋegbe', englishName: 'Ewe', direction: 'ltr', flag: '🇬🇭' },
{ code: 'kon', name: 'Kikongo', englishName: 'Kongo', direction: 'ltr', flag: '🇨🇩' },
{ code: 'lin', name: 'Lingála', englishName: 'Lingala', direction: 'ltr', flag: '🇨🇩' },
{ code: 'lub', name: 'Tshiluba', englishName: 'Luba-Katanga', direction: 'ltr', flag: '🇨🇩' },
{ code: 'sag', name: 'Sängö', englishName: 'Sango', direction: 'ltr', flag: '🇨🇫' },
{ code: 'mlg', name: 'Malagasy', englishName: 'Malagasy', direction: 'ltr', flag: '🇲🇬' },
{ code: 'mao', name: 'Te Reo Māori', englishName: 'Maori', direction: 'ltr', flag: '🇳🇿' }, // ISO 639-2/B
{ code: 'mri', name: 'Te Reo Māori', englishName: 'Maori', direction: 'ltr', flag: '🇳🇿' }, // ISO 639-2/T
{ code: 'smo', name: 'Gagana Samoa', englishName: 'Samoan', direction: 'ltr', flag: '🇼🇸' },
{ code: 'ton', name: 'Lea faka-Tonga', englishName: 'Tongan', direction: 'ltr', flag: '🇹🇴' },
{ code: 'fij', name: 'Na Vosa Vakaviti', englishName: 'Fijian', direction: 'ltr', flag: '🇫🇯' },
{ code: 'tah', name: 'Reo Tahiti', englishName: 'Tahitian', direction: 'ltr', flag: '🇵🇫' },
{ code: 'mah', name: 'Kajin M̧ajeļ', englishName: 'Marshallese', direction: 'ltr', flag: '🇲🇭' },
{ code: 'bis', name: 'Bislama', englishName: 'Bislama', direction: 'ltr', flag: '🇻🇺' },
{ code: 'hmo', name: 'Hiri Motu', englishName: 'Hiri Motu', direction: 'ltr', flag: '🇵🇬' },
{ code: 'que', name: 'Runa Simi', englishName: 'Quechua', direction: 'ltr', flag: '🇵🇪' },
{ code: 'aym', name: 'Aymar aru', englishName: 'Aymara', direction: 'ltr', flag: '🇧🇴' },
{ code: 'grn', name: "Avañe'ẽ", englishName: 'Guarani', direction: 'ltr', flag: '🇵🇾' },
{
code: 'hat',
name: 'Kreyòl ayisyen',
englishName: 'Haitian Creole',
direction: 'ltr',
flag: '🇭🇹'
},
{ code: 'epo', name: 'Esperanto', englishName: 'Esperanto', direction: 'ltr', flag: '🌐' },
{ code: 'ina', name: 'Interlingua', englishName: 'Interlingua', direction: 'ltr', flag: '🌐' },
{ code: 'ile', name: 'Interlingue', englishName: 'Interlingue', direction: 'ltr', flag: '🌐' },
{ code: 'ido', name: 'Ido', englishName: 'Ido', direction: 'ltr', flag: '🌐' },
{ code: 'vol', name: 'Volapük', englishName: 'Volapük', direction: 'ltr', flag: '🌐' },
{ code: 'lat', name: 'Latina', englishName: 'Latin', direction: 'ltr', flag: '🇻🇦' },
{ code: 'san', name: 'संस्कृतम्', englishName: 'Sanskrit', direction: 'ltr', flag: '🇮🇳' },
{ code: 'slo', name: 'Slovenčina', englishName: 'Slovak', direction: 'ltr', flag: '🇸🇰' }, // ISO 639-2/B
{ code: 'slk', name: 'Slovenčina', englishName: 'Slovak', direction: 'ltr', flag: '🇸🇰' }, // ISO 639-2/T
{ code: 'hrv', name: 'Hrvatski', englishName: 'Croatian', direction: 'ltr', flag: '🇭🇷' },
{ code: 'srp', name: 'Српски', englishName: 'Serbian', direction: 'ltr', flag: '🇷🇸' },
{ code: 'slv', name: 'Slovenščina', englishName: 'Slovenian', direction: 'ltr', flag: '🇸🇮' },
{ code: 'lit', name: 'Lietuvių', englishName: 'Lithuanian', direction: 'ltr', flag: '🇱🇹' },
{ code: 'lav', name: 'Latviešu', englishName: 'Latvian', direction: 'ltr', flag: '🇱🇻' },
{ code: 'est', name: 'Eesti', englishName: 'Estonian', direction: 'ltr', flag: '🇪🇪' },
{ code: 'ice', name: 'Íslenska', englishName: 'Icelandic', direction: 'ltr', flag: '🇮🇸' }, // ISO 639-2/B
{ code: 'isl', name: 'Íslenska', englishName: 'Icelandic', direction: 'ltr', flag: '🇮🇸' }, // ISO 639-2/T
{ code: 'gle', name: 'Gaeilge', englishName: 'Irish', direction: 'ltr', flag: '🇮🇪' },
{ code: 'mlt', name: 'Malti', englishName: 'Maltese', direction: 'ltr', flag: '🇲🇹' },
{ code: 'alb', name: 'Shqip', englishName: 'Albanian', direction: 'ltr', flag: '🇦🇱' }, // ISO 639-2/B
{ code: 'sqi', name: 'Shqip', englishName: 'Albanian', direction: 'ltr', flag: '🇦🇱' }, // ISO 639-2/T
{ code: 'mac', name: 'Македонски', englishName: 'Macedonian', direction: 'ltr', flag: '🇲🇰' }, // ISO 639-2/B
{ code: 'mkd', name: 'Македонски', englishName: 'Macedonian', direction: 'ltr', flag: '🇲🇰' }, // ISO 639-2/T
{ code: 'cat', name: 'Català', englishName: 'Catalan', direction: 'ltr', flag: '🇪🇸' },
{ code: 'baq', name: 'Euskara', englishName: 'Basque', direction: 'ltr', flag: '🇪🇸' }, // ISO 639-2/B
{ code: 'eus', name: 'Euskara', englishName: 'Basque', direction: 'ltr', flag: '🇪🇸' }, // ISO 639-2/T
{ code: 'glg', name: 'Galego', englishName: 'Galician', direction: 'ltr', flag: '🇪🇸' },
{ code: 'wel', name: 'Cymraeg', englishName: 'Welsh', direction: 'ltr', flag: '🏴' }, // ISO 639-2/B
{ code: 'cym', name: 'Cymraeg', englishName: 'Welsh', direction: 'ltr', flag: '🏴' }, // ISO 639-2/T
{
code: 'gla',
name: 'Gàidhlig',
englishName: 'Scottish Gaelic',
direction: 'ltr',
flag: '🏴'
},
{ code: 'bre', name: 'Brezhoneg', englishName: 'Breton', direction: 'ltr', flag: '🇫🇷' },
{
code: 'ltz',
name: 'Lëtzebuergesch',
englishName: 'Luxembourgish',
direction: 'ltr',
flag: '🇱🇺'
},
{ code: 'fao', name: 'Føroyskt', englishName: 'Faroese', direction: 'ltr', flag: '🇫🇴' },
{ code: 'kal', name: 'Kalaallisut', englishName: 'Greenlandic', direction: 'ltr', flag: '🇬🇱' },
{ code: 'sun', name: 'Basa Sunda', englishName: 'Sundanese', direction: 'ltr', flag: '🇮🇩' },
{ code: 'dzo', name: 'རྫོང་ཁ', englishName: 'Dzongkha', direction: 'ltr', flag: '🇧🇹' },
{ code: 'tib', name: 'བོད་སྐད་', englishName: 'Tibetan', direction: 'ltr', flag: '🇨🇳' }, // ISO 639-2/B
{ code: 'bod', name: 'བོད་སྐད་', englishName: 'Tibetan', direction: 'ltr', flag: '🇨🇳' }, // ISO 639-2/T
{ code: 'uig', name: 'ئۇيغۇرچە', englishName: 'Uyghur', direction: 'rtl', flag: '🇨🇳' }
];
/**
* Search for languages by query string
* Matches against code, native name, or English name
*/
export function fuzzySearchLanguages(query) {
if (!query)
return [];
const lowerQuery = query.toLowerCase();
return commonLanguages.filter((lang) => lang.code.toLowerCase().includes(lowerQuery) ||
lang.name.toLowerCase().includes(lowerQuery) ||
lang.englishName.toLowerCase().includes(lowerQuery));
}
/**
* Get language info by code
*/
export function getLanguageInfo(code) {
return commonLanguages.find((lang) => lang.code.toLowerCase() === code.toLowerCase());
}
/**
* Get all supported languages
*/
export function getAllLanguages() {
return [...commonLanguages];
}
/**
* Check if a language code is valid
*/
export function isValidLanguageCode(code) {
return commonLanguages.some((lang) => lang.code.toLowerCase() === code.toLowerCase());
}