Проблема с английской неамериканской культурой
Я могу использовать Set-Culture
(Powershell as Admin), чтобы установить текущую культуру в "en-DE"
который английский (Германия). Тем не менее, когда я запускаю различные команды PS для просмотра текущей культуры, я все еще получаю en-US
, Я также проверил свой регион (формат) и местоположение.
Должен ли я также изменить язык системы на немецкий (немецкий)?
Это вызывает ошибку в приложении, потому что формат даты и времени отличается от en-DE на en-US и приводит к неправильному чтению даты.
Когда я Set-Culture
в de-DE
все, кажется, в рабочем состоянии.
Я уверен, что запустить Powershell Console от имени администратора, Set-Culture
Закрой консоль. Откройте Powershell и запустите Get-Culture
, [CultureInfo]::CurrentCulture
, [CultureInfo]::CurrentUICulture
и еще несколько, чтобы проверить и до сих пор получать en-US
1 ответ
Примечание: использование en-DE
как идентификатор культуры, т. е. смешивание языка en
(Английский) с обычно не связанным регионом / страной DE
(Германия) - требуется Windows 10 с выпуском канала 1607
или позже или Windows Server 2016, в соответствии с Microsoft.
Однако есть ошибка, которая не позволяет использовать такие смешанные культуры, наблюдаемые в Windows 10 Pro (64-разрядная; Версия 1709, сборка ОС: 16299.371)
В то время как вы можете успешно установить такие значения смешанной культуры с Set-Culture
последующие сеансы не распознают его и возвращаются к en-US
(как отражено в $PSCulture
, Get-Culture
а также [cultureinfo]::currentCulture
)
- Эта проблема была зарегистрирована на UserVoice.
- Обратите внимание, что PowerShell Core не затрагивается (но он не поддерживает
Set-Culture
).
Остальная часть этого ответа обсуждает постоянную настройку культуры текущего пользователя в целом, независимо от ошибки.
Set-Culture
- через реестр - устанавливает культуру для будущих сеансов PowerShell (только), но не (также) для текущего сеанса.
Get-Culture
напротив, только когда-либо сообщает о культуре текущего сеанса во время запуска сеанса. То есть, если вы измените культуру во время сеанса (см. Ниже), это не будет отражено в Get-Culture
,
Чтобы также применить вновь установленную культуру к текущему сеансу, выполните следующие действия в дополнение к Set-Culture
вызов:
[cultureinfo]::CurrentCulture = 'de-DE'
Предостережение о интерактивном (командной строке) использовании:
- В Windows PowerShell (все еще начиная с версии 5.1) активная культура сбрасывается после каждой отправленной команды; например,
[cultureinfo]::CurrentCulture = 'de-DE'; Get-Date
работает, как и ожидалось, потому что он является частью той же командной строки, но при выполнении простоGet-Date
в качестве следующей команды текущая культура вернулась к той, которая была текущей во время запуска сеанса.- Эта проблема была исправлена в PowerShell Core.
Это возможно удивительная асимметрия - Set-Culture
применяется только к будущим сессиям, но Get-Culture
отчетность о культуре текущего сеанса (запуска) - это то, что может измениться в будущих версиях PowerShell Core.