多语言时区选择器

时间:2010-11-24 09:05:13

标签: .net wpf timezone

我需要进行WPF控制,这将允许用户选择时区。此控件还需要支持多种语言。即,时区名称应以应用程序中选择的语言显示。

.NET 3.5支持通过调用TimeZoneInfo.GetSystemTimeZones方法从注册表中获取时区列表的简便方法。这种方法的问题在于它取决于当前的系统。这意味着不同的用户可能在其计算机上显示不同的时区列表。如果用户拒绝更新他的系统,则其中一些列表可能已过期。

解决此问题的一种方法可能是通过在最新的计算机上调用TimeZoneInfo.GetSystemTimeZones来获取最新列表。然后将其序列化为一个文件,该文件将随应用程序一起部署。此外,由于此列表以当前系统语言返回,因此我需要为不同Windows本地化的每种语言生成列表。或者只是手动翻译。使用此方法,如果用户拥有最新版本的应用程序,则用户将拥有最新列表。

另一种方法可能是使用其他时区信息源,例如tz database。在这种情况下,我需要使用一些转换器将tz数据库时区API对象转换为标准的TimeZoneInfo对象。

您在此类或类似情况下使用或推荐的方法是什么?

1 个答案:

答案 0 :(得分:1)

我知道这可能会有问题。

选项1:

为了保持一致,我会从最新的机器(例如你的开发机器)创建一个列表,并将其作为随应用程序部署的资源文件包含。

然后我将把本地化作为正常本地化过程的一部分,即时区将与UI的其余部分一起翻译。

选项2:

假设客户端 - 服务器应用程序可以限制在客户端使用时区(即始终发送 - 接收UTC时间并在客户端上转换它们),以便您可以使用操作系统时区而不是关心这些区域实际上是什么。