我的 Win 10 系统有西班牙语。我的意思是用英语完全操作 PowerShell 会话。在我尝试过的所有事情中(见下文),我设法将当前会话的 更改为 ,但没有UICulture
将.en-US
Culture
有什么方法可以永久更改Culture
当前 PowerShell 会话?
改变Culture
(没有成功):
> $( Get-Culture ; Get-UICulture ; [System.Threading.Thread]::CurrentThread.CurrentCulture ; [System.Threading.Thread]::CurrentThread.CurrentUICulture ; [CultureInfo]::CurrentCulture ; [CultureInfo]::CurrentUICulture ; ) | Format-Table -Property LCID,Name,DisplayName,IsNeutralCulture,UseUserOverride,IsReadOnly
LCID Name DisplayName IsNeutralCulture UseUserOverride IsReadOnly
---- ---- ----------- ---------------- --------------- ----------
11274 es-AR Spanish (Argentina) False True False
1033 en-US English (United States) False True False
11274 es-AR Spanish (Argentina) False True False
1033 en-US English (United States) False True False
11274 es-AR Spanish (Argentina) False True False
1033 en-US English (United States) False True False
> Set-Culture 'en-US'
> [Threading.Thread]::CurrentThread.CurrentCulture='en-US'
> $( Get-Culture ; Get-UICulture ; [System.Threading.Thread]::CurrentThread.CurrentCulture ; [System.Threading.Thread]::CurrentThread.CurrentUICulture ; [CultureInfo]::CurrentCulture ; [CultureInfo]::CurrentUICulture ; ) | Format-Table -Property LCID,Name,DisplayName,IsNeutralCulture,UseUserOverride,IsReadOnly
LCID Name DisplayName IsNeutralCulture UseUserOverride IsReadOnly
---- ---- ----------- ---------------- --------------- ----------
11274 es-AR Spanish (Argentina) False True False
1033 en-US English (United States) False True False
11274 es-AR Spanish (Argentina) False True False
1033 en-US English (United States) False True False
11274 es-AR Spanish (Argentina) False True False
1033 en-US English (United States) False True False
注:我推断的System.Threading.Thread
和Threading.Thread
都是一样的。
我尝试过的其他事情:
答案在这里和这里。由于它们是 SO 帖子,我想不在这里发布它们会减少混乱。但如果认为方便,我可以添加它们。
我发现了其他一些帖子,都重复了相同的命令。
编辑:
设置文化的方法:
S1。Win 设置 -> 时间和语言 -> 区域 -> 区域格式
S2。Set-Culture <culture>
S3。[CultureInfo]::CurrentCulture=<culture>
S4。[Threading.Thread]::CurrentThread.CurrentCulture=<culture>
获得文化的方法:
G1。与 S1 相同。
G2。Get-Culture
G3。[CultureInfo]::CurrentCulture
G4。[Threading.Thread]::CurrentThread.CurrentCulture
我发现了什么:
- S3/G3 和 S4/G4 似乎涉及相同的会话设置/环境变量/注册表项等(?),并且完全等效。
- 方法 S1 在新会话中影响(G2、G3、G4)。
- 方法 S2 立即影响 G1,并在新会话中影响 (G3, G4)。
- 方法 (S3, S4) 立即(微不足道)影响 (G3, G4) 但仅在当前线程中,而不是会话中,并且 (1, 2) 根本没有。
- 方法 S1 中可用的选项比方法 S2 中的选项更丰富。我可以在 S1 中更改为“西班牙语(阿根廷)”、“英语(美国)”等,它会在 PS 中得到体现。但是如果我在 S1 中更改为“Spansh (Brazil)”,那么 PS 将显示
en-US
,就好像它是一种后备文化一样。