.NET中CultureInfo的CurrentCulture和CurrentUICulture屬性有什麼區別?

在.NET中, System.Globalization命名空間中有CultureInfo類。 它有兩個相似的屬性,它們都返回CultureInfo類型的值: CurrentCultureCurrentUICulture服務器

他們之間有什麼區別? 網站

我什麼時候以及爲什麼使用哪個? ui


#1樓

CurrentCulture是系統的默認用戶區域設置的.NET表示形式。 這能夠控制默認數字和日期格式等。 spa

CurrentUICulture是指默認用戶界面語言,Windows 2000中引入的設置。這主要是關於應用程序的UI本地化/翻譯部分。 操作系統

不管系統配置的區域選項是什麼,都將是.NET應用程序中的「當前」值。 翻譯

一般它們都是相同的。 但在個人系統上他們會有所不一樣:我更喜歡德語格式的數字和日期,因此CurrentCulture將是德語,但我也更喜歡個人全部英語應用程序,因此CurrentUICulture將是英語。 代理

關於這個主題有一篇很好的文章: 對它進行排序:爲何咱們同時擁有CurrentCulture和CurrentUICulture code


#2樓

區別: orm

  1. CurrentCulture用於格式化日期和貨幣,而CurrentUICulture用於語言/翻譯。 ResourceManager將使用它來按文化查找資源。
  2. CurrentCulture類的命名空間在System.GlobalizationCurrentUICulture來自System.Threading
  3. CurrentCulture在會話中的不一樣請求中持久存在,而CurrentUICulture須要與每一個請求一塊兒設置。

神似: 排序

它們都是System.Globalization.CultureInfo實例。


#3樓

除了用戶所作的漂亮解釋以外,還有一個很好的方法,以及Web應用程序開發的一個重要方面以下:

  • CurrentCulture表示Web服務器的設置。 例如,若是您的ASP.NET Web應用程序託管在德國,則CutlureInfo.CurrentCulture的值極可能是de-DE 。 所以, IFormattable類型的默認.ToString()格式將使用默認的德語格式,或者已在服務器操做系統上設置的默認格式。

  • CurrentUICulture能夠從用戶代理捕獲,而且能夠表示鏈接到網站的客戶端的用戶界面文化。 例如,若是您從俄羅斯加載該網站,則您的本地設置將設置爲使用俄語,而且您的用戶代理會將您的區域設置發送到服務器(Opera和IE會自動執行此操做,不肯定Chrome和FireFox), CurrenUICulture表明ru-RU 。 這將致使任何資源(如經過ResourceManager檢索的本地化字符串或ASP.NET aspx / ascx文件中的本地化表達式)使用俄語(若是可使用翻譯)。


#4樓

這是一個簡單的技巧,我用它來記住使用哪個:

(date, currency, double).tostring = CurrentCulture

resource.fr-CA.resx file = currentUICulture

#5樓

值得注意的是, CurrentUICulture支持非國家特定的語言環境,例如'en'(中性文化),而CurrentCulture僅支持國家特定的語言環境,例如'en-GB'。 將CurrentCulture設置爲中性文化將拋出ArgumentException

我認爲這是由於日期和貨幣等格式與國家自己的聯繫更緊密,但所顯示的語言在國家之間一般能夠互換。

相關文章
相關標籤/搜索