Как я могу найти текущий язык Windows из cmd?

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


person Community    schedule 22.10.2009    source источник
comment
Пограничный вопрос о сбое сервера.   -  person gn22    schedule 23.10.2009
comment
Вам нужен язык пользовательского интерфейса, верно? Не та локаль?   -  person Joey    schedule 23.10.2009


Ответы (10)


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

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

Затем вы можете проанализировать вывод. например

0409 --> English
0407 --> German
person jitter    schedule 22.10.2009
comment
Спасибо, джиттер. это работает и в Windows 7. ты решил мою проблему. BTW: 040D --› иврит, спасибо, скорость - person ; 23.10.2009
comment
040C --> французский; 0C0A --> Испанский. - person Alicia; 16.01.2017
comment
Проверьте этот ответ, чтобы узнать больше о совпадениях между числовым кодом и названием языка в человеческом формате serverfault.com/a/310221 - person jitter; 30.11.2019
comment
Этот раздел реестра по-прежнему присутствует в Windows 10. Все коды языков (LCID) можно найти здесь: docs.microsoft.com/en-us/openspecs/windows_protocols/ms-lcid/ - person uranibaba; 03.02.2020

Вы не можете использовать InstallLanguage в разделе HKLM\SYSTEM\CurrentControlSet\Control\nls\language
, потому что это именно то, что он говорит: Install 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\Settings
PreferredUiLanguages

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

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

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

HKEY_USERS\S-1-5-18\Панель управления\Desktop\MuiCached
MachinePreferredUILanguages



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

wmic os получить локаль, осязык, кодировку

FOR /F "tokens=2 delims==" %%a IN ('wmic os get OSLanguage /Value') DO set OSLanguage=%%a
echo OS Language: %OSLanguage%
person papo    schedule 29.02.2016
comment
1. wmic os get oslanguage возвращает то же значение (в десятичном формате), что и reg query "hklm\system\controlset001\control\nls\language" /v Installlanguage (в шестнадцатеричном формате). 2. Если предпочтительные языки не установлены, запрос reg (/v PreferredUILanguages) возвращает ошибку как в запросе reg HKCU\Control Panel\Desktop - person Gilles Maisonneuve; 06.06.2019
comment
и на reg query "HKLM\SYSTEM\CurrentControlSet\Control\MUI\Settings" Полное решение может быть вашим с отступлением от исходного языка установки, если ваш reg-запрос возвращает ошибку. Просто мое мнение. - person Gilles Maisonneuve; 06.06.2019

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

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

person BlueEagle    schedule 30.07.2013
comment
В конце отсутствует а) - person remyremy; 22.04.2014

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

person Sunny Shukla    schedule 03.09.2015
comment
Вам нужны повышенные привилегии для запуска этой командной строки. - person FCA69; 31.03.2021

В консоли CMD напишите команду:

междунар.cpl

person Denis Bubnov    schedule 03.09.2015

в командной строке: reg query "HKEY_CURRENT_USER\Keyboard Layout\Preload"

это производит:

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

как и в первом ответе, вы затем анализируете самые правые числа, используя это или этого сайта

если крайняя левая цифра равна 1, это текущий язык клавиатуры, который используется в данный момент.

person user_number153    schedule 28.08.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)

Первая строка всегда «пиры» или «служба не запущена», поэтому, если пользователь использует язык, отличный от английского, скрипт не найдет это слово, и результат может вернуть 0.

person John RPG    schedule 15.01.2019

В Windows 10 1903 текущий языковой параметр пользователя находится в «HKCU\Control Panel\International\LocaleName».

person imoir    schedule 10.04.2020

есть два способа сделать это с помощью командной строки в Windows

Первый

  • открыть приподнятый command prompt
  • введите следующую команду dism /online /get-intl

введите здесь описание изображения

Второй

  • открыть приподнятый command prompt
  • введите следующую команду systeminfo

введите здесь описание изображения

обе эти работы зависят от ваших потребностей

person SAFE CODER    schedule 01.07.2021

Использование powershell и тестирование на Windows7 и Windows10 (может работать на XP, но powershell не является родным для XP)

Командная строка с повышенными привилегиями не требуется.

Синтаксис приведен для выполнения из командной строки

powershell get-uiculture

or

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

or

Последний работает только для windows10.

powershell [CultureInfo]::InstalledUICulture

Кредиты / ссылка:

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

могу ли я узнать разницу между [cultureinfo]::InstalledUICulture и get-uiculture в powershell?

person sysarchitek    schedule 01.07.2021