А АWednesday, 21 May 2025

Перемикання мов в Windows.


Привіт привіт.

Мене особиcто задовбує перемикання мов в Windows, але що поробиш, я тихо заздрю тим у кого тільки латиниця в документах та менюшках. Стільки часу на кліки ukr-eng-ukr витрачається що ну. А ще краще коли той перемикач кудись раптом зникає. Тому сьогодні я пройдусь по діях які спроможні полегшити моє життя.

Дія перша.

Перша корисна команда PowerShell:

Set-WinUserLanguageList -LanguageList en-US,uk-UA,fr-FR -Force

Що вона робить:

ця команда встановлює (або відновлює!) список мов інтерфейсу (language list) для поточного користувача Windows, тобто мови, які будуть доступні для системного інтерфейсу, клавіатур і мовного вводу.

Детальний розбір:

* `Set-WinUserLanguageList`: це cmdlet PowerShell, який змінює мови, пов’язані з обліковим записом користувача (інтерфейс, клавіатура, перевірка орфографії тощо).

* `-LanguageList en-US,uk-UA,fr-FR`: вказує список мов, які ви хочете встановити. Порядок важливий:

* Перша мова у списку (тут: `en-US`) стане основною мовою інтерфейсу (тобто мова меню, діалогів тощо).

* Інші мови (тут: `uk-UA`, `fr-FR`) будуть доступні для перемикання (наприклад, мова клавіатури чи перевірки орфографії).

* `-Force`: вказує команді не вимагати підтвердження при зміні мов — одразу застосовує зміни.

Результат виконання:

* Основна мова інтерфейсу Windows зміниться на англійську (США).

* Українська та французька будуть додані до мов користувача.

 Windows автоматично:

 * додасть відповідні розкладки клавіатури,

 * підкачає мовні пакети (якщо доступні й потрібні),

 * і запропонує вийти з системи, щоб застосувати зміни до всього інтерфейсу.


Важливі зауваження:

* Права адміністратора не потрібні, бо це стосується лише поточного користувача.

* Якщо в системі немає відповідного мовного пакету — може знадобитися підключення до інтернету для його завантаження.

* Ця команда не змінює мову екрана входу (lock screen) або системну мову "за замовчуванням" для нових користувачів — для цього використовується інше (через `intl.cpl` або групові політики / DISM).


Дія друга.

Інша корисна команда стосується мовної панелі та способу перемикання розкладок клавіатури у Windows:

Set-WinUserLanguageBarOption -UseLegacySwitchMode

🧠 Що вона робить:

Вона вмикає так званий "старий" (legacy) режим перемикання мов вводу — тобто змінює поведінку комбінації клавіш Alt+Shift або Ctrl+Shift на ту, яка використовувалась у Windows 7.

Цей режим:

* перемикає лише розкладки клавіатури, а не мовні налаштування в цілому;

* не залежить від контексту вводу (програми або мови інтерфейсу);

* робить перемикання більш передбачуваним, особливо для користувачів, які звикли до "класичного" способу роботи в старих версіях Windows.

🛠 Контекст:

У нових версіях Windows (починаючи з Windows 10), спосіб перемикання мов став більш "інтелектуальним" і може поводитись інакше:

* перемикання може залежати від того, яка мова була активна в певній програмі;

* у деяких випадках Windows може перемикати мову інтерфейсу разом із розкладкою;

* також може перемикатися спосіб вводу (IME), наприклад, для китайської або японської.

Це не завжди зручно, особливо якщо ви просто хочете перемикати, наприклад, `Ukrainian ⇄ English` без додаткових змін.

✅ Після виконання:

* Windows повертається до простого перемикання клавіатур, як було в Windows 7.

* Зазвичай це корисно для тих, хто звик до Alt+Shift без сюрпризів.

🧪 Перевірка:

Щоб перевірити, чи ввімкнений legacy режим, можна використати:

Get-WinUserLanguageBarOption

Він покаже:

UseLegacySwitchMode : True

📝 Висновок:

Ця команда - чудовий інструмент для:

* користувачів, які багато друкують на кількох мовах;

* тих, кого дратує "розумне" перемикання;

* або просто для відновлення звичної поведінки клавіатури після оновлень Windows.


Дія третя.

Але перемикання може залежати від того, яка мова була активна в певній програмі - це дуже важливий нюанс, і його варто розкласти по поличках, бо саме він часто дратує користувачів, які багато працюють з текстом кількома мовами.

🔄 Що означає "перемикання може залежати від того, яка мова була активна в певній програмі":

У сучасних версіях Windows (починаючи з Windows 10) за замовчуванням вмикається поведінка перемикання мови вводу "на рівні вікна" (або "на рівні програми").

🔧 Це означає:

Коли ви перемикаєте мову (наприклад, Alt+Shift або Win+Space), перемикається лише в поточному активному вікні/програмі.

📌 Приклад:

1. Ви відкрили Notepad, ввімкнули англійську (en-US) і почали писати.

2. Потім ви переключаєтесь у Word, і там залишилась українська (uk-UA), бо саме вона була активна останній раз у Word.

3. Ви знову повертаєтесь у Notepad — там автоматично знову англійська.

Тобто кожна програма "пам’ятає", яку мову вводу ви востаннє для неї використовували.

🧠 Це називається Per-app input method  або Input method per window і вмикається автоматично, якщо в системі кілька мов.

🧩 Як це змінити:

якщо ви хочете, щоб мова клавіатури перемикалася глобально для всієї системи, а не окремо в кожному вікні:

❗️ Варіант 1: через налаштування Windows

1. Панель керування → Мова → Додаткові параметри

2. Знайдіть пункт:

   > "Перемикати метод введення для кожного вікна програми"

3. Зніміть галочку

✅ Що отримаєте:

* Перемикаєте мову один раз — вона змінюється в усіх програмах одразу

* Це більш очікувана та передбачувана поведінка для більшості користувачів.

🔚 Підсумок:

* Поведінка за замовчуванням у Windows — запам’ятовувати мову окремо для кожного вікна.

* Це може бути зручно для китайської, японської чи арабської, але дратує, якщо ви просто перемикаєте між двома розкладками (наприклад, UA ⇄ EN).

* Якщо вам це не потрібно — краще вимкнути цей режим.


Дія четверта.

А тепер як вимкнути "запам'ятовування мови для кожного вікна окремо" через реєстр - тобто перемикати мову глобально для всієї системи.

🧠 Ідея:

У реєстрі Windows є параметр `InputMethodOverride` у гілці `Control Panel\International\User Profile`.

✅ Спосіб 1: PowerShell-скрипт для зміни реєстру

 Створює або оновлює параметр реєстру, щоб мова вводу була однакова для всіх вікон

New-ItemProperty -Path "HKCU:\Control Panel\International\User Profile" `

                 -Name "InputMethodOverride" `

                 -PropertyType String `

                 -Value "0409:00000409" `

                 -Force

Що робить:

* `0409` — це мовний код (LCID) для англійської (en-US)

* `00000409` — це код розкладки клавіатури (US)


⚠️ Але тут важливо знати: цей запис сам по собі лише частково керує розкладкою. Щоб конкретно вимкнути перемикання на рівні вікна, краще змінити інше налаштування — через:

✅ Спосіб 2: Головний параметр — Layout Hotkey Handling (Toggle)

Цей параметр зберігається тут:

HKEY_CURRENT_USER\Keyboard Layout\Toggle

🛠 PowerShell-команда:

Set-ItemProperty -Path "HKCU:\Keyboard Layout\Toggle" -Name "Hotkey" -Value "2"

🔍 Значення параметра `Hotkey`:

1 | Alt + Shift                                              

2 | Ctrl + Shift                                             

3 | Disabled                                                 

Іноді там ще є `"Language Hotkey"` або `"Layout Hotkey"`.


Але це не гарантує відключення перемикання "per-window". Щоб точно вимкнути поведінку на рівні вікна, використовується ще один прапорець у старій панелі керування, але через реєстр це робиться так:

✅ Спосіб 3: Вимкнути перемикання мови на рівні вікна (per-app)

Set-ItemProperty -Path "HKCU:\Control Panel\International" `

                 -Name "EnablePerProcessInputProcessor" `

                 -Value 0


📋 Усе разом в одному скрипті:

 Вимкнення перемикання на рівні вікна

Set-ItemProperty -Path "HKCU:\Control Panel\International" `

                 -Name "EnablePerProcessInputProcessor" `

                 -Value 0

 (Необов’язково) Установка глобальної розкладки клавіатури

Set-ItemProperty -Path "HKCU:\Keyboard Layout\Toggle" `

                 -Name "Hotkey" `

                 -Value "2"


🔄 Після змін:

Перезавантажте систему, або хоча б вийдіть з облікового запису та зайдіть знову, щоб зміни застосувалися.


Дія п'ята.

Не меньш важливо зробити так, щоб при вході в Windows (login screen) завжди була англійська розкладка клавіатури, незалежно від того, скільки мов встановлено в системі.

🎯 Мета:

Зробити англійську (en-US або іншу) розкладкою за замовчуванням для екрана входу (lock/login screen).

Це важливо, бо на цьому етапі:

* немає індикатора мови;

* користувач може не помітити, що мова змінилася;

* неправильна розкладка → неправильний пароль → помилки входу.

✅ Як це працює в Windows:

Екран входу використовує системні мовні налаштування:

* вони задаються не просто через `Set-WinUserLanguageList`, а через копіювання мовних налаштувань до системного облікового запису (default user + welcome screen).

🔧 Як це зробити:

📌 Крок 1: Встановіть потрібну мову як основну для вашого облікового запису

Set-WinUserLanguageList -LanguageList en-US,uk-UA -Force

> (Або вручну — через "Параметри → Час і мова → Мова")

📌 Крок 2: Скопіюйте мовні налаштування в системний обліковий запис (екран входу)

Це робиться через класичну панель керування:

1. Відкрий `Control Panel → Region` (або виконай `intl.cpl`)

2. Перейдіть на вкладку Administrative

3. Натисніть кнопку "Copy settings..."

4. У вікні, що з'явиться:

   * Поставте галочки:

     * ✅ Welcome screen and system accounts

     * ✅ New user accounts

5. Натисніть OK та перезавантажте комп'ютер.

🔁 Що це робить:

Це копіює мовні налаштування вашого користувача (зокрема — мову вводу за замовчуванням) у:

* Welcome screen (тобто екран входу)

* System accounts (наприклад, `SYSTEM`, `NETWORK SERVICE`)

* New user defaults

Це не забороняє вибір мови на екрані входу, якщо інші мови додані. Але розкладка за замовчуванням буде саме англійська, що і потрібно.


📝 Альтернативно рообимо через реєстр:

Можна змінити `DefaultInputMethod` тут:

HKEY_USERS\.DEFAULT\Keyboard Layout\Preload

Приклад PowerShell:

Set-ItemProperty -Path "Registry::HKEY_USERS\.DEFAULT\Keyboard Layout\Preload" -Name "1" -Value "00000409"

* `00000409` — це код розкладки US English.

* Цей ключ контролює розкладку клавіатури до входу в систему, тобто на екрані входу.


А ось `.reg` файл, який встановлює англійську розкладку (US English) за замовчуванням для екрана входу в Windows (тобто для облікового запису `.DEFAULT`, який використовується до входу в систему).

Створи новий файл, наприклад, `set-login-layout-to-english.reg`, і встав у нього такий вміст:

Windows Registry Editor Version 5.00

[HKEY_USERS\.DEFAULT\Keyboard Layout\Preload]

"1"="00000409"

[HKEY_USERS\.DEFAULT\Control Panel\International]

"Locale"="00000409"

"LocaleName"="en-US"

[HKEY_USERS\.DEFAULT\Control Panel\International\User Profile]

"Languages"=hex(7):65,00,6e,00,2d,00,55,00,53,00,00,00,00,00

"InputMethodOverride"="0409:00000409"


🧾 Те саме покроково:

1. Створи `.reg` файл із цим вмістом.

2. Запусти його подвійним кліком (від імені звичайного користувача).

3. Після застосування перезавантаж комп’ютер.

4. На екрані входу буде англійська розкладка за замовчуванням (навіть якщо додано інші мови).


⚠️ Примітка:

Цей файл не видаляє інші розкладки, а просто робить англійську першою. Якщо потрібно — можна додати додатковий розділ для видалення або зміни інших клавіш:

[-HKEY_USERS\.DEFAULT\Keyboard Layout\Preload\2]

Це, наприклад, видалить другу розкладку.


Десь тут мала бути ще дія щодо мови на екрані блокування, але там вже ніяк не зарадиш - там зажди буде та мова як була перед блокуванням.

Ось тепер все, зуміли ж дизайнери Microsoft поховати необхідні речі по усіх усюдах, ну таке..., щасти вам.


No comments:

Post a Comment

А что вы думаете по этому поводу?

Версия на печать

Популярное