2010-11-24 91 views
0

我需要製作一個WPF控件,它將允許用戶選擇一個時區。該控件還需要支持多種語言。即,時區名稱應該以應用程序中選擇的語言顯示。多語言時區選擇器

.NET 3.5支持通過調用TimeZoneInfo.GetSystemTimeZones方法從註冊表中獲取時區列表的簡單方法。這種方法的問題在於它取決於當前的系統。這意味着不同的用戶可能在他們的機器上顯示不同的時區列表。如果用戶拒絕更新他的系統,某些列表可能會過時。

解決此問題的一種方法可能是通過在最新的計算機上調用TimeZoneInfo.GetSystemTimeZones來獲取最新列表。然後將其序列化爲一個文件,該文件將隨應用程序一起部署。此外,由於此列表以當前系統語言返回,因此我需要爲不同Windows本地化中的每種語言生成列表。或者只是手動翻譯。採用這種方法,用戶將擁有最新的列表,只要他擁有最新版本的應用程序即可。

另一種方法可能是使用另一個時區信息源,如tz database。在這種情況下,我需要使用一些轉換器將tz數據庫時區API對象轉換爲標準的TimeZoneInfo對象。

您在這種或類似情況下使用或推薦使用什麼方法?

回答

1

我明白這可能是有問題的。

選項1:

爲了保持一致性我會從上最新機(你的dev的機器前。)創建一個列表,它包括爲部署您的應用程序的資源文件。

然後,我會照顧本地化作爲正常本地化過程的一部分,即時區將與其餘的UI一起翻譯。

選項2:

假設客戶端 - 服務器應用程序,你可能會限制使用於客戶端的時區(即總是發送接收UTC時間和變換它們的客戶端上),這樣就可以使用操作系統時區,不必關心這些區域實際是什麼。