Freigeben über


Verpacken von Ressourcen

Bis jetzt wurde bei diesem Lernprogramm davon ausgegangen, dass Sie eine einzige Standardsprache für Ihre Ressourcen verwenden. Jetzt ist es an der Zeit, ein komplexeres Szenario zu betrachten, in dem es gleichzeitig mehrere Ressourcengruppen für mehrere Kulturen gibt. Dadurch können Sie eine einzelne Anwendung erstellen, die in mehreren Kulturen ausgeführt werden kann. Anders ausgedrückt kann die Anwendung auf die Einzelperson zugeschnitten werden, indem die Kultur des Benutzers festgestellt und die entsprechenden Ressourcen zur Laufzeit geladen werden. Durch diese Verfahrensweise ist es auch möglich, Ressourcen zu ändern (z. B. durch Aktualisieren einer Zeichenfolge oder sogar durch Hinzufügen einer neuen Kultur), ohne die gesamte Anwendung erneut kompilieren und verteilen zu müssen. Dies ist besonders nützlich, wenn sich die Ressourcen in einem gemeinsam genutzten Verzeichnis befinden und mehrere Benutzer die Änderungen automatisch implementieren können.

Die beiden lokalisierten Beispielanwendungen, die mit diesem Lernprogramm geliefert werden (WorldCalc und Graphic), verwenden private Satellitenassemblies. Privat bedeutet hier, dass sie nicht in den globalen Assemblycache (GAC) gestellt werden; der Begriff "Satellit" bezieht sich darauf, dass es sich um reine Ressourcenassemblies (oder DLLs) handelt, die in Verbindung mit einer anderen Assembly, der Hauptassembly, arbeiten, in der sich der Anwendungscode befindet. Die Hauptassembly enthält auch die Standardkulturressourcen oder neutralen Kulturressourcen, die immer dann verwendet werden, wenn es keine spezifische lokalisierte Ressource gibt. Die Ressourcen der Hauptassemblies befinden sich im Anwendungsverzeichnis in RESOURCES-Dateien, die vom Compiler in die Assembly eingebettet werden. Sie können mit dem Assembly Generation-Tool (AL) auch später eingebettet werden.

**Hinweis   **Weitere Informationen zum AL finden Sie in Anhang B: Ressourcentools.

Wenn die Ressourcenassemblies gemeinsam genutzt werden sollen, d. h. dass sie sich im GAC befinden und von mehreren Anwendungen verwendet werden sollen, muss ihnen durch Angabe zusätzlicher Schlüssel- und Versionsinformationen ein starker Name zugewiesen werden. Falls gewünscht, können Sie darüber hinaus das SatelliteContractVersionAttribute-Attribut hinzufügen, das Ihnen die Erstellung von Versionen der Satellitenressourcenassemblies ermöglicht, und zwar unabhängig von der Hauptassembly und ohne Dateien mit Konfigurationsrichtlinien. Weitere Informationen über Assemblies mit starkem Namen finden Sie unter Verpacken und Weitergeben von .NET Framework-Anwendungen.

Wenn Sie sich die einzelnen Anwendungen ansehen, stellen Sie fest, dass es unter dem Anwendungsverzeichnis eine Reihe von Unterverzeichnissen gibt, dass jedes Unterverzeichnis einen Namen besitzt, das einem Kulturtag entspricht, und dass jedes Unterverzeichnis die unformatierten Ressourceninformationen und, sofern erstellt, die entsprechende Satellitenassembly enthält. Dieses Layout hebt zwei wichtige Punkte hervor: eine bestimmte Assembly kann Ressourcen für nur eine einzige Kultur enthalten und die Ressourcen jeder Kultur werden in einem separaten Unterverzeichnis gespeichert, das nach dem Tag der Kultur benannt ist.

Zeichenfolgen – Die Lokalisierung von Zeichenfolgen wird durch das WorldCalc-Beispiel veranschaulicht. Die Zeichenfolgen werden in Name-Wert-Paaren in Dateien mit dem Namen MyStrings.txt im Anwendungsverzeichnis (für den Standardwert, Englisch) und den beiden lokalisierten Kulturen (de für Deutsch und de-CH für Schweizerdeutsch) gespeichert.

Der Erstellungsprozess (in Build.bat) für die WorldCalc-Beispielanwendung führt die folgenden Schritte aus (die hier in einer logischeren Reihenfolge zusammengefasst sind als in der eigentlichen Build.bat-Datei).

  1. Komponenten math.dll und parser.dll erstellen:

    csc ... math.cs
    csc ... parser.cs
    
  2. RESOURCES-Standarddatei und alle lokalisierten RESOURCES-Dateien mit Resgen.exe erstellen:

    resgen MyStrings.txt MyStrings.resources
    resgen MyStrings.de.txt MyStrings.de.resources
    resgen MyStrings.de-CH.txt MyStrings.de-CH.resources
    
  3. Mit AL die Satellitenassemblies erstellen, die Ressourcen einbetten (oder verknüpfen) und die Kultur festlegen:

    al /out:WorldCalc.Resources.Dll /v:1.0.0.0 /c:de /embed:MyStrings.de.resources,MyStrings.de.resources,Private
    al /out:WorldCalc.Resources.Dll /v:1.0.0.0 /c:de-CH /embed:MyStrings.de-CH.resources,MyStrings.de-CH.resources,Private
    

    **Hinweis   **Bei Kulturzeichenfolgen wird die Groß- und Kleinschreibung nicht berücksichtigt.

  4. Die Anwendung selbst kompilieren und die Standardressourcen mit dem Schalter /res verknüpfen:

    csc ... /target:winexe ... /addmodule:parser.dll /r:System.Windows.Forms.dll /r:System.Drawing.dll /r:System.dll /r:math\math.dll /res:MyStrings.resources WorldCalc.cs
    

    Das Visual Basic-Äquivalent sieht wie folgt aus:

    vbc ... /target:winexe ... /addmodule:parser.dll /r:System.Windows.Forms.dll /r:System.Drawing.dll /r:System.dll /r:math\math.dll /res:MyStrings.resources WorldCalc.vb
    

Von diesem Punkt aus muss zum Hinzufügen einer weiteren Kultur lediglich eine entsprechende Textdatei mit den Ressourcen erstellt und die Schritte 2 und 3 wiederholt werden.

Bilder – Die Lokalisierung von Bildern wird im Graphic-Beispiel demonstriert. Der Erstellungsprozess für diese Beispielanwendung ist ähnlich dem Prozess für WorldCalc; dabei wird jedoch ein weiterer, einzelner Schritt ausgeführt, bei dem die Bilder in RESX-Dateien konvertiert werden:

resxgen /i:un.jpg /o:Images.resx /n:flag
cd en
resxgen /i:en.jpg /o:Images.en.resx /n:flag
cd ..\en-au
...

Siehe auch

Abrufen von Ressourcen mit Hilfe von Code | Ressourcen – Zusammenfassung | Anhang A: Weitere Ressourceninformationen | Anhang B: Ressourcentools