Changing the Windows Display Language with VMware DEM. A User Friendly Way!

During a project for a multinational they asked me, how about to deal with VDI (virtual desktop) and multi languages in Windows.
I mentioned that there are two options to use:

  1. Use one VDI Golden/Base/Master image per language (so country based) and use the ISO language specific ones.
  2. Use one VDI Golden/Base/Master image for all languages and start for example with the ISO English-US.

Option 1:

The advantage(s):

  • Don’t hassle with saving language, region and keyboard based settings during your VDI session.
  • Decrease some login time so you could skip importing language based settings.

The disadvantage(s):

  • Maintenance of more VDI Golden/Base/Master images. Per necessary language on image! This will cost the work-space team a lot of time every month (when still use the monthly update schedule).
  • Users will stuck to one display language.
    For example: I prefer the English display language instead of my native (display) language Dutch. This will not be possible when option one is used.

Option 2:

The advantage(s):

  • Just maintain one VDI Golden/Base/Master image for all your display languages, this will save every month a lot of time during monthly updates.
  • Give the user more freedom by choosing their own preferred Windows 10 display language.

The disadvantage(s):

  • A little bit more preparation time to get it all set, but with my scripts you can start a lot quicker.

Personally my preferred way will be option 2. Who doesn’t want to keep the maintenance as low as possible and let the user choose their own display language is Windows 10.

Step 1 (Installation of Windows 10 Language Packs):

  • After the installation of the default Windows 10 ISO (en-US), you’ll need to download the Multi Language Pack ISO file called “SW_DVD9_NTRL_Win_10_1803_32_64_ARM64_MultiLang_-2_LangPackAll_LIP_X21-79790.iso”, which is available through the MSDN Software Portal.
  • Mount the ISO file and browse with a file explorer to ISO –> x64 –> langpacks and copy the only the “language pack” files which are necessary to a network share.
    In my example are those:
    • Keep in mind that “en-US” is the default language from the original ISO file
    • Microsoft-Windows-Client-Language-Pack_x64_de-de.cab
    • Microsoft-Windows-Client-Language-Pack_x64_en-gb.cab
    • Microsoft-Windows-Client-Language-Pack_x64_nl-nl.cab
    • Microsoft-Windows-Client-Language-Pack_x64_sv-se.cab
  • Install the cab files manually via the Windows 10 Control Panel (till Windows 10 v1803) or via PowerShell.
    Via Powershell you can use this script parts for execution: Install-W10-Language-Packs.ps1
  • Reboot your VM after the script is finished.

Step 2 (Create the necessary VMware DEM settings):

Personalization

Create two Windows common config files in the “Windows Settings” section, one for Multilanguage User Interface settings and one for Regional Settings:



User Environment (Logon Tasks)

Create two tasks per language. One for setting the Windows Culture and one for Regional and Keyboard Settings. It should looks like this:

I’ll show you how to configure the two tasks for one language as an example. For other languages you can just duplicate and change the settings per language you want in your environment.

Dutch (The Netherlands)

Task 1)

Command:
powershell.exe -ExecutionPolicy Bypass -Command Set-Culture nl-NL
As you can see I only run this task once (don’t forget to set the really run once in a floating/non-persistent VDI environment).
This look like this:

I use this runOnceSpecial because at logoff and logon the settings will be saved (roamed) via Personalization Settings we set in step 1.
With the condition set to a AD User Group, you can say that a group of users will start by default with language x.

Task 2)

Command:
powershell.exe -ExecutionPolicy Bypass -Command Set-WinSystemLocale nl-NL; Set-WinHomeLocation 0xb0; Set-WinUserLanguageList -LanguageList nl-NL -Force
As you can see I only run this task once (don’t forget to set the really run once in a floating/non-persistent VDI environment).
I use this runOnceSpecial because at logoff and logon the settings will be saved (roamed) via Personalization Settings we set in step 1.

For the “Set-WinHomeLocation” you need to lookup the specific country code. You can find them here!

With the condition set to a AD User Group, you can say that a group of users will start by default with language x.

Shortcuts

Create for every language you installed in the Windows 10 VDI image a shortcut, so a user is free to choose which language they want to use.
It should look like this (I have 5 languages available in my Windows 10 VDI image):

Dutch (The Netherlands)

Yet again I will show you the settings for the shortcut I have set for “Dutch – Netherlands”.

Target:
%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe
Arguments:
-executionpolicy bypass "& '\\lns.local\org\UEMConfig\UEM_Additions\SetLanguage\set-win-language-in-nl_NL.ps1'"

Because of the limitations you can set in the Arguments field. I had to create a small PowerShell script for each language and placed them on the DEM/UEM Config share.
Users must have read permissions by default, they don’t need to modify things in here, so I good place to put share scripts or icons.

The content of my PowerShell scripts can be found here (don’t forget to rename txt to ps1):

The icon’s I have used for in the start menu can be found here!
Pity enough I couldn’t find a condition yet, which filters the language which the current user is using at the moment, so it will not been shown in the start menu…
Maybe one of you know a good one… ;-).

Windows Settings (Display Language)

Create for every language you installed in the Windows 10 VDI image an entry here, so you could have a predefined display language set for a specific condition set or rule.
It should look like this:

Dutch (The Netherlands)

This is how the Display Language are set for the Dutch (The Netherlands).

Keep in mind that the “Run once” with “runOnceSpecial” is set, so a user can change there language, else it will be forced!
A condition is based on a condition set or on a Active Directory User Group like I used in previous steps.

Step 3 (Result)

This is a video from my home lab with result when implementing above steps in your Windows 10 non-persistent virtual desktop (including VMware Horizon, App Volumes and VMware Dynamic Environment Manager. This video shows changing the Windows 10 Display Language from English to Dutch.

2 replies

Comments are closed.