Die ResourceManager-Klasse durchsucht kulturabhängige Ressourcen, stellt Ressourcenfallback bereit, wenn eine lokalisierte Ressource nicht vorhanden ist, und unterstützt das Serialisieren von Ressourcen.
Mit den Methoden des ResourceManager kann ein Aufrufer mit der GetObject-Methode und der GetString-Methode auf die Ressourcen für eine bestimmte Kultur zugreifen. In der Standardeinstellung geben diese Methoden die Ressource für die Kultur zurück, die durch die aktuellen Kultureinstellungen des aufrufenden Threads bestimmt werden. (Weitere Informationen finden Sie unter Thread..::.CurrentUICulture.) Aufrufer können mit der ResourceManager..::.GetResourceSet-Methode ein ResourceSet abrufen, das die Ressourcen für eine bestimmte Kultur darstellt und ignoriert die Fallbackregeln der Kultur. Mit dem ResourceSet können Sie dann auf die Ressourcen, die für diese Kultur lokalisiert sind, nach Namen zugreifen.
Es empfiehlt sich, Ressourcen für jede Sprache oder zumindest für eine sinnvolle Auswahl von Sprachen zu erstellen. Die Namen der Ressourcendateien entsprechen der Benennungskonvention Basisname.Kulturname.Ressourcen, wobei Basisname je nach erwünschter Genauigkeit für den Namen der Anwendung oder den Namen einer Klasse steht. Mit der Name-Eigenschaft von CultureInfo wird der Kulturname bestimmt. Eine Ressource für die neutrale Kultur, die von InvariantCulture zurückgegeben wird, muss nach dem Muster Basisname.Ressourcen benannt werden.
Angenommen, eine Assembly verfügt über mehrere Ressourcen in einer Ressourcendatei mit dem Basisnamen "MyResources". Die Namen dieser Ressourcendateien lauten z. B. "MyResources.ja-JP.resources", "MyResources.de.resources", "MyResources.zh-CHS.resources" oder "MyResources.fr-BE.resources" und enthalten jeweils die Ressourcen für Japanisch, Deutsch, Chinesisch (vereinfacht) und Französisch (Belgien). Die Standardressourcendatei muss MyResources.resources benannt werden. Die kulturabhängigen Ressourcendateien werden i. d. R. in Satellitenassemblys für die jeweiligen Kulturen gepackt. Die Standardressourcendatei muss sich in der Hauptassembly befinden.
Angenommen, es wurde ein ResourceManager erstellt, um die Ressourcen mit diesem Basisnamen darzustellen. Mit ResourceManager können Sie ein ResourceSet abrufen, das "MyResources.ja-JP.resources" durch Aufruf von GetResourceSet(new CultureInfo ("ja-JP"), TRUE, FALSE) kapselt. Wenn Sie wissen, dass "MyResources" die Ressource "TOOLBAR_ICON" enthält, können Sie den Wert der Ressource, die für Japan lokalisiert wurde, abrufen, indem Sie GetObject("TOOLBAR_ICON", new CultureInfo("ja-JP")) aufrufen.
Obwohl dies für die meisten Verwendungszwecke von ResourceManager nicht erforderlich ist, sollten allgemein zugängliche Assemblys das SatelliteContractVersionAttribute verwenden, um mehrere Versionen der Hauptassembly zu unterstützen, ohne dass die Satellitenassemblys erneut bereitgestellt werden müssen, sowie das NeutralResourcesLanguageAttribute, um das Suchen einer nicht vorhandenen Satellitenassembly zu verhindern.
Weitere Informationen über die Unterstützung mehrerer Versionen von Satellitenassemblys finden Sie unter Abrufen von Ressourcen in Satellitenassemblys. Weitere Informationen über das Erstellen von Satellitenassemblys finden Sie unter Erstellen von Satellitenassemblys. Hinweise zum Lokalisieren von Windows Forms-Dialogfeldern finden Sie unter dem Windows Forms Resource Editor-Tool (Winres.exe)-Tool in Windows Software Development Kit (SDK).
Weitere Informationen über das Einrichten und Erstellen von Ressourcen finden Sie unter Ressourcen in Anwendungen.
Vorsicht: |
|---|
Das Verwenden eigenständiger RESOURCES-Dateien in einer ASP.NET-Anwendung unterbricht die XCOPY-Bereitstellung, da die Ressourcen gesperrt bleiben, bis sie explizit durch die ReleaseAllResources-Methode freigegeben werden. Wenn Sie Ressourcen in ASP.NET-Anwendungen bereitstellen möchten, sollten Sie die RESOURCES-Dateien in Satellitenassemblys kompilieren. |
Vorsicht: |
|---|
Auf als privat gekennzeichnete Ressourcen kann nur innerhalb der Assembly zugegriffen werden, in der sie sich befinden. Da die Satellitenassembly keinen Code enthält, sind die Ressourcen, die in dieser privat sind, durch keinen Mechanismus verfügbar. Daher sollten Ressourcen in Satellitenassemblys immer öffentlich sein, damit aus der Hauptassembly auf diese zugegriffen werden kann. Auf die in der Hauptassembly eingebetteten Ressourcen kann von der Hauptassembly zugegriffen werden, unabhängig davon, ob diese privat oder öffentlich sind. |
< satelliteassemblies >-Konfigurationsdateiknoten
Für ausführbare Dateien, die von einer Website bereitgestellt und ausgeführt werden (HREF-EXE-Dateien), kann die ResourceManager-Klasse eine Überprüfung auf Satellitenassemblys im Web ausführen, wodurch die Leistung der Anwendung beeinträchtigt werden kann. Sie können diese Überprüfung auf die Satellitenassemblys beschränken, die mit der Anwendung bereitgestellt wurden, wodurch das Leistungsproblem behoben wird. Erstellen Sie hierzu einen <satelliteassemblies>-Knoten in der Anwendungskonfigurationsdatei, um anzugeben, dass eine spezifische Gruppe von Kulturen für die Anwendung bereitgestellt wurde und dass die ResourceManager-Klasse keine Überprüfung auf Kulturen ausführen soll, die nicht in diesem Knoten aufgelistet sind.
Erstellen Sie einen dem folgenden Codebeispiel ähnlichen Konfigurationsdateiabschnitt:
<?xml version ="1.0"?>
<configuration>
<satelliteassemblies>
<assembly name="MainAssemblyName, Version=versionNumber, Culture=neutral, PublicKeyToken=null|yourPublicKeyToken">
<culture>cultureName1</culture>
<culture>cultureName2</culture>
<culture>cultureName3</culture>
</assembly>
</satelliteassemblies>
</configuration>
Führen Sie in der Konfigurationsdatei Folgendes aus:
Geben Sie einen oder mehrere <assembly>-Knoten für jede bereitgestellte Hauptassembly an, wobei das <assembly>-Knotenattribut einen vollqualifizierten Assemblynamen angibt. Geben Sie anstelle von MainAssemblyName den Namen der Hauptassembly an, und geben Sie die Attributwerte Version, PublicKeyToken und Culture an, die der Hauptassembly entsprechen.
Geben Sie für das Version-Attribut die Versionsnummer der Assembly an. Zum Beispiel könnte die erste Version der Assembly Versionsnummer 1.0.0.0 sein.
Sie können für das PublicKeyToken-Attribut "null" angeben, wenn die Assembly nicht mit einem starken Namen signiert ist, oder das öffentliche Schlüsseltoken, wenn die Assembly signiert ist.
Geben Sie für das Culture-Attribut das Schlüsselwort "neutral" an, um die Hauptassembly festzulegen, und veranlassen Sie, dass die ResourceManager-Klasse nur die in den <culture>-Knoten aufgelisteten Kulturen sucht.
Weitere Informationen zu vollqualifizierten Assemblynamen finden Sie unter Assemblynamen. Weitere Informationen über Assemblys mit starkem Namen finden Sie unter Erstellen und Verwenden von Assemblys mit starkem Namen.
Geben Sie einen oder mehrere <culture>-Knoten mit einem bestimmten Kulturnamen, z. B. "fr-FR", oder einem neutralen Kulturnamen, z. B. "fr", an.
Vorsicht: |
|---|
In Version 1.1 von .NET Framework müssen Sie der Konfigurationsdatei den folgenden Konfigurationsabschnittshandler hinzufügen. Da dieser Handler von .NET Framework, Version 2.0, jedoch nicht unterstützt wird, müssen Sie ihn aus der Konfigurationsdatei entfernen, wenn Sie ein Update von Version 1.1 auf Version 2.0 von .NET Framework ausführen. |
<configSections>
<section name="satelliteassemblies" type="System.Configuration.IgnoreSectionHandler, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowLocation="false" />
</configSections>
Wenn Ressourcen für eine Assembly benötigt werden, die unter dem <satelliteassemblies>-Knoten nicht aufgeführt ist, sucht die ResourceManager-Klasse entsprechend den Standardsuchregeln nach Kulturen.
Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Windows CE, Windows Mobile für Smartphone, Windows Mobile für Pocket PC, Xbox 360
.NET Framework und .NET Compact Framework unterstützen nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.