CultureInfo.CurrentUICulture Vlastnost

Definice

Získá nebo nastaví objekt CultureInfo, který představuje aktuální jazykovou verzi uživatelského rozhraní, kterou Správce prostředků používá k vyhledání prostředků specifických pro jazykovou verzi za běhu.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

Hodnota vlastnosti

Jazyková verze používaná Správce prostředků k vyhledání prostředků specifických pro jazykovou verzi za běhu.The culture used by the Resource Manager to look up culture-specific resources at run time.

Výjimky

Vlastnost je nastavena na null.The property is set to null.

Vlastnost je nastavena na název jazykové verze, který nelze použít k vyhledání souboru prostředků.The property is set to a culture name that cannot be used to locate a resource file. Názvy souborů prostředků můžou obsahovat jenom písmena, číslice, spojovníky nebo podtržítka.Resource filenames can include only letters, numbers, hyphens, or underscores.

Příklady

Následující příklad kódu ukazuje, jak změnit CurrentCulture a CurrentUICulture aktuálního vlákna.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.

Poznámky

Aktuální jazyková verze uživatelského rozhraní je vlastnost vázaná na vlákno.The current UI culture is a per-thread property. To znamená, že každé vlákno má svou vlastní aktuální jazykovou verzi uživatelského rozhraní.That is, each thread has its own current UI culture. Tato vlastnost je ekvivalentní k načtení nebo, počínaje .NET Framework 4.6.NET Framework 4.6, nastavení objektu CultureInfo přiřazeného vlastnosti 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. Po spuštění vlákna se zpočátku určí jeho jazyková verze uživatelského rozhraní:When a thread is started, its UI culture is initially determined as follows:

  • Načtením jazykové verze, která je určena vlastností DefaultThreadCurrentUICulture v doméně aplikace, ve které je vlákno spuštěno, pokud hodnota vlastnosti není 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.

  • Pokud vlákno je vlákno fondu vláken, které provádí asynchronní operaci založenou na úlohách a aplikace cílí na .NET Framework 4.6.NET Framework 4.6 nebo novější verzi .NET Framework, jeho jazyková verze je určena jazykovou verzí uživatelského rozhraní volajícího vlákna.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. Následující příklad změní aktuální jazykovou verzi uživatelského rozhraní na portugalštinu (Brazílie) a spustí šest úkolů, z nichž každý zobrazuje jeho ID vlákna, jeho ID a aktuální jazykovou verzi uživatelského rozhraní.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. Každá z úloh (a vláken) zdědila jazykovou verzi uživatelského rozhraní volajícího vlákna.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
    

    Další informace naleznete v části "jazyková verze a asynchronní operace založené na úlohách" v tématu CultureInfo.For more information, see the "Culture and task-based asynchronous operations" section in the CultureInfo topic.

  • Voláním funkce Windows GetUserDefaultUILanguage.By calling the Windows GetUserDefaultUILanguage function.

Poznámka

V .NET Compact Framework.NET Compact Frameworkje vlastnost CurrentUICulture určena pouze pro čtení.In the .NET Compact Framework.NET Compact Framework, the CurrentUICulture property is read-only. Aktuální jazyková verze uživatelského rozhraní je určena místními nastaveními systému a nelze ji změnit programově.The current UI culture is determined by the system's regional settings and cannot be changed programmatically.

Počínaje .NET Framework 4.6.NET Framework 4.6pro změnu jazykové verze uživatelského rozhraní používaného vláknem nastavte vlastnost Thread.CurrentUICulture na novou jazykovou verzi.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. Pokud explicitně změníte jazykovou verzi uživatelského rozhraní vlákna, tato změna potrvá, pokud vlákno vychází z hranice aplikační domény.If you explicitly change a thread's UI culture in this way, that change persists if the thread crosses application domain boundaries.

Poznámka

V .NET Framework 4.5.2 a starších verzích je vlastnost CurrentUICulture jen pro čtení; To znamená, že můžete načíst hodnotu vlastnosti, ale nemůžete ji nastavit.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. Chcete-li změnit aktuální jazykovou verzi uživatelského rozhraní, přiřadíte CultureInfo objekt, který představuje novou jazykovou verzi uživatelského rozhraní pro vlastnost 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. Počínaje .NET Framework 4.6.NET Framework 4.6je vlastnost CultureInfo.CurrentUICulture pro čtení i zápis; můžete nastavit a načíst hodnotu vlastnosti.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. Pokud nastavíte hodnotu vlastnosti na objekt CultureInfo, který představuje novou jazykovou verzi, změní se také hodnota vlastnosti 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.

V této části:In this section:

Získání aktuální jazykové verze uživatelského rozhraní Getting the Current UI Culture
Explicitní nastavení aktuální jazykové verze uživatelského rozhraní Explicitly Setting the Current UI Culture
Implicitní nastavení aktuální jazykové verze uživatelského rozhraní Implicitly Setting the Current UI Culture
Otázky zabezpečení Security Considerations
Aktuální jazyková verze uživatelského rozhraní a aplikace pro WindowsThe Current UI Culture and Windows apps

Získání aktuální jazykové verze uživatelského rozhraníGetting the Current UI Culture

Vlastnost CultureInfo.CurrentUICulture je nastavení pro vlákno; To znamená, že každé vlákno může mít vlastní jazykovou verzi uživatelského rozhraní.The CultureInfo.CurrentUICulture property is a per-thread setting; that is, each thread can have its own UI culture. Jazykovou verzi uživatelského rozhraní aktuálního vlákna získáte načtením hodnoty vlastnosti CultureInfo.CurrentUICulture, jak ukazuje následující příklad.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]

Hodnotu jazykové verze uživatelského rozhraní aktuálního vlákna lze také načíst z vlastnosti Thread.CurrentUICulture.You can also retrieve the value of the current thread's UI culture from the Thread.CurrentUICulture property.

Explicitní nastavení aktuální jazykové verze uživatelského rozhraníExplicitly Setting the Current UI Culture

Počínaje .NET Framework 4.6.NET Framework 4.6můžete změnit aktuální jazykovou verzi uživatelského rozhraní přiřazením objektu CultureInfo, který představuje novou jazykovou verzi pro vlastnost 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. Aktuální jazykovou verzi uživatelského rozhraní lze nastavit buď na konkrétní jazykovou verzi (například en-US, de-DE), nebo na neutrální jazykovou verzi (například EN nebo 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). Následující příklad nastaví aktuální jazykovou verzi uživatelského rozhraní na fr-FR nebo francouzštinu (Francie).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

V aplikaci s více vlákny můžete explicitně nastavit jazykovou verzi uživatelského rozhraní libovolného vlákna přiřazením CultureInfo objekt, který představuje tuto jazykovou verzi pro Thread.CurrentUICulture vlastnost vlákna.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. Pokud je vlákno, jehož jazyková verze chcete nastavit, aktuálním vláknem, můžete přiřadit novou jazykovou verzi k vlastnosti 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. Pokud je jazyková verze uživatelského rozhraní vlákna nastavena explicitně, vlákno uchová stejnou jazykovou verzi i v případě, že překračuje hranice aplikační domény a spustí kód v jiné doméně aplikace.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.

Implicitní nastavení aktuální jazykové verze uživatelského rozhraníImplicitly Setting the Current UI Culture

Při prvním vytvoření vlákna, včetně hlavního vlákna aplikace, je ve výchozím nastavení aktuální jazyková verze uživatelského rozhraní nastavena následovně:When a thread, including the main application thread, is first created, by default its current UI culture is set as follows:

  • Pomocí jazykové verze definované vlastností DefaultThreadCurrentUICulture pro aktuální doménu aplikace, pokud hodnota vlastnosti není null.By using the culture defined by the DefaultThreadCurrentUICulture property for the current application domain if the property value is not null.

  • Pomocí výchozí jazykové verze systému.By using the system's default culture. V systémech, které používají operační systém Windows, modul CLR (Common Language Runtime) zavolá funkci Windows GetUserDefaultUILanguage pro nastavení aktuální jazykové verze uživatelského rozhraní.On systems that use the Windows operating system, the common language runtime calls the Windows GetUserDefaultUILanguage function to set the current UI culture. GetUserDefaultUILanguage vrátí výchozí jazykovou verzi uživatelského rozhraní nastavenou uživatelem.GetUserDefaultUILanguage returns the default UI culture set by the user. Pokud uživatel nenastaví výchozí jazyk uživatelského rozhraní, vrátí jazykovou verzi původně instalovanou v systému.If the user has not set a default UI language, it returns the culture originally installed on the system.

Pokud vlákno překročí hranice aplikace a spustí kód v jiné doméně aplikace, je jeho kultura určena stejným způsobem jako u nově vytvořeného vlákna.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.

Všimněte si, že pokud nastavíte specifickou jazykovou verzi uživatelského rozhraní, která se liší od jazykové verze nainstalovaného systému nebo z preferované jazykové verze uživatelského rozhraní, a vaše aplikace spustí více vláken, aktuální jazyková verze tohoto vlákna bude jazyková verze vrácená funkcí GetUserDefaultUILanguage, pokud nepřiřazujete jazykovou verzi k vlastnosti DefaultThreadCurrentUICulture v doméně aplikace, ve které je vlákno spuštěno.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.

Důležité informace o zabezpečeníSecurity Considerations

Změna jazykové verze aktuálního vlákna vyžaduje SecurityPermission oprávnění se sadou ControlThread Value.Changing the culture of the current thread requires a SecurityPermission permission with the ControlThread value set.

Upozornění

Manipulace s vlákny je nebezpečná, protože stav zabezpečení je přidružený k vláknům.Manipulating threads is dangerous because of the security state associated with threads. Proto by toto oprávnění mělo být přiděleno pouze důvěryhodnému kódu a pak pouze podle potřeby.Therefore, this permission should be given only to trustworthy code, and then only as necessary. Nemůžete změnit jazykovou verzi vlákna v částečně důvěryhodném kódu.You cannot change thread culture in semi-trusted code.

Aktuální jazyková verze uživatelského rozhraní a aplikace UWPThe current UI culture and UWP apps

V aplikacích Univerzální platforma Windows (UWP) je vlastnost CurrentUICulture pro čtení i zápis, stejně jako je v aplikacích .NET Framework a .NET Core. pro získání a nastavení aktuální jazykové verze můžete použít obojí.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. Aplikace pro UWP ale nerozlišují mezi aktuální jazykovou verzí a aktuální jazykovou verzí uživatelského rozhraní.However, UWP apps do not distinguish between the current culture and the current UI culture. Vlastnosti CurrentCulture a CurrentUICulture mapují na první hodnotu v kolekci 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.

V aplikacích .NET Framework a .NET Core je aktuální jazyková verze uživatelského rozhraní nastavená na vlákno a vlastnost CurrentUICulture odráží jazykovou verzi uživatelského rozhraní pouze aktuálního vlákna.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. V aplikacích pro UWP se aktuální jazyková verze mapuje na vlastnost Windows. ApplicationModel. Resources. Core. ResourceManager. DefaultContext. Languages , což je globální nastavení.In UWP apps, the current culture maps to the Windows.ApplicationModel.Resources.Core.ResourceManager.DefaultContext.Languages property, which is a global setting. Nastavení vlastnosti CurrentCulture změní jazykovou verzi celé aplikace; u jednotlivých vláken nelze nastavit jazykovou verzi.Setting the CurrentCulture property changes the culture of the entire app; culture cannot be set on a per-thread basis.

Zabezpečení

SecurityPermission
pro nastavení aktuální jazykové verze uživatelského rozhraní.for setting the current UI culture. Přidružený výčet: ControlThreadAssociated enumeration: ControlThread

Platí pro

Viz také