C# 用c语言获取操作系统语言#

C# 用c语言获取操作系统语言#,c#,C#,如何使用Win32#U OperatingSystem类和c#中的OSLanguage变量获取当前的操作系统语言? 谢谢..使用C#,您可以使用类。属性以获取系统区域性和用户区域性。如下所示: using System; class Program { static void Main(string[] args) { Console.WriteLine("You are speaking {0}", System.Globalization.C

如何使用Win32#U OperatingSystem类和c#中的OSLanguage变量获取当前的操作系统语言? 谢谢..

使用C#,您可以使用类。属性以获取系统区域性和用户区域性。

如下所示:

using System;

class Program {
    static void Main(string[] args) {
        Console.WriteLine("You are speaking {0}",
            System.Globalization.CultureInfo.CurrentCulture.EnglishName);
        Console.ReadLine();
    }
}
static int Main( string[] argv )
{
    CultureInfo ci = CultureInfo.InstalledUICulture ;

    Console.WriteLine("Default Language Info:" ) ;
    Console.WriteLine("* Name: {0}"                    , ci.Name ) ;
    Console.WriteLine("* Display Name: {0}"            , ci.DisplayName ) ;
    Console.WriteLine("* English Name: {0}"            , ci.EnglishName ) ;
    Console.WriteLine("* 2-letter ISO Name: {0}"       , ci.TwoLetterISOLanguageName ) ;
    Console.WriteLine("* 3-letter ISO Name: {0}"       , ci.ThreeLetterISOLanguageName ) ;
    Console.WriteLine("* 3-letter Win32 API Name: {0}" , ci.ThreeLetterWindowsLanguageName ) ;

    return 0 ;
}

也许为了让这一点更清楚(或不清楚),安装了三种文化,CurrentUI和Current是以一种不太明显的方式设置的

如果在英国英语系统(Windows 10技术预览版)的控制面板中,我指定了德语(瑞士)日期/时间格式,则以下程序的输出:

        CultureInfo ci = CultureInfo.InstalledUICulture;
        Console.WriteLine("Installed Language Info:{0}", ci.Name);
        ci = CultureInfo.CurrentUICulture;
        Console.WriteLine("Current UI Language Info: {0}", ci.Name);
        ci = CultureInfo.CurrentCulture;
        Console.WriteLine("Current Language Info: {0}", ci.Name);
因此:

Installed Language Info:en-GB
Current UI Language Info: en-GB
Current Language Info: de-CH
这意味着Installed不受影响,但在install时设置,但CurrentUI和Current可以不同。其中CurrentUI表示操作系统的本地化(语言设置),Current仅表示数字日期和时间的显示方式(区域设置)


我经常会遇到一些安装程序,这些程序采用当前的首选语言,如果改用CurrentUI,可能会给最终用户带来更一致的体验。

它必须是
Win32\u OperatingSystem
?有一秒钟,我想这是为了获得操作系统所用的编程语言。不是吗对。只有尼古拉斯的答案是正确的。您提到的两个属性都是“暂时的”,应用程序和用户可以自由更改它们以满足其当前需要。请检查姐妹线程:问题正是关于语言的这种暂时性,通过使用“当前”一词暗示的。因此,尼古拉斯·奥恩瑟(Nicolas awnser)不幸是错误的,(我的也是完整的)不完全正确。这仅显示应用程序当前使用的区域设置。它可能是系统的默认值,但不必如此。我们通常编写双语应用程序,母语和英语,实际上,当前设置就是当前设置,它控制应用程序如何查找本地化资源。它可能很容易更改,即使在运行时也是如此。Nicholas的回答指出了正确的事情(我的意思是,关于原始海报的问题。毫无疑问,您的代码是正确的,它只是检查了一个不同的东西)->很明显,如果用户更改了系统区域设置,那么她就不再说同一种语言了。不,Hans。我不是以英语为母语的人,但我更喜欢用英语使用操作系统和所有应用程序。但是,我确实更改了系统区域设置,以受益于区域日期/时间和数字格式。当软件查看我当前的语言环境并试图用我的母语显示资源时,这是不一致的,令人讨厌的。这就像去中国度假,希望每个人都能理解你说的斯瓦希里语。这只会产生很多恼怒的中国人。如果你的软件没有Visual Studio的工具+选项、环境、国际设置和语言,那么你需要购买更好的软件。例如,我用英语安装了Windows 7。后来,我决定下载另一种语言的UI翻译,并将其配置为我的会话语言和新帐户默认语言。我希望我的应用程序在配置文件不存在且正在创建时(可能在第一次运行或安装时)显示该第二语言的文本,而不是英语。我应该使用InstalledUlture还是CurrenUlture?CurrentUI是(更近期的)用户决定。所以你应该这样做。这并没有给你Windows默认的显示语言,而是给你用户的区域,如果你想将这些数据用于翻译目的,这是错误的。@lukad:你可能想-其中定义为“表示随操作系统一起安装的区域性的
CultureInfo
。”。在本地化的操作系统(如日文版Windows)中,此属性返回操作系统的区域性。此属性相当于Windows API中的
GetSystemDefaultUILanguage
。”