using System;
using System.Collections.Generic;
using System.Text;
using System.Collections.Specialized;
using System.Collections;
using System.Globalization;
using System.Configuration;
using System.Diagnostics;
using System.IO;
using System.Threading;
namespace e1
{
class Program
{
static void Main(string[] args)
{
CultureInfo userCulture = Thread.CurrentThread.CurrentCulture;
Console.WriteLine(userCulture.Name);
Console.WriteLine(userCulture.LCID);
Console.WriteLine(userCulture.NativeName);
Console.WriteLine(userCulture.DisplayName);
Console.WriteLine(userCulture.TwoLetterISOLanguageName);
Console.WriteLine((100000).ToString("c"));
CultureInfo usCulture = Thread.CurrentThread.CurrentUICulture;
Console.WriteLine(usCulture.Name);
Console.WriteLine(usCulture.DisplayName);
Console.ReadLine();
}
}
}
MSDN描述
Thread.CurrentCulture 屬性
獲取或設置當前線程的區域性。
Thread.CurrentUICulture 屬性獲取或設置資源管理器使用的當前區域性以便在運行時查找區域性特定的資源。
當從控制面板更改設置后在第一次運行代碼時,區域信息並沒有改變,當第二次運行時,通過CurrentCulture 屬性實例化的userCulture信息發生變化,但是通過CurrentUICulture 屬性實例化的usCulture卻沒有發生變化。
CultureInfo.CurrentUICulture 屬性是每個線程的設置,可返回當前用戶界面區域性。該屬性由 ResourceManager 類用於在運行時查找區域性特定資源。可以使用非特定區域性、特定區域性或 InvariantCulture 來設置 CurrentUICulture 屬性。可以使用 Thread.CurrentThread 屬性設置 CurrentCulture。
CultureInfo.CurrentCulture 屬性是每個線程的設置,可確定日期、時間、貨幣和數字的默認格式、文本排序順序、字符串比較以及大小寫轉換。CurrentCulture 屬性不是一個語言設置。它僅包含與地理區域的標准設置相關的數據。因此,只能將 CurrentCulture 屬性設置為特定區域性或 InvariantCulture。可以使用 Thread.CurrentThread 屬性設置 CurrentCulture。
一句話:當程序運行時,CurrentUICulture屬性用來決定加載什么樣的資源,而CurrentCulture屬性用來決定諸如貨幣、數字和日期如何格式化。
CurrentCulture屬性的默認值是操作系統的User Locale,我們可以在控制面板里設置。
CurrentUICulture屬性的默認值是操作系統用戶界面語言。
CurrentCulture屬性的值必須是一個特定的culture, 比如"fr-FR",不能是一個neutral culture, 比如"fr". 一個neutral culture 例如"fr"會產生問題,因為它適用於所有French語系的culture, 但是France, Belgium和Quebec使用不同的貨幣。
在代碼中應用:
Thread.CurrentThread.CurrentUICulture = new CultureInfo("zh-CN");
Thread.CurrentThread.CurrentCulture = Thread.CurrentThread.CurrentUICulture;