ResourceManager.GetString Methode
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.
Gibt die angegebene Zeichenfolgenressource für die angegebene Kultur oder die aktuelle Benutzeroberflächenkultur zurück.
Überlädt
| Name | Beschreibung |
|---|---|
| GetString(String) |
Gibt den Wert der angegebenen Zeichenfolgenressource zurück. |
| GetString(String, CultureInfo) |
Gibt den Wert der für die angegebene Kultur lokalisierten Zeichenfolgenressource zurück. |
GetString(String)
- Quelle:
- ResourceManager.cs
- Quelle:
- ResourceManager.cs
- Quelle:
- ResourceManager.cs
- Quelle:
- ResourceManager.cs
- Quelle:
- ResourceManager.cs
Gibt den Wert der angegebenen Zeichenfolgenressource zurück.
public:
System::String ^ GetString(System::String ^ name);
public:
virtual System::String ^ GetString(System::String ^ name);
public string GetString(string name);
public virtual string? GetString(string name);
public virtual string GetString(string name);
member this.GetString : string -> string
abstract member GetString : string -> string
override this.GetString : string -> string
Public Function GetString (name As String) As String
Public Overridable Function GetString (name As String) As String
Parameter
- name
- String
Der Name der abzurufenden Ressource.
Gibt zurück
Der Wert der Ressource, die für die aktuelle Benutzeroberflächenkultur des Aufrufers lokalisiert wurde, oder null wenn name sie nicht in einem Ressourcensatz gefunden werden kann.
Ausnahmen
Der name Parameter ist null.
Der Wert der angegebenen Ressource ist keine Zeichenfolge.
Es wurden keine verwendbaren Ressourcen gefunden, und es gibt keine Ressourcen für die Standardkultur. Informationen zum Behandeln dieser Ausnahme finden Sie im Abschnitt "Handling MissingManifestResourceException and MissingSatelliteAssemblyException Exceptions" im Thema zur ResourceManager Klasse.
Die Ressourcen der Standardkultur befinden sich in einer Satellitenassembly, die nicht gefunden werden konnte. Informationen zum Behandeln dieser Ausnahme finden Sie im Abschnitt "Handling MissingManifestResourceException and MissingSatelliteAssemblyException Exceptions" im Thema zur ResourceManager Klasse.
Hinweise
Die Eigenschaft IgnoreCase bestimmt, ob beim Vergleich von name mit den Namen der Ressourcen zwischen Groß- und Kleinschreibung unterschieden wird (Standardeinstellung) oder nicht.
Note
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 FileLoadException-Ausnahme könnte beispielsweise ausgelöst werden, wenn ein Fehler bei der Bereitstellung oder Installation einer Satellitenassembly aufgetreten ist, oder eine SerializationException-Ausnahme könnte ausgelöst werden, wenn ein benutzerdefinierter Typ eine benutzerdefinierte Ausnahme auslöst, wenn der Typ deserialisiert wird.
GetString(String)-Methode
Desktopanwendungen
Bei Desktop-Apps wird die zurückgegebene Ressource auf die Benutzeroberflächenkultur des aktuellen Threads lokalisiert, wie durch die CultureInfo.CurrentUICulture-Eigenschaft definiert. Wenn die Ressource für diese Kultur nicht lokalisiert wurde, sucht der Ressourcen-Manager nach einer Ressource, indem er die im Abschnitt „Ressourcenfallbackprozess“ des Artikels „Packen und Bereitstellen von Ressourcen“ beschriebenen Schritte ausführt. 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 namefinden kann, gibt die Methode zurück null.
Example
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. Das Beispiel ändert die aktuelle Kultur und die aktuelle Kultur der Benutzeroberfläche in Englisch (Vereinigte Staaten), Französisch (Frankreich), Russisch (Russland) und Schwedisch (Schweden). 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 |
|---|---|---|---|
| en-US | DateStrings.txt | DateStart |
Heute ist |
| fr-FR | DateStrings.fr-FR.txt | DateStart |
Heute ist der |
| ru-RU | DateStrings.ru-RU.txt | DateStart |
Сегодня |
Sie können die folgende Batchdatei verwenden, um das C#-Beispiel zu kompilieren. Ändern Sie für Visual Basic csc zu vbc, und ändern Sie die Erweiterung der Quellcodedatei von .cs zu .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 ShowTimeExample
{
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: {CultureInfo.CurrentUICulture.Name}");
string dateString = rm.GetString("DateStart");
Console.WriteLine($"{dateString} {DateTime.Now:M}.\n");
}
}
}
// 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
Desktopanwendungen
In Desktop-Apps, wenn culturenull ist, verwendet die GetString(String, CultureInfo)-Methode 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 für culture lokalisiert wurde, sucht der Ressourcen-Manager nach einer Ressource, indem er die im Abschnitt "Ressourcenfallbackprozess" des Themas "Packen und Bereitstellen von Ressourcen" beschriebenen Schritte ausführt. 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 namefinden kann, gibt die Methode zurück null.
Example
Im folgenden Beispiel wird die GetString(String, CultureInfo) Methode zum Abrufen kulturspezifischer Ressourcen verwendet. Die Standardkultur des Beispiels ist Englisch (en), und es enthält Satellitenassemblies für die Kulturen Französisch (Frankreich) (fr-FR) und Russisch (Russland) (ru-RU). Das Beispiel ändert die aktuelle Kultur und die aktuelle UI-Kultur auf Russisch (Russland), bevor es GetString(String, CultureInfo)aufruft. 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 |
|---|---|---|---|
| en-US | DateStrings.txt | DateStart |
Heute ist |
| fr-FR | DateStrings.fr-FR.txt | DateStart |
Heute ist der |
| 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 zu csc und ändern Sie die Erweiterung der Quellcodedatei von .vb zu .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($"{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.
Threadsicherheit
Die GetString(String) Methode ist threadsicher.
Weitere Informationen
Gilt für:
GetString(String, CultureInfo)
- Quelle:
- ResourceManager.cs
- Quelle:
- ResourceManager.cs
- Quelle:
- ResourceManager.cs
- Quelle:
- ResourceManager.cs
- Quelle:
- ResourceManager.cs
Gibt den Wert der für die angegebene Kultur lokalisierten Zeichenfolgenressource zurück.
public:
virtual System::String ^ GetString(System::String ^ name, System::Globalization::CultureInfo ^ culture);
public virtual string GetString(string name, System.Globalization.CultureInfo culture);
public virtual string? GetString(string name, System.Globalization.CultureInfo? culture);
abstract member GetString : string * System.Globalization.CultureInfo -> string
override this.GetString : string * System.Globalization.CultureInfo -> string
Public Overridable Function GetString (name As String, culture As CultureInfo) As String
Parameter
- name
- String
Der Name der abzurufenden Ressource.
- culture
- CultureInfo
Ein Objekt, das die Kultur darstellt, für die die Ressource lokalisiert wird.
Gibt zurück
Der Wert der für die angegebene Kultur lokalisierten Ressource, oder null wenn name sie in einem Ressourcensatz nicht gefunden werden kann.
Ausnahmen
Der name Parameter ist null.
Der Wert der angegebenen Ressource ist keine Zeichenfolge.
Es wurden keine verwendbaren Ressourcen gefunden, und es gibt keine Ressourcen für eine Standardkultur. Informationen zum Behandeln dieser Ausnahme finden Sie im Abschnitt "Handling MissingManifestResourceException and MissingSatelliteAssemblyException Exceptions" im Thema zur ResourceManager Klasse.
Die Ressourcen der Standardkultur befinden sich in einer Satellitenassembly, die nicht gefunden werden konnte. Informationen zum Behandeln dieser Ausnahme finden Sie im Abschnitt "Handling MissingManifestResourceException and MissingSatelliteAssemblyException Exceptions" im Thema zur ResourceManager Klasse.
Hinweise
Die Eigenschaft IgnoreCase bestimmt, ob beim Vergleich von name mit den Namen der Ressourcen zwischen Groß- und Kleinschreibung unterschieden wird (Standardeinstellung) oder nicht.
Note
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 FileLoadException-Ausnahme könnte beispielsweise ausgelöst werden, wenn ein Fehler bei der Bereitstellung oder Installation einer Satellitenassembly aufgetreten ist, oder eine SerializationException-Ausnahme könnte ausgelöst werden, wenn ein benutzerdefinierter Typ eine benutzerdefinierte Ausnahme auslöst, wenn der Typ deserialisiert wird.
GetString(String)-Methode
Desktopanwendungen
Bei Desktop-Apps wird die zurückgegebene Ressource auf die Benutzeroberflächenkultur des aktuellen Threads lokalisiert, wie durch die CultureInfo.CurrentUICulture-Eigenschaft definiert. Wenn die Ressource für diese Kultur nicht lokalisiert wurde, sucht der Ressourcen-Manager nach einer Ressource, indem er die im Abschnitt „Ressourcenfallbackprozess“ des Artikels „Packen und Bereitstellen von Ressourcen“ beschriebenen Schritte ausführt. 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 namefinden kann, gibt die Methode zurück null.
Example
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. Das Beispiel ändert die aktuelle Kultur und die aktuelle Kultur der Benutzeroberfläche in Englisch (Vereinigte Staaten), Französisch (Frankreich), Russisch (Russland) und Schwedisch (Schweden). 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 |
|---|---|---|---|
| en-US | DateStrings.txt | DateStart |
Heute ist |
| fr-FR | DateStrings.fr-FR.txt | DateStart |
Heute ist der |
| ru-RU | DateStrings.ru-RU.txt | DateStart |
Сегодня |
Sie können die folgende Batchdatei verwenden, um das C#-Beispiel zu kompilieren. Ändern Sie für Visual Basic csc zu vbc, und ändern Sie die Erweiterung der Quellcodedatei von .cs zu .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 ShowTimeExample
{
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: {CultureInfo.CurrentUICulture.Name}");
string dateString = rm.GetString("DateStart");
Console.WriteLine($"{dateString} {DateTime.Now:M}.\n");
}
}
}
// 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
Desktopanwendungen
In Desktop-Apps, wenn culturenull ist, verwendet die GetString(String, CultureInfo)-Methode 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 für culture lokalisiert wurde, sucht der Ressourcen-Manager nach einer Ressource, indem er die im Abschnitt "Ressourcenfallbackprozess" des Themas "Packen und Bereitstellen von Ressourcen" beschriebenen Schritte ausführt. 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 namefinden kann, gibt die Methode zurück null.
Example
Im folgenden Beispiel wird die GetString(String, CultureInfo) Methode zum Abrufen kulturspezifischer Ressourcen verwendet. Die Standardkultur des Beispiels ist Englisch (en), und es enthält Satellitenassemblies für die Kulturen Französisch (Frankreich) (fr-FR) und Russisch (Russland) (ru-RU). Das Beispiel ändert die aktuelle Kultur und die aktuelle UI-Kultur auf Russisch (Russland), bevor es GetString(String, CultureInfo)aufruft. 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 |
|---|---|---|---|
| en-US | DateStrings.txt | DateStart |
Heute ist |
| fr-FR | DateStrings.fr-FR.txt | DateStart |
Heute ist der |
| 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 zu csc und ändern Sie die Erweiterung der Quellcodedatei von .vb zu .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($"{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.
Threadsicherheit
Die GetString(String, CultureInfo) Methode ist threadsicher.