Why aren't the options I selected from the language page set correctly - A must read for language usage with MDT 2012 Update 1 UDI

The Problem

If you are using MDT 2012 Update 1 UDI and are configuring language settings, you may have run into the problem setting up your User Locale. In MDT 2012 Update 1 Beta the UDI wizard was setting InputLocale when it should have been setting UserLocale. As this was found at the last minute before releasing there was a workaround put in place in order to set the appropriate task sequence variable. Rather than changing this variable in compiled code which is a bit more costly and risky the workaround was added to the UDI Wizard script wrapper (UDIWizard.wsf). The script wrapper would simply read what the UDI Wizard set the InputLocale task sequence variable to once it exited and then set UserLocale to that same value.

Why is this a problem? It is a problem because the wizard was fixed in the released version of MDT 2012 Update 1, but the script wrapper was never fixed to remove the line which sets UserLocale with the value of InputLocale. So what does this mean? It means that the wizard sets the UserLocale correctly based on what the end user selects when the wizard exits, the script wrapper will then read InputLocale, which is no longer set, and sets UserLocale with this value. Thus UserLocale is always set to blank.

The Solution

Luckly this problem is very easy to fix. You simply need to modify the script wrapper, udiwizard.wsf file, in the toolkit package under the scripts directory and either comment out or remove the following line:
oEnvironment.Item("UserLocale") = oEnvironment.Item("InputLocale")  

Don't forget to update your distribution points on your MDT Toolkit package once you make this change.

Additional Notes about Language Settings

Variables used on the language page:

  • Language pack to install: UILanguage
  • Time and Currency Format: UserLocale
  • Keyboard Layout: KeyboardLocale
  • Timezone: OSDTimeZone


Language pack to install

Customer's have asked how do I default language options to the default language set on a machine. UDI doesn't provide any detection for determining which language had been set on a machine. However, it does provide a way to default to a language setting. So if you have added logic to a script you can simply set the appropriate task sequence variables prior to the wizard loading in order to default to those settings. The one thing to call out here is that the values used in task sequence variable must match the case of the values in the dropdown list in order to default to a value. In other words if you want to default to French for a language pack to install that language pack must be available in the list, and you must set UILanguage to FR-FR not fr-FR.


Keyboard Layout

Additionally if you wanted to set the keyboard layout to French for example you should set the KeyboardLocale variable to either 040c:0000040c or 0000040c. Do not set the variable to the following format 0x0000040c.