Author Topic: [Tutorial] Lokalisierung (DE)  (Read 5113 times)

Florian Nücke

  • κρύα πόδια
  • Administrator
  • Hero Member
  • *****
  • Posts: 1985
  • MegaZine3 Developer
    • MegaZine3
[Tutorial] Lokalisierung (DE)
« on: January 30, 2009, 07:44:24 pm »
Lokalisierung

MegaZine 3 ermöglicht es auf einfache Art und Weise Bücher zu lokalisieren um so den Benutzern zu erlauben zwischen verschiedenen Sprachen zu wechseln - ohne dafür das gesamte Buch neu laden zu müssen. Es ist dazu nicht nötig jedes Element im Buch zu lokalisieren, lediglich jene die übersetzt werden sollen.


Benutzeroberfläche

Es werden bereits einige Übersetzungen für die Benutzeroberfläche (also z.B. die Tooltips für die Menüelemente) mit den Releases von MegaZine 3 ausgeliefert. Um dem Benutzer dies Auswahl einer bestimmten Sprache zu ermöglichen kann das 'lang' Attribut des book-Tags verwendet werden. Hierzu muss der ISO 639-1 Code der zu ladenden Sprache angegeben werden. Stellen Sie dazu sicher, dass eine Übersetzung für die gewünschte Sprache im gleichen Verzeichnis wie die megazine.swf Datei liegt. Übersetzungsdateien haben einen Namen nach dem Muster "lang.ID.xml", wobei ID der ISO 639-1 Code ist. Um mehrere Sprachen zu erlauben trennen Sie die Codes mit Kommas (","):

Code: (xml)
  1. <book lang="de,en,it">

Die erste Sprache in der Liste ist die Sprache die Standardgemäß angezeigt wird, es sei denn das System des Benutzers hat eine andere Sprache und diese Sprache taucht in der Liste auf. Dann wird die Systemsprache verwendet. Das lässt sich aber auch verhindern indem man das 'ignoresyslang' Attribut auf "true" setzt:

Code: (xml)
  1. <book lang="de,en,it" ignoresyslang="true">

Wichtig: wenn Sie lokalisierte Titel, Bilder, etc. verwenden, geben Sie immer das Sprachkürzel im lang Attribut des Buches an!


Titel

Titel sind die Tooltip-Texte die gezeigt werden wenn man mit der Maus über Bilder, Bereiche oder Videos. fährt. Um Titel zu lokalisieren verwenden Sie anstelle des 'title' Attributs Kindknoten mit dem Namen 'title' für jede benötigte Sprache. Diese haben dann ein Attribut namens 'lang' in dem der Sprachcode angegeben werden kann:

Code: (xml)
  1. <img src="...">
  2.    <title lang="de">Deutscher Tooltip</title>
  3.    <title lang="en">English tool tip</title>
  4. </img>

Dies funktioniert genauso für 'vid' und 'area' Elemente.


Bilder, Videos und Ton

Bilder, Videso und Ton kann auch lokalisiert werden. Dies kann nützlich sein wenn Texte in Bildern oder Sprache in Videos oder Hintergrundtonspuren lokalisert werden soll. Das Schema ist dasselbe wie bei Titeln, nur dass kein title Kindknoten verwendet wird, sondern ein 'src' Tag:

Code: (xml)
  1. <img>
  2.    <src lang="de">image/german.jpg</src>
  3.    <src lang="en">image/english.jpg</src>
  4. </img>

Dies funktioniert genauso für 'vid' und 'snd' Elemente.

Lokalisierung für Titel und Bilder/Videos/Ton kann natürlich auch zusammen auftreten, sprich

Code: (xml)
  1. <img>
  2.    <src lang="de">image/german.jpg</src>
  3.    <title lang="de">Deutscher Tooltip</title>
  4.    <src lang="en">image/english.jpg</src>
  5.    <title lang="en">English tool tip</title>
  6. </img>

ist vollkommen valide.

Anders als Titel die beim Laden der XML-Dateien permanent gespeichert werden, werden Bilder und Co. dynamisch ent- und neu geladen (um Bandbreite und Hauptspeicher zu sparen). Wenn nun also von Deutsch zu Englisch gewechselt wird werden zunächst die deutschen Bilder entladen und dann die englischen Bilder nachgeladen. Dies kann dazu führen, dass die Seiten eine kurze Zeit leer oder unvollständig angezeigt werden, bevor die neuen Daten geladen sind.


'nav' Elemente

Navigationslisten können auch lokalisiert werden. Um unnötige Verschachtelung zu vermeiden ist die Syntax hier geringfügig anders:

Code: (xml)
  1. <nav>
  2.    <lnk lang="en">Entry 1</lnk>
  3.    <lnk lang="en">Entry 2</lnk>
  4.    <lnk lang="de">Eintrag 1</lnk>
  5.    <lnk lang="de">Eintrag 2</lnk>
  6. </nav>

Zum einen sind alle Einträge auf dem gleichen "Level", und haben anders als etwa das 'src' Attribut von Bildern den Sprachcode direkt eingetragen. Dies hat folgende wichtige Konsequenz zur Folge: die Reihenfolge der Einträge relativ zu Einträgen mit einer anderen Sprache ist vollkommen egal. Nur die "sprachinterne" Reihenfolge ist wichtig. Das Beispiel von eben ist demnach äquivalent zum folgenden Code:

Code: (xml)
  1. <nav>
  2.    <lnk lang="en">Entry 1</lnk>
  3.    <lnk lang="de">Eintrag 1</lnk>
  4.    <lnk lang="en">Entry 2</lnk>
  5.    <lnk lang="de">Eintrag 2</lnk>
  6. </nav>

Es macht also keinen Unterschied wie die Einträge gruppiert werden. Verwenden Sie einfach die Art die für Sie besser lesbar ist.


Abschließende Bemerkungen

Wenn ein Benutzer nun mittels Sprachauswahl inder Kontrollleiste zu einer anderen Sprache wechselt werden alle Titel und Element die eine Repräsentation in der gewählten Sprache haben ausgetauscht. Falls kein Eintrag in der Sprache vorhanden ist wird der Eintrag der Standardsprache verwendet.
Bei Bildern kann es zu einer kurzen Verzögerung beim Austauschen kommen, bis die andere Sprachversion angezeigt wird. Titel un Navigationslisten werden sofort aktualisiert.
Sollten Sie die Benutzeroberfläche in eine Sprache übersetzen müssen für die es noch keine Übersetzung gibt wäre es sehr willkommen wenn Sie die übersetzte XML Datei zur Unterstützung des Projekts an den Autor senden würden, besten Dank!
« Last Edit: March 27, 2009, 12:33:33 am by Florian Nücke »
For the Snark was a Boojum, you see.

Before you ask a question
          After you get an answer
  • please document your problem with the answer in the Project Wiki. (e.g. in the FAQs)
  • help others out if you can, by answering their questions on the forum.