Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Anwendungen basieren auf dem .NET Framework-Ressourcen-Manager, dargestellt durch die ResourceManager Klasse, um lokalisierte Ressourcen abzurufen. Der Ressourcen-Manager geht davon aus, dass ein Hub- und Speichenmodell zum Packen und Bereitstellen von Ressourcen verwendet wird. Der Hub ist die Hauptassembly, die den nicht lokalisierbaren ausführbaren Code und die Ressourcen für eine einzelne Kultur enthält, die als neutrale oder Standardkultur bezeichnet wird. Die Standardkultur ist die Fallbackkultur für die Anwendung; es ist die Kultur, deren Ressourcen verwendet werden, wenn lokalisierte Ressourcen nicht gefunden werden können. Jede Speichen verbinden sich mit einer Satellitenassembly, die die Ressourcen für eine einzelne Kultur enthält, aber keinen Code enthält.
Für dieses Modell gibt es mehrere Vorteile:
- Sie können ressourcen für neue Kulturen inkrementell hinzufügen, nachdem Sie eine Anwendung bereitgestellt haben. Da die nachfolgende Entwicklung kulturspezifischer Ressourcen eine erhebliche Zeit erfordern kann, können Sie ihre Hauptanwendung zuerst freigeben und zu einem späteren Zeitpunkt kulturspezifische Ressourcen bereitstellen.
- Sie können die Satellitenassemblys einer Anwendung aktualisieren und ändern, ohne die Anwendung neu zu kompilieren.
- Eine Anwendung muss nur die Satellitenassemblys laden, die die für eine bestimmte Kultur benötigten Ressourcen enthalten. Dies kann die Verwendung von Systemressourcen erheblich reduzieren.
Es gibt jedoch auch Nachteile für dieses Modell:
- Sie müssen mehrere Ressourcengruppen verwalten.
- Die anfänglichen Kosten für das Testen einer Anwendung steigen, da Sie mehrere Konfigurationen testen müssen. Beachten Sie, dass es langfristig einfacher und kostengünstiger ist, eine Kernanwendung mit mehreren Satelliten zu testen, als mehrere parallele internationale Versionen zu testen und aufrechtzuerhalten.
Konventionen für Ressourcennamen
Wenn Sie die Ressourcen Ihrer Anwendung verpacken, müssen Sie diese mithilfe der Von der Common Language Runtime erwarteten Ressourcenbenennungskonventionen benennen. Die Laufzeit identifiziert eine Ressource anhand des Kulturnamens. Jede Kultur erhält einen eindeutigen Namen, bei dem es sich in der Regel um eine Kombination aus einem zwei buchstabenigen, kleingeschriebenen Kulturnamen handelt, der einer Sprache zugeordnet ist, und bei Bedarf einen zwei buchstabenigen, großgeschriebenen Subkulturnamen, der einem Land oder einer Region zugeordnet ist. Der Unterkulturname folgt dem Kulturnamen, getrennt durch einen Gedankenstrich (-). Beispiele sind ja-JP für Japanisch wie in Japan gesprochen wird, en-US für Englisch wie in den USA gesprochen wird, de-DE für Deutsch wie in Deutschland gesprochen wird oder de-AT für Deutsch wie in Österreich gesprochen wird. In der Liste der von Windows unterstützten Sprach-/Regionsnamen finden Sie die Spalte "Sprachtag". Kulturnamen folgen dem von BCP 47 definierten Standard.
Hinweis
Es gibt einige Ausnahmen für die Zwei-Buchstaben-Kulturnamen, z. B. zh-Hans
für Chinesisch (vereinfacht).
Weitere Informationen finden Sie unter Erstellen von Ressourcendateien und Erstellen von Satellitenassemblys.
Der Ressourcenfallbackprozess
Das Hub- und Speichenmodell zum Packen und Bereitstellen von Ressourcen verwendet einen Fallbackprozess, um geeignete Ressourcen zu finden. Wenn eine Anwendung eine lokalisierte Ressource anfordert, die nicht verfügbar ist, durchsucht die Common Language Runtime die Hierarchie der Kulturen nach einer geeigneten Fallbackressource, die der Anforderung des Benutzers am ehesten entspricht, und löst eine Ausnahme nur als letztes Mittel aus. Wenn eine passende Ressource auf einer der Ebenen der Hierarchie gefunden wird, verwendet die Runtime diese. Wenn die Ressource nicht gefunden wird, wird die Suche auf der nächsten Ebene fortgesetzt.
Um die Suchleistung zu verbessern, wenden Sie das Attribut NeutralResourcesLanguageAttribute auf Ihre Hauptassembly an, und übergeben Sie diesem den Namen der neutralen Sprache, die mit Ihrer Hauptassembly funktioniert.
Fallbackprozess für .NET Framework-Ressourcen
Der Ressource-Fallbackprozess des .NET Framework beinhaltet die folgenden Schritte:
Tipp
Möglicherweise können Sie auch den Fallbackprozess von Ressourcen und den Suchprozess der Runtime nach Ressourcenassemblys mit dem Konfigurationselement <relativeBindForResources> verbessern. Weitere Informationen finden Sie unter Optimieren des Ressourcenfallbackprozesses.
Die Laufzeit überprüft zuerst den globalen Assemblycache für eine Assembly, die der angeforderten Kultur für Ihre Anwendung entspricht.
Der globale Assemblycache kann Ressourcenassemblys speichern, die von vielen Anwendungen gemeinsam verwendet werden. Dies befreit Sie davon, bestimmte Ressourcengruppen in die Verzeichnisstruktur jeder anwendung einzubeziehen, die Sie erstellen. Wenn die Laufzeit einen Verweis auf die Assembly findet, durchsucht sie die Assembly nach der angeforderten Ressource. Wenn der Eintrag in der Assembly gefunden wird, wird die angeforderte Ressource verwendet. Wenn der Eintrag nicht gefunden wird, wird die Suche fortgesetzt.
Als Nächstes prüft die Runtime das Verzeichnis der aktuell ausgeführten Assembly auf ein Unterverzeichnis, das der angeforderten Kultur entspricht. Wenn sie das Unterverzeichnis findet, durchsucht sie es nach einer gültigen Satellitenassembly für die angeforderte Kultur. Dann durchsucht die Runtime die Satellitenassembly nach der angeforderten Ressource. Wenn sie die Ressource in der Assembly findet, verwendet sie diese. Wenn die Ressource nicht gefunden wird, wird die Suche fortgesetzt.
Anschließend fragt die Runtime den Windows Installer ab, um zu bestimmten, ob die Satellitenassembly bei Bedarf installiert werden soll. Wenn ja, verarbeitet sie die Installation, lädt die Assembly und durchsucht sie oder die angeforderte Ressource. Wenn das System die Ressource in der Assembly findet, verwendet es sie. Wenn die Ressource nicht gefunden wird, wird die Suche fortgesetzt.
Die Runtime löst das Ereignis AppDomain.AssemblyResolve aus, um anzugeben, dass die Satellitenassembly nicht gefunden werden kann. Wenn Sie das Ereignis behandeln möchten, kann Ihr Ereignishandler einen Verweis auf die Satellitenassembly zurückgeben, deren Ressourcen bei der Suche verwendet werden. Andernfalls gibt der Ereignishandler
null
zurück und die Suche wird fortgesetzt.Als Nächstes durchsucht die Runtime erneut den globalen Assemblycache, aber dieses Mal sucht sie nach der übergeordneten Assembly der angeforderten Kultur. Wenn die übergeordnete Assembly im globalen Assemblycache vorhanden ist, durchsucht die Laufzeit die Assembly nach der angeforderten Ressource.
Die Elternkultur wird als geeignete Fallbackkultur definiert. Betrachten Sie Eltern als Ausweichkandidaten, da es vorzuziehen ist, jede Ressource bereitzustellen, anstatt eine Ausnahme auszuwerfen. Mit diesem Prozess können Sie auch Ressourcen wiederverwenden. Sie sollten auf der Ebene des übergeordneten Elements nur dann eine bestimmte Ressource verwenden, wenn die untergeordnete Kultur die angeforderte Ressource nicht lokalisieren muss. Wenn Sie z.B. eine Satellitenassembly für
en
(neutrales Englisch),en-GB
(britisches Englisch) unden-US
(amerikanisches Englisch) bereitstellen, enthält deren
-Satellit das gemeinsame Vokabular, und die Satelliten füren-GB
unden-US
enthalten nur Überschreibungen für Begriffe, die sich in den beiden Kulturen unterscheiden.Als Nächstes prüft die Runtime das Verzeichnis der aktuell ausgeführten Assembly auf übergeordnete Verzeichnisse. Wenn ein übergeordnetes Verzeichnis vorhanden ist, durchsucht die Runtime das Verzeichnis nach einer gültigen Satellitenassembly für die übergeordnete Kultur. Wenn die Assembly gefunden wird, durchsucht die Laufzeit die Assembly nach der angeforderten Ressource. Wenn es die Ressource findet, nutzt es sie. Wenn die Ressource nicht gefunden wird, wird die Suche fortgesetzt.
Anschließend fragt die Runtime den Windows Installer ab, um zu bestimmten, ob die übergeordnete Satellitenassembly bei Bedarf installiert werden soll. Wenn ja, verarbeitet sie die Installation, lädt die Assembly und durchsucht sie oder die angeforderte Ressource. Wenn sie die Ressource in der Assembly findet, verwendet sie diese. Wenn die Ressource nicht gefunden wird, wird die Suche fortgesetzt.
Die Laufzeit löst das AppDomain.AssemblyResolve Ereignis aus, um anzugeben, dass eine entsprechende Fallbackressource nicht gefunden werden kann. Wenn Sie das Ereignis behandeln möchten, kann Ihr Ereignishandler einen Verweis auf die Satellitenassembly zurückgeben, deren Ressourcen bei der Suche verwendet werden. Andernfalls gibt der Ereignishandler
null
zurück, und die Suche wird fortgesetzt.Als Nächstes durchsucht die Runtime die übergeordnete Assembly genauso wie in den drei vorherigen Schritten auf vielen möglichen Ebenen. Jede Kultur hat nur ein übergeordnetes Element, das durch die CultureInfo.Parent-Eigenschaft definiert wird. Ein übergeordnetes Element kann jedoch wieder sein eigenes übergeordnetes Element haben. Die Suche nach übergeordneten Kulturen ist beendet, wenn die Parent-Eigenschaft einer Kultur CultureInfo.InvariantCulture zurückgibt. Beim Ressourcenfallback wird die invariante Kultur nicht als übergeordnete Kultur oder als Kultur angesehen, die Ressourcen haben kann.
Wenn die ursprünglich angegebene Kultur und alle übergeordneten Elemente durchsucht wurden, und die Ressource immer noch nicht gefunden werden kann, wir die Ressource für die Standardkultur (Fallback) verwendet. In der Regel sind die Ressourcen für die Standardkultur in der Hauptanwendungsassembly enthalten. Sie können jedoch einen Wert Satellite für die Location Eigenschaft des NeutralResourcesLanguageAttribute Attributs angeben, um anzugeben, dass der ultimative Fallbackstandort für Ressourcen eine Satellitenassembly und nicht die Hauptassembly ist.
Hinweis
Die Standardressource ist die einzige Ressource, die mit der Hauptassembly kompiliert werden kann. Wenn Sie nicht mit dem NeutralResourcesLanguageAttribute-Attribut eine Satellitenassembly angegeben haben, ist sie der endgültige Fallback (letztes übergeordnetes Element). Daher wird empfohlen, immer einen Standardsatz von Ressourcen in die Hauptassembly aufzunehmen. So werden Ausnahmen verhindert. Indem Sie eine Standardressource einschließen, stellen Sie einen Fallback für alle Ressourcen bereit und stellen sicher, dass mindestens eine Ressource für den Benutzer immer vorhanden ist, auch wenn sie nicht kulturspezifisch ist.
Wenn die Runtime keine Ressource für eine Standard(fallback)kultur findet, wird die Ausnahme MissingManifestResourceException oder MissingSatelliteAssemblyException ausgelöst, um anzugeben, dass die Ressource nicht gefunden werden konnte.
Angenommen, die Anwendung fordert eine Ressource an, die für Spanisch (Mexiko) (die es-MX
Kultur) lokalisiert ist. Die Laufzeit durchsucht zuerst den globalen Assemblycache nach der Assembly, die mit es-MX
übereinstimmt, aber findet sie nicht. Die Laufzeit durchsucht dann das Verzeichnis der derzeit ausgeführten Assembly nach einem es-MX
Verzeichnis. Da auch dies zu keinem Ergebnis führt, durchsucht die Runtime erneut den globalen Assemblycache nach einer übergeordneten Kultur, die der entsprechenden Fallbackkultur entspricht – in diesem Fall es
(Spanisch). Wenn die übergeordnete Assembly nicht gefunden wird, durchsucht die Laufzeit alle potenziellen Ebenen übergeordneter Assemblys der es-MX
Kultur, bis eine entsprechende Ressource gefunden wird. Wenn eine Ressource nicht gefunden wird, verwendet die Laufzeit die Ressource für die Standardkultur.
Optimieren des .NET Framework-Ressourcenfallbackprozesses
Unter folgenden Bedingungen können Sie den Prozess optimieren, mit dem die Runtime nach Ressourcen in den Satellitenassemblys sucht:
Satellitenassemblys werden am gleichen Ort wie die Codeassembly bereitgestellt. Wenn die Codeassembly im globalen Assemblycache installiert ist, werden Satellitenassemblys auch im globalen Assemblycache installiert. Wenn die Codeassembly in einem Verzeichnis installiert ist, werden Satellitenassemblys in kulturspezifischen Ordnern dieses Verzeichnisses installiert.
Satellitenassemblys werden nicht bei Bedarf installiert.
Der Anwendungscode behandelt das AppDomain.AssemblyResolve Ereignis nicht.
Sie optimieren die Sonde für Satellitenassemblys, indem Sie das <relativeBindForResources>-Element einschließen und dessen enabled
-Attribut auf true
in der Anwendungskonfigurationsdatei festlegen, wie im folgenden Beispiel gezeigt.
<configuration>
<runtime>
<relativeBindForResources enabled="true" />
</runtime>
</configuration>
Die optimierte Überprüfung auf Satellitenassemblys ist ein Opt-In-Feature. Das heißt, die Laufzeit folgt den Schritten, die im Ressourcenfallbackprozess dokumentiert sind, es sei denn, das <relativeBindForResources-Element> ist in der Konfigurationsdatei der Anwendung vorhanden und sein enabled
Attribut ist auf true
festgelegt. Wenn dies der Fall ist, wird der Suchprozess nach einer Satellitenassembly wie folgt angepasst:
Die Runtime verwendet den Speicherort der übergeordneten Codeassembly, um nach der Satellitenassembly zu suchen. Wenn die übergeordnete Assembly im globalen Assemblycache installiert ist, durchsucht die Runtime den Cache, aber nicht das Anwendungsverzeichnis. Wenn die übergeordnete Assembly im Anwendungsverzeichnis installiert ist, durchsucht die Runtime das Anwendungsverzeichnis, aber nicht den globalen Assemblycache.
Die Runtime fragt den Windows Installer nicht nach der On-Demand-Installation von Satellitenassemblys.
Wenn die Suche nach einer bestimmten Ressourcenassembly fehlschlägt, löst die Runtime nicht das Ereignis AppDomain.AssemblyResolve aus.
.NET Core-Ressourcenfallback-Prozess
Der Fallbackprozess für .NET Core-Ressourcen umfasst die folgenden Schritte:
Die Runtime versucht, eine Satellitenassembly für die angeforderte Kultur zu laden.
Die Runtime prüft das Verzeichnis der aktuell ausgeführten Assembly auf ein Unterverzeichnis, das der angeforderten Kultur entspricht. Wenn sie das Unterverzeichnis findet, durchsucht sie es nach einer gültigen Satellitenassembly für die angeforderte Kultur und lädt sie.
Hinweis
Bei Betriebssystemen mit Groß-/Kleinschreibung berücksichtigenden Dateisystemen (d.h. Linux und macOS) wird bei der Suche nach dem Kulturnamen-Unterverzeichnis die Groß-/Kleinschreibung beachtet. Der Name des Unterverzeichnisses muss der Groß-/Kleinschreibung von CultureInfo.Name genau entsprechen (z. B.
es
oderes-MX
).Hinweis
Wenn der Programmierer einen benutzerdefinierten Assembly-Ladekontext von AssemblyLoadContext abgeleitet hat, ist die Situation kompliziert. Wenn die ausführende Assembly in den benutzerdefinierten Kontext geladen wurde, lädt die Laufzeit die Satellitenassembly in den benutzerdefinierten Kontext. Die Details liegen außerhalb des Gültigkeitsbereichs für dieses Dokument. Siehe AssemblyLoadContext.
Wenn keine Satellitenassembly gefunden wurde, löst AssemblyLoadContext das Ereignis AssemblyLoadContext.Resolving aus, um anzugeben, dass die Satellitenassembly nicht gefunden werden kann. Wenn Sie das Ereignis behandeln möchten, kann Ihr Ereignishandler einen Verweis auf die Satellitenassembly laden und zurückgeben.
Wenn immer noch keine Satellitenassembly gefunden wurde, bewirkt AssemblyLoadContext, dass die AppDomain ein AppDomain.AssemblyResolve-Ereignis auslöst, um anzugeben, dass die Satellitenassembly nicht gefunden werden kann. Wenn Sie das Ereignis behandeln möchten, kann Ihr Ereignishandler einen Verweis auf die Satellitenassembly laden und zurückgeben.
Wenn eine Satellitenassembly gefunden wurde, durchsucht die Runtime die Satellitenassembly nach der angeforderten Ressource. Wenn sie die Ressource in der Assembly findet, verwendet sie diese. Wenn die Ressource nicht gefunden wird, wird die Suche fortgesetzt.
Hinweis
Um eine Ressource in der Satellitenassembly zu finden, sucht die Runtime nach der Ressourcendatei, die vom ResourceManager für den aktuellen CultureInfo.Name angefordert wird. Innerhalb der Ressourcendatei wird nach dem angeforderten Ressourcennamen gesucht. Wenn eines der Beiden nicht gefunden wird, wird die Ressource als nicht gefunden behandelt.
Als Nächstes sucht die Runtime die übergeordneten Gebietsschema-Assemblys auf vielen mögliche Ebenen, wobei jedes Mal die Schritte 1 & 2 wiederholt werden.
Die Elternkultur wird als geeignete Fallbackkultur definiert. Übergeordnete Elemente könne als Fallback genutzt werden, da da Bereitstellen einer Ressource dem Auslösen einer Ausnahme vorzuziehen ist. Mit diesem Prozess können Sie auch Ressourcen wiederverwenden. Sie sollten auf der Ebene des übergeordneten Elements nur dann eine bestimmte Ressource verwenden, wenn die untergeordnete Kultur die angeforderte Ressource nicht lokalisieren muss. Wenn Sie z. B. Satellitenassemblies für
en
(neutrales Englisch),en-GB
(Englisch wie im Vereinigten Königreich gesprochen) unden-US
(Englisch wie in den USA gesprochen) bereitstellen, enthält deren
Satellit die gemeinsame Terminologie, und dieen-GB
unden-US
Satelliten enthalten Abweichungen nur für die Begriffe, die unterschiedlich sind.Jede Kultur hat nur ein übergeordnetes Element, das durch die CultureInfo.Parent-Eigenschaft definiert wird. Ein übergeordnetes Element kann jedoch wieder sein eigenes übergeordnetes Element haben. Die Suche nach übergeordneten Kulturen ist beendet, wenn die Parent-Eigenschaft einer Kultur CultureInfo.InvariantCulture zurückgibt. Beim Fallback-Mechanismus für Ressourcen wird die invariante Kultur nicht als Elternkultur oder als eine Kultur betrachtet, die Ressourcen haben kann.
Wenn die ursprünglich angegebene Kultur und alle übergeordneten Elemente durchsucht wurden, und die Ressource immer noch nicht gefunden werden kann, wir die Ressource für die Standardkultur (Fallback) verwendet. In der Regel sind die Ressourcen für die Standardkultur in der Hauptanwendungsassembly enthalten. Sie können jedoch einen Wert von Satellite für die Location-Eigenschaft angeben, um anzuzeigen, dass der endgültige Fallback-Ort für Ressourcen eine Satellitenassembly und nicht die Hauptassembly ist.
Hinweis
Die Standardressource ist die einzige Ressource, die mit der Hauptassembly kompiliert werden kann. Wenn Sie nicht mit dem NeutralResourcesLanguageAttribute-Attribut eine Satellitenassembly angegeben haben, ist sie der endgültige Fallback (letztes übergeordnetes Element). Daher wird empfohlen, immer einen Standardsatz von Ressourcen in die Hauptassembly aufzunehmen. So werden Ausnahmen verhindert. Indem Sie eine Standardressourcendatei einschließen, stellen Sie einen Fallback für alle Ressourcen bereit und stellen sicher, dass mindestens eine Ressource für den Benutzer immer vorhanden ist, auch wenn sie nicht kulturspezifisch ist.
Schließlich, wenn die Laufzeit keine Ressourcendatei für eine Standardkultur (Fallback) findet, wird eine MissingManifestResourceException- oder MissingSatelliteAssemblyException-Ausnahme ausgelöst, um anzugeben, dass die Ressource nicht gefunden werden konnte. Wenn die Ressourcendatei gefunden wird, die angeforderte Ressource jedoch nicht vorhanden ist, wird die Anforderung zurückgegeben
null
.
Endgültiger Fallback auf Satellitenassembly
Sie können optional Ressourcen aus der Hauptassembly entfernen und angeben, dass die Laufzeit die ultimativen Fallbackressourcen aus einer Satellitenassembly laden soll, die einer bestimmten Kultur entspricht. Um den Fallbackprozess zu steuern, verwenden Sie den NeutralResourcesLanguageAttribute(String, UltimateResourceFallbackLocation) Konstruktor und geben einen Wert für den UltimateResourceFallbackLocation Parameter an, der angibt, ob der Ressourcen-Manager die Ausweichressourcen aus der Hauptassembly oder aus einer Satellitenassembly extrahieren soll.
Im folgenden .NET Framework-Beispiel wird das Attribut verwendet, um die NeutralResourcesLanguageAttribute Fallbackressourcen einer Anwendung in einer Satellitenassembly für die Sprache Französisch (fr
) zu speichern. Das Beispiel verfügt über zwei textbasierte Ressourcendateien, die eine einzelne Zeichenfolgenressource mit dem Namen Greeting
definieren. Der erste, resources.fr.txt, enthält eine französische Sprachressource.
Greeting=Bon jour!
Die zweite Kategorie Ressourcen,ru.txt, enthält eine Ressource in russischer Sprache.
Greeting=Добрый день
Diese beiden Dateien werden in RESSOURCEN-Dateien kompiliert, indem der Ressourcendateigenerator (resgen.exe) über die Befehlszeile ausgeführt wird. Für die Französisch-Sprachressource lautet der Befehl:
resgen.exe resources.fr.txt
Für die Russische Sprachressource lautet der Befehl:
resgen.exe resources.ru.txt
Die RESOURCES-Dateien werden in DLLs (Dynamic Link Libraries) eingebettet, indem Sie den Assemblylinker (al.exe) in der Befehlszeile für die französische Sprachressource wie folgt ausführen:
al /t:lib /embed:resources.fr.resources /culture:fr /out:fr\Example1.resources.dll
und für die russische Sprachressource wie folgt:
al /t:lib /embed:resources.ru.resources /culture:ru /out:ru\Example1.resources.dll
Der Anwendungsquellcode befindet sich in einer Datei mit dem Namen Example1.cs oder Example1.vb. Es enthält das NeutralResourcesLanguageAttribute Attribut, um anzugeben, dass sich die Standardanwendungsressource im Unterverzeichnis fr befindet. Er instanziiert den Ressourcen-Manager, ruft den Wert der Greeting
Ressource ab und zeigt ihn in der Konsole an.
using System;
using System.Reflection;
using System.Resources;
[assembly:NeutralResourcesLanguage("fr", UltimateResourceFallbackLocation.Satellite)]
public class Example
{
public static void Main()
{
ResourceManager rm = new ResourceManager("resources",
typeof(Example).Assembly);
string greeting = rm.GetString("Greeting");
Console.WriteLine(greeting);
}
}
Imports System.Reflection
Imports System.Resources
<Assembly: NeutralResourcesLanguage("fr", UltimateResourceFallbackLocation.Satellite)>
Module Example
Public Sub Main()
Dim rm As New ResourceManager("resources", GetType(Example).Assembly)
Dim greeting As String = rm.GetString("Greeting")
Console.WriteLine(greeting)
End Sub
End Module
Anschließend können Sie den C#-Quellcode wie folgt aus der Befehlszeile kompilieren:
csc Example1.cs
Der Befehl für den Visual Basic-Compiler ist sehr ähnlich:
vbc Example1.vb
Da keine Ressourcen in die Hauptassembly eingebettet sind, müssen Sie nicht mit der Option /resource
kompilieren.
Wenn Sie das Beispiel aus einem System ausführen, dessen Sprache nichts anderes als Russisch ist, wird die folgende Ausgabe angezeigt:
Bon jour!
Vorgeschlagene Verpackungsalternative
Zeit- oder Budgeteinschränkungen verhindern möglicherweise, dass Sie für jede von Ihrer Anwendung unterstützte Subkultur eine Reihe von Ressourcen erstellen. Stattdessen können Sie eine einzelne Satellitenassembly für eine übergeordnete Kultur erstellen, die von allen verwandten Subkulturen verwendet werden kann. Sie können z. B. eine einzelne englische Satellitenassembly (en) bereitstellen, die von Benutzern abgerufen wird, die regionsspezifische englische Ressourcen anfordern, und eine einzelne deutsche Satellitenassembly (de) für Benutzer, die regionsspezifische deutsche Ressourcen anfordern. Für Anforderungen von z.B. Deutsch, wie es in Deutschland (de-DE), in Österreich (de-AT) oder der Schweiz (de-CH) gesprochen wird, wird auf die deutsche Satellitenassembly (de) ausgewichen. Die Standardressourcen sind der endgültige Fallback und sollten daher die Ressourcen sein, die von den meisten Benutzern Ihrer Anwendung angefordert werden. Wählen Sie daher diese Ressourcen sorgfältig aus. Bei diesem Ansatz werden Ressourcen bereitgestellt, die weniger kulturspezifisch sind, aber die Lokalisierungskosten Ihrer Anwendung erheblich reduzieren können.