Я хотел бы запустить скрипт для каждого языка. Мне нужен способ узнать, какой язык ОС используется, с помощью пакетных файлов. Как на Windows XP, так и на Windows 7.
Как я могу найти текущий язык Windows из cmd?
Ответы (10)
Не знаю, работает ли это в Windows 7, но работает в Windows XP.
reg query "hklm\system\controlset001\control\nls\language" /v Installlanguage
Затем вы можете проанализировать вывод. например
0409 --> English
0407 --> German
040C -->
французский; 0C0A -->
Испанский.
- person Alicia; 16.01.2017
Вы не можете использовать 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%
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
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
)
Надеюсь, поможет!
Используйте команду «dism/online/get-intl».
В консоли CMD напишите команду:
междунар.cpl
в командной строке: reg query "HKEY_CURRENT_USER\Keyboard Layout\Preload"
это производит:
HKEY_CURRENT_USER\Keyboard Layout\Preload
2 REG_SZ 00000419
1 REG_SZ 00000809
как и в первом ответе, вы затем анализируете самые правые числа, используя это или этого сайта
если крайняя левая цифра равна 1, это текущий язык клавиатуры, который используется в данный момент.
Используйте команду в 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.
В Windows 10 1903 текущий языковой параметр пользователя находится в «HKCU\Control Panel\International\LocaleName».
есть два способа сделать это с помощью командной строки в Windows
Первый
- открыть приподнятый
command prompt
- введите следующую команду
dism /online /get-intl
Второй
- открыть приподнятый
command prompt
- введите следующую команду
systeminfo
обе эти работы зависят от ваших потребностей
Использование 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?