In welcher Reihenfolge werden Ressourcen in unterschiedlichen Sprachen gefunden?

Immer wieder taucht die Frage auf, wie die Funktionen zum Laden von Ressourcen (LoadImage, LoadCursor, LoadMenu etc.) eigentlich arbeiten und entscheiden aus welcher LANGID-Sektion die Ressource geladen wird.

Die Dokumentation von FindResource – auf der alle diese Funktionen basieren – gibt leider keine Auskunft.

Wenn man jedoch etwas sucht wird man in der Dokumentation von Developing International Software fündig. Dort findet sich der folgende Abschnitt mit dem Titel Multiple Language Resources, in dem auch beschrieben wird wie FindResource arbeitet und wie eine Ressource gesucht wird:

If the FindResource and FindResourceEx functions do not find any resources that match the language ID’s primary language, they search for resources tagged as „language-neutral.“ This language ID is useful for resource elements such as icons or cursors that are identical for all languages. If a bitmap or an icon will differ for some languages, you can define one language-neutral bitmap as the default and specify language IDs for as many other customized bitmaps as required. For example, bidirectional applications might require bitmaps with right-to-left directionality. Because the FindResource and FindResourceEx functions always search for specific language IDs first, they will always find a bitmap tagged with that language ID before they find one tagged as language-neutral. The search algorithm they follow is summarized in the following list:

1. Primary language/sublanguage
2. Primary language
3. Language-neutral
4. English (skipped if primary language is English)
5. Any

3 Gedanken zu „In welcher Reihenfolge werden Ressourcen in unterschiedlichen Sprachen gefunden?“

  1. Hast Du eigentlich je Resourcen in einer „nackten“ Primary Language codiert gesehen? Müsste man ja fast ein Demoprojekt für schreiben, wenn sich noch jemand dafür interessieren würde. Ich erinner mich jedenfalls noch an Probleme mit Spanish(Traditional) zu Spanish(International), damals beim Übergang von NT zu XP. Der Fallback landete dann immer bei English…

  2. Auch beim .NET Framework ist der Schritt Parent-Culture noch mit drin. Obwohl die Guideline eigentlich besagt, nicht mit einer (leeren) Parent-Culture zu arbeiten. <grübel>

    Aber vielleicht interpretiere ich da fehl:
    http://msdn.microsoft.com/en-us/library/aa720133(VS.71).aspx

    Man könnte das ganze natürlich zu einem spannenden Topic erklären und Michael um Rat fragen, der freut sich auch immer, wenn er sein Blog vollbekommt. 😉

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.