Lokalisierung (L10N)

< Formularfelder in Stud.IP | Entwicklungs-HOWTO | Lokalisierte Buttons erstellen >

Lokalisierung steht in der Softwareentwicklung für die Anpassung von Inhalten (Bücher, Filmkunst, Homepages), Prozessen, Produkten und insbesondere Computerprogrammen (Software) an die in einem bestimmten geographisch oder ethnisch umschriebenen Absatz- oder Nutzungsgebiet (Land, Region oder ethnische Gruppe) vorherrschenden lokalen sprachlichen und kulturellen Gegebenheiten.
Das englische Wort für Lokalisierung ist localization (amerikanisches/britisches Englisch) bzw. localisation (britisches Englisch) und wird in der Softwareentwicklung oft mit L10N abgekürzt. Die 10 ist die Anzahl der ausgelassenen Buchstaben. (Im Gegensatz dazu steht I18N für internationalization.)

-- Wikipedia, L10N http://de.wikipedia.org/wiki/L10N

Stud.IP nutzt für die Internationalisierung das auch in vielen anderen Software-Projekten verwendete gettext-Paket.

Dabei erfolgt eine Trennung zwischen der Vorbereitung der lokalisierten Ausgabe von Texten (Internationalisierung, dies ist Aufgabe jedes Programmierers) und der eigentlichen Übersetzung der Texte mit Hilfe spezieller Tools wie z.B. "kbabel" (Lokalisierung, dies ist die Aufgabe des Maintainers einer Sprachdatei).

Die Ausgangssprache, die im Quellcode verwendet wird, ist bei Stud.IP deutsch.

Internationalisierung

Alle Strings im System dürfen nicht in den HTML-Teilen der Sourcedateien stehen, sondern müssen aus PHP-Abschnitten heraus geschrieben werden. Die zu übersetzenden Zeichenfolgen werden im Programmcode in die spezielle Funktion gettext() eingeschlossen. Benutzt werden sollte nur die Kurzform, in PHP realisiert als _().

echo _("Meine Veranstaltungen")

In die zu übersetzenden Strings sollte reiner Text, keine HTML-Struktur der Seite und kein Programmcode wie z.B. Variablennamen eingeschlossen werden.

Falsch:

echo _("<tr><td>Meine Veranstaltungen</td></tr>");

Richtig:

echo "<tr><td>" . _("Meine Veranstaltungen") . "</td></tr>";

Oder Richtig:

printf("<tr><td>%s</td></tr>", _(" Meine Veranstaltungen "));

Falsch:

print _("error§Keine Berechtigung!§");

Richtig:

printf("error§%s§", _("Keine Berechtigung!"));

Falsch:

echo _("Sie haben $count neue Nachrichten.");

Auch falsch:

echo _("Sie haben ") . $count . _(" neue Nachrichten.");

Richtig:

printf(_("Sie haben %s neue Nachrichten."), $count);

Die in einen gettext() eingeschlossenen Strings sollten vollständige Sätze bzw. Informationsblöcke enthalten, also kein Zusammenstückeln aus einzelnen Teilstrings (siehe oben).

Schliessen sich die beiden vorangegangenen Vorschriften gegenseitig aus, weil z.B. ein Teil eines Satzes formatiert wird, so hat die letztere Regel Vorrang (der Übersetzer braucht sowieso html-Grundlagenkenntnisse).

Falsch:

echo _("Sie können diese Datei ") . "<b>" . _("nicht") . "</b>" . _(" löschen");

Richtig:

echo _("Sie können diese Datei <b>nicht</b> löschen");

Komplizierte html-Ausdrücke, wie z.B. ein klickbares Icon im Text sollten dagegen via %s aus dem String herausgezogen werden

Richtig:

printf(_("Unter %s gelangen Sie zu Ihren Terminen."), "<a href><img src = \"pictures/icon-lit.gif\"></a>");

Text-Buttons

Beschriftete und damit zu übersetzende Formular-Buttons werden generell nicht direkt in den Code eingebunden, sondern immer über die Funktion "makeButton()" erzeugt, diese kümmert sich dann um die Lokalisierung.

0 Kommentare (zeigen/schreiben)

Letzte Änderung am 02.04.2011 11:34 Uhr von tthelen.

Hilfe?!

Hier finden Sie Entwickler-Dokumentation für Stud.IP.

Hilfe zur Bedienung und Administration von Stud.IP finden Sie im Dokumentations-Portal.

(c) Stud.IP e.V. und die Autoren der Stud.IP-Dokumentation.
Dieser Text ist unter der Lizenz "Creative commons Attribution/Share Alike" verfügbar.