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

Бих искал да стартирам скрипт за всеки език. Имам нужда от начин да намеря кой OS език се използва, като използвам пакетни файлове. И на 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. ти реши проблема ми. Между другото: 040D --› Иврит Благодаря Speed - 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\Control Panel\Desktop
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\Control Panel\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 запис на команда:

intl.cpl

person Denis Bubnov    schedule 03.09.2015

в cmd: 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)

Първият ред винаги е "peers" или "услугата не е стартирана", така че ако потребителят е на език, различен от английски, скриптът няма да намери тази дума и резултатът може да върне 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