Die Lokalisierungs-APIs in den IResourceManager- und IResourceBundle-Schnittstellen verwenden bevorzugt Gebietsschemastrings statt Gebietsschemainstanzen. Deshalb wird diese Klasse selten in einer Anwendung benutzt.
var locale:Locale = new Locale("en_US_MAC"); trace(locale.toString()); // outputs "en_US_MAC"
var locale:Locale = new Locale("en_US_MAC"); trace(locale.country); // outputs "US"
var locale:Locale = new Locale("en_US_MAC"); trace(locale.language); // outputs "en"
var locale:Locale = new Locale("en_US_MAC"); trace(locale.variant); // outputs "MAC"
Die Lokalisierung umfasst drei wesentliche Konzepte: Gebietsschemas, Ressourcen und ResourceBundles.
Ein Gebietsschema legt eine Sprache und ein Land fest, für welche Ihre Anwendung lokalisiert wird. Beispiel: Gebietsschema
Eine Ressource ist ein vom Gebietsschema abhängiger benannter Wert. Beispiel: Ihre Anwendung besitzt eine Ressource, deren Name
Ein ResourceBundle ist eine benannte Gruppe von Ressourcen, deren Werte für ein bestimmtes Gebietsschema lokalisiert wurden. Ein ResourceBundle wird durch die Kombination seines
Ein einzelnes ResourceManager-Objekt, welches die IResourceManager-Schnittstelle implementiert, verwaltet verschiedene ResourceBundles für mehrere Gebietsschemas und bietet Zugriff auf die Ressourcen, welche sie enthalten. Beispiel: Sie können einen bestimmten Ressourcenstring abrufen, indem Sie
Alle Klassen, die UIComponent oder den Formatierer oder den Validator erweitern, besitzen eine
Methoden, die Ressourcen abrufen, wie z. B.
Wenn Ihre Anwendung startet, wird ResourceManager automatisch mit allen in die Anwendung kompilierten Ressourcen gefüllt. Wenn Sie ein Codemodul erzeugen, werden die Ressourcen, welche seine Klassen benötigen, standardmäßig in das Modul kompiliert. Wenn das Modul in eine Anwendung geladen wird, werden alle Bundles, welche die Anwendung nicht schon besitzt, dem ResourceManager hinzugefügt.
Sie können „Ressourcenmodule“ kompilieren, die nur Ressourcen enthalten. Diese können Sie mit der
Zwar wird ResourceManager normalerweise mit ResourceBundles gefüllt, welche entweder in Ihre Anwendung kompiliert oder aus einem Modul geladen wurden, Sie können ResourceBundles aber auch programmgesteuert erstellen und sie mit der
Wenn ein Flex-Modul oder eine Flex-Unteranwendung dem ResourceManager kompilierte Ressourcenpakete automatisch hinzufügt, ruft das Modul bzw. die Unteranwendung
Diese Methode ruft zuerst
Wenn die festgelegte Ressource nicht gefunden wurde, wird
Die Reihenfolge der Bundle-Namen in diesem Array ist nicht festgelegt.
Diese Methode ruft
IMAGE=Embed("image.jpg") BUTTON_SKIN=ClassReference("skins.ButtonSkin_en_US")
in eine Eigenschaftendatei geschrieben haben und die Klasse beziehen möchten, welche die
Wenn die festgelegte Ressource nicht gefunden wurde, wird
Diese Methode ruft
MINIMUM=5
in eine Eigenschaftendatei geschrieben haben und den Wert 5 statt
Wenn die festgelegte Ressource nicht gefunden wurde, gibt die Methode 0 zurück.
Die Reihenfolge der Gebietsschemas in diesem Array ist nicht festgelegt.
Diese Methode ruft
LONGITUDE=170.3
in eine Eigenschaftendatei geschrieben haben und den Wert 170.3 statt
Wenn die festgelegte Ressource nicht gefunden wurde, gibt die Methode
Der Wert wird genauso zurückgegeben, wie er im
Wenn die festgelegte Ressource nicht gefunden wurde, gibt die Methode
Die Methode geht davon aus, dass der Ressourcenwert ein String ist und durch Komma abgegrenzte Elementlisten enthält. Die
COUNTRIES=India, China, Japan
In einer Eigenschaftendatei sollte der Wert
Wenn die festgelegte Ressource nicht gefunden wurde, wird
Diese Methode ruft
Wenn ein
Wenn die festgelegte Ressource nicht gefunden wurde, wird
Diese Methode ruft die
MINIMUM=5
in eine Eigenschaftendatei geschrieben haben und den Wert 5 statt
Wenn die festgelegte Ressource nicht gefunden wurde, gibt die Methode 0 zurück.
Beispiel: Wenn der Benutzer im Betriebssystem angegeben hat, dass er Französisch bevorzugt, und die SWF für die Gebietsschemas en_US, fr_FR und de_DE kompiliert wurde, wird die
Diese Methode wird nur von Klassen verwendet, die die IFlexModuleFactory-Schnittstelle implementieren.
Beispiel: Wenn der
Diese Methode wird nur von Klassen verwendet, die die IFlexModuleFactory-Schnittstelle implementieren.
Jeder Aufruf dieser Methode gibt ein neues ereignisauslösendes Objekt zurück, an welchem Sie den Ladefortschritt ablesen können und erfahren, ob dieser erfolgreich abgeschlossen wurde oder mit einem Fehler endete. Dieses Objekt löst
Wenn das Modul geladen wurde, werden die ResourceBundles dem ResourceManager hinzugefügt, aber
Durch Entladen des Moduls werden dessen ResourceBundles aus dem ResourceManager entfernt, die
Dies führt dazu, dass bindbare Ausdrücke erneut ermitteln, ob die folgenden ResourceManager-Methoden beteiligt sind:
Dies löst auch die Ausführung der
Wenn Sie die ResourceManager-Methoden
Dieses Schema erlaubt das Vorhandensein von Gebietsschemas, welche nicht den kompletten Satz an lokalisierten Ressourcen aufweisen. Beispiel: Wenn Sie Ihre Anwendung in indischem Englisch statt US-Englisch lokalisieren, brauchen Sie lediglich diejenigen Ressourcen für das Gebietsschema
Viele Frameworkklassen gehen davon aus, dass sie von den Gebietsschemas immer die Ressourcen beziehen können, die sie erwarten. Wenn dies nicht funktioniert, geben sie einen Fehler aus. Deshalb müssen Sie sicherstellen, dass
Das Einstellen dieser Eigenschaft veranlasst ResourceManager, ein
Eine einzelne Instanz einer IResourceManager-Implementierung verwaltet alle lokalisierten Ressourcen einer Flex-Anwendung.
Normalerweise besitzt eine Flex-Anwendung mehrere Instanzen dieser Klasse, welche alle von einer einzigen Instanz der ResourceManager-Klasse verwaltet werden. Mehrere ResourceBundle-Instanzen für mehrere Gebietsschemas sind möglich, jeweils eine für jedes Gebietsschema. Es kann mehrere ResourceBundle-Instanzen mit verschiedenen Bundle-Namen geben.
Wenn Sie Ihre eigene ResourceBundle-Instanz erzeugen, können Sie die Schlüssel-/Wertepaare des
Die Lokalisierung umfasst drei wesentliche Konzepte: Gebietsschemas, Ressourcen und ResourceBundles.
Ein Gebietsschema legt eine Sprache und ein Land fest, für welche Ihre Anwendung lokalisiert wird. Beispiel: Gebietsschema
Eine Ressource ist ein vom Gebietsschema abhängiger benannter Wert. Beispiel: Ihre Anwendung besitzt eine Ressource, deren Name
Ein ResourceBundle ist eine benannte Gruppe von Ressourcen, deren Werte für ein bestimmtes Gebietsschema lokalisiert wurden. Ein ResourceBundle wird durch die Kombination seines
Die IResourceBundle-Schnittstelle stellt ein bestimmtes ResourceBundle dar. Die meisten Anwendungen benötigen jedoch lediglich IResourceManager. Ein einzelnes ResourceManager-Objekt, welches diese Schnittstelle implementiert, verwaltet verschiedene ResourceBundles, manchmal für mehrere Gebietsschemas, und bietet Zugriff auf die Ressourcen, welche sie enthalten. Beispiel: Sie können einen bestimmten Ressourcenstring abrufen, indem Sie
Normalerweise erstellen Sie ResourceBundles nicht selbst. Sie werden aus einer Eigenschaftendatei kompiliert Eine Eigenschaftendatei mit dem Namen MyResources.properties erstellt ein ResourceBundle mit
Flex-Eigenschaftendateien ähneln Java-Eigenschaftendateien, mit dem Unterschied, dass sie zusätzlich MXML
Die Ressourcen des Flex-Frameworks wurden für US-Englisch und Japanisch lokalisiert (Gebietsschema
Die Eigenschaftendateien für die Frameworkressourcen wie formatters.properties finden Sie in den frameworks/projects/framework/bundles/{locale}/src-Ordnern von Flex SDK. Ihre Anwendungen sind mit dem Flex-Framework als vorkompilierte Bibliotheken verlinkt: framework.swc im frameworks/libs-Ordner. Diese Bibliothek enthält keine Ressourcen. Stattdessen wurden die Frameworkressourcen in separate ResourceBundle-Bibliotheken kompiliert, z. B. framework_rb.swc. Diese befinden sich in den frameworks/locales/{locale}-Ordnern und Ihre Anwendung muss auch auf einen oder mehrere dieser Ordner verlinken.
Es ist Ihnen überlassen, die Ressourcen Ihrer eigenen Anwendung nach Ihren Wünschen in Bundles zu gruppieren. Wenn Sie Ihre Anwendung für andere Gebietsschemas als
Wenn Ihre Anwendung startet, wird ResourceManager automatisch mit allen in die Anwendung kompilierten Ressourcen gefüllt. Wenn Sie ein Codemodul erzeugen, werden die Ressourcen, welche seine Klassen benötigen, standardmäßig in das Modul kompiliert. Wenn das Modul in eine Anwendung geladen wird, werden alle Bundles, welche die Anwendung nicht schon besitzt, dem ResourceManager hinzugefügt.
Sie können „Ressourcenmodule“ kompilieren, die nur Ressourcen enthalten. Diese können Sie mit der
Zwar wird ResourceManager normalerweise mit ResourceBundles gefüllt, welche entweder in Ihre Anwendung kompiliert oder aus einem Modul geladen wurden, Sie können ResourceBundles aber auch programmgesteuert erstellen und sie mit der
Die Eigenschaft „schreibgeschützt“ wird eingestellt, wenn ein ResourceBundle erstellt wird.
ResourceBundles, welche automatisch aus kompilierten Eigenschaftendateien erstellt wurden, haben Bundle-Namen, die auf diesen Dateinamen basieren. Beispiel: Eine Eigenschaftendatei mit dem Namen MyResources.properties erstellt ein ResourceBundle, dessen
ResourceManager kann mehrere Bundles mit dem gleichen
Im Allgemeinen sollten Sie auf Ressourcen über IResourceManager-Methoden wie z. B.
var rb:IResourceBundle = new ResourceBundle("fr_FR", "MyResources"); rb.content["LANGUAGE"] = "Francais"; rb.content["GREETING"] = "Bonjour";
Wenn ein ResourceBundle durch Kompilieren einer Eigenschaftendatei erstellt wurde, sind ihre Werte entweder Strings oder Klassen. Beispiel: Wenn die Eigenschaftendatei Folgendes enthält:
LANGUAGE=English MINIMUM_AGE=18 ENABLED=true LOGO=Embed("logo.png")
ist der Wert der
Sie können IResourceManager-Methoden wie z. B.
Die Eigenschaft „schreibgeschützt“ wird eingestellt, wenn ein ResourceBundle erstellt wird.
ResourceBundles, die automatisch aus kompilierten Eigenschaftendateien erstellt wurden, besitzen Gebietsschemas, die auf der