Gadgets-Dokumente durchsuchen
Leider sind diese Informationen nicht mehr aktuell. Wir schlagen vor, die kürzlich aktualisierten Informationen auf Englisch zurate zu ziehen und entschuldigen uns für eventuelle Unannehmlichkeiten.

Google Gadgets und Internationalisierung ("I18n")

In diesem Dokument wird beschrieben, wie Sie Gadgets erstellen können, die sich problemlos für ein internationales Publikum lokalisieren lassen.

Inhalt

  1. Einführung
  2. Grundbegriffe
  3. Codieren für die Internationalisierung
  4. Beispiel
  5. Erstellen eines lokalisierten Gadgets
  6. Message Bundles
    1. Namenskonventionen
    2. Bewährte Vorgehensweisen
  7. Verwenden von Message Bundles in einem Gadget
    1. Ausweichfunktion für Meldungen
    2. Zugriff auf Meldungen aus Message Bundles
    3. Anzeigen von Meldungen im HTML-Code eines Gadgets
  8. Spezifikation des Gadgets "Hallo Welt"
  9. Testen
  10. Cache-Speicherung
  11. Fehlerbehebung
  12. Unterstützte Sprachen und Länder

Einführung

Das Google Gadgets-API bietet einen einfachen Weg, Ihr Gadget einem internationalen Publikum zur Verfügung zu stellen. Es funktioniert ganz einfach: Ihr Gadget muss lediglich so strukturiert werden, dass sich alle für die Nutzer sichtbaren Texte (also jede Zeichenfolge, die übersetzt werden soll) in Message Bundles befinden, die vom Gadget getrennt sind. Von externen Übersetzern werden dann diese Zeichenfolgen übersetzt und neue gebietsschemaspezifische Message Bundles erstellt, die Sie zu Ihrer Gadget-Spezifikation hinzufügen. Auf diese Weise können Sie Ihr Gadget neuen Nutzerkreisen zur Verfügung stellen.

I18n-Gadgets funktionieren ohne weitere Änderungen in allen anderen Google-Websites wie etwa Google Desktop oder Google Page Creator.

Eine Liste der von iGoogle unterstützten Sprachen und Länder finden Sie unter Unterstützte Sprachen und Länder.

Der Umgang mit nicht-englischen Gadgets wird im Abschnitt Nicht-englische Gadgets behandelt.

Grundbegriffe

In diesem Dokument wird auf die Begriffe Internationalisierung (Internationalization – I18n) und Lokalisierung (Localization – L10n) Bezug genommen:

Im Kontext dieses Dokuments besteht ein "Lokalisierungsprofil" aus zwei Komponenten: einem Land (gemäß der Domain des Nutzers) und einer bevorzugten Benutzeroberflächensprache (Einzelheiten unter Testen).

Codieren für die Internationalisierung

Das Google Gadgets-API unterstützt UTF-8-Codierungen für XML-Attributwerte sowie im Abschnitt <Content>. Falls Sie html als Content-Typ festgelegt haben, wird UTF-8 ausdrücklich als Standard-Codierung gesetzt. Nehmen Sie diese Einstellung nicht selber vor.

Beispiel

In diesem Dokument wird ein Beispiel-Gadget verwendet, das die Nachricht "Hallo Welt" anzeigt, z. B. hier in Chinesisch:

'Hallo Welt' – Chinesisch

In diesem Beispiel kann der Nutzer mithilfe des Dropdown-Menüs in den Benutzereinstellungen eine Schriftfarbe für die Nachricht "Hallo Welt" auswählen. Die Farbnamen in diesem Menü sind in externen Dateien (Message Bundles) definiert. In welcher Sprache das Menü angezeigt wird, hängt vom Länder-/Sprachenprofil des Nutzers ab. Wird das Gadget von einem Nutzer mit einem englischen Profil ausgeführt, erscheint der Text in Englisch. Die englische Version des Beispiels mit angezeigtem Dropdown-Menü in den Benutzereinstellungen sieht folgendermaßen aus:

'Hallo Welt' – Englisch

Die Gadget-Spezifikation für "Hallo Welt" sehen Sie hier.

Erstellen eines lokalisierten Gadgets

Zum Erstellen eines lokalisierten Gadgets sind die folgenden grundlegenden Schritte auszuführen:

  1. Schreiben Sie das Gadget.
  2. Extrahieren Sie alle Zeichenfolgen, die übersetzt werden müssen, in Message Bundles .
  3. Beauftragen Sie einen Übersetzer mit der Übersetzung des Gadgets.
  4. Der Übersetzer erstellt ein neues Message Bundle für ein bestimmtes Gebietsschema. Dabei kann es sich um ein Schema pro Sprache (z. B. Französisch) oder um eines pro Sprache und Land (Französisch/Kanada, Französisch/Frankreich) handeln. Nicht-englische Message Bundles müssen im UTF-8-Format gespeichert werden.
  5. Der Übersetzer sendet Ihnen die URL zu dem neuen Bundle.
  6. Ändern Sie die Gadget-Spezifikation dahin gehend, dass das Message Bundle verwendet wird.
  7. Wenn Ihr Gadget sich im Verzeichnis für Startseiten-Content befindet, dauert es eine bis zwei Wochen, bis das aktualisierte Gadget von Crawler und Pipeline gefunden wurde und für den neuen Markt erhältlich ist.

Message Bundles

Im Mittelpunkt der Internationalisierungsstrategie von Google Gadgets stehen die Message Bundles. Message Bundles sind XML-Dateien, die die übersetzten Zeichenfolgen für ein bestimmtes Gebietsschema enthalten. Jede Zeichenfolge wird durch einen eindeutigen Namen bezeichnet, der in allen Bundles identisch ist.

Message Bundles können unter einer beliebigen URL gehostet und von mehreren Anwendungen gemeinsam genutzt werden. Jedes Message Bundle enthält nur ein Gebietsschema.

Message Bundles haben folgendes Format:

<messagebundle>
  <msg name="hello_world"> 
    Hello World. 
  </msg> 
  <msg name="color">Color</msg> 
  <msg name="red">Red</msg> 
  <msg name="green">Green</msg> 
  <msg name="blue">Blue</msg> 
  <msg name="gray">Gray</msg> 
  <msg name="purple">Purple</msg> 
  <msg name="black">Black</msg> 
</messagebundle> 

In einer Message-Bundle-Datei können folgende Felder enthalten sein:

Namenskonventionen

Für die Namensgebung bei Message Bundles gelten folgende Konventionen:

<language>_<country>.xml 

Falls kein sprach- oder länderspezifischer Wert angegeben ist, soll laut Konvention "ALL" verwendet werden. Beispielsweise ist die Datei de_ALL.xml für alle Deutsch Sprechenden gültig, unabhängig von ihrem Land. Das Message Bundle ALL_ALL.xml ist die Datei, die standardmäßig verwendet wird.

Bewährte Vorgehensweisen

Es gibt keine strikte Vorschrift, die Namenskonventionen für Message Bundles einzuhalten. Das Gadget verwendet zur Identifizierung der korrekten Message-Bundle-Datei für das Profil des Nutzers die Attribute lang und country von <Locale>. Es bezieht sich nicht auf den Namen des Message Bundles.

Auch wenn das Google Gadgets-API Ihnen ein hohes Maß an Flexibilität gewährt, empfehlen wir Ihnen dennoch, sich an die folgenden Richtlinien zu halten:

Verwenden von Message Bundles in einem Gadget

Mit dem <Locale>-Tag innerhalb des Abschnitts <ModulePrefs>) können Sie die von Ihrem Gadget verwendeten Message Bundles auflisten. Beispiel:

<ModulePrefs title="i18n Example"> 
  <Locale messages="http://doc.examples.googlepages.com/ALL_ALL.xml"/> 
  <Locale lang="de" messages="http://doc.examples.googlepages.com/de_ALL.xml"/> 
  <Locale lang="zh-cn" messages="http://doc.examples.googlepages.com/zh_cn_ALL.xml"/> 
  <Locale lang="fr" messages="http://doc.examples.googlepages.com/fr_ALL.xml"/> 
  <Locale lang="ja" messages="http://doc.examples.googlepages.com/ja_ALL.xml"/> 
  <Locale lang="es" messages="http://doc.examples.googlepages.com/es_ALL.xml"/> 
  <Locale lang="it" messages="http://doc.examples.googlepages.com/it_ALL.xml"/> 
  <Locale lang="ru" messages="http://doc.examples.googlepages.com/ru_ALL.xml"/> 
</ModulePrefs>

<Locale>-Tags können folgende Attribute haben:

<Locale lang="fr" country="CA" messages="http://example.com/fr_CA.xml"/> 

Zur Laufzeit wird vom Gadget das Message Bundle verwendet, das dem Nutzerprofil am ehesten entspricht.

Eine Liste der von Google Gadgets unterstützten Sprach- und Ländercodes finden Sie unter Unterstützte Sprachen und Länder.

Ausweichfunktion für Meldungen

Message Bundles verfügen über eine Ausweichfunktion. Mithilfe dieser Ausweichfunktion versucht das Gadget, das Message Bundle zu verwenden, das der in der URL angegebenen Landes- und Spracheinstellung für die Benutzeroberfläche des Nutzers am ehesten entspricht. Findet das Gadget keine exakte Übereinstimmung, sucht es als Ausweichlösung unter den vorhandenen Message Bundles dasjenige mit der größten Übereinstimmung heraus.

Mit der Ausweichfunktion für Meldungen können "standardmäßige" Meldungen für den Fall festgelegt werden, dass eine Meldung für ein bestimmtes Gebietsschema nicht verfügbar ist. Die Standardmeldungen sind normalerweise in der Datei ALL_ALL.xml abgelegt. 

Angenommen, in Ihrem Gadget sind folgende Dateien angegeben:

<Locale messages="http://x.com/ALL_ALL.xml"/> 
<Locale lang="de" messages="http://x.com/de_ALL.xml"/>
<Locale lang="de" country="DE" messages="http://x.com/de_DE.xml"/> 
<Locale lang="de" country="US" messages="http://x.com/de_US.xml"/>

Wie werden diese Dateien verwendet? Nehmen wir an, Sie haben einen Nutzer mit US-Domain (http://www.google.com), dessen Spracheinstellung jedoch Deutsch ist. Diesem Nutzer werden die Meldungen aus der Datei de_US.xml angezeigt. Falls in dieser Datei eine bestimmte Meldung nicht verfügbar ist, sieht er die entsprechende Meldung aus de_ALL.xml oder schließlich die aus ALL_ALL.xml.

Ein Nutzer aus Deutschland mit deutscher Benutzeroberfläche sieht zunächst die Meldungen aus de_DE.xml, ein Nutzer aus der Schweiz mit deutscher Benutzeroberfläche zunächst die Meldungen aus de_ALL.xml und ein Nutzer aus der Schweiz mit französischer Benutzeroberfläche zunächst die aus ALL_ALL.xml.

Zugriff auf Meldungen aus Message Bundles

Wie greift ein Gadget auf die richtige Meldung in einem Message Bundle zu? Betrachten Sie die Datei de_ALL.xml (Sprache Deutsch, Land ALL) im Beispiel "Hallo Welt":

<messagebundle>
  <msg name="hello_world">
    Hallo Welt.
  </msg>
  <msg name="color">Farbe</msg> 
  <msg name="red">Rot</msg> 
  <msg name="green">Grün</msg> 
  <msg name="blue">Blau</msg> 
  <msg name="gray">Grau</msg> 
  <msg name="purple">Purpurrot</msg> 
  <msg name="black">Schwarz</msg>
</messagebundle>

Jede Meldung wird durch einen eindeutigen Namen bezeichnet. So ist beispielsweise in der Meldung

<msg name="red">Rot</msg> 

der eindeutige Name der Meldung "red". Die übersetzte Zeichenfolge, die im Gadget im Benutzereinstellungen-Dropdown-Menü angezeigt wird, lautet "Rot", das deutsche Wort für "red". Die entsprechende englische Meldungszeichenfolge im Message Bundle ALL_ALL.xml sieht folgendermaßen aus:

<msg name="red">Red</msg> 

In der Gadget-Spezifikation von "Hallo Welt" wird die Ersetzungsvariable __MSG_ verwendet, um die Stelle anzugeben, an der der Wert aus dem jeweiligen Message Bundle eingesetzt werden soll. Beispielsweise wird mit der folgenden XML-Anweisung in der Spezifikation des Gadgets "Hallo Welt" ein Menüeintrag zum Dropdown-Menü "Farbe" in den Benutzereinstellungen hinzugefügt:

<EnumValue value="Red" display_value="__MSG_red__" /> 

Diese Zeile gibt somit die Anweisung "Gehe zu dem Message Bundle, das dem Länder-/Sprachenprofil des Nutzers am ehesten entspricht, rufe den Wert in der Meldung namens "red" ab und setze diesen anstelle von __MSG_red__ ein". Genau auf diese Weise wird das Dropdown-Menü im Beispiel "Hallo Welt" mit Farbnamen gefüllt (hier z. B. in Deutsch): 'Hallo Welt' – Deutsch

Anzeigen von Meldungen im HTML-Code eines Gadgets

Zum Anzeigen von Meldungen im XML-Teil Ihres Gadgets werden Ersetzungsvariablen verwendet, wie oben erläutert. Innerhalb des CDATA-Teils des Gadgets gibt es einige andere Möglichkeiten.

Die einfachste Methode besteht darin, die Ersetzungsvariable in den HTML-Code einzubetten:

<b>__MSG_hello_world__</b>. 

Alternativ können Sie auch die "userprefs"-Funktion getMsg() verwenden. Mit dieser Funktion ist nicht nur der Zugriff auf die Meldungen, die zu "userprefs" gehören, sondern auf alle Meldungen in Message Bundles möglich. Allerdings muss die Funktion an einem _IG_Prefs-Objekt aufgerufen werden. Beispiel:

var prefs = new _IG_Prefs(__MODULE_ID__);
prefs.getMsg(“red”);

Spezifikation des Gadgets "Hallo Welt"

Im Folgenden ist die Gadget-Spezifikation für das Gadget "Hallo Welt" aufgeführt:

<?xml version="1.0" encoding="UTF-8" ?> 
<Module>
  <ModulePrefs title="i18n Example"> 
    <Locale messages="http://doc.examples.googlepages.com/ALL_ALL.xml"/>
    <Locale lang="de" messages="http://doc.examples.googlepages.com/de_ALL.xml"/>
    <Locale lang="zh-cn" messages="http://doc.examples.googlepages.com/zh_cn_ALL.xml"/>
    <Locale lang="fr" messages="http://doc.examples.googlepages.com/fr_ALL.xml"/>
    <Locale lang="ja" messages="http://doc.examples.googlepages.com/ja_ALL.xml"/>
    <Locale lang="es" messages="http://doc.examples.googlepages.com/es_ALL.xml"/>
    <Locale lang="it" messages="http://doc.examples.googlepages.com/it_ALL.xml"/>
    <Locale lang="ru" messages="http://doc.examples.googlepages.com/ru_ALL.xml"/> 
  </ModulePrefs>
  <UserPref name="fontcolor" display_name="__MSG_color__" default_value="Red" datatype="enum">
    <EnumValue value="Red" display_value="__MSG_red__" /> 
    <EnumValue value="Green" display_value="__MSG_green__" /> 
    <EnumValue value="Blue" display_value="__MSG_blue__" /> 
    <EnumValue value="Gray" display_value="__MSG_gray__" /> 
    <EnumValue value="Purple" display_value="__MSG_purple__" /> 
    <EnumValue value="Black" display_value="__MSG_black__" /> 
  </UserPref>
  <Content type="html">
  <![CDATA[
    <script type="text/javascript"> 

      displayMsg();
      function displayMsg(){

          // Get userprefs
          var prefs = new _IG_Prefs(__MODULE_ID__);
          // Set font color to user's color choice
          document.fgColor = prefs.getString("fontcolor");
          // Display message
          document.write("<br><h1>");
          // Use prefs.getMsg to go to the appropriate message bundle
          // and get the string associated with the "hello_world" message.
          document.write(prefs.getMsg("hello_world"));
          document.write("</h1>"); 
      }
    </script>
  ]]>
  </Content>
</Module> 

Testen

Zum Testen Ihres Gadgets können Sie die Länder- und Spracheinstellungen entsprechend den in Ihrem Gadget vorhandenen Message Bundles verändern.

Die einfachste Methode zum Ändern der Länder- und Spracheinstellungen besteht darin, die URL für die iGoogle-Seite zu bearbeiten:

http://www.google.com/ig?&gl=<country>&hl=<lang>

Beispiel: In der folgenden URL ist als Land Deutschland (DE) und als Sprache Englisch (en) angegeben. Normalerweise erhält das Land den Vorrang gegenüber der Sprache. Daher wird bei dieser URL die iGoogle-Seite in Deutsch angezeigt:

http://www.google.com/ig?&gl=DE&hl=en

Im folgenden Beispiel ist das Land implizit die USA und die Sprache ist Spanisch:

http://www.google.com/ig?hl=es

Eine Liste der von Google Gadgets unterstützten Sprach- und Ländercodes finden Sie unter Unterstützte Sprachen und Länder. Über diesen Link erhalten Sie nützliche Anleitungen zur Konstruktion der richtigen URL für eine bestimmte Sprache: http://www.google.de/help/customize.html#searchlang.

Cache-Speicherung

Für Message Bundles gelten dieselben Cache-Speicherungsregeln wie für die Gadget-Spezifikationen selbst: Normalerweise wird der Cache alle ein bis zwei Stunden von uns aktualisiert. Hosting-Server sollten pro Tag nur ~100-200 Anforderungen für Message Bundles erhalten. Bei Nichtverfügbarkeit wird so lange wie möglich die "abgelaufene" Kopie verwendet.  Wenn Sie im Gadget developer.xml die Cache-Speicherung für ein Gadget deaktivieren, wird auch die Cache-Speicherung der Message Bundles dieses Gadgets deaktiviert.

Fehlerbehebung

Während der Entwicklung kann es vorkommen, dass ein Gadget anstelle einer Meldung entweder gar nichts oder nur ??? anzeigt. Das Problem kann folgende Ursachen haben:

Unterstützte Sprachen und Länder

In diesem Abschnitt sind sämtliche Sprachen und Länder aufgeführt, die von iGoogle unterstützt werden. Entsprechend der allgemeinen Konvention werden in den folgenden Tabellen Sprachcodes klein und Ländercodes groß geschrieben. Dies ist jedoch nicht zwingend erforderlich.

iGoogle unterstützt folgende Sprachen:

Sprachcode Sprache
da
Dänisch
de Deutsch
en Englisch
es Spanisch
fi Finnisch
fr Französisch
it Italienisch
ja Japanisch
ko Koreanisch
nl Niederländisch
no Norwegisch
pt_BR
Portugiesisch (Brasilien)
sv Schwedisch
ru Russisch
zh_CN Chinesisch (vereinfacht)

iGoogle unterstützt folgende Länder:

Ländercode Land
AU Australien
BR Brasilien
CA Kanada
CH Schweiz
CN China
DE Deutschland
DK Dänemark
ES Spanien
FI Finnland
FR Frankreich
IE Irland
IN Indien
IT Italien
JP Japan
KR Korea
MX Mexiko
NL Niederlande
NO Norwegen
NZ Neuseeland
RU Russland
SE Schweden
UK Großbritannien und Nordirland
US USA

Zurück nach oben

Aktualisiert am: