Lokalisierte Ressourcen in MFC-Anwendungen: Satelliten-DLLs

MFC bietet ab Version 7.0 erweiterte Unterstützung für Satelliten-DLLs – eine Funktion, die den Entwickler bei der Erstellung von Anwendungen unterstützt, die für mehrere Sprachen lokalisiert sind. Eine Satelliten-DLL ist eine reine Ressourcen-DLL, die die für eine bestimmte Sprache lokalisierten Ressourcen einer Anwendung enthält. Wenn die Anwendung mit der Ausführung beginnt, lädt MFC automatisch die lokalisierte Ressource, die für die Umgebung am besten geeignet ist. Sie können beispielsweise über eine Anwendung mit englischen Sprachressourcen mit zwei Satelliten-DLLs verfügen, von denen eine die französische Übersetzung Ihrer Ressourcen und die andere die deutsche Übersetzung enthält. Wenn die Anwendung auf einem englischsprachigen System ausgeführt wird, verwendet sie die englischen Ressourcen. Wenn sie auf einem französischen System ausgeführt wird, werden die französischen Ressourcen verwendet. Wird sie hingegen auf einem deutschen System ausgeführt, werden die deutschen Ressourcen verwendet.

Zur Unterstützung lokalisierter Ressourcen in einer MFC-Anwendung versucht MFC, eine Satelliten-DLL zu laden, die in einer bestimmten Sprache lokalisierte Ressourcen enthält. Satelliten-DLLs tragen den Namen AnwendungsnameXXX.dll, wobei Anwendungsname für den Namen der ausführbaren Datei bzw. DLL-Datei steht, die MFC verwendet. XXX ist der aus drei Buchstaben bestehende Code für die Sprache der Ressourcen (z. B. „ENU“ oder „DEU“).

MFC versucht, die Ressourcen-DLL für jede der folgenden Sprachen in der unten angegebenen Reihenfolge zu laden, und stoppt, wenn eine dieser DLL gefunden wird:

  1. Die Standardbenutzeroberflächensprache des aktuellen Benutzers, wie von der GetUserDefaultUILanguage() Win32-API zurückgegeben.

  2. Die Standardsprache der Benutzeroberfläche des aktuellen Benutzers ohne bestimmte Untersprache (d. h. ENC [Kanadisches Englisch] wird ENU [US-Englisch]).

  3. Die Standardbenutzeroberflächensprache des Systems, wie von der GetSystemDefaultUILanguage()-API zurückgegeben. Auf anderen Plattformen ist dies die Sprache des Betriebssystems.

  4. Die Standardbenutzeroberflächensprache des Systems, ohne dass eine bestimmte Teilsprache vorhanden ist.

  5. Eine Pseudosprache mit dem Dreibuchstabencode LOC.

Wenn MFC keine Satelliten-DLLs findet, werden jedwede Ressourcen verwendet, die in der Anwendung selbst enthalten sind.

Nehmen wir beispielsweise an, dass eine Anwendung LangExample.exe MFC verwendet und auf einem System mit mehreren Benutzeroberflächen ausgeführt wird; die System-UI-Sprache ist ENU [US-Englisch] und die UI-Sprache des aktuellen Benutzers ist auf FRC [Kanada Französisch] festgelegt. MFC sucht in dieser Reihenfolge nach den folgenden DLLs:

  1. LangExampleFRC.dll (Benutzeroberflächensprache des Benutzers).

  2. LangExampleFRA.dll (Benutzeroberflächensprache des Benutzers ohne die Teilsprache, in diesem Beispiel Französisch (Frankreich).

  3. LangExampleENU.dll (Benutzeroberflächensprache des Systems).

  4. LangExampleLOC.dll.

Wenn keine dieser DLLs gefunden wird, verwendet MFC die Ressourcen in LangExample.exe.

Siehe auch

Erstellen von C/C++-DLLs in Visual Studio
TN057: Lokalisierung von MFC-Komponenten