英语非美国文化问题

时间:2018-04-16 20:57:53

标签: powershell windows-10 locale culture currentculture

我可以使用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

1 个答案:

答案 0 :(得分:3)

注意:使用en-DE 作为区域性标识符 - 即将语言 en(英文)与通常不相关的区域混合/ country DE(德国) - 要求 Windows 10,发布渠道1607或更高版本 Windows Server 2016 ,{{3 }}。

然而,错误 阻止使用此类混合文化,在Windows 10 Pro上观察到(64位;版本1709,操作系统版本:16299.371 )

虽然您可以使用Set-Culture成功设置此类混合文化值,但后续会话无法识别并退回en-US (反映在$PSCultureGet-Culture[cultureinfo]::currentCulture

本答案的其余部分讨论了如何持续设置当前用户的文化,而不管错误。

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

相比之下, {strong> 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报告当前会话& #39; s(创业)文化 - 是problem has been reported on UserVoice