在c#中获取操作系统语言

dnu*_*nur 34 c#

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

Nic*_*rey 62

像这样:

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 ;
}
Run Code Online (Sandbox Code Playgroud)

  • 例如,我用英语安装了Windows 7.后来我决定下载另一种语言的UI翻译,并将其配置为我的会话语言和新帐户默认语言.我想要我的应用程序,当配置文件不存在并且正在创建(可能在首次运行或安装期间)以显示该辅助语言的文本,而不是英语.我应该使用InstalledUICulture还是CurrenUICulture? (5认同)
  • @lukad:您可能想要 **[阅读“CultureInfo.InstalledUICulture”的文档](https://learn.microsoft.com/en-us/dotnet/api/system.globalization.cultureinfo.installeduiculture?view=netframework -4.8)** — 它被定义为“_The `CultureInfo`,表示随操作系统安装的区域性...在本地化操作系统中,例如日语版的 Windows,此属性返回操作的区域性系统。此属性相当于 Windows API 中的“GetSystemDefaultUILanguage”。_” (2认同)

the*_*ng2 20

也许为了使这三种文化安装得更清楚(或不),CurrentUI和CUrrent设置得不那么明显.

如果在Englisk UK系统的控制面板(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);
Run Code Online (Sandbox Code Playgroud)

因此:

Installed Language Info:en-GB
Current UI Language Info: en-GB
Current Language Info: de-CH
Run Code Online (Sandbox Code Playgroud)

意味着Installed不会受到影响,但CurrentUI和Current可能会有所不同.其中CurrentUI可能意味着操作系统的本地化,而当前仅说明数字日期和时间的显示方式.

我经常遇到安装程序,将Current作为首选语言,如果使用CurrentUI,它可能会提供更一致的体验.

  • 此外,“固定文化”对于某些事情也很重要。IE 内置帐户名称:英语:“BUILTIN\Administrators”与德语“VORDEFINIERT\Administratoren”。无论用户实际使用哪种语言,这些名称都遵循已安装的文化本地化。 (3认同)

Han*_*ant 6

using System;

class Program {
    static void Main(string[] args) {
        Console.WriteLine("You are speaking {0}",
            System.Globalization.CultureInfo.CurrentCulture.EnglishName);
        Console.ReadLine();
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 不完全的。这仅显示应用程序当前使用的区域设置。它可能是系统的默认值,但不一定如此。我们通常编写双语应用程序,母语和英语,实际上,当前只是当前设置,它控制应用程序如何查找本地化资源。即使在运行时,它也可以很容易地更改。尼古拉斯的回答指出了正确的事情(我的意思是,关于原始海报的问题。毫无疑问你的代码没问题,它只是检查不同的东西) - > http://msdn.microsoft.com/en-us/library/系统.全球化.cultureinfo.installeduiculture.aspx (3认同)
  • 不,汉斯。我的母语不是英语,但我更喜欢使用英语的操作系统和所有应用程序。但是,我确实更改了系统区域设置以受益于区域日期/时间和数字格式。当软件查看我当前的区域设置并尝试以我的母语显示资源时,这是不一致且烦人的。 (3认同)