CultureInfo.DefaultThreadCurrentUICulture CultureInfo.DefaultThreadCurrentUICulture CultureInfo.DefaultThreadCurrentUICulture CultureInfo.DefaultThreadCurrentUICulture Property

Определение

Возвращает или задает язык и региональные параметры пользовательского интерфейса, используемые по умолчанию для потоков в текущем домене приложения.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

Значение свойства

Язык и региональные параметры по умолчанию пользовательского интерфейса для потоков в текущем домене приложения или значение null, если текущий язык и региональные параметры пользовательского интерфейса системы являются заданными по умолчанию для потока пользовательского интерфейса в домене приложения.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.

Исключения

В операции задания значение свойства Name является недопустимым.In a set operation, the Name property value is invalid.

Примеры

В следующем примере показано поведение по умолчанию .NET Framework при определении текущего языка и региональных параметров нового потока.The following example illustrates the default behavior of the .NET Framework in defining the current culture of a new thread. Он использует ресурсы на английском и русском языке.It uses English and Russian language resources. Следующий текстовый файл с именем Гритингстрингс. txt содержит языковые ресурсы на английском языке:The following text file named GreetingStrings.txt contains the English language resources:

greeting =Hello again!  
newGreeting=Hello!  

Он компилируется в двоичный RESOURCES-файл с именем Гритингстрингс. Resources с помощью генератора файлов ресурсов , используя следующую команду.It is compiled to a binary .resources file named GreetingStrings.resources by using the Resource File Generator with the following command.

resgen greetingstrings.txt  

Следующий текстовый файл с именем GreetingStrings.ru-RU. txt содержит ресурсы на русском языке:The following text file named GreetingStrings.ru-RU.txt contains the Russian language resources:

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

Он компилируется в файл binary. Resources с именем GreetingStrings.ru-RU. Resources, используя генератор файлов ресурсов с помощью следующей команды.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  

Код приложения, показанный ниже, находится в файле с именем example1. vb или Example1.cs.The application code, which is shown below, resides in a file named Example1.vb or Example1.cs. Он компилируется в исполняемый файл с помощью следующей команды для компилятора Visual Basic:It is compiled to an executable by using the following command for the Visual Basic compiler:

vbc Example1.vb /resource:GreetingStrings.resources  

Для C# компилятора команда аналогична:For the C# compiler, the command is similar:

csc /resource:GreetingStrings.resources Example1.cs  

При этом создается сборка, включающая исполняемый код примера и ресурсы для его резервного языка и региональных параметров.This creates an assembly that includes the example's executable code along with the resources for its fallback culture. Также можно использовать Компоновщик сборок для создания файла ресурсов для языка и региональных параметров "Русский (Россия)" с помощью следующей команды: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  

При запуске этот пример устанавливает текущий язык и региональные параметры пользовательского интерфейса в Русский (Россия) во всех системах, за исключением тех, для которых язык и региональные параметры по умолчанию уже Русский (Россия).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). Если язык и региональные параметры по умолчанию уже Русский (Россия), код задает для текущего языка и региональных параметров текущий язык и региональные параметры пользовательского интерфейса значение Английский (США).If the default system culture is already Russian (Russia), the code sets the current culture and the current UI culture to English (United States). Затем он вызывает ShowGreeting подпрограммы, которая отображает простую строку при первом вызове, и немного другую строку при последующих вызовах метода.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. Затем создается новый поток, который также выполняет 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!

Как видно из выходных данных примера, при запуске примера на компьютере, для которого используется английский язык (США), основной поток отображает свою первоначальную строку на русском языке.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. Однако поскольку язык и региональные параметры рабочего потока являются производными от текущей культуры системы Windows, а не текущего языка и региональных параметров приложения, Рабочий поток отображает свою строку на английском языке.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.

В следующем примере используются DefaultThreadCurrentCulture свойства и DefaultThreadCurrentUICulture для определения текущего языка и региональных параметров и текущего языка и региональных параметров пользовательского интерфейса нового потока приложения.The following example uses the DefaultThreadCurrentCulture and DefaultThreadCurrentUICulture properties to define the current culture and current UI culture of a new application thread.

В примере используются те же файлы ресурсов, что и в предыдущем примере.The example uses the same resources files as the previous example. Команды для компиляции и внедрения локализованных ресурсов русского языка в вспомогательную сборку также идентичны, за исключением того, что имя исполняемой сборки изменяется.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.

При запуске этот пример устанавливает текущий язык и региональные параметры пользовательского интерфейса в Русский (Россия) во всех системах, за исключением тех, для которых язык и региональные параметры по умолчанию уже Русский (Россия).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). Если язык и региональные параметры по умолчанию уже Русский (Россия), он устанавливает для текущего языка и региональных параметров текущий язык и региональные параметры пользовательского интерфейса значение Английский (США).If the default system culture is already Russian (Russia), it sets the current culture and the current UI culture to English (United States). Затем он вызывает ShowGreeting подпрограммы, которая отображает простую строку при первом вызове, и немного другую строку при последующих вызовах метода.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. Затем создается новый поток, который также выполняет 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:
'       Привет!
'       Еще раз привет!

Как видно из выходных данных примера, при запуске примера на компьютере, для которого используется английский язык (США), основной поток и рабочий поток отображают свои строки на русском языке.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.

Комментарии

.NET Framework 4.NET Framework 4 В и предыдущих версиях по умолчанию для языка и региональных параметров пользовательского интерфейса для всех потоков задана культура системы 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. Для приложений, текущий язык пользовательского интерфейса которых отличается от языка и региональных параметров по умолчанию, это поведение часто нежелательно.For applications whose current UI culture differs from the default system culture, this behavior is often undesirable. .NET Framework 4.5.NET Framework 4.5 ВсвойствопозволяетопределитьязыкирегиональныепараметрыпользовательскогоинтерфейсапоумолчаниюдлявсехDefaultThreadCurrentUICulture потоков в домене приложения.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.

Важно!

Если язык и региональные параметры пользовательского интерфейса не заданы явным образом для всех существующих потоков, выполняющихся в домене DefaultThreadCurrentUICulture приложения, установка свойства также изменяет язык и региональные параметры этих потоков.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. Однако если эти потоки выполняются в другом домене приложения, их язык и региональные параметры определяются DefaultThreadCurrentUICulture свойством в этом домене приложения или, если значение по умолчанию не определено по стандартному языку и региональным параметрам системы.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. Поэтому рекомендуется всегда явно задавать язык и региональные параметры для основного потока приложения и не полагаться на DefaultThreadCurrentUICulture свойство для определения языка и региональных параметров основного потока приложения.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.

Если он не задан явно, значение DefaultThreadCurrentUICulture свойства равно null, а текущий язык и региональные параметры всех потоков в домене приложения, которым не назначен явный язык и региональные параметры, определяются культурой системы 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.

Дополнительные сведения о языках и региональных параметрах, потоках и доменах приложений см. в разделах "Культура и потоки" и "языки и региональные 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.

Применяется к

Дополнительно