代码改变世界

几种获取操作系统语言的方法及其相似点与不同点

2012-12-03 15:07  无聊玩博客  阅读(1513)  评论(1编辑  收藏  举报

        [DllImport("kernel32.dll", EntryPoint = "GetSystemDefaultLCID")]

        public static extern ushort GetSystemDefaultLCID();//OS 系统自己的语言(区域-管理)

        [DllImport("kernel32.dll", EntryPoint = "GetSystemDefaultLangID")]

        public static extern ushort GetSystemDefaultLangID();//OS 当前选择的默认语言(区域-管理)

        [DllImport("kernel32.dll", EntryPoint = "GetUserDefaultLangID")]

        static extern ushort GetUserDefaultLangID();//用户通过控制面板设置(区域-格式)的语言

        [DllImport("kernel32.dll", EntryPoint = "GetUserDefaultLCID")]

        static extern ushort GetUserDefaultLCID();//用户通过控制面板设置(区域-格式)的语言

前面2个都可以通过“控制面板-区域-管理”修改,操作系统转码是通过这里实现,例如将这里改成简体中文,但文件资源是繁体就会出现乱码,无关安装那种语言的操作系统,后面2个可以通过“控制面板-区域-格式”修改

 这四个方法的返回值可参照:各国语言代码大全Locale ID (LCID) Chart //  http://blog.csdn.net/xiaogelee/article/details/2487858 ;

     string UIname = System.Globalization.CultureInfo.CurrentUICulture.Name;//zh-TW

     string name = System.Globalization.CultureInfo.CurrentCulture.Name;//zh-TW

   这2个方法在metro应该商店中返回值我还没有验证出来,但有个现象是我的系统简体中文,将系统语言(“控制面板-区域-管理”)修改成中文台湾(繁体中文)返回值是zh-TW;但将系统语言改成英文(美国)是返回值是zh-CN,修改控制面板-区域-格式没有变化;  在普通的控制台程序中 string name = System.Globalization.CultureInfo.CurrentCulture.Name; name会随着“控制面板-区域-格式”中设置的变化而变化,string UIname = System.Globalization.CultureInfo.CurrentUICulture.Name;UIname是指操作系统的安装语言,与在控制面板设置无关。