Changing Windows 7 system locale for non-Unicode programs

Changing Windows 7 system locale for non-Unicode programs in registry

Something rather strange crept up today and its do to with non-Unicode language settings in Windows 7 which weren’t working properly. Basically some of our printers didn’t print barcodes properly and after some extensive troubleshooting the culprit was language in Windows that was set to English (United States) instead of English (United Kingdom) You can find system locale settings for non-Unicode programs under:

Changing_Windows_7_system_locale_for_non-Unicode_programs_in_registry_2

Looking at what happens when you switch from English (United States) to English (United Kingdom) from registry point of view I can see the following changes being made:

Changing_Windows_7_system_locale_for_non-Unicode_programs_in_registry_3

Changing_Windows_7_system_locale_for_non-Unicode_programs_in_registry_4

In Regedit language here’s the code that you need to distribute to make this change in mass:

Most annoying fact here is that there are no group policy settings to make this a little bit easier to deploy. Group policy preferences however are doing pretty decent job:

Changing_Windows_7_system_locale_for_non-Unicode_programs_in_registry_5

4 thoughts on “Changing Windows 7 system locale for non-Unicode programs

  1. Pingback: Language for Non-Unicode Programs

  2. id

    These instructions need a small correction to make them work.
    The following value name is (Default) and that is not the #3 value shown on the last screenshot in GPP.
    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\Locale]
    “(Default)”=”00000809”

  3. vGimly

    It’s not fault – it’s feature. Checked on some systems – there are two keys under Nls\Locale:
    empty one (in reg file named as @) and with name “(Default)”.
    Control panel page make changes only in key with name “(Default)” – keeping empty named key unchanged.

    reg query HKLM\System\CurrentControlSet\Control\Nls\Locale /ve
    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Nls\Locale
    (Default) REG_SZ 00000409

    reg query HKLM\System\CurrentControlSet\Control\Nls\Locale /v “(Default)”
    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Nls\Locale
    (Default) REG_SZ 00000409

    so, reg file should look like:
    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\Locale]
    @=”00000809″
    “(Default)”=”00000809”

  4. Mo

    Tried this several times and in several ways, it never changes it from US to whatever locale I try to set. in a VDI environment this may not be possible.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.