CultureInfo.CurrentUICulture Vlastnost
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Získá nebo nastaví CultureInfo objekt, který představuje aktuální jazykovou verzi uživatelského rozhraní používanou Resource Manager k vyhledání prostředků specifických pro jazykovou verzi za běhu.
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
Hodnota vlastnosti
Jazyková verze používaná Resource Manager k vyhledání prostředků specifických pro jazykovou verzi za běhu.
Výjimky
Vlastnost je nastavena na nullhodnotu .
Vlastnost je nastavena na název jazykové verze, který nelze použít k vyhledání souboru prostředku. Názvy názvů prostředků můžou obsahovat jenom písmena, číslice, pomlčky nebo podtržítka.
Příklady
Následující příklad kódu ukazuje, jak změnit CurrentCulture a CurrentUICulture aktuální vlákno.
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.
Poznámky
Vlastnost CurrentUICulture je vlastnost pro každé vlákno. To znamená, že každé vlákno má vlastní aktuální kulturní nastavení uživatelského rozhraní. Tato vlastnost je ekvivalentní načtení nebo nastavení objektu CultureInfo přiřazeného System.Threading.Thread.CurrentThread.CurrentUICulture vlastnosti. Při spuštění vlákna se jeho kultura uživatelského rozhraní zpočátku určí takto:
Načtením kultury určené vlastností DefaultThreadCurrentUICulture v aplikační doméně, ve které je vlákno spuštěno, pokud hodnota vlastnosti není
null.Pokud je vlákno vlákno vlákno fondu, které spouští asynchronní operaci založenou na úlohách, její jazyková verze uživatelského rozhraní je určena jazykovou verzí uživatelského rozhraní volajícího vlákna. Následující příklad změní aktuální jazykovou verzi uživatelského rozhraní na portugalštinu (Brazílie) a spustí šest úloh, z nichž každá zobrazuje ID vlákna, ID úkolu a aktuální jazykovou verzi uživatelského rozhraní. Každá úloha (i její vlákna) zdědila kulturu uživatelského rozhraní volajícího vlákna.
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-BRImports 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-BRDalší informace naleznete v tématu Kultura a asynchronní operace založené na úlohách.
Voláním funkce Windows
GetUserDefaultUILanguage.
Chcete-li změnit jazykovou verzi uživatelského rozhraní používanou vláknem, nastavte vlastnost Thread.CurrentUICulture na novou jazykovou verzi. Pokud tímto způsobem explicitně změníte jazykovou verzi uživatelského rozhraní vlákna, tato změna se zachová, pokud vlákno překročí hranice domény aplikace.
Note
Pokud nastavíte hodnotu vlastnosti na objekt CultureInfo, který představuje novou jazykovou verzi, hodnota vlastnosti Thread.CurrentThread.CurrentCulture se také změní.
Získat aktuální jazykové nastavení uživatelského rozhraní
Vlastnost CultureInfo.CurrentUICulture je nastavení pro jednotlivá vlákna; tedy každé vlákno může mít vlastní kulturu uživatelského rozhraní. Kulturní nastavení 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.
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]
Hodnotu kultury uživatelského rozhraní aktuálního vlákna můžete také získat z vlastnosti Thread.CurrentUICulture.
Explicitní nastavení aktuální kultury uživatelského rozhraní
Aktuální jazykovou verzi uživatelského rozhraní můžete změnit přiřazením objektu CultureInfo , který představuje novou jazykovou verzi vlastnosti CultureInfo.CurrentUICulture . Aktuální jazykovou verzi uživatelského rozhraní lze nastavit na konkrétní jazykovou verzi (například en-US nebo de-DE) nebo na neutrální jazykovou verzi (například en nebo de). Následující příklad nastaví aktuální kulturu uživatelského rozhraní na fr-FR nebo francouzštinu (Francie).
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
Ve vícevláknové aplikaci můžete explicitně nastavit kulturní nastavení uživatelského rozhraní libovolného vlákna tak, že přiřadíte objekt CultureInfo, který toto kulturní nastavení představuje, k vlastnosti Thread.CurrentUICulture vlákna. Pokud je vlákno, jehož kulturu chcete nastavit, aktuální vlákno, můžete novou kulturu přiřadit k vlastnosti CultureInfo.CurrentUICulture. Pokud je jazyková verze uživatelského rozhraní vlákna nastavená explicitně, zachová toto vlákno stejnou jazykovou verzi i v případě, že překročí hranice domény aplikace a spustí kód v jiné doméně aplikace.
Implicitně nastavte aktuální kulturu uživatelského rozhraní.
Při prvním vytvoření vlákna, včetně hlavního vlákna aplikace, je ve výchozím nastavení aktuální kulturní nastavení uživatelského rozhraní nastaveno takto:
- Pokud hodnota vlastnosti není DefaultThreadCurrentUICulture, používá se jazyková verze definovaná vlastností
nullpro aktuální doménu aplikace. - Pomocí výchozí kultury systému. V systémech, které používají operační systém Windows, běhové prostředí pro společný jazyk volá funkci Windows
GetUserDefaultUILanguagek nastavení aktuálního kulturního prostředí uživatelského rozhraní.GetUserDefaultUILanguagevrátí výchozí jazyk uživatelského rozhraní nastavený uživatelem. Pokud uživatel nenastavil výchozí jazyk uživatelského rozhraní, vrátí kulturu původně nainstalovanou v systému.
Pokud vlákno překročí hranice aplikace a spustí kód v jiné doméně aplikace, jeho kultura se určí stejným způsobem jako nově vytvořené vlákno.
Všimněte si, že pokud nastavíte konkrétní jazykovou verzi uživatelského rozhraní, která se liší od jazykové verze uživatelského rozhraní nainstalovaného systémem nebo upřednostňovanou jazykovou verzi uživatelského rozhraní uživatele a vaše aplikace spustí více vláken, bude aktuální jazyková verze těchto vláken vrácená funkcí GetUserDefaultUILanguage, pokud nepřiřadíte jazykovou verzi k DefaultThreadCurrentUICulture vlastnosti v doméně aplikace, ve které se vlákno spouští.
Bezpečnostní aspekty
Změna kultury aktuálního vlákna vyžaduje oprávnění SecurityPermission s nastavenou hodnotou ControlThread.
Caution
Manipulace s vlákny je nebezpečná z důvodu stavu zabezpečení spojeného s vlákny. Toto oprávnění by proto mělo být uděleno pouze důvěryhodnému kódu a pak pouze podle potřeby. Kulturu vlákna nelze změnit v částečně důvěryhodném kódu.