英语非美国文化问题
Posted
技术标签:
【中文标题】英语非美国文化问题【英文标题】: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-Culture
到 de-DE
时,一切似乎都正常。
我确保以管理员身份运行 Powershell 控制台,Set-Culture
,关闭控制台。打开 Powershell 并运行 Get-Culture
、[CultureInfo]::CurrentCulture
、[CultureInfo]::CurrentUICulture
和其他一些要检查的东西,但仍然会得到 en-US
【问题讨论】:
【参考方案1】:注意:使用 en-DE
作为文化标识符 - 即将语言 en
(英语)与通常不相关的地区/国家 em> DE
(德国)- 需要 Windows 10 和发布频道 1607
或更高版本 或 Windows Server 2016、according to Microsoft。
但是,在 Windows 10 专业版(64 位;版本 1709,操作系统内部版本:16299.371)上观察到一个错误,会阻止使用这种混合文化 p>
虽然您可以使用Set-Culture
成功设置此类混合文化值,但后续会话无法识别它并回退到en-US
(如@ 987654330@、Get-Culture
和 [cultureinfo]::currentCulture
)
Set-Culture
)。
这个答案的其余部分讨论了在一般情况下持续设置当前用户的文化,而不考虑错误。
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.
【讨论】:
以上是关于英语非美国文化问题的主要内容,如果未能解决你的问题,请参考以下文章