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 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 문화권을 변경 하려면 할당 합니다 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.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. 값을 검색 하 여 현재 스레드의 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. 현재 UI 문화권 (EN-US 또는 DE-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). 다음 예에서는 프랑스어 (프랑스) FR-FR에 현재 UI 문화권을 설정합니다.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 culture와에서는 다른 특정 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. CurrentCulture 하 고 CurrentUICulture 속성 map에서 첫 번째 값을 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

적용 대상

추가 정보