Как я могу найти текущий язык Windows от CMD? - PullRequest
7 голосов
/ 23 октября 2009

Я хотел бы запустить скрипт для каждого языка. Мне нужен способ узнать, какой язык используется, используя командные файлы. Как на Windows XP, так и на Windows 7.

Спасибо

Ответы [ 6 ]

13 голосов
/ 23 октября 2009

Не знаю, работает ли это в Windows 7, но в Windows XP

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

Тогда вы можете проанализировать выход. например,

0409 --> English
0407 --> German
4 голосов
/ 29 февраля 2016

Вы не можете использовать InstallLanguage в HKLM \ SYSTEM \ CurrentControlSet \ Control \ nls \ language
потому что это именно то, что написано: Установить язык
Хотя вы можете напрямую установить локализованную версию Windows, это не всегда делается, так как это было не на моем ПК. Вместо этого применяется языковой пакет, и это нормально, но тогда язык отображения не совпадает с языком установки.
Также, если пользователь меняет свой язык отображения, InstallLanguage не будет отражать это изменение. И может быть больше пользователей с разными языками отображения.

  • Текущий пользовательский язык отображения

HKCU \ Панель управления \ Рабочий стол
PreferredUILanguages ​​

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 \ Настройки
PreferredUiLanguages ​​

это переопределит значение InstallLanguage в HKLM \ SYSTEM \ CurrentControlSet \ Control \ nls \ language
В типах значений есть путаница, в то время как InstallLanguage - это LCID, PreferredUiLanguages ​​- это строка LCID. Этот язык затем сообщается как Local Machine Language. Это не язык интерфейса пользователя

  • Язык системы

Это язык для пользователя системы.
Перед тем, как пользователь вошел в систему, используется этот язык.
Это означает, что это язык для экрана приветствия и для OOBE.

HKEY_USERS \ S-1-5-18 \ Панель управления \ Рабочий стол \ MuiCached
MachinePreferredUILanguages ​​



Существует также способ получения языка ОС с помощью WMI, но я не проверял, какой из этих языков вы получите

wmic os get locale, oslanguage, codeset

FOR /F "tokens=2 delims==" %%a IN ('wmic os get OSLanguage /Value') DO set OSLanguage=%%a
echo OS Language: %OSLanguage%
3 голосов
/ 03 сентября 2015

Используйте команду "dism / online / get-intl".

3 голосов
/ 30 июля 2013

Код ниже исправил мою проблему. Работает на 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
)

Надеюсь, это поможет!

1 голос
/ 03 сентября 2015

В консоли CMD команда записи:

intl.cpl

0 голосов
/ 15 января 2019

Используйте команду для 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» или «служба не запущена», поэтому, если пользователь работает на другом языке, кроме английского, скрипт не найдет это слово, и результат может вернуть 0.

...