英语非美国文化问题

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-Culturede-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)

这个problem has been reported on UserVoice。 请注意,PowerShell Core 不受影响(但不支持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.

【讨论】:

以上是关于英语非美国文化问题的主要内容,如果未能解决你的问题,请参考以下文章

为啥英语(加勒比)的文化名称是“en-029”?

美国英语和英国英语的区别

中国文化的 英语文章

英国英语和美国英语的区别

如何让 NHibernate Validator 使用英语以外的语言?

关于中西饮食文化差异的英语作文