Windows 10 language settings with PowerShell

Language settings in Windows 10 is a little more complicated than just setting the display language and keyboard input. Let me explain further.

Region settings

The region settings control a number of things. If you change the language here, you will also change “cultural” properties such as date format, currency, number formatting and so on. These settings are linked together with the region language.

That means you can’t have English display language and Danish currency and time format. Because if you change the region to English you will also get English cultural settings. 😲 Stupid right?

By default, Windows will try to match the region with the display language.

Note: this behavior may have changed in Windows 10 1903, but I have not tested this thoroughly.

This is super frustrating for those who would like to have Windows in English, but different region settings.

The solution is a simple PowerShell command:

Set-WinCultureFromLanguageListOptOut -OptOut $True

As the documentation says, this disables the action of dynamically setting the “culture” for the current user based on changes to the Windows display language.

So now you can set the region in one of two ways. You can either set the region with the cmdlet:

Set-Culture -CultureInfo de-DE

or you can edit the region language in Control Panel – > Region.

You can use the Set-Culture cmdlet to set the region settings in Windows 10

Display language and keyboard language

In Windows 10 there is also something called “language lists“. Languages in Windows 10 can be a little more complicated than just setting the right display language and keyboard language.

I mean, if you think about it… Switzerland, for example, has four national languages; German, French, Italian and Romansh. People living in the cities Canton of Valais, Fribourg, and Bern are bilingual (speaking French and German), while Canton Graubünden is trilingual (German, Romansh and Italian).

So what language settings would you use in Switzerland?

My point here is that although you may have one main language, you might need multiple keyboard types. The Japanese, for example, speak one language but use three alphabets; hiragana, katakana, and kanji.

This leads us to the “language lists”.

A language list in Windows is basically just a bunch of display languages that each contain the following:

  • Display language
  • Text-to-speech
  • Speech recognition
  • Handwriting input mode
  • Input method
  • Spelling setting
  • Text prediction setting
Windows 10 uses language lists that can have different keyboards and languages

So when you change the language in Settings, you will also adjust these sub-properties of the language list.

To make things easier for myself I use this script to set all the language and culture settings according to my main language.

Feel free to grab it 😉

# Set WinUserLanguageList as a variable
$lang = Get-WinUserLanguageList 
# Clear the WinUserLanguageList
$lang.Clear()
# Add language to the language list
$lang.add("en-US")
# Remove whatever input method is present
$lang[0].InputMethodTips.Clear()
# Add this keyboard as keyboard language
$lang[0].InputMethodTips.Add('0409:00000414')
# Set this language list as default
Set-WinUserLanguageList $lang -Force
# Make region settings independent of OS language
Set-WinCultureFromLanguageListOptOut -OptOut $True
# Set region to this Country
Set-Culture nb-NO
# Set the location to this location
Set-WinHomeLocation -GeoId 0xb1
# Set non-unicode legacy software to use this language as default
Set-WinSystemLocale -SystemLocale nb-NO

Sources:

http://drizin.io/Change-Keyboard-Input-Languages-with-Powershell/

http://output.to/sideway/default.asp?qno=180700016

https://4sysops.com/archives/adding-and-removing-keyboard-languages-with-powershell/

https://docs.microsoft.com/en-us/windows-hardware/manufacture/desktop/default-input-locales-for-windows-language-packs

https://docs.microsoft.com/en-us/windows/win32/intl/table-of-geographical-locations

https://docs.microsoft.com/en-us/windows/win32/msi/localizing-the-error-and-actiontext-tables

https://docs.microsoft.com/en-us/windows/win32/wmformat/language-strings

https://powershell.org/forums/topic/modify-keyboard-layout/

https://superuser.com/questions/1309399/change-display-language-in-windows-10-with-cmd-or-powershell-commands/1310632#1310632

https://www.autoitscript.com/autoit3/docs/appendix/OSLangCodes.htm

https://www.tenforums.com/tutorials/30656-see-default-system-language-windows-10-a.html

Leave a Reply

Your email address will not be published. Required fields are marked *