이 문서는 기계 번역을 이용하여 번역되었습니다. 문서를 영문으로 보려면 영문 확인란을 선택하세요. 마우스 포인터를 텍스트 위로 이동시켜 팝업 창에서 영문 텍스트를 표시할 수도 있습니다.
번역
영문

CultureInfo.CurrentCulture 속성

 

게시 날짜: 2016년 11월

현재 스레드에서 사용하는 문화권을 나타내는 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 속성도 변경 합니다.

섹션 내용

스레드의 Culture는 결정 하는 방법
현재 문화권 가져오기
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 함수입니다.

시스템 설치 문화권 또는 사용자의 기본 culture를와 다른 특정 문화권을 설정 하면 다중 스레드 응용 프로그램을 시작 하는 경우 해당 스레드의 현재 문화권 됩니다에서 반환 되는 culture는 GetUserDefaultLocaleName 문화권을 지정 하지 않으면 작동는 DefaultThreadCurrentCulture 스레드가 실행 중인 응용 프로그램 도메인의 속성입니다.

스레드의 문화권을 결정 하는 방법에 대 한 자세한 내용은의 "문화권 및 스레드" 섹션을 참조 하십시오.는 CultureInfo 참조 페이지입니다.

CultureInfo.CurrentCulture 속성은 스레드별 설정, 즉, 각 스레드는 자체 culture를 가질 수 있습니다. 값을 검색 하 여 현재 스레드의 culture를 가져오면는 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]

현재 스레드의 culture의 값을 검색할 수도 있습니다는 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 와 같은 Calendar, CompareInfo, DateTimeFormat, NumberFormat, 및 TextInfo 중립 문화권 연관 된 특정 문화권을 반영 합니다. 예를 들어 영어 중립 문화권에 대 한 기준 문화권은 영어 (미국); 독일어 culture에 대 한 기준 문화권이 독일어 (독일)입니다. 다음 예에서는 프랑스어 하 고 특정 문화권을 프랑스어 (캐나다) 중립 문화권 현재 문화권 설정 된 경우 서식 지정에 차이 보여 줍니다.

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 메서드와 culture Windows 현재 시스템 문화권에 해당 하는지 합니다.

  • 현재 스레드 문화권에 의해 인스턴스화될 culture에 명시적으로 설정 하는 경우는 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 이후 사용 가능
맨 위로 이동
표시: