2012-03-27 2 views
0

An einigen Stellen in meiner Flex-App verwende ich ResourceManager.getInstance(). GetString und andere Orte, die ich mxml @Resource-Tag verwende, um Ressourceneigenschaften abzurufen, die dynamisch aus ResourceManager geladen werden.Warum unterstützt das Flex-Ressourcen-Tag keine Lokalisierung?

resourceManager.loadResourceModule(resourceModuleURL);

Aber nur Strings aus ResourceManager.getInstance(). GetString zeigen richtigen Werte basierend locale, während die einzige @Resource Tag-Werte von en_US Ressource zurückgibt. Ich denke, es ist, weil en_US ist, was ich kompiliert habe (-locale = en_US).

Also frage ich mich, wenn ich eine dynamisch geladene Ressource verwende, muss ich das @Resource-Tag aufgeben und ResourceManager.getInstance() verwenden. GetString?

Danke.

Antwort

1

Wenn Sie kompilieren, müssen Sie eine Liste von durch Kommata getrennte Gegenden umfassen:

-locale=en_US,es_ES

Das @Resource sollte es ermöglichen, um dann für die Lokalisierung verwendet werden.

Weitere Einzelheiten in der Hilfe-Dokumentation:

http://help.adobe.com/en_US/flex/using/WS2db454920e96a9e51e63e3d11c0bf69084-7f3a.html#WS2db454920e96a9e51e63e3d11c0bf6119c-7fef

Auszug:

Um die locale zur Laufzeit zu ändern, ohne Ressource mit Module, kompilieren Sie alle verfügbaren Locales in die Anwendung unter Kompilierzeit durch Einbeziehung sie als Teil der Gebietsschema-Option. Diese Compileroption nimmt eine durch Kommas getrennte Liste von Gebietsschemas. Wenn Sie einen zweiten locale, wie es_ES hinzufügen, die Option locale folgenden auf die ändern:

-locale=en_US,es_ES

EDIT:

Um die locales in separate SWF-Dateien zu trennen, versuchen Erstellen von Ressourcenmodulen. Hier ein Auszug:

Ressourcenmodule sind SWF-Dateien, getrennt von Ihrer Anwendung SWF Datei, die Ressourcen-Bundles für ein einzelnes Gebietsschema enthalten. Ihre Anwendung kann ein oder mehrere Ressourcenmodule beim Start vorab laden , bevor es seine Benutzeroberfläche anzeigt. Es kann auch Ressourcen Module später laden, z. B. als Reaktion darauf, dass der Benutzer ein neues Gebietsschema auswählt. Der ResourceManager interagiert mit allen Ressourcenpaketen, , ob die von ihm verwalteten Bundles ursprünglich in die Anwendung kompiliert oder aus Ressourcenmodulen geladen wurden.

Sie sind ideal für die Lokalisierung, da Sie jede Sprache in verschiedene SWF-Dateien trennen können.

Ressourcenmodule kann eine bessere Annäherung an die Lokalisierung als Kompilierung-Ressourcen, da Sie die Ressourcenmodule externalisieren, die zur Laufzeit geladen werden können. Dies erstellt eine kleinere SWF-Datei -Datei, erfordert aber, dass Sie eine separate SWF-Datei für jedes -Ressourcenmodul, das Sie verwenden, laden. Das Ergebnis kann eine erhöhte Anzahl von Netzwerkanforderungen und eine Aggregatanwendungsgröße sein, die größer als ist, wenn Sie die Gebietsschema-Ressourcen in die Anwendung kompiliert haben. Wenn Sie jedoch viele Gebietsschemas haben, sollten Sie die Ressourcen auf lange Sicht getrennt speichern.

Hier ist ein Link zu erklären Ressourcenmodule: http://help.adobe.com/en_US/flex/using/WS2db454920e96a9e51e63e3d11c0bf69084-7f3c.html

Meine Empfehlung ist es, die Ressourcenmodule erstellen müssen Sie sich als Lokalisierung als SWF-Dateien verwenden, und dann entweder kompilieren sie in die Anwendung bei der Kompilierung oder dynamisch Führen Sie jedes ResourceModule zur Laufzeit aus, damit Sie darauf zugreifen können.

+0

Danke, aber es bedeutet, Ressourcen-Dateien in eine SWF-Datei. Aus irgendeinem Grund kann ich nicht auf diese Weise gehen, ich muss immer noch dynamisch von Ressourcendateien laden. Irgendein Vorschlag? – BlueDolphin

+0

Warum verwenden Sie keine Ressourcenmodule? Redigiert meine Antwort zu erklären. –