CultureInfo.DefaultThreadCurrentUICulture Vlastnost

Definice

Získá nebo nastaví výchozí jazykovou verzi uživatelského rozhraní pro vlákna v aktuální doméně aplikace.Gets or sets the default UI culture for threads in the current application domain.

public:
 static property System::Globalization::CultureInfo ^ DefaultThreadCurrentUICulture { System::Globalization::CultureInfo ^ get(); void set(System::Globalization::CultureInfo ^ value); };
public static System.Globalization.CultureInfo DefaultThreadCurrentUICulture { get; set; }
member this.DefaultThreadCurrentUICulture : System.Globalization.CultureInfo with get, set
Public Shared Property DefaultThreadCurrentUICulture As CultureInfo

Hodnota vlastnosti

Výchozí jazyková verze uživatelského rozhraní pro vlákna v aktuální doméně aplikace nebo null, pokud je aktuální jazyková verze uživatelského rozhraní systému výchozí jazykovou verzí uživatelského rozhraní vlákna v doméně aplikace.The default UI culture for threads in the current application domain, or null if the current system UI culture is the default thread UI culture in the application domain.

Výjimky

V operaci set není hodnota vlastnosti Name platná.In a set operation, the Name property value is invalid.

Příklady

Následující příklad ilustruje výchozí chování .NET Framework při definování aktuální jazykové verze nového vlákna.The following example illustrates the default behavior of the .NET Framework in defining the current culture of a new thread. Používá anglické a ruské jazykové prostředky.It uses English and Russian language resources. Následující textový soubor s názvem GreetingStrings. txt obsahuje anglické jazykové prostředky:The following text file named GreetingStrings.txt contains the English language resources:

greeting =Hello again!  
newGreeting=Hello!  

Je zkompilován do binárního souboru. Resources s názvem GreetingStrings. Resources pomocí následujícího příkazu generátor zdrojového souboru .It is compiled to a binary .resources file named GreetingStrings.resources by using the Resource File Generator with the following command.

resgen greetingstrings.txt  

Následující textový soubor s názvem GreetingStrings.ru-RU. txt obsahuje české jazykové prostředky:The following text file named GreetingStrings.ru-RU.txt contains the Russian language resources:

greeting=Еще раз привет!  
newGreeting=Привет!  

Je zkompilován do binárního souboru. Resources s názvem GreetingStrings.ru-RU. Resources pomocí následujícího příkazu generátor zdrojového souboru .It is compiled to a binary .resources file named GreetingStrings.ru-RU.resources by using the Resource File Generator with the following command.

resgen greetingstrings.ru-RU.txt  

Kód aplikace, který je zobrazený níže, se nachází v souboru s názvem priklad1. vb nebo Example1.cs.The application code, which is shown below, resides in a file named Example1.vb or Example1.cs. Je zkompilován do spustitelného souboru pomocí následujícího příkazu pro Visual Basic kompilátor:It is compiled to an executable by using the following command for the Visual Basic compiler:

vbc Example1.vb /resource:GreetingStrings.resources  

Pro C# kompilátor je příkaz podobný:For the C# compiler, the command is similar:

csc /resource:GreetingStrings.resources Example1.cs  

Tím se vytvoří sestavení, které obsahuje spustitelný kód příkladu, spolu s prostředky pro jeho záložní jazykovou verzi.This creates an assembly that includes the example's executable code along with the resources for its fallback culture. Můžete také použít linker sestavení k vytvoření souboru prostředků pro jazykovou verzi ruštiny (Rusko) pomocí následujícího příkazu:You can also use the Assembly Linker to create the resource file for the Russian (Russia) culture with the following command:

>al /embed:greetingstrings.ru-RU.resources /c:ru-RU /template:example1.exe /out:ru-RU\Example1.resources.dll  

Při spuštění příklad nastaví aktuální jazykovou verzi a aktuální jazykovou verzi uživatelského rozhraní na ruština (Rusko) ve všech systémech kromě těch, na kterých je již ruština výchozí jazyková verze systému (Rusko).At startup, the example sets the current culture and the current UI culture to Russian (Russia) on all systems except those on which the default system culture is already Russian (Russia). Pokud je výchozí jazyková verze systému již ruština (Rusko), kód nastaví aktuální jazykovou verzi a aktuální jazykovou verzi uživatelského rozhraní na angličtinu (USA).If the default system culture is already Russian (Russia), the code sets the current culture and the current UI culture to English (United States). Poté volá rutinu ShowGreeting, která zobrazuje jednoduchý řetězec při prvním volání a mírně odlišný řetězec při následném volání metody.It then calls the ShowGreeting routine, which displays a simple string the first time it is called and a slightly different string on subsequent method calls. Dále vytvoří nové vlákno, které také spustí rutinu ShowGreeting.Next, it creates a new thread, which also executes the ShowGreeting routine.

using System;
using System.Globalization;
using System.Reflection;
using System.Resources;
using System.Threading;

[assembly:NeutralResourcesLanguageAttribute("en-US")]

public class Example
{
   private static int nGreetings = 0;
   private static ResourceManager rm;

   public static void Main()
   {
      AppDomain domain = AppDomain.CurrentDomain;
      rm = new ResourceManager("GreetingStrings", 
                               typeof(Example).Assembly);
                  
      CultureInfo culture = null;
      if (Thread.CurrentThread.CurrentUICulture.Name == "ru-RU")
         culture = CultureInfo.CreateSpecificCulture("en-US");
      else
         culture = CultureInfo.CreateSpecificCulture("ru-RU");

      Thread.CurrentThread.CurrentCulture = culture;
      Thread.CurrentThread.CurrentUICulture = culture;

      ShowGreeting();
      Thread.Sleep(1000);

      Thread workerThread = new Thread(Example.ShowGreeting);
      workerThread.Start();
   }

   private static void ShowGreeting()
   {
      string greeting = nGreetings == 0 ? rm.GetString("newGreeting") :
                                          rm.GetString("greeting");
      nGreetings++;
      Console.WriteLine("{0}", greeting);   
   }
}
// The example displays the following output:
//       Привет!
//       Hello again!
Imports System.Globalization
Imports System.Reflection
Imports System.Resources
Imports System.Threading

<Assembly:NeutralResourcesLanguageAttribute("en-US")>

Public Class Example
   Private Shared nGreetings As Integer = 0
   Private Shared rm As ResourceManager

   Public Shared Sub Main()
      Dim domain As AppDomain = AppDomain.CurrentDomain
      rm = New ResourceManager("GreetingStrings", 
                               GetType(Example).Assembly)
                  
      Dim culture As CultureInfo = Nothing
      If Thread.CurrentThread.CurrentUICulture.Name = "ru-RU" Then
         culture = CultureInfo.CreateSpecificCulture("en-US")
      Else
         culture = CultureInfo.CreateSpecificCulture("ru-RU")
      End If   
      Thread.CurrentThread.CurrentCulture = culture
      Thread.CurrentThread.CurrentUICulture = culture

      ShowGreeting()
      Thread.Sleep(1000)

      Dim workerThread As New Thread(AddressOf Example.ShowGreeting)
      workerThread.Start()
   End Sub
   
   Private Shared Sub ShowGreeting()
      Dim greeting As String = CStr(IIf(nGreetings = 0, 
                                        rm.GetString("newGreeting"),
                                        rm.GetString("greeting")))
      nGreetings += 1
      Console.WriteLine("{0}", greeting)   
   End Sub
End Class
' The example displays the following output:
'       Привет!
'       Hello again!

Jak ukazuje výstup z příkladu, když je příklad spuštěn v počítači, jehož systémová jazyková verze je English (USA), hlavní vlákno zobrazí svůj počáteční řetězec v ruštině.As the output from the example shows, when the example is run on a computer whose system culture is English (United States), the main thread displays its initial string in Russian. Vzhledem k tomu, že jazyková verze pracovního vlákna je odvozena z aktuální jazykové verze systému Windows namísto aktuální jazykové verze aplikace, zobrazuje pracovní vlákno svůj řetězec v angličtině.However, because the worker thread's culture is derived from the current Windows system culture rather than the application's current culture, the worker thread displays its string in English.

Následující příklad používá vlastnosti DefaultThreadCurrentCulture a DefaultThreadCurrentUICulture k definování aktuální jazykové verze a aktuální jazykové verze uživatelského rozhraní nového vlákna aplikace.The following example uses the DefaultThreadCurrentCulture and DefaultThreadCurrentUICulture properties to define the current culture and current UI culture of a new application thread.

V tomto příkladu se používají stejné soubory prostředků jako v předchozím příkladu.The example uses the same resources files as the previous example. Příkazy pro zkompilování a vložení lokalizovaných prostředků ruského jazyka do satelitního sestavení jsou také identické, s tím rozdílem, že se změní název spustitelného sestavení.The commands to compile and to embed the localized Russian language resources into a satellite assembly are also identical, except that the name of the executable assembly changes.

Při spuštění příklad nastaví aktuální jazykovou verzi a aktuální jazykovou verzi uživatelského rozhraní na ruština (Rusko) ve všech systémech kromě těch, na kterých je již ruština výchozí jazyková verze systému (Rusko).At startup, the example sets the current culture and the current UI culture to Russian (Russia) on all systems except those on which the default system culture is already Russian (Russia). Pokud je výchozí jazyková verze systému již ruština (Rusko), nastaví aktuální jazykovou verzi a aktuální jazykovou verzi uživatelského rozhraní na angličtinu (USA).If the default system culture is already Russian (Russia), it sets the current culture and the current UI culture to English (United States). Poté volá rutinu ShowGreeting, která zobrazuje jednoduchý řetězec při prvním volání a mírně odlišný řetězec při následném volání metody.It then calls the ShowGreeting routine, which displays a simple string the first time it is called and a slightly different string on subsequent method calls. Dále vytvoří nové vlákno, které také spustí rutinu ShowGreeting.Next, it creates a new thread, which also executes the ShowGreeting routine.

using System;
using System.Globalization;
using System.Reflection;
using System.Resources;
using System.Threading;

[assembly:NeutralResourcesLanguageAttribute("en-US")]

public class Example
{
   private static int nGreetings = 0;
   private static ResourceManager rm;

   public static void Main()
   {
      AppDomain domain = AppDomain.CurrentDomain;
      rm = new ResourceManager("GreetingStrings", 
                               typeof(Example).Assembly);
                  
      CultureInfo culture = null;
      if (Thread.CurrentThread.CurrentUICulture.Name == "ru-RU")
         culture = CultureInfo.CreateSpecificCulture("en-US");
      else
         culture = CultureInfo.CreateSpecificCulture("ru-RU");

      CultureInfo.DefaultThreadCurrentCulture = culture;
      CultureInfo.DefaultThreadCurrentUICulture = culture;

      Thread.CurrentThread.CurrentCulture = culture;
      Thread.CurrentThread.CurrentUICulture = culture;

      ShowGreeting();
      Thread.Sleep(1000);

      Thread workerThread = new Thread(Example.ShowGreeting);
      workerThread.Start();
   }

   private static void ShowGreeting()
   {
      string greeting = nGreetings == 0 ? rm.GetString("newGreeting") :
                                          rm.GetString("greeting");
      nGreetings++;
      Console.WriteLine("{0}", greeting);   
   }
}
// The example displays the following output:
//       Привет!
//       Еще раз привет!
Imports System.Globalization
Imports System.Reflection
Imports System.Resources
Imports System.Threading

<Assembly:NeutralResourcesLanguageAttribute("en-US")>

Public Class Example
   Private Shared nGreetings As Integer = 0
   Private Shared rm As ResourceManager

   Public Shared Sub Main()
      Dim domain As AppDomain = AppDomain.CurrentDomain
      rm = New ResourceManager("GreetingStrings", 
                               GetType(Example).Assembly)
                  
      Dim culture As CultureInfo = Nothing
      If Thread.CurrentThread.CurrentUICulture.Name = "ru-RU" Then
         culture = CultureInfo.CreateSpecificCulture("en-US")
      Else
         culture = CultureInfo.CreateSpecificCulture("ru-RU")
      End If   
      CultureInfo.DefaultThreadCurrentCulture = culture
      CultureInfo.DefaultThreadCurrentUICulture = culture
       
      Thread.CurrentThread.CurrentCulture = culture
      Thread.CurrentThread.CurrentUICulture = culture

      ShowGreeting()
      Thread.Sleep(1000)

      Dim workerThread As New Thread(AddressOf Example.ShowGreeting)
      workerThread.Start()
   End Sub
   
   Private Shared Sub ShowGreeting()
      Dim greeting As String = CStr(IIf(nGreetings = 0, 
                                        rm.GetString("newGreeting"),
                                        rm.GetString("greeting")))
      nGreetings += 1
      Console.WriteLine("{0}", greeting)   
   End Sub
End Class
' The example displays the following output:
'       Привет!
'       Еще раз привет!

Jak ukazuje výstup z příkladu, když je příklad spuštěn v počítači, jehož systémová jazyková verze je English (USA), hlavní vlákno i pracovní vlákno zobrazí své řetězce v ruském jazyce.As the output from the example shows, when the example is run on a computer whose system culture is English (United States), both the main thread and the worker thread display their strings in the Russian language.

Poznámky

V .NET Framework 4.NET Framework 4 a předchozích verzích se ve výchozím nastavení jazyková verze uživatelského rozhraní všech vláken nastavuje na jazykovou verzi systému Windows.In the .NET Framework 4.NET Framework 4 and previous versions, by default, the UI culture of all threads is set to the Windows system culture. U aplikací, jejichž aktuální jazyková verze uživatelského rozhraní se liší od výchozí jazykové verze systému, je toto chování často nežádoucí.For applications whose current UI culture differs from the default system culture, this behavior is often undesirable. V .NET Framework 4.5.NET Framework 4.5vlastnost DefaultThreadCurrentUICulture umožňuje definovat výchozí jazykovou verzi uživatelského rozhraní všech vláken v doméně aplikace.In the .NET Framework 4.5.NET Framework 4.5, the DefaultThreadCurrentUICulture property lets you define the default UI culture of all threads in an application domain.

Důležité

Pokud jste neexplicitně nastavili jazykovou verzi uživatelského rozhraní pro všechna existující vlákna spuštěná v doméně aplikace, nastavení vlastnosti DefaultThreadCurrentUICulture také změní jazykovou verzi těchto vláken.If you have not explicitly set the UI culture of any existing threads executing in an application domain, setting the DefaultThreadCurrentUICulture property also changes the culture of these threads. Pokud jsou však tato vlákna spouštěna v jiné doméně aplikace, jejich jazyková verze je definována vlastností DefaultThreadCurrentUICulture v dané doméně aplikace nebo, pokud není definována žádná výchozí hodnota, výchozí systémovou jazykovou verzi systému.However, if these threads execute in another application domain, their culture is defined by the DefaultThreadCurrentUICulture property in that application domain or, if no default value is defined, by the default system culture. Z tohoto důvodu doporučujeme, abyste vždy explicitně nastavili jazykovou verzi hlavního vlákna aplikace a nespoléhá na vlastnost DefaultThreadCurrentUICulture k definování jazykové verze hlavního vlákna aplikace.Because of this, we recommend that you always explicitly set the culture of your main application thread and do not rely on the DefaultThreadCurrentUICulture property to define the culture of the main application thread.

Pokud není explicitně nastaveno, je hodnota vlastnosti DefaultThreadCurrentUICulture nulla aktuální jazyková verze všech vláken v doméně aplikace, které nebyla přiřazena explicitní jazyková verze, je definována výchozí jazykovou verzí systému Windows.Unless it is set explicitly, the value of the DefaultThreadCurrentUICulture property is null, and the current culture of all threads in an application domain that have not been assigned an explicit culture is defined by the default Windows system culture.

Další informace o jazykových verzích, vláknech a doménách aplikací naleznete v částech jazyková verze a vlákna a domény aplikace na referenční stránce CultureInfo.For more information about cultures, threads, and application domains, see the "Culture and threads" and "Culture and application domains" sections in the CultureInfo reference page.

Platí pro

Viz také