Моя система Win 10 имеет испанский sh язык. Я имею в виду полностью управлять сеансом PowerShell на английском языке sh. Во всем, что я пробовал (см. Ниже), мне удалось изменить 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
одинаковы.
Другие вещи, которые я пробовал :
Ответы здесь и здесь . Поскольку это ТАКИЕ сообщения, я думаю, что их отсутствие здесь уменьшает беспорядок. Но я мог бы добавить их, если сочту удобным.
Я нашел несколько других сообщений, все повторяющие те же команды.
EDIT :
Способы установки Культуры:
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, похоже, связаны с одними и теми же настройками сеанса / переменной среды / ключом реестра и т.д. c. (?) и чтобы быть полностью эквивалентным.
- Метод S1 влияет на (G2, G3, G4) в новом сеансе.
- Метод S2 влияет на G1 немедленно, а (G3, G4) в новый сеанс.
- Методы (S3, S4) влияют на (G3, G4) немедленно (тривиально), но только в текущем потоке, а не в сеансе, и (1, 2) не влияют вообще.
- Вариантов, доступных для метода S1, больше, чем для метода S2. Я могу изменить в S1 на «Испанский sh (Аргентина)», «Английский sh (США)» и т.д. c., И это отразится в PS. Но если я изменю в S1 на «Span sh (Brazil)», тогда PS покажет
en-US
, как если бы это была резервная культура.