Saturday, December 13, 2008

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.

NameSpace
using System.Globalization;
CultureInfo[] ci = CultureInfo.GetCultures(CultureTypes.SpecificCultures);
foreach (CultureInfo cul in ci)
{
ListBox1.Items.Add(cul.EnglishName);
ListBox2.Items.Add(cul.NumberFormat.CurrencySymbol.ToString());
ListBox3.Items.Add(cul.ThreeLetterISOLanguageName.ToString());
ListBox4.Items.Add(cul.TwoLetterISOLanguageName);
ListBox5.Items.Add(cul.NativeName.ToString());

}

protected void ListBox5_SelectedIndexChanged(object sender, EventArgs e)
{
CultureInfo c1 = (CultureInfo)ci.GetValue(ListBox5.SelectedIndex);

TextBox1.Text = c1.DateTimeFormat.ShortTimePattern;
TextBox2.Text = c1.DateTimeFormat.NativeCalendarName;
TextBox3.Text = c1.DateTimeFormat.AMDesignator;
TextBox4.Text = c1.DateTimeFormat.PMDesignator;
TextBox5.Text = c1.DateTimeFormat.DateSeparator;
TextBox6.Text = c1.DateTimeFormat.FirstDayOfWeek.ToString();
TextBox7.Text = c1.DateTimeFormat.FullDateTimePattern;
TextBox8.Text = c1.DateTimeFormat.GetMonthName(2);
TextBox9.Text = c1.DateTimeFormat.RFC1123Pattern;
TextBox10.Text = c1.DateTimeFormat.TimeSeparator;
TextBox11.Text = c1.DateTimeFormat.UniversalSortableDateTimePattern;
TextBox12.Text = c1.DateTimeFormat.YearMonthPattern;
TextBox13.Text = c1.NativeName;//Equal to this c1.DisplayName;
TextBox24.Text = 1000.ToString("C", c1.NumberFormat);

ArrayList a1 = new ArrayList();
ArrayList a2 = new ArrayList();

a1.Add(c1.DateTimeFormat.DayNames);
a2.Add(c1.DateTimeFormat.MonthGenitiveNames);

ListBox7.DataSource = a1[0];
ListBox8.DataSource = a2[0];
DataBind();

//RegionInfo

RegionInfo ri = new RegionInfo(c1.Name);

TextBox14.Text = ri.CurrencyEnglishName;
TextBox15.Text = ri.CurrencyNativeName;
TextBox16.Text = ri.CurrencySymbol;
TextBox17.Text = ri.DisplayName;
TextBox18.Text = ri.GeoId.ToString();
TextBox19.Text = ri.Name;
TextBox20.Text = ri.NativeName;
TextBox21.Text = ri.ThreeLetterISORegionName;
TextBox22.Text = ri.ThreeLetterWindowsRegionName;
TextBox23.Text = ri.TwoLetterISORegionName;
}