CultureInfo.CurrentUICulture Eigenschaft
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Dient zum Abrufen oder Festlegen des CultureInfo -Objekts, das die aktuelle Benutzeroberflächenkultur darstellt, die vom Resource Manager zum Nachschlagen kulturspezifischer Ressourcen zur Laufzeit verwendet wird.
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
Eigenschaftswert
Die Kultur, die vom Resource Manager zum Nachschlagen kulturspezifischer Ressourcen zur Laufzeit verwendet wird.
Ausnahmen
Die Eigenschaft ist auf null.
Die Eigenschaft ist auf einen Kulturnamen festgelegt, der nicht zum Suchen einer Ressourcendatei verwendet werden kann. Ressourcendateinamen können nur Buchstaben, Zahlen, Bindestriche oder Unterstriche enthalten.
Beispiele
Im folgenden Codebeispiel wird veranschaulicht, wie der CurrentCulture aktuelle Thread und CurrentUICulture der aktuelle Thread geändert werden.
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.
Hinweise
Die CurrentUICulture Eigenschaft ist eine Eigenschaft pro Thread. Das heißt, jeder Thread verfügt über eine eigene aktuelle UI-Kultur. Diese Eigenschaft entspricht dem Abrufen oder Festlegen des CultureInfo Objekts, das der System.Threading.Thread.CurrentThread.CurrentUICulture Eigenschaft zugewiesen ist. Wenn ein Thread gestartet wird, wird die Ui-Kultur zunächst wie folgt bestimmt:
Durch das Abrufen der Kultur, die durch die Eigenschaft DefaultThreadCurrentUICulture in der Anwendungsdomäne angegeben ist, in der der Thread ausgeführt wird, wenn der Eigenschaftswert nicht
nullist.Wenn der Thread ein Threadpoolthread ist, der einen aufgabenbasierten asynchronen Vorgang ausführt, wird die Ui-Kultur durch die Benutzeroberflächenkultur des aufrufenden Threads bestimmt. Im folgenden Beispiel wird die aktuelle Benutzeroberflächenkultur in Portugiesisch (Brasilien) geändert und sechs Aufgaben gestartet, von denen jede die Thread-ID, die Aufgaben-ID und die aktuelle Ui-Kultur anzeigt. Jede der Aufgaben (und die Threads) hat die UI-Kultur des aufrufenden Threads geerbt.
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-BRWeitere Informationen finden Sie unter Kultur- und aufgabenbasierte asynchrone Vorgänge.
Durch Aufrufen der Windows-Funktion
GetUserDefaultUILanguage.
Um die von einem Thread verwendete Benutzeroberflächenkultur zu ändern, legen Sie die Thread.CurrentUICulture Eigenschaft auf die neue Kultur fest. Wenn Sie die UI-Kultur eines Threads auf diese Weise explizit ändern, wird diese Änderung beibehalten, wenn der Thread Anwendungsdomänengrenzen überschreitet.
Note
Wenn Sie den Eigenschaftswert auf ein CultureInfo Objekt festlegen, das eine neue Kultur darstellt, ändert sich auch der Wert der Thread.CurrentThread.CurrentCulture Eigenschaft.
Aktuelle Benutzeroberflächenkultur abrufen
Die CultureInfo.CurrentUICulture Eigenschaft ist eine Einstellung pro Thread, d. h. jeder Thread kann über eine eigene UI-Kultur verfügen. Sie erhalten die Ui-Kultur des aktuellen Threads, indem Sie den Wert der CultureInfo.CurrentUICulture Eigenschaft abrufen, wie das folgende Beispiel veranschaulicht.
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]
Sie können auch den Wert der UI-Kultur des aktuellen Threads aus der Thread.CurrentUICulture Eigenschaft abrufen.
Explizite Festlegung der aktuellen Benutzeroberflächenkultur
Sie können die aktuelle Benutzeroberflächenkultur ändern, indem Sie ein CultureInfo Objekt zuweisen, das die neue Kultur der CultureInfo.CurrentUICulture Eigenschaft darstellt. Die aktuelle Benutzeroberflächenkultur kann entweder auf eine bestimmte Kultur (z. B. en-US oder de-DE) oder auf eine neutrale Kultur (z. B. en oder de) festgelegt werden. Im folgenden Beispiel wird die aktuelle Benutzeroberflächenkultur auf fr-FR oder Französisch (Frankreich) festgelegt.
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
In einer Multithreadanwendung können Sie die UI-Kultur eines beliebigen Threads explizit festlegen, indem Sie ein CultureInfo Objekt zuweisen, das diese Kultur der Eigenschaft des Thread.CurrentUICulture Threads darstellt. Wenn der Thread, dessen Kultur Sie festlegen möchten, der aktuelle Thread ist, können Sie der CultureInfo.CurrentUICulture Eigenschaft die neue Kultur zuweisen. Wenn die Ui-Kultur eines Threads explizit festgelegt wird, behält dieser Thread dieselbe Kultur bei, auch wenn er Anwendungsdomänengrenzen überschreitet und Code in einer anderen Anwendungsdomäne ausführt.
Implizite Festlegung der aktuellen Benutzeroberflächenkultur
Wenn ein Thread, einschließlich des Hauptanwendungsthreads, zuerst erstellt wird, wird standardmäßig die aktuelle Benutzeroberflächenkultur wie folgt festgelegt:
- Verwenden Sie die Kultur, die von der DefaultThreadCurrentUICultureEigenschaft für die aktuelle Anwendungsdomäne definiert wird, wenn der Eigenschaftswert nicht
nullist. - Mithilfe der Standardkultur des Systems. Auf Systemen, die das Windows-Betriebssystem verwenden, ruft die Common Language Runtime die Windows-Funktion
GetUserDefaultUILanguageauf, um die aktuelle Benutzeroberflächenkultur festzulegen.GetUserDefaultUILanguagegibt die vom Benutzer festgelegte Standardkultur der Benutzeroberfläche zurück. Wenn der Benutzer keine Standardsprache für die Benutzeroberfläche festgelegt hat, wird die kultur zurückgegeben, die ursprünglich auf dem System installiert wurde.
Wenn der Thread Anwendungsgrenzen überschreitet und Code in einer anderen Anwendungsdomäne ausführt, wird seine Kultur auf die gleiche Weise wie die eines neu erstellten Threads bestimmt.
Beachten Sie, dass beim Festlegen einer bestimmten Benutzeroberflächenkultur, die sich von der vom System installierten Benutzeroberflächenkultur oder der bevorzugten Benutzeroberflächenkultur unterscheidet, und die Anwendung mehrere Threads startet, die aktuelle Benutzeroberflächenkultur dieser Threads die von der GetUserDefaultUILanguage Funktion zurückgegebene Kultur ist, es sei denn, Sie weisen der Eigenschaft in der DefaultThreadCurrentUICulture Anwendungsdomäne, in der der Thread ausgeführt wird, eine Kultur zu.
Sicherheitsüberlegungen
Das Ändern der Kultur des aktuellen Threads erfordert eine SecurityPermission Berechtigung mit dem festgelegten ControlThread-Wert.
Caution
Das Bearbeiten von Threads ist aufgrund des Sicherheitsstatus, der Threads zugeordnet ist, gefährlich. Daher sollte diese Berechtigung nur vertrauenswürdigem Code und dann nur nach Bedarf erteilt werden. Sie können die Threadkultur im halb vertrauenswürdigen Code nicht ändern.