【发布时间】:2010-12-09 06:45:27
【问题描述】:
我想为每种语言运行一个脚本。 我需要一种使用批处理文件来查找正在使用的操作系统语言的方法。 在 Windows XP 和 Windows 7 上。
【问题讨论】:
-
边界服务器故障问题。
-
您想要 UI 语言,对吗?不是语言环境?
标签: windows-xp language-features cmd
我想为每种语言运行一个脚本。 我需要一种使用批处理文件来查找正在使用的操作系统语言的方法。 在 Windows XP 和 Windows 7 上。
【问题讨论】:
标签: windows-xp language-features cmd
不知道这在 Windows 7 上是否仍然有效,但在 Windows XP 中有效
reg query "hklm\system\controlset001\control\nls\language" /v Installlanguage
然后你可以解析输出。例如
0409 --> English
0407 --> German
【讨论】:
040C --> 法语; 0C0A --> 西班牙语。
您不能在 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%
安装语言在安装时设置,永远不会改变
“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%
【讨论】:
wmic os get oslanguage 返回与 reg query "hklm\system\controlset001\control\nls\language" /v Installlanguage(十六进制)相同的值(十进制)。 2. 如果没有安装首选语言,则 reg 查询 (/v PreferredUILanguages) 在 reg query "HKCU\Control Panel\Desktop" 上都会返回错误
query "HKLM\SYSTEM\CurrentControlSet\Control\MUI\Settings" 如果您的 reg 查询返回错误,则可以使用初始安装语言的完整解决方案。只是我的意见。
下面的代码解决了我的问题。它适用于 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
)
希望对你有帮助!
【讨论】:
使用“dism /online /get-intl”命令。
【讨论】:
在控制台 CMD 写入命令:
intl.cpl
【讨论】:
在 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。
【讨论】:
在 Windows 10 1903 中,当前用户的语言设置似乎在“HKCU\Control Panel\International\LocaleName”中找到
【讨论】:
使用 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?
【讨论】: