System.Resources.ResourceManager.GetString-Methoden
Dieser Artikel enthält ergänzende Hinweise zur Referenzdokumentation für diese API.
Die IgnoreCase Eigenschaft bestimmt, ob bei dem Vergleich name
mit den Namen von Ressourcen die Groß-/Kleinschreibung nicht beachtet wird (Standardeinstellung).
Hinweis
Die GetString Methoden können mehr Ausnahmen auslösen, als aufgelistet sind. Ein Grund hierfür kann sein, wenn eine Methode, die von dieser Methode aufgerufen wird, eine Ausnahme auslöst. Eine Ausnahme kann beispielsweise ausgelöst werden, FileLoadException wenn beim Bereitstellen oder Installieren einer Satellitenassembly ein Fehler aufgetreten ist oder eine SerializationException Ausnahme ausgelöst wird, wenn ein benutzerdefinierter Typ eine benutzerdefinierte Ausnahme auslöst, wenn der Typ deserialisiert wird.
GetString(String)-Methode
Desktop-App
In Desktop-Apps wird die zurückgegebene Ressource für die UI-Kultur des aktuellen Threads lokalisiert, wie von der CultureInfo.CurrentUICulture Eigenschaft definiert. Wenn die Ressource für diese Kultur nicht lokalisiert wurde, führt der Ressourcen-Manager Prüfpunkte für eine Ressource aus, indem sie die im Abschnitt "Ressourcenfallbackprozess" des Artikels "Packen und Bereitstellen von Ressourcen " beschriebenen Schritte ausführen. Wenn keine verwendbare Gruppe lokalisierter Ressourcen gefunden wird, greift der Ressourcen-Manager auf die Ressourcen der Standardkultur zurück. Wenn der Ressourcenmanager den Ressourcensatz der Standardkultur nicht laden kann, löst die Methode eine MissingManifestResourceException Ausnahme aus oder, wenn der Ressourcensatz in einer Satellitenassembly erwartet wird, eine MissingSatelliteAssemblyException Ausnahme. Wenn der Ressourcen-Manager einen geeigneten Ressourcensatz laden kann, aber keine Ressource mit dem Namen name
finden kann, gibt die Methode zurück null
.
Windows 8.x-Apps
Wichtig
Obwohl die ResourceManager Klasse in Windows 8.x-Apps unterstützt wird, wird die Verwendung nicht empfohlen. Verwenden Sie diese Klasse nur, wenn Sie portable Klassenbibliotheksprojekte entwickeln, die mit Windows 8.x-Apps verwendet werden können. Um Ressourcen aus Windows 8.x-Apps abzurufen, verwenden Sie stattdessen die Windows.ApplicationModel.Resources.ResourceLoader-Klasse .
In Windows 8.x-Apps gibt die GetString(String) Methode den Wert der name
Zeichenfolgenressource zurück, lokalisiert für die aktuellen Benutzeroberflächenkultureinstellungen des Aufrufers. Die Liste der Kulturen wird von der bevorzugten Benutzeroberflächensprachenliste des Betriebssystems abgeleitet. Wenn der Ressourcen-Manager nicht übereinstimmen name
kann, gibt die Methode zurück null
.
Beispiel
Im folgenden Beispiel wird die GetString Methode zum Abrufen kulturspezifischer Ressourcen verwendet. Es besteht aus Ressourcen, die aus .txt Dateien für die Kulturen Englisch (en), Französisch (Frankreich) (fr-FR) und Russisch (Russland) (ru-RU) kompiliert wurden. Im Beispiel wird die aktuelle Kultur und die aktuelle UI-Kultur in Englisch (USA), Französisch (Frankreich), Russisch (Russland) und Schwedisch (Schweden) geändert. Anschließend wird die GetString Methode aufgerufen, um die lokalisierte Zeichenfolge abzurufen, die zusammen mit dem aktuellen Tag und dem aktuellen Monat angezeigt wird. Beachten Sie, dass die Ausgabe die entsprechende lokalisierte Zeichenfolge anzeigt, außer wenn die aktuelle UI-Kultur schwedisch (Schweden) ist. Da schwedische Sprachressourcen nicht verfügbar sind, verwendet die App stattdessen die Ressourcen der Standardkultur, die Englisch ist. Für das Beispiel sind die textbasierten Ressourcendateien erforderlich, die in der folgenden Tabelle aufgeführt sind. Jede verfügt über eine einzelne Zeichenfolgenressource mit dem Namen DateStart
.
Kultur | Dateiname | Ressourcenname | Ressourcenwert |
---|---|---|---|
de-De | DateStrings.txt | DateStart |
Heute ist |
fr-FR | DateStrings.fr-FR.txt | DateStart |
Aujourd'hui, c'est le |
ru-RU | DateStrings.ru-RU.txt | DateStart |
Сегодня |
Sie können die folgende Batchdatei verwenden, um das C#-Beispiel zu kompilieren. Ändern Sie in Visual Basic csc
in vbc
und ändern Sie die Erweiterung des Quellcodes von .cs
in .vb
.
resgen DateStrings.txt
csc showdate.cs /resource:DateStrings.resources
md fr-FR
resgen DateStrings.fr-FR.txt
al /out:fr-FR\Showdate.resources.dll /culture:fr-FR /embed:DateStrings.fr-FR.resources
md ru-RU
resgen DateStrings.ru-RU.txt
al /out:ru-RU\Showdate.resources.dll /culture:ru-RU /embed:DateStrings.ru-RU.resources
Hier sehen Sie den Quellcode für das Beispiel (ShowDate.vb für die Visual Basic-Version oder ShowDate.cs für die C#-Version).
using System;
using System.Globalization;
using System.Resources;
using System.Threading;
public class Example
{
public static void Main()
{
string[] cultureNames = [ "en-US", "fr-FR", "ru-RU", "sv-SE" ];
ResourceManager rm = new ResourceManager("DateStrings",
typeof(Example).Assembly);
foreach (var cultureName in cultureNames) {
CultureInfo culture = CultureInfo.CreateSpecificCulture(cultureName);
Thread.CurrentThread.CurrentCulture = culture;
Thread.CurrentThread.CurrentUICulture = culture;
Console.WriteLine("Current UI Culture: {0}",
CultureInfo.CurrentUICulture.Name);
string dateString = rm.GetString("DateStart");
Console.WriteLine("{0} {1:M}.\n", dateString, DateTime.Now);
}
}
}
// The example displays output similar to the following:
// Current UI Culture: en-US
// Today is February 03.
//
// Current UI Culture: fr-FR
// Aujourd'hui, c'est le 3 février
//
// Current UI Culture: ru-RU
// Сегодня февраля 03.
//
// Current UI Culture: sv-SE
// Today is den 3 februari.
Imports System.Globalization
Imports System.Resources
Imports System.Threading
<Assembly:NeutralResourcesLanguage("en")>
Module Example
Public Sub Main()
Dim cultureNames() As String = { "en-US", "fr-FR", "ru-RU", "sv-SE" }
Dim rm As New ResourceManager("DateStrings",
GetType(Example).Assembly)
For Each cultureName In cultureNames
Dim culture As CultureInfo = CultureInfo.CreateSpecificCulture(cultureName)
Thread.CurrentThread.CurrentCulture = culture
Thread.CurrentThread.CurrentUICulture = culture
Console.WriteLine("Current UI Culture: {0}",
CultureInfo.CurrentUICulture.Name)
Dim dateString As String = rm.GetString("DateStart")
Console.WriteLine("{0} {1:M}.", dateString, Date.Now)
Console.WriteLine()
Next
End Sub
End Module
' The example displays output similar to the following:
' Current UI Culture: en-US
' Today is February 03.
'
' Current UI Culture: fr-FR
' Aujourd'hui, c'est le 3 février
'
' Current UI Culture: ru-RU
' Сегодня февраля 03.
'
' Current UI Culture: sv-SE
' Today is den 3 februari.
GetString(String, CultureInfo)-Methode
Desktop-App
In Desktop-Apps verwendet die GetString(String, CultureInfo) Methode ggf culture
null
. die aktuelle Ui-Kultur, die von der CultureInfo.CurrentUICulture Eigenschaft abgerufen wird.
Die zurückgegebene Ressource wird für die vom culture
Parameter angegebene Kultur lokalisiert. Wenn die Ressource nicht lokalisiert culture
wurde, führen die Ressourcen-Manager-Prüfpunkte für eine Ressource aus, indem Sie die im Abschnitt "Ressourcenfallbackprozess" des Themas "Packen und Bereitstellen von Ressourcen " beschriebenen Schritte ausführen. Wenn keine verwendbare Gruppe von Ressourcen gefunden wird, greift der Ressourcen-Manager auf die Ressourcen der Standardkultur zurück. Wenn der Ressourcenmanager den Ressourcensatz der Standardkultur nicht laden kann, löst die Methode eine MissingManifestResourceException Ausnahme aus oder, wenn der Ressourcensatz in einer Satellitenassembly erwartet wird, eine MissingSatelliteAssemblyException Ausnahme. Wenn der Ressourcen-Manager einen geeigneten Ressourcensatz laden kann, aber keine Ressource mit dem Namen name
finden kann, gibt die Methode zurück null
.
Windows 8.x-Apps
Wichtig
Obwohl die ResourceManager Klasse in Windows 8.x-Apps unterstützt wird, wird die Verwendung nicht empfohlen. Verwenden Sie diese Klasse nur, wenn Sie portable Klassenbibliotheksprojekte entwickeln, die mit Windows 8.x-Apps verwendet werden können. Um Ressourcen aus Windows 8.x-Apps abzurufen, verwenden Sie stattdessen die Windows.ApplicationModel.Resources.ResourceLoader-Klasse .
In Windows 8.x-Apps gibt die GetString(String, CultureInfo) Methode den Wert der name
Zeichenfolgenressource zurück, die für die vom culture
Parameter angegebene Kultur lokalisiert wird. Wenn die Ressource nicht für die culture
Kultur lokalisiert ist, verwendet die Suche die gesamte Fallbackliste für Windows 8-Sprachen und beendet die Suche nach der Standardkultur. Wenn der Ressourcen-Manager nicht übereinstimmen name
kann, gibt die Methode zurück null
.
Beispiel
Im folgenden Beispiel wird die GetString(String, CultureInfo) Methode zum Abrufen kulturspezifischer Ressourcen verwendet. Die Standardkultur des Beispiels ist Englisch (en) und enthält Satellitenassemblys für die Kulturen Französisch (Frankreich) (fr-FR) und Russisch (Russland) (ru-RU). Im Beispiel wird die aktuelle Kultur und die aktuelle UI-Kultur vor dem Aufrufen GetString(String, CultureInfo)in Russisch (Russland) geändert. Anschließend ruft sie die GetString Methode und die DateTime.ToString(String, IFormatProvider) Methode auf und übergibt CultureInfo Objekte, die die Kulturen Französisch (Frankreich) und Schwedisch (Schweden) an jede Methode darstellen. In der Ausgabe werden der Monat und der Tag des Monats sowie die Zeichenfolge, die ihnen vorausgeht, in Französisch angezeigt, da die GetString Methode die Französisch-Sprachressource abrufen kann. Wenn jedoch die schwedische Kultur (Schweden) verwendet wird, wird der Monat und der Tag des Monats in Schwedisch angezeigt, obwohl die Zeichenfolge, die ihnen vorausgeht, in Englisch ist. Dies liegt daran, dass der Ressourcenmanager lokalisierte schwedische Sprachressourcen nicht finden kann. Daher wird stattdessen eine Ressource für die englische Standardkultur zurückgegeben.
Für das Beispiel sind die textbasierten Ressourcendateien erforderlich, die in der folgenden Tabelle aufgeführt sind. Jede verfügt über eine einzelne Zeichenfolgenressource mit dem Namen DateStart
.
Kultur | Dateiname | Ressourcenname | Ressourcenwert |
---|---|---|---|
de-De | DateStrings.txt | DateStart |
Heute ist |
fr-FR | DateStrings.fr-FR.txt | DateStart |
Aujourd'hui, c'est le |
ru-RU | DateStrings.ru-RU.txt | DateStart |
Сегодня |
Sie können die folgende Batchdatei verwenden, um das Visual Basic-Beispiel zu kompilieren. Wenn Sie in C# kompilieren möchten, ändern Sie vbc
csc
die Erweiterung der Quellcodedatei in " in .vb
" .cs
.
resgen DateStrings.txt
vbc showdate.vb /resource:DateStrings.resources
md fr-FR
resgen DateStrings.fr-FR.txt
al /out:fr-FR\Showdate.resources.dll /culture:fr-FR /embed:DateStrings.fr-FR.resources
md ru-RU
resgen DateStrings.ru-RU.txt
al /out:ru-RU\Showdate.resources.dll /culture:ru-RU /embed:DateStrings.ru-RU.resources
Hier sehen Sie den Quellcode für das Beispiel (ShowDate.vb für die Visual Basic-Version oder ShowDate.cs für die C#-Version).
using System;
using System.Globalization;
using System.Resources;
using System.Threading;
public class Example2
{
public static void Main()
{
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("ru-RU");
Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture("ru-RU");
string[] cultureNames = [ "fr-FR", "sv-SE" ];
ResourceManager rm = new ResourceManager("DateStrings",
typeof(Example).Assembly);
foreach (var cultureName in cultureNames)
{
CultureInfo culture = CultureInfo.CreateSpecificCulture(cultureName);
string dateString = rm.GetString("DateStart", culture);
Console.WriteLine("{0}: {1} {2}.", culture.DisplayName, dateString,
DateTime.Now.ToString("M", culture));
Console.WriteLine();
}
}
}
// The example displays output similar to the following:
// French (France): Aujourd'hui, c'est le 7 février.
//
// Swedish (Sweden): Today is den 7 februari.
Imports System.Globalization
Imports System.Resources
Imports System.Threading
Module Example2
Public Sub Main()
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("ru-RU")
Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture("ru-RU")
Dim cultureNames() As String = {"fr-FR", "sv-SE"}
Dim rm As New ResourceManager("DateStrings",
GetType(Example).Assembly)
For Each cultureName In cultureNames
Dim culture As CultureInfo = CultureInfo.CreateSpecificCulture(cultureName)
Dim dateString As String = rm.GetString("DateStart", culture)
Console.WriteLine("{0}: {1} {2}.", culture.DisplayName, dateString,
Date.Now.ToString("M", culture))
Console.WriteLine()
Next
End Sub
End Module
' The example displays output similar to the following:
' French (France): Aujourd'hui, c'est le 7 février.
'
' Swedish (Sweden): Today is den 7 februari.