この記事は機械翻訳されています。英語版の記事を表示するには、[英語] のチェック ボックスをオンにしてください。また、テキストにマウス ポインターを合わせると、ポップアップ ウィンドウに英語のテキストを表示することもできます。
翻訳
英語

CultureInfo.CurrentCulture プロパティ

 

公開日: 2016年10月

現在のスレッドで使用するカルチャを表す CultureInfo オブジェクトを取得または設定します。

名前空間:   System.Globalization
アセンブリ:  mscorlib (mscorlib.dll 内)

public static CultureInfo CurrentCulture { get; set; }

プロパティ値

Type: System.Globalization.CultureInfo

現在のスレッドで使用するカルチャを表すオブジェクト。

Exception Condition
ArgumentNullException

プロパティが null に設定されています。

CultureInfo日付の既定の形式、時間、数値、通貨の値、テキストの順序の並べ替え、規則、大文字小文字の区別を確認し、文字列比較をこのプロパティによって返されるオブジェクトとその関連オブジェクト。

現在のカルチャは、静的なによって返される実行中のスレッドのプロパティThread.CurrentThreadプロパティです。 値、CultureInfo.CurrentCultureプロパティの値に対応、Thread.CurrentCultureプロパティです。 値を取得、CultureInfo.CurrentCultureプロパティを取得するのには、CultureInfoによって返されるオブジェクト、Thread.CurrentThread.CurrentCultureプロパティです。 以降で、.NET Framework 4.6の値を設定、CultureInfo.CurrentCultureプロパティは現在のスレッド カルチャも変更します。

System_CAPS_noteメモ

.NET Framework 4.5.2 以前のバージョンで、CurrentCultureプロパティは読み取り専用です。 つまり、プロパティの値を取得することができますが、設定することはできません。 現在のカルチャを変更するを割り当てる、CultureInfoに新しいカルチャを表すオブジェクト、Thread.CurrentThread.CurrentCultureプロパティです。 以降で、 .NET Framework 4.6、CurrentCultureプロパティは読み取り/書き込み以外の両方を設定して、プロパティの値を取得します。 プロパティの値設定した場合、 CultureInfo 、新しいカルチャの値を表すオブジェクト、Thread.CurrentThread.CurrentCultureプロパティも変更します。

このセクションの内容:

スレッドのカルチャを決定する方法
現在のカルチャを取得します。
CurrentCulture プロパティを明示的に設定
現在のカルチャおよびユーザーのオーバーライド
カルチャと Windows アプリ

スレッドが開始されると、そのカルチャは、最初にように決定されます。

  • 指定されたカルチャを取得することによって、DefaultThreadCurrentCultureスレッドを実行している、プロパティ値がない場合、アプリケーション ドメインでプロパティnullです。

  • スレッドがタスク ベースの非同期操作や、アプリケーションが対象を実行しているスレッド プールのスレッドである場合、.NET Framework 4.6またはそのカルチャである .NET Framework の以降のバージョンは、呼び出し元のスレッドのカルチャによって決まります。 次の例では、ポルトガル語 (ブラジル) を現在のカルチャを変更し、それぞれは、スレッド ID、そのタスク ID、およびその現在のカルチャが表示されます。 6 つのタスクを起動します。 それぞれのタスク (スレッド) が呼び出し元のスレッドのカルチャを継承しています。

    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 void Main()
       {
          var tasks = new List<Task>();
          Console.WriteLine("The current culture is {0}", 
                            Thread.CurrentThread.CurrentCulture.Name);
          Thread.CurrentThread.CurrentCulture = new CultureInfo("pt-BR");
          // Change the current culture to Portuguese (Brazil).
          Console.WriteLine("Current culture changed to {0}",
                            Thread.CurrentThread.CurrentCulture.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("Culture of task {0} on thread {1} is {2}",
                                                     Task.CurrentId, 
                                                     Thread.CurrentThread.ManagedThreadId,
                                                     Thread.CurrentThread.CurrentCulture.Name);
                                } ));                     
    
          Task.WaitAll(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
    

    詳細については、「カルチャとタスク ベースの非同期操作」セクションを参照して、CultureInfoトピックです。

  • Windows を呼び出すことによってGetUserDefaultLocaleName関数。

システムにインストールされているカルチャやユーザーの優先カルチャとは異なる特定のカルチャを設定して、アプリケーションが複数のスレッドを開始、それらのスレッドの現在のカルチャがされることによって返されるカルチャに注意してください、GetUserDefaultLocaleName関数、カルチャを割り当てない限り、DefaultThreadCurrentCultureスレッドを実行しているアプリケーション ドメインのプロパティです。

スレッドのカルチャを決定する方法の詳細については、「カルチャとスレッド」セクションを参照して、CultureInfoリファレンス ページ。

CultureInfo.CurrentCulture プロパティは、スレッドごとの設定です。 つまり、各スレッドが、独自のカルチャを持つことができます。 値を取得することによって、現在のスレッドのカルチャを取得する、CultureInfo.CurrentCultureプロパティ、次の例として示します。

using System;
using System.Globalization;

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

現在のスレッドのカルチャの値を取得することも、Thread.CurrentThreadプロパティです。

直接、.NET Framework 4.6既存のスレッドによって使用されるカルチャを変更するには、設定する、CultureInfo.CurrentCultureプロパティを新しいカルチャ。 これで、変更されるスレッドのカルチャを明示的に変更する場合は、スレッドは、アプリケーション ドメインの境界を越える場合に永続化します。 次の例では、現在のスレッド カルチャをオランダ語 (オランダ) に変更します。 またすること、現在のスレッドは、アプリケーション ドメインの境界を越えている場合に、現在のカルチャを引き続き変更を示します。

using System;
using System.Globalization;
using System.Threading;

public class Info : MarshalByRefObject
{
   public void ShowCurrentCulture()
   {
      Console.WriteLine("Culture of {0} in application domain {1}: {2}",
                        Thread.CurrentThread.Name,
                        AppDomain.CurrentDomain.FriendlyName,
                        CultureInfo.CurrentCulture.Name);
   }
}

public class Example
{
   public static void Main()
   {
      Info inf = new Info();
      // Set the current culture to Dutch (Netherlands).
      Thread.CurrentThread.Name = "MainThread";
      CultureInfo.CurrentCulture = CultureInfo.CreateSpecificCulture("nl-NL");
      inf.ShowCurrentCulture();

      // Create a new application domain.
       AppDomain ad = AppDomain.CreateDomain("Domain2");
       Info inf2 = (Info) ad.CreateInstanceAndUnwrap(typeof(Info).Assembly.FullName, "Info");
       inf2.ShowCurrentCulture();                       
   }
}
// The example displays the following output:
//       Culture of MainThread in application domain ChangeCulture1.exe: nl-NL
//       Culture of MainThread in application domain Domain2: nl-NL
System_CAPS_noteメモ

使用して、カルチャを変更する、CultureInfo.CurrentCultureプロパティが必要です、SecurityPermissionして権限をControlThread値のセット。 スレッドの操作は、スレッドに関連付けられているセキュリティ状態であるため危険です。 したがって、信頼できるコードにのみ、し、必要な場合だけは、このアクセス許可を付与する必要があります。 信頼度の低いコード内のスレッド カルチャを変更することはできません。

以降で、 .NET Framework 4、フランス語 (カナダ)) などの特定のカルチャまたはニュートラル カルチャ (フランス語) などのいずれかに現在のスレッド カルチャを明示的に変更できます。 ときに、CultureInfoオブジェクトがニュートラル カルチャの値を表すCultureInfoなどのプロパティCalendarCompareInfoDateTimeFormatNumberFormat、およびTextInfoニュートラル カルチャに関連付けられている特定のカルチャを反映します。 たとえば、英語版のニュートラル カルチャの主要なカルチャは、英語 (米国)ドイツのカルチャの主要なカルチャは、ドイツ語 (ドイツ) です。 次の例は、フランス語、現在のカルチャが特定のカルチャ、フランス語 (カナダ)、およびがニュートラル カルチャに設定されているときに書式設定の違いを示しています。

using System;
using System.Globalization;
using System.Threading;

public class Example
{
   public static void Main()
   {
      double value = 1634.92;
      CultureInfo.CurrentCulture = new CultureInfo("fr-CA");
      Console.WriteLine("Current Culture: {0}", 
                        CultureInfo.CurrentCulture.Name);
      Console.WriteLine("{0:C2}\n", value);

      Thread.CurrentThread.CurrentCulture = new CultureInfo("fr");
      Console.WriteLine("Current Culture: {0}", 
                        CultureInfo.CurrentCulture.Name);
      Console.WriteLine("{0:C2}", value);
   }
}
// The example displays the following output:
//       Current Culture: fr-CA
//       1 634,92 $
//       
//       Current Culture: fr
//       1 634,92 €

使用することも、CultureInfo.CurrentCultureプロパティと共に、HttpRequest.UserLanguagesプロパティを設定、CurrentCultureをユーザーに ASP.NET アプリケーションのプロパティは、次の例に示すように、カルチャの優先します。

CultureInfo.CurrentCulture = CultureInfo.CreateSpecificCulture(Request.UserLanguages[0]);

Windows では、ユーザーの標準的プロパティ値を上書き、CultureInfoオブジェクトとその関連オブジェクトを使用して地域と言語のオプションコントロール パネルの します。 CultureInfoによって返されるオブジェクト、CurrentCultureプロパティは、次の場合、これらのユーザーがオーバーライドが反映されます。

  • 現在のスレッド カルチャを Windows によって暗黙的に設定かどうかGetUserDefaultLocaleName機能します。

  • 現在のスレッド カルチャがによって定義されている場合、DefaultThreadCurrentCultureプロパティは、現在の Windows システムのカルチャに対応します。

  • かどうか、現在のスレッドのカルチャがによって返されるカルチャを明示的に設定されて、CreateSpecificCultureメソッド、およびカルチャが、現在の Windows システムのカルチャに対応しています。

  • かどうか、現在のスレッドのカルチャがによってインスタンス化のカルチャに明示的に設定されて、CultureInfo(String)コンス トラクター、およびカルチャが、現在の Windows システムのカルチャに対応しています。

場合によっては、特に、サーバー アプリケーション用に、現在のカルチャを設定、CultureInfoユーザー オーバーライドを反映するオブジェクトが望ましくない可能性があります。 代わりに、現在のスレッド カルチャを設定、CultureInfoユーザーが反映されていないオブジェクトが次のようにオーバーライドします。

Windows アプリで、CurrentCultureプロパティは読み取り専用です。 現在のカルチャを設定するには、Windows を使用してResourceContext.Languagesプロパティです。 次の例は、アプリケーションの現在のカルチャを変更する英語 (米国) のいずれかまたは現在のカルチャが英語 (米国)、フランス語 (フランス) に既にある場合。 値、CurrentCultureCurrentUICultureプロパティに表示されます、TextBlockという名前のコントロールblockです。 現在のカルチャの場合に変更の例からの出力に示す、 ResourceContext.Languagesプロパティが変更されました。


ResourceContext context = ResourceManager.Current.DefaultContext;
var list = new List<String>();
if (CultureInfo.CurrentCulture.Name == "en-US")
   list.Add("fr-FR");
else
   list.Add("en-US");

context.Languages = list;
block.Text += String.Format("\nThe current culture is {0}\n",
                            CultureInfo.CurrentCulture);
block.Text += String.Format("The current culture UI is {0}\n",
                            CultureInfo.CurrentUICulture);
// The example displays output like the following if run on a system
// whose current culture is English (United States):
// The current culture is fr-FR
// The current UI culture is fr-FR   


Dim context As ResourceContext = ResourceManager.Current.DefaultContext
Dim list As New List(Of String)()
If CultureInfo.CurrentCulture.Name = "en-US" Then
   list.Add("fr-FR")
Else
   list.Add("en-US")
End If
context.Languages = list
block.Text += String.Format("{1}The current culture is {0}{1}",
                            CultureInfo.CurrentCulture, vbCrLf)
block.Text += String.Format("The current culture UI is {0}\n",
                            CultureInfo.CurrentUICulture)
' The example displays output Like the following if run on a system
' whose current culture Is English (United States):
'    The current culture Is fr-FR
'    The current UI culture Is fr-FR   

次のコード例を変更する方法を示しています、CurrentCultureCurrentUICulture現在のスレッド。

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.

SecurityPermission

for setting the current culture. Associated enumeration: F:System.Security.Permissions.SecurityPermissionFlag.ControlThread

ユニバーサル Windows プラットフォーム
8 以降で使用可能
.NET Framework
1.1 以降で使用可能
ポータブル クラス ライブラリ
サポート対象: 移植可能 .NET プラットフォーム
Silverlight
2.0 以降で使用可能
Windows Phone Silverlight
7.0 以降で使用可能
Windows Phone
8.1 以降で使用可能
トップに戻る
表示: