none
Collections on active MUI Language, not OS Language

    Question

  • Hello,

    Vista has been deployed using SCCM but with different OS Languages during different stages of the roll-out, thanks to my predecessors.
    The issue I'm having now is that helpdesk chose other MUI languages by the users requests.

    For example: a computer can have an English OS Language with a French MUI as the active desktop language, I can query for OS Language but this is not relevant.
    I need to do user-language-based software deployment .
    There is no other (AD-based, location, subnet,...) way to determine a users' language except for their own set MUI.

    I've been searching for days now how to create a query to determine the active MUI language but without any luck, no forum topics about it either.
    Is there a way to query for the active desktop language?

    Thanks in advance!
    Monday, February 8, 2010 10:44 AM

Answers

  • I think you have 2 ways to detect MUI client:
    1. Use Registry key to detect MUI client: For Vista/Win7 machines, you can modify the sms_def.mof to collect data in registry key HKLM\SYSTEM\CurrentControlSet\Control\MUI\UILanguages (the registry key is different for XP machines, it is under Control\Nls\MUILanguages). You can use the inventory data to find out the machines which installed MUI and then create a collection for these MUI machines.

    You can also send advertisement to run script on the machine to check these registry key value and return mif files. Then you can create collection based on the return mif files.

    The problem is: it just tell you that MUI get installed on these machine, but it will not tell you which UI language is current user using. From your description, the users have their own machines, I guess they may only install one foreign language UI, based on that you would be able to find out the foreign language that you want to install (but you may get problem if end user changes back to ENU UI or installed more than one MUI languages).


    2. Create an advertisement to call function and return UI Language: If you want to get the actual UI that current user using, I think you may use following function to get the information (It seems can meet your requirement, I did not try this function, you can try it out):

    http://msdn.microsoft.com/en-us/library/dd318137(VS.85).aspx

    GetUserDefaultUILanguage

    Returns the language identifier for the user UI language for the current user. If the current user has not set a language, GetUserDefaultUILanguage returns the preferred language set for the system. If there is no preferred language set for the system, then the system default UI language (also known as "install language") is returned.

    Windows Me, Windows 2000, Windows XP, Windows Server 2003: The GetUserDefaultUILanguage function retrieves the language identifier for the current user language. If MUI is not installed on the operating system, the function retrieves the default computer user interface language.

    An application can retrieve the language name using the GetUserPreferredUILanguages function.


    Above are the ways to detect the UI Language on the MUI client, but I think All Replies' comment is right, the UI language can be changed pretty often, so the best way for you would be enabling your program (MSI) to support multiple languages. The MSI files can contain multiple language resources, it detects current UI language to show right UI during installation; or program can provide language list to ask end user to pick the language for installation. But it would take some time to modify the program (seems not in your option now.)

    Anyway, this is my two cents and hope can do some help.

    Robert
    Tuesday, February 9, 2010 6:20 PM

All replies

  • That's a user based setting, so the active desktop language could change quite often. Collections are based on hardware inventory data, but users with different MUI languages might logon more frequently as HINV is run => so you could target the wrong clients.
    Just thinking out loud: Couldn't you use task sequences and conditions to determine which software to install?
    Monday, February 8, 2010 11:13 AM
    Moderator
  • That's a user based setting, so the active desktop language could change quite often. Collections are based on hardware inventory data, but users with different MUI languages might logon more frequently as HINV is run => so you could target the wrong clients.
    Just thinking out loud: Couldn't you use task sequences and conditions to determine which software to install?

    Practically all users have their own computer, even a laptop in most cases, I'm not concerned about that possibility tbh.

    I created a Package for each (non-MS, most in-house-dev) software with a Program for each language (=different MSI).
    Creating a collection per language with static membership is the only option I have atm since the OS Language isn't a valid reference, requiring huge initial setup and maintenance.
    So it's not primarily for OS Deployment but also in-house software releases, that's why I want to create a collection for each MUI language used in the company (99% Vista, 1% Win7).

    If anyone knows a better way to realise this (SCCM-automated, without having to create AD-groups per language or get the software altered)...shoot!
    Monday, February 8, 2010 12:05 PM
  • I think you have 2 ways to detect MUI client:
    1. Use Registry key to detect MUI client: For Vista/Win7 machines, you can modify the sms_def.mof to collect data in registry key HKLM\SYSTEM\CurrentControlSet\Control\MUI\UILanguages (the registry key is different for XP machines, it is under Control\Nls\MUILanguages). You can use the inventory data to find out the machines which installed MUI and then create a collection for these MUI machines.

    You can also send advertisement to run script on the machine to check these registry key value and return mif files. Then you can create collection based on the return mif files.

    The problem is: it just tell you that MUI get installed on these machine, but it will not tell you which UI language is current user using. From your description, the users have their own machines, I guess they may only install one foreign language UI, based on that you would be able to find out the foreign language that you want to install (but you may get problem if end user changes back to ENU UI or installed more than one MUI languages).


    2. Create an advertisement to call function and return UI Language: If you want to get the actual UI that current user using, I think you may use following function to get the information (It seems can meet your requirement, I did not try this function, you can try it out):

    http://msdn.microsoft.com/en-us/library/dd318137(VS.85).aspx

    GetUserDefaultUILanguage

    Returns the language identifier for the user UI language for the current user. If the current user has not set a language, GetUserDefaultUILanguage returns the preferred language set for the system. If there is no preferred language set for the system, then the system default UI language (also known as "install language") is returned.

    Windows Me, Windows 2000, Windows XP, Windows Server 2003: The GetUserDefaultUILanguage function retrieves the language identifier for the current user language. If MUI is not installed on the operating system, the function retrieves the default computer user interface language.

    An application can retrieve the language name using the GetUserPreferredUILanguages function.


    Above are the ways to detect the UI Language on the MUI client, but I think All Replies' comment is right, the UI language can be changed pretty often, so the best way for you would be enabling your program (MSI) to support multiple languages. The MSI files can contain multiple language resources, it detects current UI language to show right UI during installation; or program can provide language list to ask end user to pick the language for installation. But it would take some time to modify the program (seems not in your option now.)

    Anyway, this is my two cents and hope can do some help.

    Robert
    Tuesday, February 9, 2010 6:20 PM