作者:077是个好姑娘 | 来源:互联网 | 2023-08-29 19:48
我可以使用哪个批处理命令来检测当前使用的系统语言(不是默认语言)?
我有检查默认系统语言的代码,并根据检测到的语言是波兰语还是其他 = 英语转到单独的代码:
@echo OFF
FOR /F "tokens=2 delims==" %%l IN ('wmic os get OSLanguage /Value') DO set OSLanguage=%%l
IF %OSLanguage% == 1045 GOTO L_POLISH
IF %OSLanguage% NEQ 1045 GOTO L_ENGLISH
:L_POLISH
echo Polish was detected
pause
exit
:L_ENGLISH
echo English was detected
pause
exit
问题是,如果我们安装系统,例如波兰语,然后将系统中的语言更改为英语、德语等,代码将无法检测并且不会设置/显示并且不会转到英语的代码版本,但会检测默认波兰语并转到波兰语代码。
我可以使用什么命令作为检查来使代码验证当前使用的系统语言版本而不是默认语言?
回答
我对 cmd 不太确定,但在 powershell 中,您可以使用Get-Culture
.
该Get-Culture
cmdlet 获取有关当前区域性设置的信息。这包括有关系统上当前语言设置的信息,例如键盘布局,以及数字、货币和日期等项目的显示格式。
请参阅此处:获取文化
对于用户设置,您可以检查Get-WinUserLanguageList
.
该Get-WinUserLanguageList
cmdlet 返回当前的用户语言设置。这些设置包括输入法、拼写设置、文本预测设置和手写输入模式。
请参阅此处:Get-WinUserLanguageList
...当有一个时Get
,就有一个Set
。希望这就是您要找的东西,或者它是否可以为您指明正确的方向!:)
Get-WinUserLanguageList also returns the english name of the language, which can be assigned to a variable like so: `For /F "Delims=" %%G in ('powershell -c "(Get-WinUserLanguageList)[0].EnglishName"')Do Set "Language=%%G"`