Freigeben über


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 namefinden 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 namekann, 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 vbcund ä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 culturenull. 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 culturewurde, 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 namefinden 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 namekann, 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 vbccscdie 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.