【问题标题】:How can I find the current Windows language from cmd?如何从 cmd 中找到当前的 Windows 语言?
【发布时间】:2010-12-09 06:45:27
【问题描述】:

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

【问题讨论】:

  • 边界服务器故障问题。
  • 您想要 UI 语言,对吗?不是语言环境?

标签: windows-xp language-features cmd


【解决方案1】:

不知道这在 Windows 7 上是否仍然有效,但在 Windows XP 中有效

reg query "hklm\system\controlset001\control\nls\language" /v Installlanguage

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

0409 --> English
0407 --> German

【讨论】:

  • 谢谢,抖动。这也适用于 Windows 7。你解决了我的问题。顺便说一句:040D --> 希伯来语感谢速度
  • 040C --> 法语; 0C0A --> 西班牙语。
  • 检查此答案以了解数字代码和人类格式语言名称之间的更多匹配serverfault.com/a/310221
  • 此注册表项仍存在于 Windows 10 中。所有语言代码 (LCID) 均可在此处找到:docs.microsoft.com/en-us/openspecs/windows_protocols/ms-lcid/…
【解决方案2】:

您不能在 HKLM\SYSTEM\CurrentControlSet\Control\nls\language 下使用 InstallLanguage
因为这就是它所说的:安装语言
虽然您可以直接安装 Windows 的本地化版本,但这并不总是这样做,因为它不在我的 PC 上。而是应用语言包,这很好,但显示语言与安装语言不同。
此外,如果用户更改他的显示语言,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%


本地机器语言、系统语言和用户语言之间存在差异。 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%

【讨论】:

  • 1. wmic os get oslanguage 返回与 reg query "hklm\system\controlset001\control\nls\language" /v Installlanguage(十六进制)相同的值(十进制)。 2. 如果没有安装首选语言,则 reg 查询 (/v PreferredUILanguages) 在 reg query "HKCU\Control Panel\Desktop" 上都会返回错误
  • 和 reg query "HKLM\SYSTEM\CurrentControlSet\Control\MUI\Settings" 如果您的 reg 查询返回错误,则可以使用初始安装语言的完整解决方案。只是我的意见。
【解决方案3】:

下面的代码解决了我的问题。它适用于 Windows Server 2003 和 Windows 7

FOR /F "tokens=3 delims= " %%G in ('reg query "hklm\system\controlset001\control\nls\language" /v Installlanguage') DO (
IF [%%G] EQU [0409] (
  ECHO English install language detected
) ELSE (
  ECHO Some other language detected
)

希望对你有帮助!

【讨论】:

  • 最后少了一个 )
【解决方案4】:

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

【讨论】:

  • 您需要提升权限才能运行此命令行。
【解决方案5】:

在控制台 CMD 写入命令:

intl.cpl

【讨论】:

    【解决方案6】:

    在cmd中:reg query "HKEY_CURRENT_USER\Keyboard Layout\Preload"

    这会产生:

    HKEY_CURRENT_USER\Keyboard Layout\Preload
        2    REG_SZ    00000419
        1    REG_SZ    00000809
    

    像第一个答案一样,然后使用 thisthis 站点解析最右边的数字

    如果最左边的数字是当前使用的当前键盘语言的数字 1。

    【讨论】:

      【解决方案7】:

      在 cmd 上使用命令并搜索与您的查询相关联的英文单词。

      示例:w32tm /query /peers >> somewhere.txt

      #Peers: 1
      
      Peer: ca.pool.ntp.org
      State: Active
      Time Remaining: 58.3260171s
      Mode: 3 (Client)
      Stratum: 3 (secondary reference - syncd by (S)NTP)
      PeerPoll Interval: 17 (out of valid range)
      HostPoll Interval: 10 (1024s)
      

      第一行总是“peers”或“service not started”,所以如果用户使用的不是英语,脚本将找不到这个词,结果会返回 0。

      【讨论】:

        【解决方案8】:

        在 Windows 10 1903 中,当前用户的语言设置似乎在“HKCU\Control Panel\International\LocaleName”中找到

        【讨论】:

          【解决方案9】:

          在 Windows 中使用命令提示符有两种方法

          第一

          • 打开高架command prompt
          • 键入以下命令dism /online /get-intl

          第二

          • 打开高架command prompt
          • 键入以下命令systeminfo

          这两项工作都取决于您的需要

          【讨论】:

            【解决方案10】:

            使用 powershell 并在 windows7 和 windows10 上测试(可能适用于 XP,但 powershell 在 XP 上不是本机)

            无需提升命令提示符。

            给出命令行执行的语法

            powershell get-uiculture

            powershell -NoProfile "Get-UICulture|select -ExpandProperty LCID"

            最后一项仅适用于 windows10。

            powershell [CultureInfo]::InstalledUICulture

            学分/参考:

            https://winaero.com/find-default-system-language-windows-10/

            may i know the difference between [cultureinfo]::InstalledUICulture and get-uiculture in powershell?

            【讨论】:

              猜你喜欢
              • 2012-09-24
              • 2010-10-15
              • 1970-01-01
              • 2012-04-13
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2013-08-14
              • 1970-01-01
              相关资源
              最近更新 更多