【问题标题】:Globalization for GetSystemTimeZones() [duplicate]GetSystemTimeZones() 的全球化 [重复]
【发布时间】:2011-02-24 16:57:44
【问题描述】:

我想获取时区列表,以便填充下拉列表。在 .NET 3.5 中,我们有 TimeZoneInfo 命名空间,代码如下:

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

但是,“DisplayName”是英文的。如何传递cultureInfo 以便它可以返回其他语言?我尝试设置 Thread.CurrentCulture 和 CurrentUICulture,但没有成功。我错过了什么吗?

【问题讨论】:

    标签: c# asp.net globalization cultureinfo


    【解决方案1】:

    这取决于操作系统。直接来自MSDN blog

    在较低级别的平台上,例如 Windows XP 和 Windows Server 2003, 只有 Display、Std 和 Dlt 键 存在。 Display、Std 和 Dlt 键 值仅在本地化 操作的默认语言 系统。由于 Windows 时区注册表架构,CurrentUICulture 设置不会影响这些 TimeZoneInfo 属性的值。

    似乎在 win xp 和 server 2003 上,你运气不好。

    在 vista、win7 和 server 2008 上,您应该能够通过更改区域设置来获得其他语言。多语言用户界面 (MUI) 支持似乎是关键:

    支持 MUI 的操作系统,例如 Windows Vista 包含 MUI_Display, MUI_Std 和 MUI_Dlt 键,它们是 由经营者间接控制 系统区域设置

    编辑:我在 win7 上做了一个快速测试,设置 CurrentUICulture 不会改变这些键的输出语言。似乎更改区域设置是唯一的方法。不过,这确实需要您关闭会话才能生效。

    【讨论】:

      猜你喜欢
      • 2011-01-05
      • 2017-02-25
      • 1970-01-01
      • 2010-11-18
      • 2013-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多