Lokalisieren von HTML-Inhalten mit dem AIR-HTML-Lokalisierungs-Framework

Adobe AIR 1.1 und höher

Das AIR 1.1 SDK umfasst eine HTML-Lokalisierungsarchitektur. Die JavaScript-Datei „AIRLocalizer.js“ definiert die Architektur. Das Architekturverzeichnis des AIR-SDK enthält die Datei „AIRLocalizer.js“. Diese Datei enthält die air.Localizer-Klasse, die Funktionen zum Erstellen von Anwendungen bereitstellt, die mehrere lokalisierte Versionen unterstützen.

Laden des Codes der AIR-HTML-Lokalisierungsarchitektur

Kopieren Sie die Datei „AIRLocalizer.js“ in Ihr Projekt, um die Lokalisierungsarchitektur zu verwenden. Fügen Sie sie dann mithilfe eines Skript-Tags der Haupt-HTML-Datei hinzu:

<script src="AIRLocalizer.js" type="text/javascript" charset="utf-8"></script>

Nachfolgendes JavaScript kann das air.Localizer.localizer -Objekt aufrufen:

<script> 
    var localizer = air.Localizer.localizer; 
</script>
Das air.Localizer.localizer -Objekt ist ein Singleton-Objekt, das Methoden und Eigenschaften zum Verwenden und Verwalten lokalisierter Ressourcen definiert. Die Localizer-Klasse enthält die folgenden Methoden:

Methode

Beschreibung

getFile()

Ruft den Text eines angegebenen Ressourcenbundles für ein angegebenes Gebietsschema ab. Siehe Abrufen von Ressourcen für ein bestimmtes Gebietsschema .

getLocaleChain()

Gibt die Sprachen in der Gebietsschemakette zurück. Siehe Definieren der Gebietsschemakette .

getResourceBundle()

Gibt die Bundleschlüssel und die entsprechenden Werte als Objekt zurück. Siehe Abrufen von Ressourcen für ein bestimmtes Gebietsschema .

getString()

Ruft den für eine Ressource definierten String ab. Siehe Abrufen von Ressourcen für ein bestimmtes Gebietsschema .

setBundlesDirectory()

Legt das Bundleverzeichnis fest. Siehe Anpassen der Einstellungen des AIR-HTML-Localizer-Objekts .

setLocalAttributePrefix()

Legt das Präfix von localizer-Attributen fest, die in HTML-DOM-Elementen verwendet wurden. Siehe Anpassen der Einstellungen des AIR-HTML-Localizer-Objekts .

setLocaleChain()

Legt die Reihenfolge der Sprachen in der Gebietsschemakette fest. Siehe Definieren der Gebietsschemakette .

sortLanguagesByPreference()

Sortiert die Gebietsschemas in der Gebietsschemakette anhand der Reihenfolge von Gebietsschemas in den Betriebssystemeinstellungen. Siehe Definieren der Gebietsschemakette .

update()

Aktualisiert das HTML-DOM (oder ein DOM-Element) mit lokalisierten Strings aus der aktuellen Gebietsschemakette. Informationen zu Gebietsschemaketten finden Sie unter Verwalten von Gebietsschemaketten . Weitere Informationen zur update() -Methode finden Sie unter Aktualisieren von DOM-Elementen für das aktuelle Gebietsschema .

Die Localizer-Klasse enthält die folgenden Methoden:

Eigenschaft

Beschreibung

localizer

Gibt einen Verweis auf das Singleton-Localizer-Objekt für die Anwendung zurück.

ultimateFallbackLocale

Das Gebietsschema, das verwendet wird, wenn die Anwendung keine Benutzervoreinstellungen unterstützt. Siehe Definieren der Gebietsschemakette .

Angeben der unterstützten Sprachen

Verwenden Sie das <supportedLanguages> -Element in der Anwendungsdeskriptordatei, um die von der Anwendung unterstützten Sprachen anzugeben. Dieses Element wird nur von Anwendungen für iOS, die gekoppelte Mac-Laufzeitumgebung und Android verwendet. Von allen anderen Anwendungstypen wird es ignoriert.

Wenn Sie das <supportedLanguages> -Element nicht angeben, führt der Packager standardmäßig je nach Anwendungstyp die folgenden Aktionen aus:

  • iOS – Alle von der AIR-Laufzeitumgebung unterstützten Sprachen sind im iOS App Store als unterstützte Sprachen der Anwendung aufgeführt.

  • Gekoppelte Mac-Laufzeitumgebung – Die mit einem gekoppelten Bundle verpackte Anwendung hat keine Lokalisierungsinformationen.

  • Android – Das Anwendungsbundle hat Ressourcen für alle von der AIR-Laufzeitumgebung unterstützten Sprachen.

Weitere Informationen finden Sie unter supportedLanguages .

Definieren von Ressourcenbundles

Die HTML-Lokalisierungsarchitektur liest lokalisierte Versionen der Strings aus Lokalisierungs dateien. Eine Lokalisierungsdatei ist eine Sammlung schlüsselbasierter Werte, die in einer Textdatei serialisiert wurden. Eine Lokalisierungsdatei wird manchmal auch als Bundle bezeichnet.

Erstellen Sie ein Unterverzeichnis des Anwendungsprojektverzeichnisses mit dem Namen „Gebietsschema“. (Sie können auch einen anderen Namen verwenden, siehe Anpassen der Einstellungen des AIR-HTML-Localizer-Objekts .) Dieses Verzeichnis enthält die Lokalisierungsdateien. Dieses Verzeichnis wird als Bundleverzeichnis bezeichnet.

Erstellen Sie für jedes von der Anwendung unterstützte Gebietsschema ein Unterverzeichnis des Bundleverzeichnisses. Benennen Sie jedes Unterverzeichnis entsprechend des Gebietsschemacodes. Nennen Sie das französische Verzeichnis z. B. „fr“ und das englische Verzeichnis „en“. Mithilfe eines Unterstreichzeichens (_) können Sie ein Gebietsschema definieren, das über eine Sprache und einen Ländercode verfügt. Nennen Sie das US-englische Verzeichnis z. B. „en_us“. (Statt des Unterstreichzeichens können Sie auch einen Bindestrich benutzen: „en-us“. Die HTML-Lokalisierungsarchitektur unterstützt beide Möglichkeiten.)

Sie können einem Gebietsschemaunterverzeichnis eine beliebige Anzahl an Ressourcendateien hinzufügen. Normalerweise erstellen Sie für jede Sprache eine Lokalisierungsdatei (und legen diese im entsprechenden Sprachverzeichnis ab). Die HTML-Lokalisierungsarchitektur enthält eine getFile() -Methode, mit der Sie den Inhalt einer Datei lesen können (siehe Abrufen von Ressourcen für ein bestimmtes Gebietsschema .

Dateien mit der Dateierweiterung .properties werden als Lokalisierungseigenschaftendateien bezeichnet. Mit diesen können Sie Schlüssel-/Wertepaare für ein Gebietsschema definieren. Eine Eigenschaftendatei definiert in jeder Zeile nur einen Stringwert. Im Folgenden wird beispielsweise der Stringwert "Hello in English." für den Schlüssel greeting definiert:

greeting=Hello in English.

Eine Eigenschaftendatei mit folgendem Text definiert sechs Schlüssel-/Wertepaare:

title=Sample Application 
greeting=Hello in English. 
exitMessage=Thank you for using the application. 
color1=Red 
color2=Green 
color3=Blue

Dieses Beispiel zeigt eine englische Version der Eigenschaftendatei, die im Verzeichnis „en“ gespeichert werden soll.

Eine französische Version der Datei wird im Verzeichnis „fr“ abgelegt:

title=Application Example 
greeting=Bonjour en français. 
exitMessage=Merci d'avoir utilisé cette application. 
color1=Rouge 
color2=Vert 
color3=Bleu

Sie können mehrere Ressourcendateien für unterschiedliche Arten von Informationen definieren. Die Datei „legal.properties“ könnte z. B. juristischen Maskentext (wie Urheberrechtsinformationen) enthalten. Diese Ressource kann in mehreren Anwendungen wiederverwendet werden. Auf ähnliche Weise könnten Sie separate Dateien definieren, die lokalisierten Inhalt für unterschiedliche Bereiche der Benutzeroberfläche definieren.

Verwenden Sie UTF-8-Kodierung für diese Dateien, damit mehrere Sprachen unterstützt werden können.

Verwalten von Gebietsschemaketten

Wenn die Anwendung die Datei „AIRLocalizer.js“ lädt, untersucht sie die in der Anwendung definierten Gebietsschemas. Diese Gebietsschemas entsprechen den Unterverzeichnissen des Bundleverzeichnisses (siehe Definieren von Ressourcenbundles ). Die Liste der verfügbaren Gebietsschemas wird als Gebietsschemakette bezeichnet . Die Datei „AIRLocalizer.js“ sortiert die Gebietsschemakette automatisch anhand der von den Betriebssystemeinstellungen definierten, bevorzugten Reihenfolge. (Die Capabilities.languages -Eigenschaft listet die Benutzeroberflächensprachen des Betriebssystems in der bevorzugten Reihenfolge auf.)

Wenn eine Anwendung Ressourcen für die Gebietsschemas „en“, „en_US“ und „en_UK“ definiert, sortiert die AIR-HTML-Lokalisierungsarchitektur die Gebietsschemakette entsprechend. Wenn eine Anwendung auf einem System gestartet wird, dessen Hauptgebietsschema „en“ ist, wird die Gebietsschemakette folgendermaßen sortiert: ["en", "en_US", "en_UK"] . In diesem Fall sucht die Anwendung zuerst im „en“-Bundle und anschließend im „en_US“-Bundle nach Ressourcen.

Ist das Hauptgebietsschema des Systems dagegen „en-US“, wird wie folgt sortiert: ["en_US", "en", en_UK"] . In diesem Fall sucht die Anwendung zuerst im „en_US“-Bundle und anschließend im „en“-Bundle nach Ressourcen.

Standardmäßig definiert die Anwendung das erste Gebietsschema in der Gebietsschemakette als das zu verwendende Standardgebietsschema. Sie können den Benutzer auffordern, beim erstmaligen Ausführen der Anwendung ein Gebietsschema auszuwählen. Diese Auswahl könnte dann in einer Voreinstellungsdatei gespeichert werden, sodass das gewählte Gebietsschema beim künftigen Starten der Anwendung verwendet wird.

Ihre Anwendung kann Ressourcenstrings in einem beliebigen Gebietsschema der Gebietsschemakette verwenden. Wenn ein bestimmtes Gebietsschema keinen Ressourcenstring definiert, verwendet die Anwendung den nächsten passenden Ressourcenstring für andere in der Gebietsschemakette definierte Gebietsschemas.

Sie können die Gebietsschemakette durch Aufrufen der setLocaleChain() -Methode des Localizer-Objekts anpassen. Siehe Definieren der Gebietsschemakette .

Aktualisieren der DOM-Elemente mit lokalisierten Inhalten

Ein Element in der Anwendung kann auf einen Schlüsselwert in einer Lokalisierungseigenschaftendatei verweisen. Das title -Element im folgenden Beispiel gibt beispielsweise ein local_innerHTML -Attribut an. Die Lokalisierungsarchitektur sucht anhand dieses Attributs nach einem lokalisierten Wert. Die Architektur sucht standardmäßig nach Attributnamen, die mit "local_" beginnen. Die Architektur aktualisiert die Attribute, deren Namen mit dem Text nach "local_" übereinstimmen. In diesem Fall legt die Architektur das innerHTML -Attribut des title -Elements fest. Das innerHTML -Attribut verwendet den in der Standardeigenschaftendatei („default.properties“) für den mainWindowTitle -Schlüssel definierten Wert:

<title local_innerHTML="default.mainWindowTitle"/>

Wenn das aktuelle Gebietsschema keinen übereinstimmenden Wert definiert, durchsucht die Lokalisierungsarchitektur die übrige Gebietsschemakette und verwendet das nächste Gebietsschema in der Gebietsschemakette, für das ein Wert definiert wurde.

Im folgenden Beispiel verwendet der Text ( innerHTML -Attribut) des p -Elements den in der Standardeigenschaftendatei definierten Wert des greeting -Schlüssels:

<p local_innerHTML="default.greeting" />

Im folgenden Beispiel verwendet das Wertattribut (und der angezeigte Text) des input -Elements den in der Standardeigenschaftendatei definierten Wert des btnBlue -Schlüssels:

<input type="button" local_value="default.btnBlue" />

Wenn das HTML-DOM so aktualisiert werden soll, dass es die in der aktuellen Gebietsschemakette definierten Strings verwendet, rufen Sie die update() -Methode des Localizer-Objekts auf. Beim Aufrufen der update() -Methode analysiert das Localizer-Objekt das DOM und weist die Änderungen dort zu, wo ( "local_..." )-Lokalisierungsattribute gefunden werden:

air.Localizer.localizer.update();

Sie können Werte für ein Attribut (z. B."innerHTML") und das zugehörige Lokalisierungsattribut (z. B. "local_innerHTML") definieren. In diesem Fall überschreibt die Lokalisierungsarchitektur den Attributwert nur, wenn in der Lokalisierungskette ein übereinstimmender Wert gefunden wird. Das folgende Element definiert beispielsweise sowohl das value - als auch das local_value -Attribut:

<input type="text" value="Blue" local_value="default.btnBlue"/>

Sie haben auch die Möglichkeit, lediglich ein bestimmtes DOM-Element zu aktualisieren. Siehe nächsten Abschnitt Aktualisieren von DOM-Elementen für das aktuelle Gebietsschema .

Das AIR-HTML-Localizer-Objekt verwendet standardmäßig "local_" als Präfix für Attribute, die Lokalisierungseinstellungen für ein Element definieren. Ein local_innerHTML -Attribut definiert z. B. standardmäßig den Bundle- und Ressourcennamen für den innerHTML -Wert eines Elements. Ein local_value -Attribut definiert außerdem standardmäßig den Bundle- und Ressourcennamen für das value -Attribut eines Elements. Sie können das Localizer-Objekt so figurieren, dass ein von "local_" abweichendes Präfix verwendet wird. Siehe Anpassen der Einstellungen des AIR-HTML-Localizer-Objekts .

Aktualisieren von DOM-Elementen für das aktuelle Gebietsschema

Wenn das Localizer-Objekt das HTML-DOM aktualisiert, verwenden markierte Elemente Attributwerte, die auf den in der aktuellen Gebietsschemakette definierten Strings basieren. Wenn das HTML-Localizer-Objekt das HTML-DOM aktualisieren soll, rufen Sie die update() -Methode des Localizer -Objekts auf:

air.Localizer.localizer.update();

Soll nur ein bestimmtes DOM-Element aktualisiert werden, übergeben Sie es als Parameter an die update() -Methode. Die update() -Methode hat nur einen optionalen Parameter: parentNode . Wenn der parentNode -Parameter angegeben wurde, definiert er das zu lokalisierende DOM-Element. Durch Aufrufen der update() -Methode und Angeben eines parentNode -Parameters werden für alle untergeordneten Elemente, die Lokalisierungsattribute angeben, lokalisierte Werte festgelegt.

Betrachten Sie z. B. das folgende div -Element:

<div id="colorsDiv"> 
    <h1 local_innerHTML="default.lblColors" ></h1> 
    <p><input type="button" local_value="default.btnBlue" /></p> 
    <p><input type="button" local_value="default.btnRed" /></p> 
    <p><input type="button" local_value="default.btnGreen" /></p> 
</div>

Verwenden Sie den folgenden JavaScript-Code, damit die Aktualisierung dieses Elements zur Verwendung der in der aktuellen Gebietsschemakette definierten lokalisierten Strings führt:

var divElement = window.document.getElementById("colorsDiv"); 
air.Localizer.localizer.update(divElement);

Wird in der Gebietsschemakette kein Schlüsselwert gefunden, legt die Lokalisierungsarchitektur den Wert des "local_" -Attributs als Attributwert fest. Nehmen Sie z. B. im vorherigen Beispiel an, dass die Lokalisierungsarchitektur den Wert für den lblColors -Schüssel (in einer beliebigen Datei „default.properties“ in der Gebietsschemakette) nicht findet. In diesem Fall verwendet sie "default.lblColors" als innerHTML -Wert. Die Verwendung dieses Wertes weist (den Entwickler) auf fehlende Ressourcen hin.

Die update() -Methode löst ein resourceNotFound -Ereignis aus, wenn sie eine Ressource nicht in der lokalen Gebietsschemakette findet. Die air.Localizer.RESOURCE_NOT_FOUND -Konstante definiert den String "resourceNotFound" . Das Ereignis hat drei Eigenschaften: bundleName , resourceName und locale . Die bundleName -Eigenschaft ist der Name des Bundles, in dem die Ressource nicht gefunden wurde. Die resourceName -Eigenschaft ist der Name des Bundles, in dem die Ressource nicht gefunden wurde. Die locale -Eigenschaft ist der Name des Gebietsschemas, in dem die Ressource nicht gefunden wurde.

Die update() -Methode löst ein bundleNotFound -Ereignis aus, wenn das angegebene Bundle nicht gefunden wurde. Die air.Localizer.BUNDLE_NOT_FOUND -Konstante definiert den String "bundleNotFound" . Das Ereignis hat zwei Eigenschaften: bundleName und locale . Die bundleName -Eigenschaft ist der Name des Bundles, in dem die Ressource nicht gefunden wurde. Die locale -Eigenschaft ist der Name des Gebietsschemas, in dem die Ressource nicht gefunden wurde.

Die update() -Methode ist asynchron (und löst die Ereignisse resourceNotFound und bundleNotFound asynchron aus). Der folgende Code legt Ereignis-Listener für die Ereignisse resourceNotFound und bundleNotFound fest:

air.Localizer.localizer.addEventListener(air.Localizer.RESOURCE_NOT_FOUND, rnfHandler); 
air.Localizer.localizer.addEventListener(air.Localizer.BUNDLE_NOT_FOUND, rnfHandler); 
air.Localizer.localizer.update(); 
function rnfHandler(event) 
{ 
    alert(event.bundleName + ": " + event.resourceName + ":." + event.locale); 
} 
function bnfHandler(event) 
{ 
    alert(event.bundleName + ":." + event.locale); 
}

Anpassen der Einstellungen des AIR-HTML-Localizer-Objekts

Die setBundlesDirectory() -Methode des Localizer-Objekts ermöglicht das Anpassen des Bundleverzeichnispfades. Mit der setLocalAttributePrefix() -Methode des Localizer-Objekts können Sie den Bundleverzeichnispfad und den vom Localizer-Objekt verwendeten Attributwert anpassen.

Das Standardbundleverzeichnis ist ein Gebietsschemaunterverzeichnis des Anwendungsverzeichnisses. Durch Aufrufen der setBundlesDirectory() -Methode des Localizer-Objekts können Sie ein anderes Verzeichnis angeben. Diese Methode verwendet als String nur einen Parameter, ( path ), den Pfad zum gewünschten Bundleverzeichnis. Der path -Parameter kann einen der folgenden Werte haben:

  • Einen String, der einen Pfad in Bezug auf das Anwendungsverzeichnis definiert, z. B. "locales"

  • Einen String, der eine gültige URL definiert, die das URL-Schema app , app-storage oder file verwendet, z. B. "app://languages" (verwenden Sie auf keinen Fall das URL-Schema http )

  • Ein File-Objekt

Informationen zu URLs und Verzeichnispfaden finden Sie unter:

Der folgende Code legt für das Bundleverzeichnis ein Sprachunterverzeichnis des Speicherverzeichnisses der Anwendung fest (nicht das Anwendungsverzeichnis):

air.Localizer.localizer.setBundlesDirectory("languages");

Übergeben Sie einen gültigen Parameter als path -Parameter. Andernfalls löst die Methode eine BundlePathNotFoundError-Ausnahme aus. Dieser Fehler hat "BundlePathNotFoundError" als name -Eigenschaft und seine message -Eigenschaft gibt einen ungültigen Pfad an.

Das AIR-HTML-Localizer-Objekt verwendet standardmäßig "local_" als Präfix für Attribute, die Lokalisierungseinstellungen für ein Element definieren. Das local_innerHTML -Attribut definiert beispielsweise den Bundle- und Ressourcennamen für den innerHTML -Wert des folgenden input -Elements:

<p local_innerHTML="default.greeting" />

Mit der setLocalAttributePrefix() -Methode des Localizer-Objekts können Sie ein von "local_" abweichendes Attributpräfix verwenden. Diese statische Methode verwendet nur einen Parameter, den als Attributpräfix zu verwendenden String. Der folgende Code legt beispielsweise fest, dass die Lokalisierungsarchitektur "loc_" als Attributpräfix verwendet:

air.Localizer.localizer.setLocalAttributePrefix("loc_");

Sie können das von der Lokalisierungsarchitektur verwendete Attributpräfix anpassen, z. B., wenn der Standardwert ( "local_" ) mit dem Namen eines anderen, im Code verwendeten Attributs in Konflikt steht. Achten Sie beim Aufrufen dieser Methode darauf, gültige Zeichen für HTML-Attribute zu verwenden. (Der Wert darf zum Beispiel kein Leerzeichen enthalten.)

Weitere Informationen zum Verwenden von Lokalisierungsattributen in HTML-Elementen finden Sie unter Aktualisieren der DOM-Elemente mit lokalisierten Inhalten .

Die Einstellungen für das Bundleverzeichnis und Attributpräfix bleiben zwischen unterschiedlichen Anwendungssitzungen nicht erhalten. Wenn Sie ein benutzerdefiniertes Bundleverzeichnis oder Attributpräfix verwenden, müssen Sie dieses beim Starten der Anwendung jedes Mal festlegen.

Definieren der Gebietsschemakette

Beim Laden des Codes der Datei „AIRLocalizer.js“ wird die Standardgebietsschemakette festgelegt. Die im Bundleverzeichnis und in den Spracheinstellungen des Betriebssystems verfügbaren Gebietsschemas definieren diese Gebietsschemakette. (Einzelheiten finden Sie unter Verwalten von Gebietsschemaketten .)

Sie können die Gebietsschemakette durch Aufrufen der statischen setLocaleChain() -Methode des Localizer-Objekts anpassen. Sie können diese Methode zum Beispiel aufrufen, wenn der Benutzer eine Vorliebe für eine bestimmte Sprache zeigt. Die setLocaleChain( )-Methode verwendet nur einen Parameter, ( chain ), bei dem es sich um ein Array von Gebietsschemas wie ["fr_FR","fr","fr_CA"] handelt. Die Reihenfolge der Gebietsschemas im Array legt die Reihenfolge fest, in der die Architektur (in nachfolgenden Operationen) nach Ressourcen sucht. Wird eine Ressource nicht für das erste Gebietsschema in der Kette gefunden, setzt sie die Suche in den Ressourcen anderer Gebietsschemas fort. Wenn das chain -Argument fehlt, kein Array darstellt oder ein leeres Array ist, schlägt die Funktion fehl und löst eine IllegalArgumentsError-Ausnahme aus.

Die statische getLocaleChain() -Methode des Localizer-Objekts gibt ein Array zurück, in dem die Gebietsschemas der aktuellen Gebietsschemakette aufgeführt sind.

Der folgende Code liest die aktuelle Gebietsschemakette und fügt oben in der Kette zwei französische Gebietsschemas hinzu:

var currentChain = air.Localizer.localizer.getLocaleChain(); 
newLocales = ["fr_FR", "fr"]; 
air.Localizer.localizer.setLocaleChain(newLocales.concat(currentChain));

Die setLocaleChain() -Methode löst beim Aktualisieren der Gebietsschemakette ein "change" -Ereignis aus. Die air.Localizer.LOCALE_CHANGE -Konstante definiert den String "change" . Das Ereignis hat nur eine Eigenschaft, ( localeChain ), ein Array der Gebietsschemacodes in der neuen Gebietsschemakette. Der folgende Code legt einen Ereignis-Listener für dieses Ereignis fest:

var currentChain = air.Localizer.localizer.getLocaleChain(); 
newLocales = ["fr_FR", "fr"]; 
localizer.addEventListener(air.Localizer.LOCALE_CHANGE, changeHandler); 
air.Localizer.localizer.setLocaleChain(newLocales.concat(currentChain)); 
function changeHandler(event) 
{ 
    alert(event.localeChain); 
}

Die statische air.Localizer.ultimateFallbackLocale -Eigenschaft repräsentiert das Gebietsschema, das verwendet wird, wenn die Anwendung keine Benutzereinstellung unterstützt. Der Standardwert ist "en" . Sie können hierfür, wie aus dem folgenden Code ersichtlich, ein anderes Gebietsschema festlegen:

air.Localizer.ultimateFallbackLocale = "fr";

Abrufen von Ressourcen für ein bestimmtes Gebietsschema

Die getString() -Methode des Localizer-Objekts gibt den für eine Ressource in einem bestimmten Gebietsschema definierten String zurück. Sie müssen beim Aufrufen der Methode keinen locale -Wert festlegen. In diesem Fall durchsucht die Methode die gesamte Gebietsschemakette und gibt den String im ersten Gebietsschema zurück, das den gegebenen Ressourcennamen liefert. Die Methode hat die folgenden Parameter:

Parameter

Beschreibung

bundleName

Das Bundle, das die Ressource enthält. Dies ist der Dateiname der Eigenschaftendatei ohne die Erweiterung „.properties“. (Ist für diesen Parameter z. B. "alerts" festgelegt, sucht der Localizer-Code in Lokalisierungsdateien namens „alerts.properties“.)

resourceName

Der Ressourcenname.

templateArgs

Optional. Ein Stringarray zum Ersetzen nummerierter Tags im Ersatzstring. Ziehen Sie z. B. das Aufrufen einer Funktion in Erwägung, deren templateArgs -Parameter ["Raúl", "4"] und der übereinstimmende Ressourcenstring "Hello, {0} You have {1} new messages." lautet. . In diesem Fall gibt die Funktion "Hello, Raúl. You have 4 new messages." zurück. Übergeben Sie einen null -Wert, um diese Einstellung zu ignorieren.

locale

Optional. Der zu verwendende Gebietsschemacode (z. B. "en" , "en_us" oder "fr" ). Wenn ein Gebietsschema angegeben ist, aber kein übereinstimmender Wert gefunden wird, setzt die Methode die Suche nach Werten nicht in anderen Gebietsschemas der Gebietsschemakette fort. Wenn kein Gebietsschemacode angegeben wurde, gibt die Funktion den String im ersten Gebietsschema der Gebietsschemakette zurück, die einen Wert für den gegebenen Ressourcennamen bereitstellt.

Die Lokalisierungsarchitektur kann markierte HTML-DOM-Attribute aktualisieren. Sie können lokalisierte Strings jedoch auch anderweitig verwenden, z. B. in dynamisch generiertem HTML oder als Parameterwert in einem Funktionsaufruf. Der folgende Code ruft beispielsweise die alert() -Funktion mit dem in der error114 -Ressource in der Standardeigenschaftendatei des Gebietsschemas „fr_FR“ definierten String auf:

alert(air.Localizer.localizer.getString("default", "error114", null, "fr_FR"));

Die getString() -Methode löst ein resourceNotFound -Ereignis aus, wenn die Ressource nicht im angegebenen Bundle gefunden wird. Die air.Localizer.RESOURCE_NOT_FOUND -Konstante definiert den String "resourceNotFound" . Das Ereignis hat drei Eigenschaften: bundleName , resourceName und locale . Die bundleName -Eigenschaft ist der Name des Bundles, in dem die Ressource nicht gefunden wurde. Die resourceName -Eigenschaft ist der Name des Bundles, in dem die Ressource nicht gefunden wurde. Die locale -Eigenschaft ist der Name des Gebietsschemas, in dem die Ressource nicht gefunden wurde.

Die getString() -Methode löst ein bundleNotFound -Ereignis aus, wenn das angegebene Bundle nicht gefunden wurde. Die air.Localizer.BUNDLE_NOT_FOUND -Konstante definiert den String "bundleNotFound" . Das Ereignis hat zwei Eigenschaften: bundleName und locale . Die bundleName -Eigenschaft ist der Name des Bundles, in dem die Ressource nicht gefunden wurde. Die locale -Eigenschaft ist der Name des Gebietsschemas, in dem die Ressource nicht gefunden wurde.

Die getString() -Methode ist asynchron (und setzt die Ereignisse resourceNotFound und bundleNotFound asynchron ab). Der folgende Code legt Ereignis-Listener für die Ereignisse resourceNotFound und bundleNotFound fest:

air.Localizerlocalizer.addEventListener(air.Localizer.RESOURCE_NOT_FOUND, rnfHandler); 
air.Localizerlocalizer.addEventListener(air.Localizer.BUNDLE_NOT_FOUND, bnfHandler); 
var str = air.Localizer.localizer.getString("default", "error114", null, "fr_FR"); 
function rnfHandler(event) 
{ 
    alert(event.bundleName + ": " + event.resourceName + ":." + event.locale); 
} 
function bnfHandler(event) 
{ 
    alert(event.bundleName + ":." + event.locale); 
}

Die getResourceBundle() -Methode des Localizer-Objekts gibt ein Bundle zurück, das für ein bestimmtes Gebietsschema spezifiziert wurde. Der Rückgabewert der Methode ist ein Objekt mit Eigenschaften, die den Schlüsseln im Bundle entsprechen. (Wenn die Anwendung das angegebene Bundle nicht findet, gibt die Methode null zurück.)

Die Methode verwendet zwei Parameter, locale und bundleName .

Parameter

Beschreibung

locale

Das Gebietsschema (zum Beispiel "fr" ).

bundleName

Der Name des Bundles.

Mit dem folgenden Code wird zum Beispiel die document.write() -Methode aufgerufen, um das Standardbundle für das Gebietsschema „fr“ zu laden. Danach wird die document.write() -Methode aufgerufen, um Werte der Schlüssel str1 und str2 in diesem Bundle zu schreiben:
var aboutWin = window.open(); 
var bundle = localizer.getResourceBundle("fr", "default"); 
aboutWin.document.write(bundle.str1); 
aboutWin.document.write("<br/>"); 
aboutWin.document.write(bundle.str2); 
aboutWin.document.write("<br/>");

Die getResourceBundle() -Methode löst ein bundleNotFound -Ereignis aus, wenn das angegebene Bundle nicht gefunden wurde. Die air.Localizer.BUNDLE_NOT_FOUND -Konstante definiert den String "bundleNotFound" . Das Ereignis hat zwei Eigenschaften: bundleName und locale . Die bundleName -Eigenschaft ist der Name des Bundles, in dem die Ressource nicht gefunden wurde. Die locale -Eigenschaft ist der Name des Gebietsschemas, in dem die Ressource nicht gefunden wurde.

Die getFile() -Methode des Localizer-Objekts gibt den Inhalt eines Bundles für ein bestimmtes Gebietsschema als String zurück. Die Bundledatei wird als UTF-8-Datei gelesen. Die Methode enthält die folgenden Parameter:

Parameter

Beschreibung

resourceFileName

Der Dateiname der Ressourcendatei (z. B "about.html" ).

templateArgs

Optional. Ein Stringarray zum Ersetzen nummerierter Tags im Ersatzstring. Ziehen Sie z. B. das Aufrufen einer Funktion in Erwägung, deren templateArgs -Parameter ["Raúl", "4"] lautet und deren übereinstimmende Ressourcendatei zwei Zeilen enthält:

<html> 
<body>Hello, {0}. You have {1} new messages.</body> 
</html> 

In diesem Fall gibt die Funktion einen String mit zwei Zeilen zurück:

<html> 
<body>Hello, Raúl. You have 4 new messages. </body> 
</html> 
locale

Der zu verwendende Gebietsschemacode, z. B. "en_GB" . Wenn ein Gebietsschema angegeben ist, aber keine übereinstimmende Datei gefunden wird, setzt die Methode die Suche nach Werten nicht in anderen Gebietsschemas der Gebietsschemakette fort. Wenn kein Gebietsschemacode angegeben wurde, gibt die Funktion den Text im ersten Gebietsschema in der Gebietsschemakette zurück, die eine mit dem resourceFileName übereinstimmende Datei enthält.

Der folgende Code ruft beispielsweise die document.write() -Methode mithilfe des Inhalts der Datei „about.html“ des Gebietsschemas „fr“ auf:

var aboutWin = window.open(); 
var aboutHtml = localizer.getFile("about.html", null, "fr"); 
aboutWin.document.close(); 
aboutWin.document.write(aboutHtml);

Die getFile() -Methode löst ein resourceNotFound -Ereignis aus, wenn sie eine Ressource nicht in der lokalen Gebietsschemakette findet. Die air.Localizer.FILE_NOT_FOUND -Konstante definiert den String "resourceNotFound" . Die getFile() -Methode ist asynchron (und löst das fileNotFound -Ereignis asynchron aus). Das Ereignis hat zwei Eigenschaften: fileName und locale . Die fileName -Eigenschaft ist der Name der nicht gefundenen Datei. Die locale -Eigenschaft ist der Name des Gebietsschemas, in dem die Ressource nicht gefunden wurde. Der folgende Code legt einen Ereignis-Listener für dieses Ereignis fest:

air.Localizer.localizer.addEventListener(air.Localizer.FILE_NOT_FOUND, fnfHandler); 
air.Localizer.localizer.getFile("missing.html", null, "fr"); 
function fnfHandler(event) 
{ 
    alert(event.fileName + ": " + event.locale); 
}