On a recent project there was a requirement to install different language pack’s and configure regional / keyboard settings. I was having issue getting this working so I though I would do a post on how I ended up getting it working correctly.
To skip the OOBE initial setup screen we can use a unattended XML answer file. I have done a different post for creating a basic answer file see link below.
https://thesleepyadmins.com/2019/05/31/create-windows-10-answer-file/
If this is not setup you will be prompted to complete the initial Windows 10 setup along with selecting the language settings.
The next problem I had was trying to find the language packs I ended up downloading the language pack ISO from the Microsoft visual studio site.
Once downloaded I need to mount the ISO and copy the required
Once all the required language packs where copied. Create a new packages for each pack
The next step is to configure the XML file’s that will be used to configure the regional and keyboard settings for each language pack. I used this support how to as a reference for the XML:
Below is the XML file that was used for the German language pack:
Below is the export from the above XML file: (Check double quotes if coping as the format can change when coping and that will cause issues)
<gs:GlobalizationServices xmlns:gs=”urn:longhornGlobalizationUnattend”>
<!– user list –>
<gs:UserList>
<gs:User UserID=”Current” CopySettingsToDefaultUserAcct=”true” CopySettingsToSystemAcct=”true”/>
</gs:UserList><!– system locale –>
<gs:SystemLocale Name=”de-DE”/><!–User Locale–>
<gs:UserLocale>
<gs:Locale Name=”de-DE” SetAsCurrent=”true” ResetAllSettings=”false”/>
</gs:UserLocale><!–location–>
<gs:LocationPreferences>
<gs:GeoID Value=”94″/>
</gs:LocationPreferences><!– input preferences –>
<gs:InputPreferences>
<gs:InputLanguageID Action=”add” ID=”0407:00000407″ Default=”true”/>
<gs:InputLanguageID Action=”remove” ID=”0409:00000409″/>
</gs:InputPreferences></gs:GlobalizationServices>
I used the below sites to get the GEO ID & the Input Locales
GEO ID : https://docs.microsoft.com/en-ie/windows/desktop/Intl/table-of-geographical-locations
Input Locales: https://docs.microsoft.com/en-us/windows-hardware/manufacture/desktop/default-input-locales-for-windows-language-packs
Once we have all the language packs completed create a single package with all the XML’s file’s or add the XML’s to the Language packages created above. I went with one package for all the XML’s
Next step is to add the steps to the Windows 10 task sequence
Add a run command line task, use the command below and replace with the required language pack .cab file. Select the corresponding package.
Below is for the german .cab
dism.exe /norestart /online /add-package /packagepath:.\Microsoft-Windows-Client-Language-Pack_x64_de-de(German).cab
After this step add a restart task
Next step is to apply the XML file’s to set the regional / Keyboard settings. Below is the command line I used
rundll32.exe shell32,Control_RunDLL intl.cpl,,/f:”.\German.xml”
When copying the command above check that the double quotes are in the correct format or the command could fail to apply the xml file
After this step do another restart, the last step I did was to configure time zone for each region. I used the below site to get the time zone values
Time Zone Values: https://support.microsoft.com/en-us/help/973627/microsoft-time-zone-index-values
Below is the command line to set the time zones
cmd.exe /c tzutil.exe /s “W. Europe Standard Time”
Below is the finished task sequence with all languages added
Last step was to set a condition to apply each package. I used host name as the condition to apply the language packs as each country has its own naming convention this was the easiest way for me
Once this is competed I tested and all packages were applied without error.