CultureInfo.CurrentUICulture Özellik

Tanım

çalışma zamanında kültüre özgü kaynakları aramak için Resource Manager tarafından kullanılan geçerli kullanıcı arabirimi kültürünü temsil eden CultureInfo nesnesini alır veya ayarlar.

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

Özellik Değeri

çalışma zamanında kültüre özgü kaynakları aramak için Resource Manager tarafından kullanılan kültür.

Özel durumlar

özelliği olarak nullayarlanır.

özelliği, kaynak dosyasını bulmak için kullanılamayabilecek bir kültür adına ayarlanır. Kaynak dosya adları yalnızca harf, sayı, kısa çizgi veya alt çizgi içerebilir.

Örnekler

Aşağıdaki kod örneğinde, geçerli iş parçacığının CurrentCulture ve CurrentUICulture değerlerinin nasıl değiştireceği gösterilmektedir.

using System;
using System.Globalization;

public class Example0
{
   public static void Main()
   {
      // Display the name of the current 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 Example2
   Public Sub Run()
      ' Display the name of the current 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.

Açıklamalar

CurrentUICulture özelliği iş parçacığı başına bir özelliktir. Yani, her iş parçacığının kendi geçerli kullanıcı arabirimi kültürü vardır. Bu özellik, CultureInfo özelliğine atanan System.Threading.Thread.CurrentThread.CurrentUICulture nesnesini almak veya ayarlamakla eşdeğerdir. Bir iş parçacığı başlatıldığında, kullanıcı arabirimi kültürü başlangıçta aşağıdaki gibi belirlenir:

  • özellik değeri DefaultThreadCurrentUICulturedeğilse, iş parçacığının yürütülmekte olduğu uygulama etki alanındaki null özelliği tarafından belirtilen kültürü alarak.

  • İş parçacığı, görev tabanlı zaman uyumsuz bir işlem yürüten bir iş parçacığı havuzu iş parçacığıysa, kullanıcı arabirimi kültürü çağıran iş parçacığının ui kültürü tarafından belirlenir. Aşağıdaki örnek, geçerli ui kültürünü Portekizce (Brezilya) olarak değiştirir ve her biri iş parçacığı kimliğini, görev kimliğini ve geçerli ui kültürünü görüntüleyen altı görev başlatır. Görevlerin (ve iş parçacıklarının) her biri, çağıran iş parçacığının kullanıcı arabirimi kültürünü devralmıştır.

    using System;
    using System.Collections.Generic;
    using System.Globalization;
    using System.Runtime.Versioning;
    using System.Threading;
    using System.Threading.Tasks;
    
    public class Example
    {
        public static async Task Main()
        {
            var tasks = new List<Task>();
            Console.WriteLine($"The current UI culture is {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 {Thread.CurrentThread.CurrentUICulture.Name}");
            Console.WriteLine($"Application thread is thread {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 {Task.CurrentId} on thread {Thread.CurrentThread.ManagedThreadId} is {Thread.CurrentThread.CurrentUICulture.Name}");
                }));
    
            await Task.WhenAll(tasks.ToArray());
        }
    }
    
    // The example displays output like the following:
    //     The current UI culture is en-US
    //     Current UI culture changed to pt-BR
    //     Application thread is thread 9
    //     UI Culture of task 2 on thread 11 is pt-BR
    //     UI Culture of task 1 on thread 10 is pt-BR
    //     UI Culture of task 3 on thread 11 is pt-BR
    //     UI Culture of task 5 on thread 11 is pt-BR
    //     UI Culture of task 6 on thread 11 is pt-BR
    //     UI Culture of task 4 on thread 10 is pt-BR
    
    Imports System.Globalization
    Imports System.Threading
    
    Module Example1
        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 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 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 UI culture is en-US
    '     Current UI 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
    

    Daha fazla bilgi için bkz. Kültür ve görev tabanlı zaman uyumsuz işlemler.

  • Windows GetUserDefaultUILanguage işlevini çağırarak.

Bir iş parçacığının kullandığı kullanıcı arabirimi kültürünü değiştirmek için, Thread.CurrentUICulture özelliğini yeni kültüre ayarlayın. Bir iş parçacığının kullanıcı arabirimi kültürünü bu şekilde açıkça değiştirirseniz, iş parçacığı uygulama etki alanı sınırlarını geçerse bu değişiklik devam eder.

Note

Özellik değerini yeni bir kültürü temsil eden bir CultureInfo nesnesine ayarlarsanız, Thread.CurrentThread.CurrentCulture özelliğinin değeri de değişir.

Geçerli kullanıcı arabirimi kültürünü alma

CultureInfo.CurrentUICulture özelliği iş parçacığı başına bir ayardır; başka bir ifadeyle, her iş parçacığının kendi kullanıcı arabirimi kültürü olabilir. Aşağıdaki örnekte gösterildiği gibi CultureInfo.CurrentUICulture özelliğinin değerini alarak geçerli iş parçacığının kullanıcı arabirimi kültürünü elde edersiniz.

using System;
using System.Globalization;

public class Example2
{
    public static void Main()
    {
        CultureInfo culture = CultureInfo.CurrentUICulture;
        Console.WriteLine($"The current UI culture is {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 Example3
    Public Sub Main()
        Dim culture As CultureInfo = CultureInfo.CurrentUICulture
        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]

Ayrıca geçerli iş parçacığının kullanıcı arabirimi kültürünün değerini Thread.CurrentUICulture özelliğinden de alabilirsiniz.

Geçerli kullanıcı arabirimi kültürünü açıkça ayarlama

Özelliğine yeni kültürü temsil eden bir CultureInfo nesne atayarak geçerli ui kültürünü CultureInfo.CurrentUICulture değiştirebilirsiniz. Geçerli kullanıcı arabirimi kültürü belirli bir kültüre (en-US veya de-DEgibi) veya nötr bir kültüre (en veya de gibi) ayarlanabilir. Aşağıdaki örnek, geçerli kullanıcı arabirimi kültürünü fr-FR veya Fransızca (Fransa) olarak ayarlar.

using System;
using System.Globalization;

public class Example1
{
    public static void Main()
    {
        Console.WriteLine($"The current UI culture: {CultureInfo.CurrentUICulture.Name}");

        CultureInfo.CurrentUICulture = CultureInfo.CreateSpecificCulture("fr-FR");
        Console.WriteLine($"The current UI culture: {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

Module Example2
    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

Çok iş parçacıklı bir uygulamada, iş parçacığının CultureInfo özelliğine bu kültürü temsil eden bir Thread.CurrentUICulture nesnesi atayarak herhangi bir iş parçacığının ui kültürünü açıkça ayarlayabilirsiniz. Kültürünü ayarlamak istediğiniz iş parçacığı geçerli iş parçacığıysa, yeni kültürü CultureInfo.CurrentUICulture özelliğine atayabilirsiniz. bir iş parçacığının UI kültürü açıkça ayarlandığında, bu iş parçacığı uygulama etki alanı sınırlarını aşsa ve başka bir uygulama etki alanında kod yürütse bile aynı kültürü korur.

Geçerli kullanıcı arabirimi kültürünü örtük olarak ayarlama

Ana uygulama iş parçacığı da dahil olmak üzere bir iş parçacığı ilk oluşturulduğunda, varsayılan olarak geçerli ui kültürü aşağıdaki gibi ayarlanır:

  • Özellik değeri DefaultThreadCurrentUICulturedeğilse geçerli uygulama etki alanı için null özelliği tarafından tanımlanan kültürü kullanarak.
  • Sistemin varsayılan kültürünü kullanarak. Windows işletim sistemini kullanan sistemlerde ortak dil çalışma zamanı, geçerli kullanıcı arabirimi kültürünü ayarlamak için Windows GetUserDefaultUILanguage işlevini çağırır. GetUserDefaultUILanguage, kullanıcı tarafından ayarlanan varsayılan kullanıcı arabirimi kültürünü döndürür. Kullanıcı varsayılan kullanıcı arabirimi dilini ayarlamadıysa, başlangıçta sistemde yüklü olan kültürü döndürür.

İş parçacığı uygulama sınırlarını geçerse ve kodu başka bir uygulama etki alanında yürütürse, kültürü yeni oluşturulan iş parçacığıyla aynı şekilde belirlenir.

Sistem tarafından yüklenen UI kültüründen veya kullanıcının tercih edilen UI kültüründen farklı belirli bir UI kültürü ayarlarsanız ve uygulamanız birden çok iş parçacığı başlatırsa, iş parçacığının yürütülmekte olduğu uygulama etki alanındaki GetUserDefaultUILanguage özelliğine bir kültür atamadığınız sürece, bu iş parçacıklarının geçerli ui kültürü DefaultThreadCurrentUICulture işlevi tarafından döndürülen kültür olacaktır.

Güvenlik konuları

Geçerli iş parçacığının kültürünü değiştirmek için SecurityPermission değer kümesine sahip bir ControlThread izni gerekir.

Caution

İş parçacıklarıyla ilişkili güvenlik durumu nedeniyle iş parçacıklarını işlemek tehlikelidir. Bu nedenle, bu izin yalnızca güvenilir koda ve ardından yalnızca gerektiği şekilde verilmelidir. Yarı güvenilir bir kodda iş parçacığı kültürünü değiştiremezsiniz.

Şunlara uygulanır

Ayrıca bkz.