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

定義

現在のアプリケーション ドメイン内のスレッドの既定 UI カルチャを取得または設定します。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

プロパティ値

現在のアプリケーション ドメイン内のスレッドの既定 UI カルチャ、または現在のシステム UI カルチャがアプリケーション ドメイン内の既定スレッド UI カルチャである場合は nullThe 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. GreetingStrings.txt という名前の次のテキスト ファイルには、英語の言語リソースが含まれています。The following text file named GreetingStrings.txt contains the English language resources:

greeting =Hello again!  
newGreeting=Hello!  

使用して GreetingStrings.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 という名前にはには、ロシア語の言語リソースが含まれています。The following text file named GreetingStrings.ru-RU.txt contains the Russian language resources:

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

使用して GreetingStrings.ru RU.resources をという名前の .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  

起動時に、例では、現在のカルチャと、現在の UI カルチャをロシア語 (ロシア) に設定を既定のシステム カルチャはロシア既にものを除くすべてのシステム (ロシア)。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). システムの既定のカルチャが既にある場合ロシア語 (ロシア)、コードのセット、現在のカルチャと現在の UI カルチャ英語 (米国) にします。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.

次の例では、DefaultThreadCurrentCultureDefaultThreadCurrentUICulture現在のカルチャと新しいアプリケーション スレッドの現在の UI カルチャを定義するプロパティ。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.

起動時に、例では、現在のカルチャと、現在の UI カルチャをロシア語 (ロシア) に設定を既定のシステム カルチャはロシア既にものを除くすべてのシステム (ロシア)。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). システムの既定のカルチャはロシア語が既に場合 (ロシア)、設定、現在のカルチャと、現在の UI カルチャを英語 (米国) にします。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以前のバージョンでは、既定では、すべてのスレッド UI カルチャに設定されて、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. 現在の UI カルチャは、システムの既定のカルチャによって異なります。 アプリケーションでは、この動作は多くの場合、望ましくありません。For applications whose current UI culture differs from the default system culture, this behavior is often undesirable. .NET Framework 4.5.NET Framework 4.5DefaultThreadCurrentUICultureプロパティを使用して、アプリケーション ドメイン内のすべてのスレッドの既定 UI カルチャを定義できます。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.

重要

UI カルチャを明示的に設定していない場合のアプリケーション ドメインの設定で実行する既存のすべてのスレッド、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.

適用対象

こちらもご覧ください