Вы тут: Главная → Popular → Как удалить неудаляемые языки и раскладки клавиатуры в Windows
В чате @winsiders участник Kato пожаловался на необычную проблему после обновления до Windows 10 1803. Изначально у него в системе было три языка – английский (US), русский и украинский, а после обновления добавилось еще два английских – United Kingdom и Canada, которые не удалялись в Параметрах (кнопка Remove недоступна). Соответственно, эти языки появлялись в списке раскладок клавиатуры, хотя в настройках их не было.
[+] Сегодня в программе
Теория
В общем случае, можно удалить любой язык, который не используется по умолчанию. Например, если в системе только английский и русский языки, то первый можно удалить, если основным назначен второй. При этом неважно, каким был исходный язык системы (дистрибутива), что легко определяется в PowerShell командой:
(Get-CimInstance Win32_OperatingSystem).oslanguage
Команда выводит идентификатор языка, где 1033 – английский (US), 1049 – русский, остальные тут в десятичном виде или у Microsoft в шестнадцатеричном (вставляйте значения в калькулятор программиста).
На проблемной ОС эта команда выдала 2057, что соответствует English (United Kingdom). В сочетании с картиной из параметров это было очень странно, потому что у языка дистрибутива никаких языковых пакетов быть не должно, поскольку он и так есть в системе.
Для начала мы попытались удалить языковые пакеты UK и Canada командами lpksetup. Однако к успеху это ни привело, что намекало на фактические отсутствие этих языковых пакетов, но не приближало к решению проблемы фантомных языков. Пришлось зайти с черного хода.
Удаление неудаялемых языков
У PowerShell есть два командлета для управления языками пользователя – Get-WinUserLanguageList и Set-WinUserLanguageList. Первый умеет получать список языков, а второй задавать его. В PowerShell список соответствовал картине в параметрах.
Из справки второго командлета не вполне очевидно, как удалить ненужные языки. Зато она дает достаточно толстый намек на то, что вывод первого командлета представляет собой массив. Это можно использовать во благо. Нам нужны только первые три языка из списка.
$List = Get-WinUserLanguageList Set-WinUserLanguageList $($list[0], $list[1], $list[2]) -Force Get-WinUserLanguageList
Первая команда помещает в переменную массив из списка языков, а вторая задает в качестве текущих языков первые три элемента массива. При этом остальные языки удаляются! Третья команда выводит список языков для проверки.
Решено! В который уже раз PowerShell позволяет элегантно решить задачу без запредельных усилий. Если будете экспериментировать под учетной записью Microsoft, отключите синхронизацию языковых параметров во избежание нежелательных эффектов (я словил несколько странностей :).
Удаление неудаялемых раскладок клавиатуры
Этот раздел был добавлен значительно позже, потому что в статью приходят люди со смежной проблемой — появление фантомных раскладок клавиатуры при отсутствии соответствующих установленных языков. У этой проблемы может быть несколько вариантов решения.
Игнорирование дистанционных раскладок
Примените твик и перезагрузитесь. См. также пост в канале Telegram с кратким объяснением и готовым REG-файлом.
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlKeyboard Layout] "IgnoreRemoteKeyboardLayout"=dword:00000001
Удаление раскладок из разделов Preload
HKEY_USERS.DEFAULTKeyboard LayoutPreload HKEY_CURRENT_USERKeyboard LayoutPreload
Удаление раскладок из системы
Это подходит в случае, если раскладка не нужна в принципе. Раскладки прописаны в разделе
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlKeyboard Layouts<LCID>
Нужно удалять подраздел с нежелательной раскладкой.
Удаление раскладки после смены кодовой страницы (языка для неюникодных программ)
В современных Windows при смене кодовой страницы (например, с английской на русскую) автоматически добавляется для всех пользователей и метод ввода этого языка. Причем сам язык не добавляется! Однако в большинстве случаев этот язык уже установлен у пользователей, поэтому они ничего не замечают. Но бывает иначе. Варианты решения:
- Добавить в параметрах такой же язык, как установлен для кодовой страницы, а затем удалить его. В результате удаляется и ненужная раскладка. Самый простой способ, но у одного из читателей после перезагрузки раскладка возвращалась.
- Добавлять и тут же удалять язык скриптом из автозагрузки. Прием против лома — возвращения раскладки после перезагрузки.
- Заменить в языке проблемный метод ввода не несуществующий. Элегантное решение, недоступное в графическом интерфейсе.
В Windows 10 1803 языковые настройки практически полностью перекочевали из классической панели управления в Параметры (исключение составляет классическое окно с настройками сочетаний клавиш и языковой панели). В связи с этим я обновил статью про 6 языковых настроек, которые могут поставить вас в тупик в контексте изменившегося интерфейса.
Вкратце опишу проблему. После запуска компьютера периодически (не всегда и не с самого старта) возникает данная ситуация: появляется дополнительная раскладка клавиатуры (замечаю я это в тот момент, когда с английского на русский одного ctrl+shift не хватает).
Выглядит это дело вот так:
Причём в самих настройках языка британская раскладка не отображается:
И каждый раз для того, чтобы это пофиксить, мне приходится начинать её устанавливать, чтобы она появилась в списке и её можно было удалить.
Вопрос: как это пофиксить раз и навсегда?
Пыталась как-то через реестр это делать, не помогло, проблема снова стала актуальна. Что-то пыталась ещё из советов в гугле делать, проблема не решена. Возможно, кто-то сталкивался с таким и смог справиться. Помогите, пожалуйста.
P.S. К сожалению, не могу описать, после чего конкретно появляется эта проблема: систематику так и не выявила, появляется рандомно.
В «нормально» сконфигурированной Windows 10 доступно два языка ввода и две раскладки переключения языков — русский и английский. Конечно, если у вас установлена Windows 10 не «для одного языка», вы можете добавить сколько угодно локализаций и столько же раскладок, но речь пойдет вовсе не об этом. Что делать, если у вас невесть откуда в языковой панели появилась дополнительная раскладка диалекта одного языка как в показанном на скриншоте примере?
Казалось бы, в чём тут проблема, разве лишнюю раскладку нельзя удалить через языковые настройки?
Нажали на этой же панели «Настройки языка», открыли параметры языка с лишней раскладкой.
Выбрали ненужную клавиатуру и кликнули «Удалить».
Проблема только в том, что стандартным способом раскладка отказывается удаляться, а если и удаляется, то после перезагрузки компьютера появляется в языковой панели повторно.
В таких случаях иногда рекомендуют очистить содержимое каталога Preload в ключе реестра HKEY_USERS.DEFAULTKeyboard LayoutPreload и перезагрузить компьютер, но это приводит к тем же результатам.
Решить эту проблему действительно можно путем правки реестра, только вот работать нужно с другими ключами. Но еще важнее понимать, что именно стало причиной такого поведения Windows 10. А причина в том, что ваш компьютер скорее всего синхронизирован с каким-то другим устройством, на котором включена дополнительная раскладка при условии, конечно, что вы используете учетную запись Microsoft.
Поэтому, перед тем как приступать к дальнейшим действиям, потрудитесь отключить синхронизацию языковых настроек в разделе «Учетные записи» приложения «Параметры».
Если настройки синхронизации у вас по какой-то причине недоступны, откройте командой regedit редактор реестра, разверните ключ HKLMSOFTWAREPoliciesMicrosoftWindowsSettingSync и создайте справа два параметра типа DWORD: DisableSettingSync со значением 2 и DisableSettingSyncUserOverride со значением 1 (готовый твик прилагаем по ссылке disk.yandex.ru/d/N9lWT2O1-FotFw).
После этого перезагрузитесь и попробуйте удалить лишнюю раскладку через приложение Параметры как было показано выше.
Сделать это можно, кстати, и через реестр, предварительно узнав на сайте (таблице) Майкрософт docs.microsoft.com/en-us/windows-hardware/manufacture/desktop/windows-language-pack-default-values код лишней языковой панели.
В нашем примере это 0x00010409, что соответствует индийской раскладке.
Проследуйте по указанным ключам реестра.
И удалите параметры, в качестве которых задан код дополнительной раскладки.
На всякий случай проверьте ключи реестра и на этом изображении.
Если мультистроковый параметр languages содержит лишние раскладки, отредактируйте его. Для этого кликаем по нему два раза мышкой и удаляем в открывшемся окошке ненужную раскладку.
Вот и всё, новая конфигурация вступит в силу после перезагрузки компьютера.
Загрузка…
Несколько раз в Windows 10 замечал странный баг, когда в списке раскладок клавиатуры языковой панели появляются лишние языки. Например, у меня на ноутбуке было установлено 2 языка: русский, английский. Но после очередного обновления Windows 10, в списке языков появились еще два дополнительных языка – English (United Kingdom) и English (Canada), хотя я их не добавлял. Теперь в списке раскладок клавиатуры у меня отображается четыре языка. Причем Windows не дает удалить дополнительные языки (кнопка Remove в языковой панели неактивна). При переключении языков клавишами
Shift+Alt
, или через языковую панель в трее, приходится переключаться между 4 раскладками клавиатуры вместо 2, что очень неудобно!
Рассмотрим, как удалить такие неудаляемые раскладки клавиатуры в Windows 10 и Windows 11.
В Windows 10 обычно можно удалить любой язык раскладки клавиатуры, который не используется в качестве основного языка по умолчанию. Однако вы можете столкнуться с багом, когда некоторые языки нельзя удалить.
Первый раз баг с неудаляемой раскладкой клавиатуры появился после апгрейда до Windows 10 1803 (в этом билде было много других сюрпризов, например дополнительный раздел восстановления, который появился после обновления).
Баг проявляется, если добавить дополнительный язык, который использует тот же базовый язык, что и текущий язык отображения Windows. Такой дополнительный язык язык удалить нельзя.
К примеру, если английский язык (United States) является текущим языком интерфейса Windows, то после добавления английского языка (United Kingdom) вы не сможете удалить оба этих языка из списка предпочтительных. И, конечно, очень неудобно, что в языковой панели в системно трее (области уведомлений) появился лишний ненужный язык.
С помощью команды lpksetup вы не сможете удалить дополнительные языки из системы, т.к. этих языковых пакетов в Windows не установлено:
lpksetup /u en-gb
lpksetup /u en-ca
Удаление лишнего языка в Windows 10 с помощью PowerShell
Удалить ненужный дополнительный язык можно только с помощью PowerShell.
- Запустите Windows PowerShellс правами администратора;
- Выведите список установленных в Windows 10 языков пользователя командой:
Get-WinUserLanguageList
- Запомните значение LanguageTag для предпочитаемого языка. К примеру, Ваш предпочитаемый язык English (United States):
LanguageTag = en-US
- Сохраните значение предпочитаемого языка в переменную:
$1=New-WinUserLanguageList en-US
- Теперь можно установить данный язык в качестве основного, удалив все остальные дополнительные языки:
Set-WinUserLanguageList $1
- Клавишей Y нужно подтвердить удаление дополнительных языков.
- Убедитесь, что все дополнительные языки клавиатуры пропали.
Если вы хотите оставить в Windows несколько языковых раскладок клавиатуры, можно удалить только ненужные языки. К примеру, вы хотите удалить языки с LanguageTag en-Gb и zh-Hans-CN.
$LanguageList = Get-WinUserLanguageList
$DeleteLang = $LanguageList | where LanguageTag -eq "en-Gb"
$LanguageList.Remove($DeleteLang)
Set-WinUserLanguageList $LanguageList –Force
Для удаления китайского языка, замените вторую строку на:
$DeleteLang = $LanguageList | where LanguageTag -eq "zh-Hans-CN"
Или вы можете указать список языков, которые нужно оставить:
$1=New-WinUserLanguageList en-US
$1.Add("eu-US")
$1.Add("ru")
Set-WinUserLanguageList $1
Закройте консоль PowerShell и убедитесь, что все лишние языки в языковой панели Windows исчезли.
Как удалить лишнюю языковую раскладку через реестр Windows?
Если дополнительные языки удалились из списка языков ввода, но все еще отображаются в раскладках клавиатуры, нужно вручную удалить их из реестра.
- Запустите
regedit.exe
с правами администратора; - Перейдите в ветку реестра
HKEY_USERS.DEFAULTKeyboard LayoutPreload
. Здесь отображается список языков, доступных на экране входа в систему; - В ветке
HKEY_CURRENT_USERKeyboard LayoutPreload
отображаются активные раскладки клавиатуры текущего пользователя. Например, 00000419 – русская раскладка, 0000409 – английская раскладка, 00000407 – немецкий и т.д.; - Удалите все ненужные языковые раскладки из реестра. Если нужно, измените нумерацию параметров реестра (названия параметров должны быть последовательными и начинаться с 1).
После этого ненужный язык пропадет из списка языков ввода.
Если дополнительные раскладки клавиатуры появляются на рабочем столе в удаленной RDP/RDS сессии, вы можете заблокировать передачу локальных раскладок клавиатуры на удаленном хосте с помощью параметра реестра:
REG ADD "HKLMSYSTEMCurrentControlSetControlKeyboard Layout" /v IgnoreRemoteKeyboardLayout /t REG_DWORD /d 1
Если вы уверены, что вам не нужна определенная раскладка, вы можете ее полностью заблокировать. Полный список раскладок клавиатуры хранится в разделе реестра HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlKeyboard Layouts.
Например, вы хотите заблокировать языковую раскладку
00000404 (Chinese (Traditional) - US Keyboard)
.
- Сначала удалите лишние языки с помощью PowerShell (описано выше);
- Найдите подраздел 00000404 в указанной ветке реестра и переименуйте его в 00000404-no;
- Перезагрузите Windows;
- Проверьте, что указанная раскладка клавиатуры больше не отображается.
В Windows 10 может быть установлено более одного языка ввода и интерфейса, при этом после последнего обновления Windows 10 многие столкнулись с тем, что стандартным способом в параметрах некоторые языки (дополнительные языки ввода, совпадающие с языком интерфейса) не удаляются.
В этой инструкции подробно о стандартном методе удаления языков ввода через «Параметры» и о том, как удалить язык Windows 10, если он не удаляется этим способом. Также может быть полезно: Как установить русский язык интерфейса Windows 10.
Простой метод удаления языка
Стандартно, при отсутствии каких-либо багов, языки ввода Windows 10 удаляются следующим образом:
- Зайдите в Параметры (можно нажать быстрые клавиши Win+I) — Время и язык (также можно нажать по значку языка в области уведомлений и выбрать пункт «Настройки языка»).
- В разделе «Регион и язык» в списке «Предпочитаемые языки» выберите тот язык, который нужно удалить и нажмите кнопку «Удалить» (при условии, что она активна).
Однако, как было отмечено выше, в том случае, если есть более одного языка ввода, совпадающих с языком интерфейса системы — кнопка «Удалить» для них не активна в последней версии Windows 10.
К примеру, если язык интерфейса «Русский», а в установленных языках ввода у вас есть «Русский», «Русский (Казахстан)», «Русский (Украина)», то все они не будут удаляться. Тем не менее, есть решения и для такой ситуации, которые описаны далее в руководстве.
Как удалить ненужный язык ввода Windows 10 с помощью редактора реестра
Первый из способов побороть баг Windows 10, связанный с удалением языков — использовать редактор реестра. При использовании этого способа, языки будут удалены из списка языков ввода (т.е. не будут использовать при переключении клавиатуры и отображаться в области уведомлений), но останутся в списке языков в «Параметрах».
- Запустите редактор реестра (нажмите клавиши Win+R, введите regedit и нажмите Enter)
- Перейдите к разделу реестра HKEY_CURRENT_USERKeyboard LayoutPreload
- В правой части редактора реестра вы увидите список значений, каждое из которых соответствует одному из языков. Они расположены по порядку, также, как и в списке языков в «Параметрах».
- Нажав правой кнопкой мыши по ненужным языкам, удалите их в редакторе реестра. Если при этом будет неверная нумерация порядка (например, останутся записи под номерами 1 и 3), восстановите её: правый клик по параметру — переименовать.
- Перезагрузите компьютер или выйдите из системы и снова зайдите.
В результате ненужный язык исчезнет из списка языков ввода. Однако, удален полностью не будет и, более того, может снова появится в языках ввода после каких-либо действий в параметрах или очередного обновления Windows 10.
Удаление языков Windows 10 с помощью PowerShell
Второй способ позволяет полностью убрать ненужные языки в Windows 10. Для этого будем использовать Windows PowerShell.
- Запустите Windows PowerShell от имени администратора (можно через меню, открываемое правым кликом по кнопке «Пуск» или используя поиск на панели задач: начните вводить PowerShell, затем нажмите правой кнопкой мыши по найденному результату и выберите «Запуск от имени администратора». По порядку введите следующие команды.
-
Get-WinUserLanguageList
(В результате вы увидите список установленных языков. Обратите внимание на значение LanguageTag для языка, который нужно удалить. В моем случае это будет ru_KZ, вы в своей команде на 4-м шаге замените на своё.) -
$List = Get-WinUserLanguageList
-
$Index = $List.LanguageTag.IndexOf("ru-KZ")
-
$List.RemoveAt($Index)
-
Set-WinUserLanguageList $List -Force
В результате выполнения последней команды ненужный язык будет удален. При желании тем же образом вы можете удалить другие языки Windows 10, повторив команды 4-6 (при условии, что вы не закрывали PowerShell) с уже новым значением Language Tag.
В завершение — видео, где описываемое показано наглядно.
Надеюсь, инструкция была полезна. Если же что-то не получается, оставляйте комментарии, я постараюсь разобраться и помочь.