CultureInfo.CurrentUICulture CultureInfo.CurrentUICulture CultureInfo.CurrentUICulture CultureInfo.CurrentUICulture Property

定義

実行時にカルチャ固有のリソースを参照するためにリソース マネージャーによって使用される現在のユーザー インターフェイスのカルチャを表す CultureInfo オブジェクトを取得または設定します。Gets or sets the CultureInfo object that represents the current user interface culture used by the Resource Manager to look up culture-specific resources at run time.

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

プロパティ値

実行時にカルチャ固有のリソースを検索するためにリソース マネージャーで使用されるカルチャ。The culture used by the Resource Manager to look up culture-specific resources at run time.

例外

プロパティが null に設定されています。The property is set to null.

プロパティが、リソース ファイルの検索に使用できないカルチャ名に設定されています。The property is set to a culture name that cannot be used to locate a resource file. リソース ファイル名に使用できるのは、文字、数字、ハイフン、またはアンダースコアのみです。Resource filenames can include only letters, numbers, hyphens, or underscores.

次のコード例を変更する方法を示します、CurrentCultureCurrentUICulture現在のスレッド。The following code example demonstrates how to change the CurrentCulture and CurrentUICulture of the current thread.

using namespace System;
using namespace System::Globalization;
using namespace System::Threading;

int main()
{
   // Display the name of the current thread culture.
   Console::WriteLine("CurrentCulture is {0}.", CultureInfo::CurrentCulture->Name);
   
   // Change the current culture to th-TH.
   CultureInfo::CurrentCulture = gcnew CultureInfo("th-TH",false);
   Console::WriteLine("CurrentCulture is now {0}.", CultureInfo::CurrentCulture->Name);
   
   // Displays the name of the CurrentUICulture of the current thread.
   Console::WriteLine("CurrentUICulture is {0}.", CultureInfo::CurrentCulture->Name);
   
   // Changes the CurrentUICulture of the current thread to ja-JP.
   CultureInfo::CurrentUICulture = gcnew CultureInfo("ja-JP",false);
   Console::WriteLine("CurrentUICulture is now {0}.", CultureInfo::CurrentCulture->Name);
}
// The example displays the following output:
//       CurrentCulture is en-US.
//       CurrentCulture is now th-TH.
//       CurrentUICulture is en-US.
//       CurrentUICulture is now ja-JP.
using System;
using System.Globalization;
using System.Threading;

public class Example
{
   public static void Main()  
   {
      // Display the name of the current thread culture.
      Console.WriteLine("CurrentCulture is {0}.", CultureInfo.CurrentCulture.Name);

      // Change the current culture to th-TH.
      CultureInfo.CurrentCulture = new CultureInfo("th-TH", false);
      Console.WriteLine("CurrentCulture is now {0}.", CultureInfo.CurrentCulture.Name);

      // Display the name of the current UI culture.
      Console.WriteLine("CurrentUICulture is {0}.", CultureInfo.CurrentUICulture.Name);

      // Change the current UI culture to ja-JP.
      CultureInfo.CurrentUICulture = new CultureInfo( "ja-JP", false );
      Console.WriteLine("CurrentUICulture is now {0}.", CultureInfo.CurrentUICulture.Name);
   }
}
// The example displays the following output:
//       CurrentCulture is en-US.
//       CurrentCulture is now th-TH.
//       CurrentUICulture is en-US.
//       CurrentUICulture is now ja-JP.
Imports System.Globalization
Imports System.Threading

Public Module Example
   Public Sub Main()

      ' Display the name of the current thread culture.
      Console.WriteLine("CurrentCulture is {0}.", CultureInfo.CurrentCulture.Name)

      ' Change the current culture to th-TH.
      CultureInfo.CurrentCulture = New CultureInfo("th-TH", False)
      Console.WriteLine("CurrentCulture is now {0}.", CultureInfo.CurrentCulture.Name)

      ' Display the name of the current UI culture.
      Console.WriteLine("CurrentUICulture is {0}.", CultureInfo.CurrentUICulture.Name)

      ' Change the current UI culture to ja-JP.
      CultureInfo.CurrentUICulture = New CultureInfo("ja-JP", False)
      Console.WriteLine("CurrentUICulture is now {0}.", CultureInfo.CurrentUICulture.Name)
   End Sub 
End Module
' The example displays the following output:
'       CurrentCulture is en-US.
'       CurrentCulture is now th-TH.
'       CurrentUICulture is en-US.
'       CurrentUICulture is now ja-JP.

注釈

現在の UI カルチャは、スレッドごとのプロパティです。The current UI culture is a per-thread property. これは、各スレッドに独自の現在の UI カルチャ。That is, each thread has its own current UI culture. このプロパティを取得すると、以降には、.NET Framework 4.6.NET Framework 4.6で、設定、CultureInfoオブジェクトに割り当てられている、System.Threading.Thread.CurrentThread.CurrentUICultureプロパティ。This property is equivalent to retrieving or, starting with the .NET Framework 4.6.NET Framework 4.6, setting the CultureInfo object assigned to the System.Threading.Thread.CurrentThread.CurrentUICulture property. スレッドが開始されると、その UI カルチャには、次のように最初に決定します。When a thread is started, its UI culture is initially determined as follows:

  • 指定されているカルチャを取得することによって、DefaultThreadCurrentUICultureスレッドを実行している、プロパティ値がない場合、アプリケーション ドメイン プロパティnullします。By retrieving the culture that is specified by the DefaultThreadCurrentUICulture property in the application domain in which the thread is executing, if the property value is not null.

  • スレッドがスレッド プールのスレッド、タスク ベースの非同期操作と、アプリのターゲットを実行している場合、.NET Framework 4.6.NET Framework 4.6または以降のバージョンの .NET Framework は、その UI カルチャは、呼び出し元スレッドの UI カルチャによって決まります。If the thread is a thread pool thread that is executing a task-based asynchronous operation and the app targets the .NET Framework 4.6.NET Framework 4.6 or a later version of the .NET Framework, its UI culture is determined by the UI culture of the calling thread. 次の例では、ポルトガル語 (ブラジル) に、現在の UI カルチャを変更し、それぞれは、スレッド ID、そのタスク ID、およびその現在の UI カルチャが表示されます。 6 つのタスクを起動します。The following example changes the current UI culture to Portuguese (Brazil) and launches six tasks, each of which displays its thread ID, its task ID, and its current UI culture. 各タスク (とスレッド) が呼び出し元のスレッドの UI カルチャを継承しています。Each of the tasks (and the threads) has inherited the UI culture of the calling thread.

    using System;
    using System.Collections.Generic;
    using System.Globalization;
    using System.Runtime.Versioning;
    using System.Threading;
    using System.Threading.Tasks;
    
    [assembly:TargetFramework(".NETFramework,Version=v4.6")]
    
    public class Example
    {
       public static async Task Main()
       {
          var tasks = new List<Task>();
          Console.WriteLine("The current UI culture is {0}", 
                            Thread.CurrentThread.CurrentUICulture.Name);
          Thread.CurrentThread.CurrentUICulture = new CultureInfo("pt-BR");
          // Change the current UI culture to Portuguese (Brazil).
          Console.WriteLine("Current UI culture changed to {0}",
                            Thread.CurrentThread.CurrentUICulture.Name);
          Console.WriteLine("Application thread is thread {0}",
                            Thread.CurrentThread.ManagedThreadId);
          // Launch six tasks and display their current culture.
          for (int ctr = 0; ctr <= 5; ctr++)
             tasks.Add(Task.Run( () => {
                                   Console.WriteLine("UI Culture of task {0} on thread {1} is {2}",
                                                     Task.CurrentId, 
                                                     Thread.CurrentThread.ManagedThreadId,
                                                     Thread.CurrentThread.CurrentUICulture.Name);
                                } ));                     
    
          await Task.WhenAll(tasks.ToArray());
       }
    }
    // The example displays output like the following:
    //     The current culture is en-US
    //     Current culture changed to pt-BR
    //     Application thread is thread 9
    //     Culture of task 2 on thread 11 is pt-BR
    //     Culture of task 1 on thread 10 is pt-BR
    //     Culture of task 3 on thread 11 is pt-BR
    //     Culture of task 5 on thread 11 is pt-BR
    //     Culture of task 6 on thread 11 is pt-BR
    //     Culture of task 4 on thread 10 is pt-BR
    
    Imports System.Collections.Generic
    Imports System.Globalization
    Imports System.Runtime.Versioning
    Imports System.Threading
    Imports System.Threading.Tasks
    
    <assembly:TargetFramework(".NETFramework,Version=v4.6")>
    
    Module Example
       Public Sub Main()
          Dim tasks As New List(Of Task)
          Console.WriteLine("The current UI culture is {0}", 
                            Thread.CurrentThread.CurrentUICulture.Name)
          Thread.CurrentThread.CurrentUICulture = New CultureInfo("pt-BR")
          ' Change the current UI culture to Portuguese (Brazil).
          Console.WriteLine("Current culture changed to {0}",
                            Thread.CurrentThread.CurrentUICulture.Name)
          Console.WriteLine("Application thread is thread {0}",
                            Thread.CurrentThread.ManagedThreadId)
          ' Launch six tasks and display their current culture.
          For ctr As Integer = 0 to 5
             tasks.Add(Task.Run(Sub()
                                   Console.WriteLine("Culture of task {0} on thread {1} is {2}",
                                                     Task.CurrentId, 
                                                     Thread.CurrentThread.ManagedThreadId,
                                                     Thread.CurrentThread.CurrentUICulture.Name)
                                End Sub))                     
          Next
          Task.WaitAll(tasks.ToArray())
       End Sub
    End Module
    ' The example displays output like the following:
    '     The current culture is en-US
    '     Current culture changed to pt-BR
    '     Application thread is thread 9
    '     Culture of task 2 on thread 11 is pt-BR
    '     Culture of task 1 on thread 10 is pt-BR
    '     Culture of task 3 on thread 11 is pt-BR
    '     Culture of task 5 on thread 11 is pt-BR
    '     Culture of task 6 on thread 11 is pt-BR
    '     Culture of task 4 on thread 10 is pt-BR
    

    詳細については、の「カルチャとタスク ベースの非同期操作」セクションを参照してください、CultureInfoトピック。For more information, see the "Culture and task-based asynchronous operations" section in the CultureInfo topic.

  • Windows を呼び出すことによってGetUserDefaultUILanguage関数。By calling the Windows GetUserDefaultUILanguage function.

注意

.NET Compact Framework.NET Compact FrameworkCurrentUICultureプロパティは読み取り専用です。In the .NET Compact Framework.NET Compact Framework, the CurrentUICulture property is read-only. 現在の UI カルチャはシステムの地域設定によって決定され、プログラムで変更することはできません。The current UI culture is determined by the system's regional settings and cannot be changed programmatically.

以降では、 .NET Framework 4.6.NET Framework 4.6、スレッドで使用されるユーザー インターフェイス カルチャを変更するの設定、Thread.CurrentUICultureプロパティを新しいカルチャ。Starting with the .NET Framework 4.6.NET Framework 4.6, to change the user interface culture used by a thread, set the Thread.CurrentUICulture property to the new culture. 変更をこのように、スレッドの UI カルチャを明示的に変更する場合は、スレッドがアプリケーション ドメイン境界を越える場合に永続化します。If you explicitly change a thread's UI culture in this way, that change persists if the thread crosses application domain boundaries.

注意

.NET Framework 4.5.2 および以前のバージョンで、CurrentUICultureプロパティは読み取り専用です。 つまり、プロパティの値を取得することができますが、これを設定することはできません。In the .NET Framework 4.5.2 and earlier versions, the CurrentUICulture property is read-only; that is, you can retrieve the property value, but you cannot set it. 現在の UI カルチャを変更するを割り当てる、CultureInfo新しい UI カルチャを表すオブジェクト、Thread.CurrentThread.CurrentUICultureプロパティ。To change the current UI culture, you assign the CultureInfo object that represents the new UI culture to the Thread.CurrentThread.CurrentUICulture property. 以降では、 .NET Framework 4.6.NET Framework 4.6CultureInfo.CurrentUICultureプロパティは読み取り/書き込み; 設定し、プロパティの値を取得することができます。Starting with the .NET Framework 4.6.NET Framework 4.6, the CultureInfo.CurrentUICulture property is read-write; you can both set and retrieve the property's value. プロパティの値を設定場合、 CultureInfo 、新しいカルチャの値を表すオブジェクトをThread.CurrentThread.CurrentCultureプロパティも変更します。If you do set the property value to a CultureInfo object that represents a new culture, the value of the Thread.CurrentThread.CurrentCulture property also changes.

このセクションの内容:In this section:

現在の UI カルチャを取得します。 Getting the Current UI Culture
現在の UI カルチャを明示的に設定 Explicitly Setting the Current UI Culture
現在の UI カルチャの暗黙的な設定 Implicitly Setting the Current UI Culture
セキュリティに関する考慮事項 Security Considerations
現在の UI カルチャおよび Windows アプリThe Current UI Culture and Windows apps

現在の UI カルチャを取得します。Getting the Current UI Culture

CultureInfo.CurrentUICultureプロパティは、スレッドごとの設定は、各スレッドは、独自の UI カルチャを持つことができます。The CultureInfo.CurrentUICulture property is a per-thread setting; that is, each thread can have its own UI culture. 値を取得することによって、現在のスレッド UI カルチャを取得する、CultureInfo.CurrentUICultureプロパティでは、次の例として示します。You get the UI culture of the current thread by retrieving the value of the CultureInfo.CurrentUICulture property, as the following example illustrates.

using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      CultureInfo culture = CultureInfo.CurrentUICulture;
      Console.WriteLine("The current UI culture is {0} [{1}]",
                        culture.NativeName, culture.Name);
   }
}
// The example displays output like the following:
//       The current UI culture is English (United States) [en-US]
Imports System.Globalization

Module Example
   Public Sub Main()
      Dim culture As CultureInfo = CultureInfo.CurrentCulture
      Console.WriteLine("The current UI culture is {0} [{1}]",
                        culture.NativeName, culture.Name)
   End Sub
End Module
' The example displays output like the following:
'     The current UI culture is English (United States) [en-US]

現在のスレッド UI カルチャの値を取得することも、Thread.CurrentUICultureプロパティ。You can also retrieve the value of the current thread's UI culture from the Thread.CurrentUICulture property.

現在の UI カルチャを明示的に設定Explicitly Setting the Current UI Culture

以降では、 .NET Framework 4.6.NET Framework 4.6、割り当てることで、現在の UI カルチャを変更することができます、CultureInfo新しいカルチャを表すオブジェクト、CultureInfo.CurrentUICultureプロパティ。Starting with the .NET Framework 4.6.NET Framework 4.6, you can change the current UI culture by assigning a CultureInfo object that represents the new culture to the CultureInfo.CurrentUICulture property. (EN-US、DE-DE など) 特定のカルチャまたはニュートラル カルチャ (en、de など)、現在の UI カルチャを設定できます。The current UI culture can be set to either a specific culture (such as en-US or de-DE) or to a neutral culture (such as en or de). 次の例では、現在の UI カルチャを FR-FR またはフランス語 (フランス) に設定します。The following example sets the current UI culture to fr-FR or French (France).

using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      Console.WriteLine("The current UI culture: {0}", 
                        CultureInfo.CurrentUICulture.Name);
      
      CultureInfo.CurrentUICulture = CultureInfo.CreateSpecificCulture("fr-FR");
      Console.WriteLine("The current UI culture: {0}", 
                        CultureInfo.CurrentUICulture.Name);
   }
}
// The example displays output like the following:
//       The current UI culture: en-US
//       The current UI culture: fr-FR
Imports System.Globalization
Imports System.Threading

Module Example
   Public Sub Main()
      Console.WriteLine("The current UI culture: {0}", 
                        CultureInfo.CurrentUICulture.Name)
      
      CultureInfo.CurrentUICulture = CultureInfo.CreateSpecificCulture("fr-FR")
      Console.WriteLine("The current UI culture: {0}", 
                        CultureInfo.CurrentUICulture.Name)
   End Sub
End Module
' The example displays output like the following:
'       The current UI culture: en-US
'       The current UI culture: fr-FR

マルチ スレッド アプリケーションで明示的に設定できますのいずれかのスレッド UI カルチャを割り当てることによって、CultureInfoオブジェクトをスレッドのカルチャを表すThread.CurrentUICultureプロパティ。In a multithreaded application, you can explicitly set the UI culture of any thread by assigning a CultureInfo object that represents that culture to the thread's Thread.CurrentUICulture property. 現在のスレッドをスレッドのカルチャを設定するには、新しいカルチャを割り当てることができます、CultureInfo.CurrentUICultureプロパティ。If the thread whose culture you want to set is the current thread, you can assign the new culture to the CultureInfo.CurrentUICulture property. スレッドの UI カルチャが明示的に設定すると、別のアプリケーション ドメインでコードを実行およびアプリケーション ドメイン境界を越える場合でも、スレッドが同じカルチャを保持します。When the UI culture of a thread is set explicitly, that thread retains the same culture even if it crosses application domain boundaries and executes code in another application domain.

現在の UI カルチャの暗黙的な設定Implicitly Setting the Current UI Culture

既定では、現在の UI カルチャの設定は次のようを作成、メイン アプリケーション スレッドを含む、スレッドが最初の場合。When a thread, including the main application thread, is first created, by default its current UI culture is set as follows:

  • によって定義されているカルチャを使用して、DefaultThreadCurrentUICultureプロパティ値がない場合は、現在のアプリケーション ドメインのプロパティnullします。By using the culture defined by the DefaultThreadCurrentUICulture property for the current application domain if the property value is not null.

  • システムの既定のカルチャを使用します。By using the system's default culture. Windows オペレーティング システムを使用するシステムで、共通言語ランタイムは、Windows を呼び出すGetUserDefaultUILanguage現在の UI カルチャを設定します。On systems that use the Windows operating system, the common language runtime calls the Windows GetUserDefaultUILanguage function to set the current UI culture. GetUserDefaultUILanguage ユーザー設定の既定の UI カルチャを返します。GetUserDefaultUILanguage returns the default UI culture set by the user. ユーザーが既定の UI 言語を設定していない場合は、最初、システムにインストールされているカルチャを返します。If the user has not set a default UI language, it returns the culture originally installed on the system.

別のアプリケーション ドメインでコードを実行するスレッドがアプリケーション境界を越える場合は、新しく作成されたスレッドのと同じ方法でそのカルチャが決定されます。If the thread crosses application boundaries and executes code in another application domain, its culture is determined in the same way as that of a newly created thread.

システムにインストールされている UI カルチャとは異なる特定の UI カルチャを設定し、ユーザーの優先する UI カルチャ、またはアプリケーションが複数のスレッドを開始する場合、これらのスレッドの現在の UI カルチャがである、によって返されるカルチャGetUserDefaultUILanguage関数は、カルチャを割り当てない限り、DefaultThreadCurrentUICultureスレッドを実行しているアプリケーション ドメインのプロパティ。Note that if you set a specific UI culture that is different from the system-installed UI culture or the user's preferred UI culture, and your application starts multiple threads, the current UI culture of those threads will be the culture returned by the GetUserDefaultUILanguage function, unless you assign a culture to the DefaultThreadCurrentUICulture property in the application domain in which the thread is executing.

セキュリティの考慮事項Security Considerations

現在のスレッドのカルチャを変更する必要があります、SecurityPermissionのアクセス許可、ControlThread値のセット。Changing the culture of the current thread requires a SecurityPermission permission with the ControlThread value set.

注意事項

スレッドの操作は、セキュリティ状態のスレッドに関連付けられているため危険です。Manipulating threads is dangerous because of the security state associated with threads. そのため、信頼できるコードにのみ、し、必要な場合だけ、このアクセス許可を付与する必要があります。Therefore, this permission should be given only to trustworthy code, and then only as necessary. 部分的に信頼されたコード内のスレッド カルチャを変更することはできません。You cannot change thread culture in semi-trusted code.

現在の UI カルチャと UWP アプリThe current UI culture and UWP apps

ユニバーサル Windows プラットフォーム (UWP) アプリで、CurrentUICultureで .NET Framework と .NET Core アプリと同様、プロパティは読み取り/書き込み、; を取得して、現在のカルチャの設定の両方に使用することができます。In Universal Windows Platform (UWP) apps, the CurrentUICulture property is read-write, just as it is in .NET Framework and .NET Core apps; you can use it both to get and to set the current culture. ただし、UWP アプリは、現在のカルチャと、現在の UI カルチャによって区別されません。However, UWP apps do not distinguish between the current culture and the current UI culture. CurrentCultureCurrentUICultureプロパティ マップの最初の値をWindows.ApplicationModel.Resources.Core.ResourceManager.DefaultContext.Languagesコレクション。The CurrentCulture and CurrentUICulture properties map to the first value in the Windows.ApplicationModel.Resources.Core.ResourceManager.DefaultContext.Languages collection.

.NET Framework と .NET Core アプリでは、現在の UI カルチャはスレッドごとの設定では、およびCurrentUICultureプロパティには、現在のスレッドのみの UI カルチャが反映されます。In .NET Framework and .NET Core apps, the current UI culture is a per-thread setting, and the CurrentUICulture property reflects the UI culture of the current thread only. UWP アプリでは、現在のカルチャをマップ、 Windows.ApplicationModel.Resources.Core.ResourceManager.DefaultContext.Languagesプロパティは、これはグローバル設定です。In UWP apps, the current culture maps to the Windows.ApplicationModel.Resources.Core.ResourceManager.DefaultContext.Languages property, which is a global setting. 設定、CurrentCultureプロパティは、アプリ全体のカルチャを変更; カルチャはスレッドごとに設定できません。Setting the CurrentCulture property changes the culture of the entire app; culture cannot be set on a per-thread basis.

セキュリティ

SecurityPermission
現在の UI カルチャを設定します。for setting the current UI culture. 関連付けられた列挙体。 ControlThreadAssociated enumeration: ControlThread

適用対象

こちらもご覧ください