【问题标题】:Issue with English non-US Culture英语非美国文化问题
【发布时间】:2018-04-16 20:57:53
【问题描述】:

我可以使用Set-Culture(Powershell 作为管理员)将当前文化设置为"en-DE",即英语(德国)。但是,当我运行不同的 PS 命令来查看当前文化时,我仍然收到en-US。我还检查了我的区域(格式)和位置。

我是否必须将系统区域设置也更改为德国(德语)?

这会导致应用程序出错,因为日期时间格式从 en-DE 到 en-US 不同,并导致日期读取不正确。

当我 Set-Culturede-DE 时,一切似乎都正常。

我确保以管理员身份运行 Powershell 控制台,Set-Culture,关闭控制台。打开 Powershell 并运行 Get-Culture[CultureInfo]::CurrentCulture[CultureInfo]::CurrentUICulture 和其他一些要检查的东西,但仍然会得到 en-US

【问题讨论】:

    标签: powershell windows-10 locale culture currentculture


    【解决方案1】:

    注意:使用 en-DE 作为文化标识符 - 即将语言 en(英语)与通常不相关的地区/国家 em> DE(德国)- 需要 Windows 10 和发布频道 1607 或更高版本Windows Server 2016according to Microsoft

    但是,在 Windows 10 专业版(64 位;版本 1709,操作系统内部版本:16299.371)上观察到一个错误会阻止使用这种混合文化 p>

    虽然您可以使用Set-Culture 成功设置此类混合文化值,但后续会话无法识别它并回退到en-US(如@ 987654330@、Get-Culture[cultureinfo]::currentCulture)


    这个答案的其余部分讨论了在一般情况下持续设置当前用户的文化,而不考虑错误。


    Set-Culture - 通过注册表 - 未来 PowerShell 会话设置文化(仅限),而不是(也)为 当前会话。

    Get-Culture 相比之下,只报告当前会话的文化在会话启动时 .也就是说,如果您会话期间更改文化(见下文),它将不会反映在Get-Culture中。

    为了也将新设置的区域性应用到当前会话,除了Set-Culture调用之外,运行以下

    [cultureinfo]::CurrentCulture = 'de-DE'
    

    警告 交互式(命令行)使用:

    • Windows PowerShell 中(仍为 v5.1),在每个命令提交后重置活动区域性;例如,
      [cultureinfo]::CurrentCulture = 'de-DE'; Get-Date 按预期工作,因为它是同一命令行的一部分,但是当仅将 Get-Date 作为 next 命令执行时,当前文化已恢复为在会话启动时间是最新的。
      • 此问题已在 PowerShell Core 中得到修复。

    可能令人惊讶的不对称 - Set-Culture 仅适用于未来 会话,但Get-Culture 报告当前 会话的(启动)文化- 是may change in future PowerShell Core versions.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-30
      • 2010-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-29
      相关资源
      最近更新 更多