CultureInfo.CurrentUICulture プロパティ

定義

実行時にカルチャ固有のリソースを参照するためにリソース マネージャーによって使用される現在のユーザー インターフェイスのカルチャを表す 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(); };
public static System.Globalization.CultureInfo CurrentUICulture { get; }
member this.CurrentUICulture : System.Globalization.CultureInfo
Public Shared ReadOnly 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から開始し、System.Threading.Thread.CurrentThread.CurrentUICulture プロパティに割り当てられた CultureInfo オブジェクトを設定することと同じです。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 カルチャをポルトガル語 (ブラジル) に変更し、6つのタスクを開始します。各タスクでは、スレッド ID、タスク ID、および現在の UI カルチャが表示されます。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 Frameworkでは、CurrentUICulture プロパティは読み取り専用です。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 カルチャを変更するには、新しい UI カルチャを表す CultureInfo オブジェクトを 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.6以降では、CultureInfo.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. 次の例に示すように、CultureInfo.CurrentUICulture プロパティの値を取得することにより、現在のスレッドの UI カルチャを取得します。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]

Thread.CurrentUICulture プロパティから、現在のスレッドの UI カルチャの値を取得することもできます。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以降では、新しいカルチャを表す CultureInfo オブジェクトを CultureInfo.CurrentUICulture プロパティに割り当てることにより、現在の UI カルチャを変更できます。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. 現在の UI カルチャは、特定のカルチャ (en-us や de など) に設定することも、ニュートラルカルチャ (en や de など) に設定することもできます。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

マルチスレッドアプリケーションでは、そのカルチャを表す CultureInfo オブジェクトをスレッドの Thread.CurrentUICulture プロパティに割り当てることにより、任意のスレッドの UI カルチャを明示的に設定できます。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:

  • プロパティ値が nullない場合に、現在のアプリケーションドメインの DefaultThreadCurrentUICulture プロパティによって定義されたカルチャを使用します。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

現在のスレッドのカルチャを変更するには、ControlThread 値が設定された SecurityPermission アクセス許可が必要です。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 ..........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プロパティにマップされます。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

適用対象

こちらもご覧ください