Language Dropdown for MAUI

LanguageDropdown

Today, I released a new component called Language Dropdown for MAUI (NET8). This is a beautiful new component. It allows you to display a dropdown with all the languages in the world with their flags. If you are interested in languages in your application, look my other repositories and posts:

The Language Dropdown for MAUI is available on NuGet as a package to use in your non-commercial applications. If you would like to use it for commercial use, please send me a message.

CultureInfo in NET8

If you use NET8 and want to retrieve the data related to the CutureInfo, you get a very large and interesting details such as the native name, the name of the language in English, calendar and numeric format, and a lot of other information.

Generally speaking, we can say, CultureInfo provides information about a specific culture (called a locale for unmanaged code development). The information includes the names for the culture, the writing system, the calendar used, the sort order of strings, and formatting for dates and numbers.

We know NET8 is cross-platform and for this reason we can create cross-platform applications using MAUI. Unfortunately, there is an issue when an application runs in iOS or macOS.

Wrong DisplayName and EnglishName in CultureInfo on iOS

When you use the CultureInfo in iOS or macOS, the information are not set properly. Following a thread on GitHub, this is an issue related to the runtime.

CultureInfo in iOS doesn't have all the corrent values
CultureInfo in iOS

This is, 100%, a runtime issue, dotnet/runtime#70028

It works for you in Xamarin.Forms because that’s running on Mono. The code in the newer .NET runtimes is, apparently, linking out some of this data used for region info, and stripped out the names. This has no relationship to the MAUI UI project. If you built a .NET iOS or Catalyst app without MAUI UI code, the same thing would happen (as I’m doing right now, hence why I saw it).

If you enable Hybrid Globalization, the NativeNameEnglishName, and DisplayName, should appear in the culture info. This only applies to .NET 8, and affects any .NET 8 app running on iOS, Catalyst, and tvOS. If you have issues with it, it should go to Runtime.

So, this is quite annoying because I’m trying to use the CultureInfo to display a list of languages in a dropdown list. Now, I have to find a solution.

The idea behind the component

As you may know, I’m creating an app called Language In Use to help learning a new language: this app offers tools to create your own dictionaries and study what you want. I created a post to explain what my idea and goal is.

Now, in this app, a user can create a dictionary in order to contain all the words wants to learn. Each dictionary has the native language and the foreign language. How many languages do we have in the words?

So, what I like in the UI is that the user can easily select a language from a list. In the list, the user can see the flag and the name of the language. This must be a simple dropdown like a normal Picker in MAUI. For example, this could be an idea how I want the dropdown.

Requirements

Now, if have to create a wireframe of the result I like. Obviously, I want to see the list of the languages. For each language, I like to see the flag of the country where the language is spoken to easily find the correct one.

List of countries
List of countries

Then, the list of countries must be filterable with a simple search. For the sake of the application, I like to have a simple Picker – or dropdown as I call it here – to filter.

Filter the countries
Filter the countries

For example, I want to show only a specific list of supported languages or the recent languages I selected or are my favorite.

Favorite/Support languages
Favorite/Support languages

Then, when the user clicks on a language, this must be displayed in the original Picker and the values must be available to the application. Also, the component must be used via MVVM.

As a Should have feature, the flags has be in SVG format and available to use in other applications without necessary using the component. Generally speaking, in a country, people speak different languages, maybe using a dialact, and so I like to display the diversity.

Implementation

Now, the implementation is quite complex although is based on CultureInfo. The process to aggregate the languages is quite tricky. Finally, I sorted out all the issues and the component is working quite well.

Bacause I spent a lot of time to create it, I published the component as a NuGet package and you can use it in non-commercial application. For this reason and for now, I won’t publish the source code of the component. If you want to use it for commercial use, please send me a message.

Flags

The flags for all countries and languages are present in the component. If you add the Language Dropdown for MAUI in your applications, automatically, you can display all the the flags in your application. All the flags are in SVG format. In order to display a flag in your project, it is enough to add an Image component and, as usual, selected as Source of the Image with the .png extension. For example:

<Image
	HeightRequest="50"
	Source="f_gb.png"
	WidthRequest="50" />

If you want to know what flags are available and related to what language, see the table below.

Usage

First, the package has to be added to your project. You can install it with this command from the dotnet CLI

dotnet add package PSC.Maui.Components.LanguageDropdown --version 8.0.0

or with the NuGet command

Install-Package PSC.Maui.Components.LanguageDropdown -Version 8.0.0

Then, the component has to be registered in your application. The component requires the CommunityToolkit.Maui and must be added in the MauiProgram.cs after that.

public static class MauiProgram
{
    public static MauiApp CreateMauiApp()
    {
        var builder = MauiApp.CreateBuilder();
        builder
            .UseMauiApp<App>()
            .UseMauiCommunityToolkit()
            .UseLanguageDropdown()
            .ConfigureFonts(fonts =>
            {
                fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
                fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold");
            });

#if DEBUG
        builder.Logging.AddDebug();
#endif

        return builder.Build();
    }
}

Now, you can use the component in the application.

How to add the component

In your MAUI ContentView or ContentPage. the reference to the component must be added like in the following example:

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage
    x:Class="LanguageDropdownDemo.MainPage"
    xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
    xmlns:components="clr-namespace:PSC.Maui.Components.LanguageDropdown;assembly=PSC.Maui.Components.LanguageDropdown"
    xmlns:local="clr-namespace:LanguageDropdownDemo.ViewModels">

    <ScrollView>
        <VerticalStackLayout Padding="30,0" Spacing="25">
        <components:LanguageDropdown
            x:Name="ldd"
                        BorderColor="Gray"
            IsDisplayPickerControl="{Binding IsDisplayPickerControl}"
            Placeholder="This is a test"
            SelectedItem="{Binding LanguageItem}" />

                <Image
                    HeightRequest="50"
                    Source="f_gb.png"
                    WidthRequest="50" />

                 <Image
                     HeightRequest="50"
                     Source="{Binding LanguageItem.Flag}"
                     WidthRequest="50" />
                 <Label HorizontalTextAlignment="Center" Text="{Binding LanguageItem.LanguageName}" />
        </VerticalStackLayout>
    </ScrollView>
</ContentPage>

The code above shows the following screenshot

image

Properties

NameTypeDescription
BorderColorColorGets or sets the color or the border of the component
IsDisplayPickerControlboolGets or sets if the list of languages is displayed
PlaceholderstringGets or sets the text to display as a placeholder until no selection is made
SelectedItemLanguageModelGets or sets the selected value

Languages and flags

Culture NameAbbreviationFlagParent
Afaraaf_dj
Afar (Djibouti)aa-DJf_djaa
Afar (Eritrea)aa-ERf_eraa
Afar (Ethiopia)aa-ETf_etaa
Afrikaansaff_na
Afrikaans (Namibia)af-NAf_naaf
Afrikaans (South Africa)af-ZAf_zaaf
Aghemagqf_cm
Aghem (Cameroon)agq-CMf_cmagq
Akanakf_gh
Akan (Ghana)ak-GHf_ghak
Albaniansqf_al
Albanian (Albania)sq-ALf_alsq
Albanian (Kosovo)sq-XKf_alsq
Albanian (North Macedonia)sq-MKf_mksq
Amharicamf_et
Amharic (Ethiopia)am-ETf_etam
Arabicarf_ae
Arabic (Algeria)ar-DZf_dzar
Arabic (Bahrain)ar-BHf_bhar
Arabic (Chad)ar-TDf_tdar
Arabic (Comoros)ar-KMf_kmar
Arabic (Djibouti)ar-DJf_djar
Arabic (Egypt)ar-EGf_egar
Arabic (Eritrea)ar-ERf_erar
Arabic (Iraq)ar-IQf_iqar
Arabic (Israel)ar-ILf_ilar
Arabic (Jordan)ar-JOf_joar
Arabic (Kuwait)ar-KWf_kwar
Arabic (Lebanon)ar-LBf_lbar
Arabic (Libya)ar-LYf_lyar
Arabic (Mauritania)ar-MRf_mrar
Arabic (Morocco)ar-MAf_maar
Arabic (Oman)ar-OMf_omar
Arabic (Palestinian Territories)ar-PSf_psar
Arabic (Qatar)ar-QAf_qaar
Arabic (Saudi Arabia)ar-SAf_saar
Arabic (Somalia)ar-SOf_soar
Arabic (South Sudan)ar-SSf_aear
Arabic (Sudan)ar-SDf_sdar
Arabic (Syria)ar-SYf_syar
Arabic (Tunisia)ar-TNf_tnar
Arabic (United Arab Emirates)ar-AEf_aear
Arabic (World)ar-001f_aear
Arabic (Yemen)ar-YEf_year
Armenianhyf_am
Armenian (Armenia)hy-AMf_amhy
Assameseasf_in
Assamese (India)as-INf_inas
Asturianastf_es
Asturian (Spain)ast-ESf_esast
Asuasaf_tz
Asu (Tanzania)asa-TZf_tzasa
Azerbaijaniazf_az
Azerbaijani (Cyrillic, Azerbaijan)az-Cyrl-AZf_azaz-Cyrl
Azerbaijani (Cyrillic)az-Cyrlf_azaz
Azerbaijani (Latin, Azerbaijan)az-Latn-AZf_azaz-Latn
Azerbaijani (Latin)az-Latnf_azaz
Bafiaksff_cm
Bafia (Cameroon)ksf-CMf_cmksf
Bambarabmf_ml
Bambara (Mali)bm-MLf_mlbm
Banglabnf_bd
Bangla (Bangladesh)bn-BDf_bdbn
Bangla (India)bn-INf_inbn
Basaabasf_cm
Basaa (Cameroon)bas-CMf_cmbas
Bashkirbaf_ru
Bashkir (Russia)ba-RUf_ruba
Basqueeuf_es
Basque (Spain)eu-ESf_eseu
Belarusianbef_by
Belarusian (Belarus)be-BYf_bybe
Bembabemf_zm
Bemba (Zambia)bem-ZMf_zmbem
Benabezf_tz
Bena (Tanzania)bez-TZf_tzbez
Binibinf_ng
Bini (Nigeria)bin-NGf_ngbin
Blinbynf_er
Blin (Eritrea)byn-ERf_erbyn
Bodobrxf_in
Bodo (India)brx-INf_inbrx
Bosnianbsf_ba
Bosnian (Cyrillic, Bosnia & Herzegovina)bs-Cyrl-BAf_babs-Cyrl
Bosnian (Cyrillic)bs-Cyrlf_babs
Bosnian (Latin, Bosnia & Herzegovina)bs-Latn-BAf_babs-Latn
Bosnian (Latin)bs-Latnf_babs
Bretonbrf_fr
Breton (France)br-FRf_frbr
Bulgarianbgf_bg
Bulgarian (Bulgaria)bg-BGf_bgbg
Burmesemyf_mm
Burmese (Myanmar [Burma])my-MMf_mmmy
Catalancaf_ad
Catalan (Andorra)ca-ADf_adca
Catalan (France)ca-FRf_frca
Catalan (Italy)ca-ITf_itca
Catalan (Spain)ca-ESf_esca
Cebuanocebf_ph
Cebuano (Philippines)ceb-PHf_phceb
Central Atlas Tamazighttzmf_ma
Central Atlas Tamazight (Algeria)tzm-DZf_dztzm
Central Atlas Tamazight (Arabic, Morocco)tzm-Arab-MAf_matzm-Arab
Central Atlas Tamazight (Arabic)tzm-Arabf_matzm
Central Atlas Tamazight (Morocco)tzm-MAf_matzm
Central Atlas Tamazight (Tifinagh, Morocco)tzm-Tfng-MAf_matzm-Tfng
Central Atlas Tamazight (Tifinagh)tzm-Tfngf_matzm
Central Kurdishckbf_iq
Central Kurdish (Iran)ckb-IRf_irckb
Central Kurdish (Iraq)ckb-IQf_iqckb
Chakmaccpf_bd
Chakma (Bangladesh)ccp-BDf_bdccp
Chakma (India)ccp-INf_inccp
Chechencef_ru
Chechen (Russia)ce-RUf_ruce
Cherokeechrf_us
Cherokee (United States)chr-USf_uschr
Chigacggf_ug
Chiga (Uganda)cgg-UGf_ugcgg
Chinesezhf_cn
Chinese (Simplified, China)zh-Hans-CNf_cnzh-Hans
Chinese (Simplified, Hong Kong SAR China)zh-Hans-HKf_hkzh-Hans
Chinese (Simplified, Macao SAR)zh-Hans-MOf_mozh-Hans
Chinese (Simplified, Singapore)zh-Hans-SGf_sgzh-Hans
Chinese (Simplified)zh-Hansf_cnzh
Chinese (Traditional, Hong Kong SAR China)zh-Hant-HKf_hkzh-Hant
Chinese (Traditional, Macao SAR)zh-Hant-MOf_mozh-Hant
Chinese (Traditional, Taiwan)zh-Hant-TWf_twzh-Hant
Chinese (Traditional)zh-Hantf_cnzh
Church Slaviccuf_ru
Church Slavic (Russia)cu-RUf_rucu
Cologniankshf_de
Colognian (Germany)ksh-DEf_deksh
Cornishkwf_gb
Cornish (United Kingdom)kw-GBf_gbkw
Corsicancof_fr
Corsican (France)co-FRf_frco
Croatianhrf_hr
Croatian (Bosnia & Herzegovina)hr-BAf_bahr
Croatian (Croatia)hr-HRf_hrhr
Czechcsf_cz
Czech (Czechia)cs-CZf_czcs
Danishdaf_dk
Danish (Denmark)da-DKf_dkda
Danish (Greenland)da-GLf_glda
Divehidvf_mv
Divehi (Maldives)dv-MVf_mvdv
Dogridoif_in
Dogri (India)doi-INf_indoi
Dualaduaf_cm
Duala (Cameroon)dua-CMf_cmdua
Dutchnlf_nl
Dutch (Aruba)nl-AWf_awnl
Dutch (Belgium)nl-BEf_benl
Dutch (Caribbean Netherlands)nl-BQf_nlnl
Dutch (Curaçao)nl-CWf_nlnl
Dutch (Netherlands)nl-NLf_nlnl
Dutch (Sint Maarten)nl-SXf_nlnl
Dutch (Suriname)nl-SRf_srnl
Dzongkhadzf_bt
Dzongkha (Bhutan)dz-BTf_btdz
Embuebuf_ke
Embu (Kenya)ebu-KEf_keebu
Englishenf_us
English (American Samoa)en-ASf_asen
English (Anguilla)en-AIf_aien
English (Antigua & Barbuda)en-AGf_agen
English (Australia)en-AUf_auen
English (Austria)en-ATf_aten
English (Bahamas)en-BSf_bsen
English (Barbados)en-BBf_bben
English (Belgium)en-BEf_been
English (Belize)en-BZf_bzen
English (Bermuda)en-BMf_bmen
English (Botswana)en-BWf_bwen
English (British Indian Ocean Territory)en-IOf_ioen
English (British Virgin Islands)en-VGf_vgen
English (Burundi)en-BIf_bien
English (Cameroon)en-CMf_cmen
English (Canada)en-CAf_caen
English (Caribbean)en-029f_usen
English (Cayman Islands)en-KYf_kyen
English (Christmas Island)en-CXf_cxen
English (Cocos [Keeling] Islands)en-CCf_ccen
English (Cook Islands)en-CKf_cken
English (Cyprus)en-CYf_cyen
English (Denmark)en-DKf_dken
English (Dominica)en-DMf_dmen
English (Eritrea)en-ERf_eren
English (Eswatini)en-SZf_szen
English (Europe)en-150f_usen
English (Falkland Islands)en-FKf_fken
English (Fiji)en-FJf_fjen
English (Finland)en-FIf_fien
English (Gambia)en-GMf_gmen
English (Germany)en-DEf_deen
English (Ghana)en-GHf_ghen
English (Gibraltar)en-GIf_gien
English (Grenada)en-GDf_gden
English (Guam)en-GUf_guen
English (Guernsey)en-GGf_usen
English (Guyana)en-GYf_gyen
English (Hong Kong SAR China)en-HKf_hken
English (India)en-INf_inen
English (Indonesia)en-IDf_iden
English (Ireland)en-IEf_ieen
English (Isle of Man)en-IMf_usen
English (Israel)en-ILf_ilen
English (Jamaica)en-JMf_jmen
English (Jersey)en-JEf_usen
English (Kenya)en-KEf_keen
English (Kiribati)en-KIf_kien
English (Lesotho)en-LSf_lsen
English (Liberia)en-LRf_lren
English (Macao SAR)en-MOf_moen
English (Madagascar)en-MGf_mgen
English (Malawi)en-MWf_mwen
English (Malaysia)en-MYf_myen
English (Malta)en-MTf_mten
English (Marshall Islands)en-MHf_mhen
English (Mauritius)en-MUf_muen
English (Micronesia)en-FMf_fmen
English (Montserrat)en-MSf_msen
English (Namibia)en-NAf_naen
English (Nauru)en-NRf_nren
English (Netherlands)en-NLf_nlen
English (New Zealand)en-NZf_nzen
English (Nigeria)en-NGf_ngen
English (Niue)en-NUf_nuen
English (Norfolk Island)en-NFf_nfen
English (Northern Mariana Islands)en-MPf_mpen
English (Pakistan)en-PKf_pken
English (Palau)en-PWf_pwen
English (Papua New Guinea)en-PGf_pgen
English (Philippines)en-PHf_phen
English (Pitcairn Islands)en-PNf_pnen
English (Puerto Rico)en-PRf_pren
English (Rwanda)en-RWf_rwen
English (Samoa)en-WSf_wsen
English (Seychelles)en-SCf_scen
English (Sierra Leone)en-SLf_slen
English (Singapore)en-SGf_sgen
English (Sint Maarten)en-SXf_usen
English (Slovenia)en-SIf_sien
English (Solomon Islands)en-SBf_sben
English (South Africa)en-ZAf_zaen
English (South Sudan)en-SSf_usen
English (St Helena)en-SHf_shen
English (St Kitts & Nevis)en-KNf_knen
English (St Lucia)en-LCf_lcen
English (St Vincent & the Grenadines)en-VCf_vcen
English (Sudan)en-SDf_sden
English (Sweden)en-SEf_seen
English (Switzerland)en-CHf_chen
English (Tanzania)en-TZf_tzen
English (Tokelau)en-TKf_tken
English (Tonga)en-TOf_toen
English (Trinidad & Tobago)en-TTf_tten
English (Turks & Caicos Islands)en-TCf_tcen
English (Tuvalu)en-TVf_tven
English (Uganda)en-UGf_ugen
English (United Arab Emirates)en-AEf_aeen
English (United Kingdom)en-GBf_gben
English (United States, Computer)en-US-POSIXf_usen-US
English (United States)en-USf_usen
English (US Outlying Islands)en-UMf_umen
English (US Virgin Islands)en-VIf_vien
English (Vanuatu)en-VUf_vuen
English (World)en-001f_usen
English (Zambia)en-ZMf_zmen
English (Zimbabwe)en-ZWf_zwen
Esperantoeof_
Esperanto (World)eo-001f_eo
Estonianetf_ee
Estonian (Estonia)et-EEf_eeet
Eweeef_gh
Ewe (Ghana)ee-GHf_ghee
Ewe (Togo)ee-TGf_tgee
Ewondoewof_cm
Ewondo (Cameroon)ewo-CMf_cmewo
Faroesefof_fo
Faroese (Denmark)fo-DKf_dkfo
Faroese (Faroe Islands)fo-FOf_fofo
Filipinofilf_ph
Filipino (Philippines)fil-PHf_phfil
Finnishfif_fi
Finnish (Finland)fi-FIf_fifi
Frenchfrf_fr
French (Algeria)fr-DZf_dzfr
French (Belgium)fr-BEf_befr
French (Benin)fr-BJf_bjfr
French (Burkina Faso)fr-BFf_bffr
French (Burundi)fr-BIf_bifr
French (Cameroon)fr-CMf_cmfr
French (Canada)fr-CAf_cafr
French (Caribbean)fr-029f_frfr
French (Central African Republic)fr-CFf_cffr
French (Chad)fr-TDf_tdfr
French (Comoros)fr-KMf_kmfr
French (Congo – Brazzaville)fr-CGf_cgfr
French (Congo – Kinshasa)fr-CDf_cdfr
French (Côte d’Ivoire)fr-CIf_cifr
French (Djibouti)fr-DJf_djfr
French (Equatorial Guinea)fr-GQf_gqfr
French (France)fr-FRf_frfr
French (French Guiana)fr-GFf_gffr
French (French Polynesia)fr-PFf_pffr
French (Gabon)fr-GAf_gafr
French (Guadeloupe)fr-GPf_gpfr
French (Guinea)fr-GNf_gnfr
French (Haiti)fr-HTf_htfr
French (Luxembourg)fr-LUf_lufr
French (Madagascar)fr-MGf_mgfr
French (Mali)fr-MLf_mlfr
French (Martinique)fr-MQf_mqfr
French (Mauritania)fr-MRf_mrfr
French (Mauritius)fr-MUf_mufr
French (Mayotte)fr-YTf_ytfr
French (Monaco)fr-MCf_mcfr
French (Morocco)fr-MAf_mafr
French (New Caledonia)fr-NCf_ncfr
French (Niger)fr-NEf_nefr
French (Réunion)fr-REf_refr
French (Rwanda)fr-RWf_rwfr
French (Senegal)fr-SNf_snfr
French (Seychelles)fr-SCf_scfr
French (St Barthélemy)fr-BLf_frfr
French (St Martin)fr-MFf_frfr
French (St Pierre & Miquelon)fr-PMf_pmfr
French (Switzerland)fr-CHf_chfr
French (Syria)fr-SYf_syfr
French (Togo)fr-TGf_tgfr
French (Tunisia)fr-TNf_tnfr
French (Vanuatu)fr-VUf_vufr
French (Wallis & Futuna)fr-WFf_wffr
Friulianfurf_it
Friulian (Italy)fur-ITf_itfur
Fulahfff_bf
Fulah (Adlam, Burkina Faso)ff-Adlm-BFf_bfff-Adlm
Fulah (Adlam, Cameroon)ff-Adlm-CMf_cmff-Adlm
Fulah (Adlam, Gambia)ff-Adlm-GMf_gmff-Adlm
Fulah (Adlam, Ghana)ff-Adlm-GHf_ghff-Adlm
Fulah (Adlam, Guinea-Bissau)ff-Adlm-GWf_gwff-Adlm
Fulah (Adlam, Guinea)ff-Adlm-GNf_gnff-Adlm
Fulah (Adlam, Liberia)ff-Adlm-LRf_lrff-Adlm
Fulah (Adlam, Mauritania)ff-Adlm-MRf_mrff-Adlm
Fulah (Adlam, Niger)ff-Adlm-NEf_neff-Adlm
Fulah (Adlam, Nigeria)ff-Adlm-NGf_ngff-Adlm
Fulah (Adlam, Senegal)ff-Adlm-SNf_snff-Adlm
Fulah (Adlam, Sierra Leone)ff-Adlm-SLf_slff-Adlm
Fulah (Adlam)ff-Adlmf_bfff
Fulah (Latin, Burkina Faso)ff-Latn-BFf_bfff-Latn
Fulah (Latin, Cameroon)ff-Latn-CMf_cmff-Latn
Fulah (Latin, Gambia)ff-Latn-GMf_gmff-Latn
Fulah (Latin, Ghana)ff-Latn-GHf_ghff-Latn
Fulah (Latin, Guinea-Bissau)ff-Latn-GWf_gwff-Latn
Fulah (Latin, Guinea)ff-Latn-GNf_gnff-Latn
Fulah (Latin, Liberia)ff-Latn-LRf_lrff-Latn
Fulah (Latin, Mauritania)ff-Latn-MRf_mrff-Latn
Fulah (Latin, Niger)ff-Latn-NEf_neff-Latn
Fulah (Latin, Nigeria)ff-Latn-NGf_ngff-Latn
Fulah (Latin, Senegal)ff-Latn-SNf_snff-Latn
Fulah (Latin, Sierra Leone)ff-Latn-SLf_slff-Latn
Fulah (Latin)ff-Latnf_bfff
Galicianglf_es
Galician (Spain)gl-ESf_esgl
Gandalgf_ug
Ganda (Uganda)lg-UGf_uglg
Georgiankaf_ge
Georgian (Georgia)ka-GEf_geka
Germandef_de
German (Austria)de-ATf_atde
German (Belgium)de-BEf_bede
German (Germany)de-DEf_dede
German (Italy)de-ITf_itde
German (Liechtenstein)de-LIf_lide
German (Luxembourg)de-LUf_lude
German (Switzerland)de-CHf_chde
Greekelf_cy
Greek (Cyprus)el-CYf_cyel
Greek (Greece)el-GRf_grel
Guaranignf_py
Guarani (Paraguay)gn-PYf_pygn
Gujaratiguf_in
Gujarati (India)gu-INf_ingu
Gusiiguzf_ke
Gusii (Kenya)guz-KEf_keguz
Hausahaf_gh
Hausa (Ghana)ha-GHf_ghha
Hausa (Niger)ha-NEf_neha
Hausa (Nigeria)ha-NGf_ngha
Hawaiianhawf_us
Hawaiian (United States)haw-USf_ushaw
Hebrewhef_il
Hebrew (Israel)he-ILf_ilhe
Hindihif_in
Hindi (India)hi-INf_inhi
Hungarianhuf_hu
Hungarian (Hungary)hu-HUf_huhu
Ibibioibbf_ng
Ibibio (Nigeria)ibb-NGf_ngibb
Icelandicisf_is
Icelandic (Iceland)is-ISf_isis
Igboigf_ng
Igbo (Nigeria)ig-NGf_ngig
Inari Samismnf_fi
Inari Sami (Finland)smn-FIf_fismn
Indonesianidf_id
Indonesian (Indonesia)id-IDf_idid
Interlinguaiaf_
Interlingua (World)ia-001f_ia
Inuktitutiuf_ca
Inuktitut (Canada)iu-CAf_caiu
Inuktitut (Latin, Canada)iu-Latn-CAf_caiu-Latn
Inuktitut (Latin)iu-Latnf_caiu
Irishgaf_gb
Irish (Ireland)ga-IEf_iega
Irish (United Kingdom)ga-GBf_gbga
Italianitf_it
Italian (Italy)it-ITf_itit
Italian (San Marino)it-SMf_smit
Italian (Switzerland)it-CHf_chit
Italian (Vatican City)it-VAf_vait
Japanesejaf_jp
Japanese (Japan)ja-JPf_jpja
Javanesejvf_id
Javanese (Indonesia)jv-IDf_idjv
Javanese (Javanese, Indonesia)jv-Java-IDf_idjv-Java
Javanese (Javanese)jv-Javaf_idjv
Jola-Fonyidyof_sn
Jola-Fonyi (Senegal)dyo-SNf_sndyo
Kabuverdianukeaf_cv
Kabuverdianu (Cape Verde)kea-CVf_cvkea
Kabylekabf_dz
Kabyle (Algeria)kab-DZf_dzkab
Kakokkjf_cm
Kako (Cameroon)kkj-CMf_cmkkj
Kalaallisutklf_gl
Kalaallisut (Greenland)kl-GLf_glkl
Kalenjinklnf_ke
Kalenjin (Kenya)kln-KEf_kekln
Kambakamf_ke
Kamba (Kenya)kam-KEf_kekam
Kannadaknf_in
Kannada (India)kn-INf_inkn
Kanurikrf_ng
Kanuri (Latin, Nigeria)kr-Latn-NGf_ngkr-Latn
Kanuri (Latin)kr-Latnf_ngkr
Kashmiriksf_in
Kashmiri (Arabic, India)ks-Arab-INf_inks-Arab
Kashmiri (Arabic)ks-Arabf_inks
Kashmiri (Devanagari, India)ks-Deva-INf_inks-Deva
Kashmiri (Devanagari)ks-Devaf_inks
Kazakhkkf_kz
Kazakh (Kazakhstan)kk-KZf_kzkk
Khmerkmf_kh
Khmer (Cambodia)km-KHf_khkm
Kikuyukif_ke
Kikuyu (Kenya)ki-KEf_keki
Kinyarwandarwf_rw
Kinyarwanda (Rwanda)rw-RWf_rwrw
Konkanikokf_in
Konkani (India)kok-INf_inkok
Koreankof_kp
Korean (North Korea)ko-KPf_kpko
Korean (South Korea)ko-KRf_krko
Koyra Chiinikhqf_ml
Koyra Chiini (Mali)khq-MLf_mlkhq
Koyraboro Sennisesf_ml
Koyraboro Senni (Mali)ses-MLf_mlses
Kwasionmgf_cm
Kwasio (Cameroon)nmg-CMf_cmnmg
Kyrgyzkyf_kg
Kyrgyz (Kyrgyzstan)ky-KGf_kgky
Kʼicheʼqucf_gt
Kʼicheʼ (Guatemala)quc-GTf_gtquc
Lakotalktf_us
Lakota (United States)lkt-USf_uslkt
Langilagf_tz
Langi (Tanzania)lag-TZf_tzlag
Laolof_la
Lao (Laos)lo-LAf_lalo
Latinlaf_va
Latin (Vatican City)la-VAf_vala
Latvianlvf_lv
Latvian (Latvia)lv-LVf_lvlv
Lingalalnf_ao
Lingala (Angola)ln-AOf_aoln
Lingala (Central African Republic)ln-CFf_cfln
Lingala (Congo – Brazzaville)ln-CGf_cgln
Lingala (Congo – Kinshasa)ln-CDf_cdln
Lithuanianltf_lt
Lithuanian (Lithuania)lt-LTf_ltlt
Low Germanndsf_nl
Low German (Germany)nds-DEf_dends
Low German (Netherlands)nds-NLf_nlnds
Lower Sorbiandsbf_de
Lower Sorbian (Germany)dsb-DEf_dedsb
Luba-Katangaluf_cd
Luba-Katanga (Congo – Kinshasa)lu-CDf_cdlu
Lule Samismjf_se
Lule Sami (Norway)smj-NOf_nosmj
Lule Sami (Sweden)smj-SEf_sesmj
Luoluof_ke
Luo (Kenya)luo-KEf_keluo
Luxembourgishlbf_lu
Luxembourgish (Luxembourg)lb-LUf_lulb
Luyialuyf_ke
Luyia (Kenya)luy-KEf_keluy
Macedonianmkf_mk
Macedonian (North Macedonia)mk-MKf_mkmk
Machamejmcf_tz
Machame (Tanzania)jmc-TZf_tzjmc
Maithilimaif_in
Maithili (India)mai-INf_inmai
Makhuwa-Meettomghf_mz
Makhuwa-Meetto (Mozambique)mgh-MZf_mzmgh
Makondekdef_tz
Makonde (Tanzania)kde-TZf_tzkde
Malagasymgf_mg
Malagasy (Madagascar)mg-MGf_mgmg
Malaymsf_my
Malay (Brunei)ms-BNf_bnms
Malay (Indonesia)ms-IDf_idms
Malay (Malaysia)ms-MYf_myms
Malay (Singapore)ms-SGf_sgms
Malayalammlf_in
Malayalam (India)ml-INf_inml
Maltesemtf_mt
Maltese (Malta)mt-MTf_mtmt
Manipurimnif_in
Manipuri (Bangla, India)mni-Beng-INf_inmni-Beng
Manipuri (Bangla)mni-Bengf_inmni
Manxgvf_
Manx (Isle of Man)gv-IMf_gv
Maorimif_nz
Maori (New Zealand)mi-NZf_nzmi
Mapuchearnf_cl
Mapuche (Chile)arn-CLf_clarn
Marathimrf_in
Marathi (India)mr-INf_inmr
Masaimasf_ke
Masai (Kenya)mas-KEf_kemas
Masai (Tanzania)mas-TZf_tzmas
Mazanderanimznf_ir
Mazanderani (Iran)mzn-IRf_irmzn
Merumerf_ke
Meru (Kenya)mer-KEf_kemer
Metaʼmgof_cm
Metaʼ (Cameroon)mgo-CMf_cmmgo
Mohawkmohf_ca
Mohawk (Canada)moh-CAf_camoh
Mongolianmnf_mn
Mongolian (Mongolia)mn-MNf_mnmn
Mongolian (Mongolian, China)mn-Mong-CNf_cnmn-Mong
Mongolian (Mongolian, Mongolia)mn-Mong-MNf_mnmn-Mong
Mongolian (Mongolian)mn-Mongf_mnmn
Morisyenmfef_mu
Morisyen (Mauritius)mfe-MUf_mumfe
Mundangmuaf_cm
Mundang (Cameroon)mua-CMf_cmmua
N’Konqof_gn
N’Ko (Guinea)nqo-GNf_gnnqo
Namanaqf_na
Nama (Namibia)naq-NAf_nanaq
Nepalinef_np
Nepali (India)ne-INf_inne
Nepali (Nepal)ne-NPf_npne
Ngiemboonnnhf_cm
Ngiemboon (Cameroon)nnh-CMf_cmnnh
Ngombajgof_cm
Ngomba (Cameroon)jgo-CMf_cmjgo
Nigerian Pidginpcmf_ng
Nigerian Pidgin (Nigeria)pcm-NGf_ngpcm
North Ndebelendf_zw
North Ndebele (Zimbabwe)nd-ZWf_zwnd
Northern Lurilrcf_iq
Northern Luri (Iran)lrc-IRf_irlrc
Northern Luri (Iraq)lrc-IQf_iqlrc
Northern Samisef_se
Northern Sami (Finland)se-FIf_fise
Northern Sami (Norway)se-NOf_nose
Northern Sami (Sweden)se-SEf_sese
Northern Sothonsof_za
Northern Sotho (South Africa)nso-ZAf_zanso
Norwegian Bokmålnbf_no
Norwegian Bokmål (Norway)nb-NOf_nonb
Norwegian Bokmål (Svalbard & Jan Mayen)nb-SJf_sjnb
Norwegian Nynorsknnf_no
Norwegian Nynorsk (Norway)nn-NOf_nonn
Nuernusf_
Nuer (South Sudan)nus-SSf_nus
Nyankolenynf_ug
Nyankole (Uganda)nyn-UGf_ugnyn
Occitanocf_fr
Occitan (France)oc-FRf_froc
Odiaorf_in
Odia (India)or-INf_inor
Oromoomf_et
Oromo (Ethiopia)om-ETf_etom
Oromo (Kenya)om-KEf_keom
Osseticosf_ge
Ossetic (Georgia)os-GEf_geos
Ossetic (Russia)os-RUf_ruos
Papiamentopapf_
Papiamento (Caribbean)pap-029f_pap
Pashtopsf_pk
Pashto (Afghanistan)ps-AFf_afps
Pashto (Pakistan)ps-PKf_pkps
Persianfaf_af
Persian (Afghanistan)fa-AFf_affa
Persian (Iran)fa-IRf_irfa
Polishplf_pl
Polish (Poland)pl-PLf_plpl
Portugueseptf_pt
Portuguese (Angola)pt-AOf_aopt
Portuguese (Brazil)pt-BRf_brpt
Portuguese (Cape Verde)pt-CVf_cvpt
Portuguese (Equatorial Guinea)pt-GQf_gqpt
Portuguese (Guinea-Bissau)pt-GWf_gwpt
Portuguese (Luxembourg)pt-LUf_lupt
Portuguese (Macao SAR)pt-MOf_mopt
Portuguese (Mozambique)pt-MZf_mzpt
Portuguese (Portugal)pt-PTf_ptpt
Portuguese (São Tomé & Príncipe)pt-STf_stpt
Portuguese (Switzerland)pt-CHf_chpt
Portuguese (Timor-Leste)pt-TLf_tlpt
Prussianprgf_
Prussian (World)prg-001f_prg
Punjabipaf_pk
Punjabi (Arabic, Pakistan)pa-Arab-PKf_pkpa-Arab
Punjabi (Arabic)pa-Arabf_pkpa
Punjabi (Gurmukhi, India)pa-Guru-INf_inpa-Guru
Punjabi (Gurmukhi)pa-Guruf_inpa
Quechuaquf_bo
Quechua (Bolivia)qu-BOf_boqu
Quechua (Ecuador)qu-ECf_ecqu
Quechua (Peru)qu-PEf_pequ
Romanianrof_ro
Romanian (Moldova)ro-MDf_mdro
Romanian (Romania)ro-ROf_roro
Romanshrmf_ch
Romansh (Switzerland)rm-CHf_chrm
Romboroff_tz
Rombo (Tanzania)rof-TZf_tzrof
Rundirnf_bi
Rundi (Burundi)rn-BIf_birn
Russianruf_ru
Russian (Belarus)ru-BYf_byru
Russian (Kazakhstan)ru-KZf_kzru
Russian (Kyrgyzstan)ru-KGf_kgru
Russian (Moldova)ru-MDf_mdru
Russian (Russia)ru-RUf_ruru
Russian (Ukraine)ru-UAf_uaru
Rwarwkf_tz
Rwa (Tanzania)rwk-TZf_tzrwk
Sahossyf_er
Saho (Eritrea)ssy-ERf_erssy
Samburusaqf_ke
Samburu (Kenya)saq-KEf_kesaq
Sangosgf_cf
Sango (Central African Republic)sg-CFf_cfsg
Sangusbpf_tz
Sangu (Tanzania)sbp-TZf_tzsbp
Sanskritsaf_in
Sanskrit (India)sa-INf_insa
Santalisatf_in
Santali (Ol Chiki, India)sat-Olck-INf_insat-Olck
Santali (Ol Chiki)sat-Olckf_insat
Scottish Gaelicgdf_gb
Scottish Gaelic (United Kingdom)gd-GBf_gbgd
Senasehf_mz
Sena (Mozambique)seh-MZf_mzseh
Serbiansrf_ba
Serbian (Cyrillic, Bosnia & Herzegovina)sr-Cyrl-BAf_basr-Cyrl
Serbian (Cyrillic, Kosovo)sr-Cyrl-XKf_basr-Cyrl
Serbian (Cyrillic, Montenegro)sr-Cyrl-MEf_mesr-Cyrl
Serbian (Cyrillic, Serbia)sr-Cyrl-RSf_rssr-Cyrl
Serbian (Cyrillic)sr-Cyrlf_basr
Serbian (Latin, Bosnia & Herzegovina)sr-Latn-BAf_basr-Latn
Serbian (Latin, Kosovo)sr-Latn-XKf_basr-Latn
Serbian (Latin, Montenegro)sr-Latn-MEf_mesr-Latn
Serbian (Latin, Serbia)sr-Latn-RSf_rssr-Latn
Serbian (Latin)sr-Latnf_basr
Shambalaksbf_tz
Shambala (Tanzania)ksb-TZf_tzksb
Shonasnf_zw
Shona (Zimbabwe)sn-ZWf_zwsn
Sichuan Yiiif_cn
Sichuan Yi (China)ii-CNf_cnii
Sindhisdf_pk
Sindhi (Arabic, Pakistan)sd-Arab-PKf_pksd-Arab
Sindhi (Arabic)sd-Arabf_pksd
Sindhi (Devanagari, India)sd-Deva-INf_insd-Deva
Sindhi (Devanagari)sd-Devaf_insd
Sinhalasif_lk
Sinhala (Sri Lanka)si-LKf_lksi
Skolt Samismsf_fi
Skolt Sami (Finland)sms-FIf_fisms
Slovakskf_sk
Slovak (Slovakia)sk-SKf_sksk
Slovenianslf_si
Slovenian (Slovenia)sl-SIf_sisl
Sogaxogf_ug
Soga (Uganda)xog-UGf_ugxog
Somalisof_so
Somali (Djibouti)so-DJf_djso
Somali (Ethiopia)so-ETf_etso
Somali (Kenya)so-KEf_keso
Somali (Somalia)so-SOf_soso
South Ndebelenrf_za
South Ndebele (South Africa)nr-ZAf_zanr
Southern Samismaf_se
Southern Sami (Norway)sma-NOf_nosma
Southern Sami (Sweden)sma-SEf_sesma
Southern Sothostf_ls
Southern Sotho (Lesotho)st-LSf_lsst
Southern Sotho (South Africa)st-ZAf_zast
Spanishesf_es
Spanish (Argentina)es-ARf_ares
Spanish (Belize)es-BZf_bzes
Spanish (Bolivia)es-BOf_boes
Spanish (Brazil)es-BRf_bres
Spanish (Chile)es-CLf_cles
Spanish (Colombia)es-COf_coes
Spanish (Costa Rica)es-CRf_cres
Spanish (Cuba)es-CUf_cues
Spanish (Dominican Republic)es-DOf_does
Spanish (Ecuador)es-ECf_eces
Spanish (El Salvador)es-SVf_sves
Spanish (Equatorial Guinea)es-GQf_gqes
Spanish (Guatemala)es-GTf_gtes
Spanish (Honduras)es-HNf_hnes
Spanish (Latin America)es-419f_eses
Spanish (Mexico)es-MXf_mxes
Spanish (Nicaragua)es-NIf_nies
Spanish (Panama)es-PAf_paes
Spanish (Paraguay)es-PYf_pyes
Spanish (Peru)es-PEf_pees
Spanish (Philippines)es-PHf_phes
Spanish (Puerto Rico)es-PRf_pres
Spanish (Spain)es-ESf_eses
Spanish (United States)es-USf_uses
Spanish (Uruguay)es-UYf_uyes
Spanish (Venezuela)es-VEf_vees
Standard Moroccan Tamazightzghf_ma
Standard Moroccan Tamazight (Morocco)zgh-MAf_mazgh
Sundanesesuf_id
Sundanese (Latin, Indonesia)su-Latn-IDf_idsu-Latn
Sundanese (Latin)su-Latnf_idsu
Swahiliswf_cd
Swahili (Congo – Kinshasa)sw-CDf_cdsw
Swahili (Kenya)sw-KEf_kesw
Swahili (Tanzania)sw-TZf_tzsw
Swahili (Uganda)sw-UGf_ugsw
Swatissf_sz
Swati (Eswatini)ss-SZf_szss
Swati (South Africa)ss-ZAf_zass
Swedishsvf_se
Swedish (Åland Islands)sv-AXf_axsv
Swedish (Finland)sv-FIf_fisv
Swedish (Sweden)sv-SEf_sesv
Swiss Germangswf_ch
Swiss German (France)gsw-FRf_frgsw
Swiss German (Liechtenstein)gsw-LIf_ligsw
Swiss German (Switzerland)gsw-CHf_chgsw
Syriacsyrf_sy
Syriac (Syria)syr-SYf_sysyr
Tachelhitshif_ma
Tachelhit (Latin, Morocco)shi-Latn-MAf_mashi-Latn
Tachelhit (Latin)shi-Latnf_mashi
Tachelhit (Tifinagh, Morocco)shi-Tfng-MAf_mashi-Tfng
Tachelhit (Tifinagh)shi-Tfngf_mashi
Taitadavf_ke
Taita (Kenya)dav-KEf_kedav
Tajiktgf_tj
Tajik (Tajikistan)tg-TJf_tjtg
Tamiltaf_in
Tamil (India)ta-INf_inta
Tamil (Malaysia)ta-MYf_myta
Tamil (Singapore)ta-SGf_sgta
Tamil (Sri Lanka)ta-LKf_lkta
Tasawaqtwqf_ne
Tasawaq (Niger)twq-NEf_netwq
Tatarttf_ru
Tatar (Russia)tt-RUf_rutt
Telugutef_in
Telugu (India)te-INf_inte
Tesoteof_ke
Teso (Kenya)teo-KEf_keteo
Teso (Uganda)teo-UGf_ugteo
Thaithf_th
Thai (Thailand)th-THf_thth
Tibetanbof_cn
Tibetan (China)bo-CNf_cnbo
Tibetan (India)bo-INf_inbo
Tigretigf_er
Tigre (Eritrea)tig-ERf_ertig
Tigrinyatif_er
Tigrinya (Eritrea)ti-ERf_erti
Tigrinya (Ethiopia)ti-ETf_etti
Tongantof_to
Tongan (Tonga)to-TOf_toto
Tsongatsf_za
Tsonga (South Africa)ts-ZAf_zats
Tswanatnf_bw
Tswana (Botswana)tn-BWf_bwtn
Tswana (South Africa)tn-ZAf_zatn
Turkishtrf_tr
Turkish (Cyprus)tr-CYf_cytr
Turkish (Turkey)tr-TRf_trtr
Turkmentkf_tm
Turkmen (Turkmenistan)tk-TMf_tmtk
Ukrainianukf_ua
Ukrainian (Ukraine)uk-UAf_uauk
Upper Sorbianhsbf_de
Upper Sorbian (Germany)hsb-DEf_dehsb
Urduurf_in
Urdu (India)ur-INf_inur
Urdu (Pakistan)ur-PKf_pkur
Uyghurugf_cn
Uyghur (China)ug-CNf_cnug
Uzbekuzf_uz
Uzbek (Arabic, Afghanistan)uz-Arab-AFf_afuz-Arab
Uzbek (Arabic)uz-Arabf_afuz
Uzbek (Cyrillic, Uzbekistan)uz-Cyrl-UZf_uzuz-Cyrl
Uzbek (Cyrillic)uz-Cyrlf_uzuz
Uzbek (Latin, Uzbekistan)uz-Latn-UZf_uzuz-Latn
Uzbek (Latin)uz-Latnf_uzuz
Vaivaif_lr
Vai (Latin, Liberia)vai-Latn-LRf_lrvai-Latn
Vai (Latin)vai-Latnf_lrvai
Vai (Vai, Liberia)vai-Vaii-LRf_lrvai-Vaii
Vai (Vai)vai-Vaiif_lrvai
Vendavef_za
Venda (South Africa)ve-ZAf_zave
Vietnamesevif_vn
Vietnamese (Vietnam)vi-VNf_vnvi
Volapükvof_
Volapük (World)vo-001f_vo
Vunjovunf_tz
Vunjo (Tanzania)vun-TZf_tzvun
Walserwaef_ch
Walser (Switzerland)wae-CHf_chwae
Welshcyf_gb
Welsh (United Kingdom)cy-GBf_gbcy
Western Frisianfyf_fy
Western Frisian (Netherlands)fy-NLf_nlfy
Wolayttawalf_et
Wolaytta (Ethiopia)wal-ETf_etwal
Wolofwof_sn
Wolof (Senegal)wo-SNf_snwo
Xhosaxhf_za
Xhosa (South Africa)xh-ZAf_zaxh
Yakutsahf_ru
Yakut (Russia)sah-RUf_rusah
Yangbenyavf_cm
Yangben (Cameroon)yav-CMf_cmyav
Yiddishyif_
Yiddish (World)yi-001f_yi
Yorubayof_bj
Yoruba (Benin)yo-BJf_bjyo
Yoruba (Nigeria)yo-NGf_ngyo
Zarmadjef_ne
Zarma (Niger)dje-NEf_nedje
Zuluzuf_za
Zulu (South Africa)zu-ZAf_zazu

Screenshot

So, here you have some GIFs when I show the Language Dropdown component for MAUI in action. I really like the simple design and the colorful flags.

iOS

Screenshot for iOS - Language Dropdown for MAUI
Language Dropdown for iOS in action

Windows

Screenshot for Windows - Language Dropdown for MAUI
Language Dropdown for Windows in action

Android

Screenshot for Android- Language Dropdown for MAUI
Language Dropdown for Android in action

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.