如何从cmd中找到当前的Windows语言?

8 language-features windows-xp cmd

我想为每种语言运行一个脚本.我需要一种方法来使用批处理文件来查找正在使用的语言.在Windows XP和Windows 7上都有.

谢谢

jit*_*ter 13

不知道这是否仍然适用于Windows 7,但它在Windows XP中仍然有效

reg query "hklm\system\controlset001\control\nls\language" /v Installlanguage
Run Code Online (Sandbox Code Playgroud)

然后你可以解析输出.例如

0409 --> English
0407 --> German
Run Code Online (Sandbox Code Playgroud)

  • 检查此答案以获取人类格式的数字代码和语言名称之间的更多匹配 https://serverfault.com/a/310221 (2认同)

Sun*_*kla 6

使用“dism /online /get-intl”命令。

  • 您需要提升权限才能运行此命令行。 (2认同)

pap*_*apo 5

您不能在HKLM \ SYSTEM \ CurrentControlSet \ Control \ nls \ language下使用InstallLanguage,
因为这就是它的意思:安装语言
尽管您可以直接安装Windows的本地化版本,但并非总是如此,因为它不是在我的电脑上。而是可以使用语言包,这很好,但是显示语言与安装语言不同。
同样,如果用户更改了他的显示语言,则InstallLanguage将不会反映该更改。并且可能会有更多使用不同显示语言的用户。

  • 当前用户显示语言

HKCU \控制面板\台式机
首选UI语言

FOR /F "tokens=3" %%a IN ('reg query "HKCU\Control Panel\Desktop" /v PreferredUILanguages ^| find "PreferredUILanguages"') DO set UILanguage=%%a
echo User Display Language: %UILanguage%
Run Code Online (Sandbox Code Playgroud)


本地机器语言,系统语言和用户语言之间存在差异。BCD语言也有单独的设置,用于恢复和启动管理器

  • 本地机器

安装语言会在安装时设置,并且永远不会更改
。“ HKLM \ SYSTEM \ CurrentControlSet \ Control \ nls \ language”键的默认值设置为相同的值。一些InstallShield安装程序错误地读取了该值,从而导致本地化Windows上出现英语界面。
如果更改显示语言,新值将存储在

HKLM \ SYSTEM \ CurrentControlSet \ Control \ MUI \ Settings
PreferredUiLanguages

这将覆盖HKLM \ SYSTEM \ CurrentControlSet \ Control \ nls \ language下的InstallLanguage值
。值类型混合,而InstallLanguage是LCID,PreferredUiLanguages是LCID字符串。然后将该语言报告为“本地机器语言”。它不是用户显示语言

  • 系统语言

这是系统用户的语言。
在用户登录之前,使用此语言。
这意味着它是欢迎屏幕和OOBE的语言。

HKEY_USERS \ S-1-5-18 \ Control Panel \ Desktop \ MuiCached
MachinePreferredUILanguages



还有一种WMI方式可以获取OS语言,但是我没有测试您将获得哪种语言?

wmic os获取语言环境,语言,代码集

FOR /F "tokens=2 delims==" %%a IN ('wmic os get OSLanguage /Value') DO set OSLanguage=%%a
echo OS Language: %OSLanguage%
Run Code Online (Sandbox Code Playgroud)