2012-10-16 71 views
6

我在.NET 4.5的應用程序需要被MULT語言支持多文化等工作創建自定義的CultureInfo的國家,語言組合

以下是國家/語言的樣本名單

  • 俄羅斯/俄羅斯
  • 比利時/法國
  • 比利時/荷蘭

對於所有上述,存在可以創建基於上述培養名稱

  • RU-RU
  • CultureInfo對象FR-BE
  • NL-BE

當用戶進入站點,我將Thread.CurrentThread.CurrentCulture和Thread.CurrentThread.CurrentUICulture設置爲使用上述名稱創建的文化,例如。

Thread.CurrentThread.CurrentCulture = new CultureInfo("nl-BE", false) 
Thread.CurrentThread.CurrentUICulture = new CultureInfo("nl-BE", false) 

以上所有名稱都是有效的文化名稱。

不,但我需要在俄羅斯增加另一種文化名稱,英語語言。但問題是代碼en-RU無效,所以當我創建new CultureInfo("en-RU", false)時,由於en-RU無效,所以我得到一個CultureNotFoundException。

有了這種文化,我希望俄羅斯的格式等圍繞數字,日期等,但我希望網站上的語言是英語。用國家行爲(俄羅斯)爲無效的文化名稱創建自定義CultureInfo對象是否可行?

回答

4

您可能需要混合搭配和搭配 - 爲英語文本使用英文文化對象,但使用ru-Ru(俄語)的文化對象進行數字格式設置。

甚至更​​好創建一個自定義的文化結合兩個

Create custom culture in ASP.NET

+0

這個答案是第一次和鏈接到適當的SO文章。這應該是答案。 – Totero

0

您應該使用CultureInfo.InvariantCulture物業

的不變文化是文化不敏感;它與 英文關聯,但不與任何國家/地區關聯。您可以在呼叫 的CultureInfo實例化方法中使用空字符串(「」)來指定 不變文化名稱。 CultureInfo.InvariantCulture也 檢索不變文化的一個實例。它可以用於 幾乎任何需要 文化的System.Globalization命名空間中的任何方法。諸如CompareInfo, DateTimeFormat和NumberFormat等屬性返回的對象也反映了字符串比較 和不變文化的格式約定。

CultureInfo.InvariantCulture Property

這是另一種選擇Custom Global Application Culture

5

是否possbile爲無效的區域性名稱創建自定義的CultureInfo對象

是。

利用CultureAndRegionInfoBuilder來幫助創建自定義CultureInfo。 (注意,一旦你有創建文化的代碼,這樣做的設置可以保存到XML然後加載,例如從資源加載,這應該在運行時需要更少的代碼。)

+1

[Here's](http://en.csharp-online.net/Using_Custom_Cultures%E2%80%94Uses_​​for_Custom_Cultures)是一個很好的教程。它是爲.NET 2.0編寫的,因此如果您使用的是較新版本的.NET,則可能需要檢查它是否不被棄用。 –

+0

@dario_ramos鏈接已死,不幸的是 –

+0

@Sam,很抱歉聽到這個消息。這是[最後一個存檔版本]。(https://web.archive.org/web/20130707154229/http://en.csharp-online.net/Using_Custom_Cultures%E2%80%94Uses_​​for_Custom_Cultures)請耐心等待加載時間:P –