如何获取操作系统的语言版本

        对于支持多语言版本的程序来说,可能需要知道用户操作系统的语言版本。比如在运行安装包时,需要根据当前系统的语言,将安装默认的语言设置为系统的语言。即中文简体的操作系统默认使用中文简体,英文操作系统则要使用英文。所以就需要获取当前系统的语言种类,那应该如何获取呢?应该使用哪个API来获取呢?

        系统提供了获取多个获取语言多个API函数:GetSystemDefaultLangID、GetUserDefaultLangID、GetSystemDefaultUILanguage和GetUserDefaultUILanguage。看上去这些函数都可以使用,到底应该使用那个呢?通过查阅MSDN,发现这几个还是有很大区别的,最终还是要使用GetUserDefaultUILanguage的

        GetSystemDefaultLangID在MSDN上的说明:

        Returns the language identifier for the system locale. This is the language used when displaying text in programs that do not support Unicode. It is set by the Administrator under Control Panel > Clock, Language, and Region> Administrative tab.  由说明可知,该函数获取的语言是控制面板 > 区域与语言选项 > 高级tab页中设置的支持的非Unicode语言,即如下图所示:

如何获取操作系统的语言版本_第1张图片


        GetUserDefaultLangID在MSDN上的说明:

        Returns the language identifier for the current user as set under Control Panel > Clock, Language, and Region > Formats tab > Format dropdown.  由说明可知,该函数获取的语言是控制面板 > 区域与语言选项 > 区域选项tab页中设置的标准和格式语言,即如下图所示:

如何获取操作系统的语言版本_第2张图片


        GetSystemDefaultUILanguage在MSDN上的说明:

        Retrieves the language identifier for the system default UI language of the operating system, also known as the "install language" on Windows Vista and later. For more information, see User Interface Language Management.


        GetUserDefaultUILanguage在MSDN上的说明:

        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. For more information about the user UI language, see User Interface Language Management.


        综上所述,GetSystemDefaultLangID和GetUserDefaultLangID获取的语言,受区域语言设置中的选项影响,所以这两个函数是不能用的。我们需要获取的是操作系统本身的语言版本。GetSystemDefaultUILanguage的应用场景较单一,使用GetUserDefaultUILanguage应该是最有效的。所以最终使用的是GetUserDefaultUILanguage函数。       

      附加说明:各种语言ID列表的查看

        到VC6对应的2001版本的msdn中搜索GetSystemDefaultLangID,通过页面中的链接找到“Language Identifiers”点进去,在弹出的页面中,找到“Table of Language Identifiers”即可。VS2008自带的msdn竟然找不到GetSystemDefaultLangID函数,所以有时这两个版本的MSDN帮助要混合着用。语言列表如下所示(截图中只有部分语言,全部列表可自行去查看):

如何获取操作系统的语言版本_第3张图片

你可能感兴趣的:(资料集)