Paket | mx.resources |
Schnittstelle | public interface IResourceBundle |
Umsetzer | ResourceBundle |
Sprachversion: | ActionScript 3.0 |
Produktversion: | Flex 3 |
Laufzeitversionen: | Flash Player 9, AIR 1.1 |
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 "en_US"
legt das in den USA gesprochene Englisch fest. (Weitere Informationen finden Sie unter mx.resources.Locale-Klasse.)
Eine Ressource ist ein vom Gebietsschema abhängiger benannter Wert. Beispiel: Ihre Anwendung besitzt eine Ressource, deren Name "OPEN"
lautet und deren Wert für ein englisches Gebietsschema "Open"
ist. Der Wert für ein französisches Gebietsschema ist jedoch "Ouvrir"
.
Ein ResourceBundle ist eine benannte Gruppe von Ressourcen, deren Werte für ein bestimmtes Gebietsschema lokalisiert wurden. Ein ResourceBundle wird durch die Kombination seines bundleName
und seines locale
identifiziert und besitzt ein content
-Objekt, welches die Name-/Wertepaare der Ressourcen des Bundles enthält.
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 resourceManager.getString(bundleName, resourceName)
aufrufen. Durch Ändern der localeChain
-Eigenschaft des ResourceManager können Sie festlegen, welche ResourceBundles nach Ressourcenwerten durchsucht werden.
Normalerweise erstellen Sie ResourceBundles nicht selbst. Sie werden aus einer Eigenschaftendatei kompiliert Eine Eigenschaftendatei mit dem Namen MyResources.properties erstellt ein ResourceBundle mit "MyResources"
als bundleName
. Im Allgemeinen erstellt man mehrere Versionen von jeder Eigenschaftendatei. Eine für jedes Gebietsschema, welches die Anwendung unterstützt.
Flex-Eigenschaftendateien ähneln Java-Eigenschaftendateien, mit dem Unterschied, dass sie zusätzlich MXML Embed()
und ClassReference()
-Direktiven unterstützen. Diese Direktiven funktionieren innerhalb von Eigenschaftendateien genauso wie in CSS-Dateien und erzeugen Klassenverweise. Des Weiteren wird davon ausgegangen, dass das Kodieren der Flex-Eigenschaften stets in UTF-8 erfolgt.
Die Ressourcen des Flex-Frameworks wurden für US-Englisch und Japanisch lokalisiert (Gebietsschema "en_US"
und Gebietsschema "ja_JP"
). Die Frameworkressourcen sind in mehrere Bundles aufgeteilt, welche Frameworkpaketen entsprechen. Beispiel: Das „Formatierer“-Bundle wird von Klassen des mx.formatters-Pakets benutzt. (Es gibt ebenfalls ein „SharedResources“-Bundle für Ressourcen, welches von mehreren Paketen benutzt wird.)
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 "en_US"
und "ja_JP"
lokalisieren, sollten Sie die Eigenschaftendateien des Frameworks ebenfalls für diese Gebietsschemas lokalisieren und zusätzliche ResourceBundle-Bibliotheken für diese kompilieren.
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 loadResourceModule()
-Methode des ResourceManager laden. Mit Ressourcenmodulen können Sie mehrere Gebietsschemas unterstützen, indem Sie die benötigten Ressourcen während der Laufzeit laden, statt sie in die Anwendung zu kompilieren.
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 addResourceBundle()
-Methode selbst dem ResourceManager hinzufügen.
Verwandte API-Elemente
Eigenschaft | Definiert von | ||
---|---|---|---|
bundleName : String [schreibgeschützt]
Ein Name, der dieses ResourceBundle identifiziert, z. B. „MyResources“. | IResourceBundle | ||
content : Object [schreibgeschützt]
Ein Objekt, welches Schlüssel-/Wertepaare für die Ressourcen im ResourceBundle enthält. | IResourceBundle | ||
locale : String [schreibgeschützt]
Das Gebietsschema, für welches die Ressourcen des Bundles lokalisiert wurden. | IResourceBundle |
bundleName | Eigenschaft |
bundleName:String
[schreibgeschützt] Sprachversion: | ActionScript 3.0 |
Produktversion: | Flex 3 |
Laufzeitversionen: | Flash Player 9, AIR 1.1 |
Ein Name, der dieses ResourceBundle identifiziert, z. B. "MyResources"
.
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 bundleName
"MyResources"
ist.
ResourceManager kann mehrere Bundles mit dem gleichen bundleName
verwalten, solange sie verschiedene Werte für ihre locale
-Eigenschaften besitzen.
Implementierung
public function get bundleName():String
content | Eigenschaft |
content:Object
[schreibgeschützt] Sprachversion: | ActionScript 3.0 |
Produktversion: | Flex 3 |
Laufzeitversionen: | Flash Player 9, AIR 1.1 |
Ein Objekt, welches Schlüssel-/Wertepaare für die Ressourcen im ResourceBundle enthält.
Im Allgemeinen sollten Sie auf Ressourcen über IResourceManager-Methoden wie z. B. getString()
zugreifen, statt direkt im ResourceBundle auf sie zuzugreifen. Falls Sie Ihre eigenen ResourceBundles programmgesteuert erstellen, können Sie diese mit den Ressourcen wie folgt initialisieren:
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 LANGUAGE
-Ressource der String "English"
, der Wert der MINIMUM_AGE
-Ressource der String "18"
, der Wert der ENABLED
-Ressource der String "true"
und der Wert der LOGO
-Ressource ist eine Klasse, welche die eingebettete PNG-Datei enthält.
Sie können IResourceManager-Methoden wie z. B. getInt()
und getBoolean()
verwenden, um Ressourcenstrings wie z. B. "18"
und "true"
in den vom Code erwarteten Typ zu konvertieren.
Implementierung
public function get content():Object
locale | Eigenschaft |
locale:String
[schreibgeschützt] Sprachversion: | ActionScript 3.0 |
Produktversion: | Flex 3 |
Laufzeitversionen: | Flash Player 9, AIR 1.1 |
Das Gebietsschema, für welches die Ressourcen des Bundles lokalisiert wurden. Dies ist ein String wie "en_US"
für US-Englisch.
Die Eigenschaft „schreibgeschützt“ wird eingestellt, wenn ein ResourceBundle erstellt wird.
ResourceBundles, die automatisch aus kompilierten Eigenschaftendateien erstellt wurden, besitzen Gebietsschemas, die auf der -compiler.locale
-Option des mxmlc- oder compc-Compilers basieren. Beispiel: Sie kompilieren Ihre Anwendung mit der Option -compiler.locale=en_US,ja_JP
und Sie haben -compiler.source-path=resources/{locale}
festgelegt, sodass die Ressourcen Ihrer Anwendung, welche sich in resources/en_US/MyResources.properties und resources/ja_JP/MyResources.properties befinden, gefunden werden. Ihre Anwendung besitzt damit zwei ResourceBundles, deren bundleName
"MyResources"
lautet. Ein locale
mit der Bezeichnung "en_US"
, das andere locale
mit "ja_JP"
.
Implementierung
public function get locale():String
Tue Jun 12 2018, 10:04 AM Z