2010-11-24 90 views
0

我需要制作一个WPF控件,它将允许用户选择一个时区。该控件还需要支持多种语言。即,时区名称应该以应用程序中选择的语言显示。多语言时区选择器

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

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

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

您在这种或类似情况下使用或推荐使用什么方法?

回答

1

我明白这可能是有问题的。

选项1:

为了保持一致性我会从上最新机(你的dev的机器前。)创建一个列表,它包括为部署您的应用程序的资源文件。

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

选项2:

假设客户端 - 服务器应用程序,你可能会限制使用于客户端的时区(即总是发送接收UTC时间和变换它们的客户端上),这样就可以使用操作系统时区,不必关心这些区域实际是什么。