2010-05-27 127 views
3

我想獲得時區列表,以便我可以填充下拉列表。在.NET 3.5中,我們有TimeZoneInfo命名空間,這裏是代碼:GetSystemTimeZones全球化()

ReadOnlyCollection<TimeZoneInfo> timeZones = TimeZoneInfo.GetSystemTimeZones(); 
foreach (TimeZoneInfo timeZone in timeZones) 
    string name = timeZone.DisplayName 

但是,「DisplayName」是英文的。我如何傳遞cultureInfo以便它可以返回其他語言?我嘗試設置Thread.CurrentCulture和CurrentUICulture,它沒有工作。我錯過了什麼嗎?

回答

3

這取決於操作系統。直接從MSDN blog

在低級別的平臺,如 Windows XP和Windows Server 2003中,僅 顯示,標準,和DLT鍵 存在。 Display,Std和Dlt鍵 的值僅在 系統的 默認語言中進行了本地化。由於Windows時區註冊表體系結構,CurrentUICulture設置不會影響這些TimeZoneInfo屬性的值。

看來,在贏得XP和服務器2003年,你是運氣不好。

在vista,win7和server 2008上,您應該可以通過更改區域設置來獲得其他語言。多語言用戶界面(MUI)的支持似乎是關鍵:

啓用MUI的操作系統,如 Windows Vista中包含MUI_Display, MUI_Std和MUI_Dlt鍵,這是 由操作系統 系統的區域間接控制設置

編輯:我做了一個快速測試win7,設置CurrentUICulture不會改變這些鍵的輸出語言。看起來改變區域設置是唯一的方法。這確實需要您關閉會話才能生效。