CultureInfo 类在 .NET 应用程序中提供特定于语言的信息。此信息包括语言、子语言、国家或地区、日期名称、月份名称、日历等。它还提供数字、货币、日期或字符串的文化特定转换。在下面的教程中,我将向您展示如何从 .NET Framework 中可用的不同文化中检索此信息。
要使用 CultureInfo 类,您需要导入 System.Globalization 命名空间,其中包含以下代码中使用的许多类,例如 RegionInfo、DateTimeFormatInfo 或 NumberFormatInfo。
以下代码将在列表框中加载 .NET Framework 中可用的所有特定区域性。
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 );
}
}
当用户从列表框中选择任何语言时,以下代码检索该语言,设置当前应用程序和用户界面语言,然后在不同标签上显示特定于语言的信息。
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)
{ }
}