Вадим Стеркин
В чате @winsiders участник Kato пожаловался на необычную проблему после обновления до Windows 10 1803. Изначально у него в системе было три языка – английский (US), русский и украинский, а после обновления добавилось еще два английских – United Kingdom и Canada, которые не удалялись в Параметрах (кнопка Remove недоступна). Соответственно, эти языки появлялись в списке раскладок клавиатуры, хотя в настройках их не было.
В общем случае, можно удалить любой язык, который не используется по умолчанию. Например, если в системе только английский и русский языки, то первый можно удалить, если основным назначен второй. При этом неважно, каким был исходный язык системы (дистрибутива), что легко определяется в PowerShell командой:
Команда выводит идентификатор языка, где 1033 – английский (US), 1049 – русский, остальные тут в десятичном виде или у Microsoft в шестнадцатеричном (вставляйте значения в калькулятор программиста).
На проблемной ОС эта команда выдала 2057, что соответствует English (United Kingdom). В сочетании с картиной из параметров это было очень странно, потому что у языка дистрибутива никаких языковых пакетов быть не должно, поскольку он и так есть в системе.
Для начала мы попытались удалить языковые пакеты UK и Canada командами
Однако к успеху это ни привело, что намекало на фактические отсутствие этих языковых пакетов, но не приближало к решению проблемы фантомных языков. Пришлось зайти с черного хода.
У PowerShell есть два командлета для управления языками пользователя – Get-WinUserLanguageList и Set-WinUserLanguageList. Первый умеет получать список языков, а второй задавать его. В PowerShell список соответствовал картине в параметрах.
Из справки второго командлета не вполне очевидно, как удалить ненужные языки. Зато она дает достаточно толстый намек на то, что вывод первого командлета представляет собой массив. Это можно использовать во благо. Нам нужны только первые три языка из списка.
Первая команда помещает в переменную массив из списка языков, а вторая задает в качестве текущих языков первые три элемента массива. При этом остальные языки удаляются! Третья команда выводит список языков для проверки.
Решено! В который уже раз PowerShell позволяет элегантно решить задачу без запредельных усилий. Если будете экспериментировать под учетной записью Microsoft, отключите синхронизацию языковых параметров во избежание нежелательных эффектов (я словил несколько странностей :).
В Windows 10 1803 языковые настройки практически полностью перекочевали из классической панели управления в Параметры (исключение составляет классическое окно с настройками сочетаний клавиш и языковой панели). В связи с этим я обновил статью про 6 языковых настроек, которые могут поставить вас в тупик в контексте изменившегося интерфейса.
Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.
Метки: PowerShell, нестыковки, язык Информация в статье применима к Windows 8 и новее
Об авторе
Вадим является владельцем этого блога, и большинство записей здесь вышло из-под его пера. Подробности о блоге и авторе здесь.
Вас также может заинтересовать:
Подпишитесь на бесплатные уведомления о новых записях и получите в подарок мою книгу об ускорении загрузки Windows!
комментариев 8
Да, наверное этот способ более понятный(наглядный) чем на Ансверс.
Добавил ссылку на статью.
Есть еще очень простой способ решить проблему. Но срабатывает не всегда.
1) Перелогиниваемся.
2) Делаем полное выключение компьютера(Пуск>Выключение>Удерживая Shift, Завершение работы).
На момент решения задачи никакого способа на Answers не было https://i.imgur.com/R7Kapr8.png
И да, я обошелся двумя командами вместо четырех 🙂
Простите за оффтоп, но может подскажите как изменить системный шрифт, который в новой панели управления и не только в ней. Меня он раздражает, какой-то он нечеткий.
Если не оффтопить, то и извиняться не надо будет. Пишите в http://www.forum.oszone.net
В моем случае на ноутбуке было настроено несколько учетных записей пользователей (Администратор — локальная учетная запись, и 2 пользователя — доменная учетная запись). Я сделал все, как в статье под одним из пользователей, все сработало, но когда вошел под другим, то в Панели задач и в Параметрах у него остался язык Русский (Молдова), который у 1-го пользователя перед этим удалился. Мне пришлось повторить процедуру, но запуск PowerShell я сделал НЕ от имени Администратора, а просто под пользователем, т.к. иначе команда Get-WinUserLanguageList не выводила 3-ий язык.
xupomant: Мне пришлось повторить процедуру, но запуск PowerShell я сделал НЕ от имени Администратора, а просто под пользователем, т.к. иначе команда Get-WinUserLanguageList не выводила 3-ий язык.
Хорошее замечание. Я нигде не писал, что PowerShell нужно запускать от имени администратора, потому что это пользовательские настройки. Но да, на скриншотах именно администратор, так получилось 🙂
у меня сходная, но не совсем та же проблема. windows 10 (build 1709). имеются три языковые вкладки: французская, русская и японская. всякий раз, когда я перегружаю комп, к имеющимся добавляется английская (сша), при этом в списке вкладок ее не видно, и команда Get-WinUserLanguageList ее не отображает (будучи запущенной как из-под текущего юзера, так и из-под админа).
американская вкладка удаляется вручную: для этого я ее сначала добавляю, а потом удаляю. но это достает неимоверно. надеялся, что с помощью данной статьи проблему порешаю. не порешал. буду копать дальше.
Я видел похожую проблему, раскладка подгружалась из
и восстанавливалась при перезагрузке. До конца не дорешали, но это может быть следствием синхронизации языков.
Мой последний совет был удалить проблемную раскладку из реестра
предварительно сделав резервную копию раздела
Как удалить неудаляемые языки после апгрейда билда Windows 10
Вопрос
У меня на ноутбуке с Windows 10 изначально было установлено 3 языка: русский, белорусский и английский, но после апрельского обновления системы до Windows 10 1803 (April Update), в списке языков появились еще два дополнительных языка – English (United Kingdom) и English (Canada), хотя я точно уверен, что не устанавливал их. Теперь в списке раскладок клавиатуры у меня отображается целых пять языков. Причем система не дает удалить дополнительные языки (кнопка Remove неактивна ). Теперь мне приходится переключаться между 5 раскладками клавиатуры вместо 3, что очень неудобно! Помогите! Что мне нужно сделать, чтобы удалить эти неудаляемые языковые пакеты?
Ответ
В очередной раз отмечаю, что на самом деле последнее обновление Windows 10 1803 принесло много сюрпризов пользователям (вспомните хотя бы дополнительный раздел восстановления , который появился после обновления).
В Windows 10 обычно можно удалить любой язык, который не используется в качестве основного языка по умолчанию. Однако в Windows 10 1803 Microsoft признала баг с дополнительными языками. В том случае, если в системе добавить дополнительный язык, который использует тот же базовый язык, что и текущий язык отображения Windows, тогда этот язык удалить нельзя.
К примеру, если английский язык (United States) является текущим языком интерфейса Windows, то после добавления английского языка (United Kingdom) вы не сможете удалить оба данных языка из списка предпочтительных языков. И, конечно, очень неудобно, что в языковой закладке на панели задач (таскбаре) появился лишний ненужный язык.
С помощью следующих команд вы не сможете удалить дополнительные языки из системы, т.к. этих языковых пакетов в Windows не установлено.
lpksetup /u en-gb
lpksetup /u en-ca
Удалить ненужный дополнительный язык можно только с помощью PowerShell.
- Запустите Windows PowerShellс правами администратора.
В том случае, если нужно оставить в системе несколько языков, можно удалить только ненужные языки следующими командами. К примеру, вы хотите удалить языки с 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 10?
Вчера обновился с Windows 8.1 до Windows 10.
У меня установлены региональные настройки «Украина». В меню выбора языков Английский, Русский и Украинский. Украинской раскладкой пользуюсь редко, и не могу его удалить из списка. Возможно удалить только Английский и Русский.
Очень не удобно тыкать в поисках нужной раскладки.
Как удалить «лишний» язык?
У меня была аналогичная проблема после обновления с Win 7 до Win 10. Среди методов ввода появился русский язык с английской клавиатурой (при этом в списках ее не было).
Решается следующим образом:
1. Добавляем новый язык (Add a language через меню на первом скриншоте);
2. Выбираем язык, «лишнюю» раскладку которого хотим удалить (в данном случае украинский);
3. Скачиваем и устанавливаем данный языковой пакет;
4. Проверяем, чтобы скачанный язык был НЕ первым в списке и чтобы система была НЕ на нем;
5. Перезагружаем ПК;
6. Выбираем лишний язык через меню на первом скриншоте и нажимаем кнопку Del;
7. Радуемся результату.
Если нужно удалить раскладку клавиатуры которой — внимание — нет и в одном из установленных языковых пакетов, надо в реестре ключа в ветке HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout добавить IgnoreRemoteKeyboardLayout со значением 1:
Спасибо за совет! Для потомков: у меня была проблема: три языка для клавиатуры, при этом в панели управления ни слова про третий.
По всей видимости, во время установки Windows добавил еще один язык — «Английский международный». Позже оказалось, что «Английский США» установлен по умолчанию. Потом было какая-то история с манипуляцией языками (все подряд удалил, потом заново добавил). В результате — 3 языка, в панели управления про международный английский ни слова.
В реестре в ветке HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout много папок — по одному для каждого языка. Надо найти лишний и добавить строковый ключ IgnoreRemoteKeyboardLayout со значением 1. Языков много, найти нужный помог PuntoSwitcher. Он начал ругаться, что языков много и в своей утилите показал их название, включая идентификатор. Этот идентификатор совпал с названием папки в реестре. Вуаля!