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:
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
|
|
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“.)
|
|
Der Ressourcenname.
|
|
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.
|
|
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
|
|
Das Gebietsschema (zum Beispiel
"fr"
).
|
|
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
|
|
Der Dateiname der Ressourcendatei (z. B
"about.html"
).
|
|
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>
|
|
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);
}
|
|
|