Using CultureInfo class in C# to implement Globalization

Using CultureInfo class in C# to implement Globalization

CultureInfo class provides culture-specific information in .NET applications. This information includes language, sublanguage, country or region, day names, month names, calendar etc. It also provides culture specific conversions of numbers, currencies, dates or strings. In the following tutorial, I will show you how you can retrieve this information from different cultures available in .NET Framework.

To use CultureInfo class you need to import System.Globalization namespace which contains many classes used in the following code such as RegionInfo, DateTimeFormatInfo or NumberFormatInfo.

Following code is loading all specific cultures available in .NET Framework in the listbox.

private void Form1_Load(object sender, EventArgs e)

{
      // Load All Specific Cultures
      CultureInfo[] allCultures = CultureInfo.GetCultures(CultureTypes.SpecificCultures);
      foreach (CultureInfo culture in allCultures)
      {
            listBox1.Items.Add(culture.EnglishName );
      }
}

When user select any culture from the listbox following code retrieve that culture, set current application and user interface culture and then display culture specific information on different labels.

private void listBox1_SelectedIndexChanged(object sender, EventArgs e)

{
      try
      {
            CultureInfo[] allCultures = CultureInfo.GetCultures(CultureTypes.SpecificCultures);
            int index = listBox1.SelectedIndex;

            CultureInfo c = (CultureInfo)allCultures.GetValue(index);

            // Set Current Application and User Interface Culture

            System.Threading.Thread.CurrentThread.CurrentCulture = c;
            System.Threading.Thread.CurrentThread.CurrentUICulture = c;

            label1.Text = "Application Culture Name: " + c.Name;
            label2.Text = "Application Culture Native Name: " + c.NativeName;
            label3.Text = "Application Culture English Name: " + c.EnglishName;
            label4.Text = "Application Culture Neutral Name: " + c.TwoLetterISOLanguageName;
            label5.Text = "Application Culture Language Name: " + c.ThreeLetterISOLanguageName;
            label6.Text = "Application Culture Windows Name: " + c.ThreeLetterWindowsLanguageName;

            // RegionInfo Object

            RegionInfo r = new RegionInfo(c.Name);

            label7.Text = "Region English Name: " + r.CurrencyEnglishName;
            label8.Text = "Currency Symbol: " + r.CurrencySymbol;
            label9.Text = "Region English Name: " + r.EnglishName;

            // DateTimeFormatInfo Object is used 
            // to get DayNames and MonthNames

            string[] days = c.DateTimeFormat.DayNames;
            listBox2.Items.Clear();
            foreach (string day in days)
            {
                  listBox2.Items.Add(day);
            }

            string[] months = c.DateTimeFormat.MonthNames;
            listBox3.Items.Clear();
            foreach (string month in months)
            {
                  listBox3.Items.Add(month);
            }

            // Formatting Currency and Numbers

            label10.Text = "Full Date Time Pattern: " + c.DateTimeFormat.FullDateTimePattern;
            label11.Text = "Formatted Date: " + DateTime.Now.ToString("d", c.DateTimeFormat);
            label12.Text = "Formatted Number: " + 65000.ToString("C", c.NumberFormat);
      }
      catch (Exception ex)
      { }
}

READ ALSO:  Overview of Deferred Query Operators

This Post Has 13 Comments

  1. mann

    Hi, i like this one but if i want to translate the Text box item that i have entered , then am not getting . please help me out.

  2. AJ De Klerk

    Hi there m8, firstly thanks for this little app it has helped me alot to better understand the CultureInfo class and how to use it. I have one question though. What does the the two System.Threading.Thread.CurrentThread.CurrentCulture lines of code do? Thanks.

  3. .Net

    This is really nice article to understand the Culture.

  4. Bjarne Pedersen

    I like your tutorial very much!
    Is it possible to get a copy of your project, then i dont have to do it from scratch – its exactly that kind of thing i have been looking for!

    Best Regards

    Bjarne Pedersen

  5. mohamed

    thx

  6. Suvitha S

    Very Nice Article. It helped me a lot

    Thanks

  7. Prasanth

    thx. for ur code………. code is just copied from microsoft book…..am looking for indepth code which will display all UI in selected language

  8. Arisha!!!

    its v good tutorial!!!

  9. Teryaki

    Very good tutorial

    Thank you very much 🙂

  10. Sandeep

    Nice Article…
    Thanx 🙂

  11. procedure

    thank

  12. santosh kumar

    Thanks for giveCultureInfo class in C# to implement Globalization tutorial,it is helpful for learning dotnet 2.0.

    Thanks
    Santosh Kumar
    http://www.operativesystems

  13. santosh kumar

    Thanks for giveCultureInfo class in C# to implement Globalization tutorial

Leave a Reply