A few years ago I authored a post about this topic. You can find it here. I recently had an engagement where I had to do this again. In the process of doing this I made a few changes/improvements to the script. I’ve added the download for the new script here and updated the download of the original post as well.
Most of the changes are internal improvements to the script. I won’t go into most of those here but you can find the details in the header block and revision notes of the script. One that I will discuss is the change to the handling of the KeyboardLocale setting. MDT (and the unattend.xml InputLocale setting that MDT fills in with this value) allows this setting to be specified as language-REGION text (e.g. en-US) or hex codes (e.g. 0409:00000409). The XML file generated by this script only supports the hex codes. So now if the script sees a text entry in KeyboardLocale it will use ListOfLanguages.xml (in the Scripts folder of the MDT Deployment Share or MDT Toolkit ConfigMgr package) to convert it to hex codes.
One other change is that the script now supports a UILanguageFallback custom property to allow specification of the Fallback language when the UILanguage is not fully localized, like the unattend.xml setting: https://technet.microsoft.com/en-us/library/ff716433.aspx.
The engagement where I made these changes was a Windows 7 migration, so I have not had a chance to see if/how well this might work on Windows 8.x. If you try this, post a comment about it here.
This post was contributed by Michael Murgolo, a Senior Consultant with Microsoft Services - U.S. East Region.