PHP: Lokalisierung auf Basis von XML

Kein Beitragsbild

Im Zuge der Globalisierung und der großen Reichweite des Internets mit der Fülle von Angeboten ist es heutzutage wichtiger denn je, mit den eigenen Produkten eine breitere Masse als früher anzusprechen. Somit wird es auch immer wichtiger, eigene Web-Anwendungen mithilfe der Lokalisierung auch für Personen nutzbar zu machen, die zum Beispiel der deutschen Sprache nicht mächtig sind. So macht man seine PHP-basierte Web-Anwendung fit für verschiedene Sprachen.

Warum mehrsprachig werden?

Eine Anwendung von Anfang an auf Mehrsprachigkeit vorzubereiten, ist natürlich immer dann wichtig, wenn man sie auch auf ausländischen Märkten platzieren möchte. Allein der Aufwand, eine umfangreiche Anwendung im Quellcode in andere Sprachen zu übersetzen, ist schon nicht wirtschaftlich und würde bei vielen Projekten keine Option darstellen. Auch bei der Zusammenarbeit mit externen Übersetzungs-Dienstleistern bietet es sich schon an, die Ur-Daten und die übersetzten Daten in einem portablen Format vorzuhalten.

Das Einspielen der Daten ist somit auch viel einfacher, als alles nochmals per Hand einzutippen, beziehungsweise per Copy&Paste zu arbeiten. Somit ist es aus Gründen der Wirtschaftlichkeit bei der Entwicklung unabdingbar, auf anderssprachige Märkte vorbereitet zu sein.

Der andere Vorteil liegt darin, dass Texte schnell geändert werden können, ohne den Quellcode der Anwendung anfassen zu müssen oder gar die Anwendung neu zu kompilieren – dadurch kann praktisch jeder neue Texte eingeben oder ändern. Egal, ob Programmierkenntnisse vorhanden sind oder nicht.

Warum XML?

Viele werden sich sicher fragen, warum ich nicht auf den Standard “gettext” zurückgegriffen habe, zumal dieses System zum Beispiel in WordPress zum Einsatz kommt. Nun, hier haben mehrere Faktoren eine Rolle gespielt. Ich wollte von Anfang an eine Lösung haben, die mir eine gewisse Flexibilität bietet und trotzdem einfach zu warten und zu handhaben ist.

Da ich vorwiegend im Webbereich entwickle, also web-basierte Anwendungen, war es mir wichtig, das mein Dateiformat nicht nur von PHP und JavaScript unterstützt wird, sondern auch von Flash. Eine Übergabe der Daten aus einer gettext-Umgebung an eine Flash-Datei halte ich für zu umständlich, als das ich es produktiv einsetzen würde. Hier müssten wir jede einzelne Übersetzung als Variable anhängen, beziehungsweise als eine Variable die unsere Übersetzungen per Komma oder Semikolon trennt, was bei einer hohen Anzahl an Übersetzungen den Quellcode nur unnötig aufschwemmen würde. Das trifft natürlich auch nur dann zu, wenn ein Flash-Film Teil einer PHP-Anwendung ist.

Hier sammelt XML also wieder Pluspunkte gegenüber gettext, das von Flash nicht nativ unterstützt wird. Live-Änderungen an unserer XML-Datei wären auch kein Problem, die sind sofort beim erneuten einlesen der Datei verfügbar, bei der nativen gettext Unterstützung in PHP muss der Server neu gestartet werden um Änderungen an der Übersetzungsdatei wirksam zu machen, dass kann für Probleme bei Shared-Hostern führen, bei denen wir nicht die Möglichkeit haben den Server zu rebooten.

Natürlich hat unser System nicht nur Vorteile, zum Beispiel ist es in diesem Anfangsstadium nicht möglich, so genannte Platzhalter-Substitutions anzuwenden, wie es bei gettext der Fall ist. Jedoch soll dieser Artikel nur die Grundzüge eines auf XML-basierten Lokalisierungs-Systems zeigen und keine eierlegende Wollmilchsau, die unter Wasser reitbar ist. Und trotzdem müssen wir nicht darauf verzichten, unsere Übersetzungsdatei in verschiedenen Programmiersprachen und System-Umgebungen einsetzen zu können. Denn, nahezu jede wichtige Programmiersprache bietet uns Funktionen, um XML-Dateien zu verarbeiten.

E-Book Effektives Online Marketing von Andreas Hecht

E-Book: Effektives Online Marketing

Entdecke die Power des perfekten Online-Marketings für deine Website. Du erfährst neue Techniken, die deine Website automatisch besser ranken lassen und die dir nach und nach einen Expertenstatus verleihen werden. [...]

Hier sollte man mich auch nicht falsch verstehen, ich will keinen bewährten Standard vom Thron stoßen. Dazu wäre unser System auch nicht in der Lage. Es bleibt natürlich jedem selbst überlassen, welche Umgebung er zum Lokalisieren seiner Anwendung nutzt.

Grundlegende Überlegungen

Bevor wir mit dem Programmieren beginnen, müssen wir uns erstmal Gedanken darüber machen, wie wir das System aufbauen wollen. Ich habe mich dabei dafür entschieden, die verschiedenen Sprachen nicht in einer Datei unterzubringen, sondern Sie voneinander getrennt in einzelnen Dateien abzulegen. Das dient nicht nur der Übersichtlichkeit der vorhandenen Sprachen und Texte, sondern reduziert auch die Zugriffszeit auf die Datei selbst. Denn wenn viele Sprachen verfügbar sind und je nach Umfang der Anwendung kann schon eine stattliche Summe an Übersetzungen anfallen.

Gehen wir zur nächsten Frage über, was soll alles “übersetzbar” werden? Nun, im Grunde bleibt das dem Entwickler selbst überlassen, doch wäre es sehr umständlich, das komplette Projekt, inklusive eventueller Inhalte in unserem System zu beherbergen. Deshalb übersetzen wir nur Texte, die vom System grundlegend benötigt werden, wie zum Beispiel Buttonbeschriftungen, Titel von Fenstern, Menüs oder Tooltip Texte.

Aufbau der Übersetzungsdatei


<?xml version="1.0" encoding="UTF-8"?>
<language id="DE">
<loctext id="MENU_HEADING">
<text>Navigation</text>
</loctext>
<loctext id="MENU_SETTINGS_TEXT">
<text>Einstellungen</text>
</loctext>
</language>

Der Aufbau unserer XML-Datei ist relativ einfach gehalten und zeigt auch, dass es gar nicht so schwer ist, ein System aufzusetzen, das sich um die Lokalisierung von Anwendungen et cetera kümmert. Mit dem Tag <language id=””> definieren wir die Sprache, die uns diese Datei anbietet, zu sehen im Parameter id=”DE” (für deutsch). Diese Datei können wir nun als de.xml speichern oder Sie legen sich schon Ihre eigene Sprachdatei an, zum Beispiel eine Französische.

Über den Tag <loctext id=””> können wir dann später unseren Text aus der Datei auslesen. Die ID für den Text dient uns dazu, später die Texte schnell und einfach auszuwählen. Ein klares Strukturmuster bei der Bezeichnung von vereinfacht die Arbeit immens und ich kann Ihnen nur wärmstens empfehlen, eine bestimmte Struktur zu erarbeiten und zu nutzen. Sie werden sehen, dass es sich lohnt. Ich habe mich in unserem Beispiel für die Aufteilung nach Bereichen der Seite entschieden. MENU sagt also aus, das es sich hier um das Navigationsmenü handelt und Heading, dass es die Überschrift darstellen soll. Wenn wir jetzt also anstatt eines Menütextes einen Tooltip-Hinweis bezeichnen möchten, könnten wir nach dieser Struktur folgenden Code in die XML-Datei schreiben:

<loctext id="TOOLTIP_SERVER_SETTINGS">
<text>Server-Einstellungen</text>
</loctext>

Sie sehen, es ist gar nicht so schwer eine einfache Struktur festzulegen. Für eine Sprachdatei auf Englisch, müssen Sie am Anfang der Sprachdatei einfach nur DE durch EN ersetzen. Die Abkürzungen DE bzw. EN sind natürlich nicht bindend, Sie können auch hier frei entscheiden.

Die PHP-Klasse

Da wir jetzt schon eine Struktur für unsere XML-Datei haben, können wir uns daran machen, eine Klasse in PHP zu schreiben, die unsere Datei einliest und auf Kommando den richtigen Text ausspuckt. Hier erstmal der komplette PHP-Code, diesen speichern wir einfach als translation.class.php ab:

class SimpleTranslation {
var $xml;
function loadTranslationFile($file) {
if(is_file($file)) {
if($this->xml = simplexml_load_file($file)) {
return true;
}
} else {
echo "Die Datei konnte nicht geladen werden!";
break;
}
}
function printText($lang,$txt_id) {
if($this->xml != "") {
$path = "/language[@id=\"$lang\"]/loctext[@id=\"$txt_id\"]";
$res = $this->xml->xpath($path);
echo $res[0]->text;
} else {
echo "Bitte laden Sie zuerst eine Übersetzungsdatei!";
}
}
function loadText($lang,$txt_id) {
if($this->xml != "") {
$path = "/language[@id=\"$lang\"]/loctext[@id=\"$txt_id\"]";
$res = $this->xml->xpath($path);
$translation = $res[0]->text;
} else {
echo "Bitte laden Sie zuerst eine Übersetzungsdatei!";
}
return $translation;
}
function loadLangArray($lang) {
if($this->xml != "") {
$translations = array();
$path = "/language[@id=\"$lang\"]";
$res = $this->xml->xpath($path);
} else {
echo "Bitte laden Sie zuerst eine Übersetzungsdatei!";
}
return $res;
}
}

Die Klasse im Detail

Auch hier wird wieder sichtbar, dass es mehr als nur einfach ist, seine Anwendung auf mehrere Sprachen vorzubereiten. Wir wollen uns jetzt die einzelnen Funktionen genauer ansehen, um zu verstehen, wie es funktioniert.


function loadTranslationFile($file) {
if(is_file($file)) {
if($this->xml = simplexml_load_file($file)) {
return true;
} else {
echo "Die XML-Datei konnte nicht geöffnet werden";
break;
}
} else {
echo "Die Datei konnte nicht geladen werden!";
break;
}
}

Die Funktion SimpleTranslation::loadTranslationFile() dient uns dazu, den Inhalt unserer Übersetzungsdatei in ein SimpleXML-Objekt zu laden, das wir dann verarbeiten können.
Über $this->xml = simplexml_load_file($file) laden wir den Inhalt der in $file übergebenen XML-Datei in die Klassen-Variable $xml. Sollte der Fall eintreten, dass die XML-Datei nicht geöffnet werden konnte, wird eine entsprechende Fehlermeldung ausgegeben.


function printText($lang,$txt_id) {
if($this->xml != "") {
$path = "/language[@id=\"$lang\"]/loctext[@id=\"$txt_id\"]";
$res = $this->xml->xpath($path);
echo $res[0]->text;
} else {
echo "Bitte laden Sie zuerst eine Übersetzungsdatei!";
}
}

Mit der Funktion SimpleTranslation::printText() kommen wir zur fast wichtigsten Funktion der ganzen Klasse – dem Ausgeben eines Textes. Wird die Funktion aufgerufen prüft sie zuerst ob $this->xml nicht leer ist und fährt nur fort wenn dem so ist. Sollte die Variable $this->xml leer sein wird eine Fehlermeldung ausgegeben. Alternativ dazu können Sie auch darüber nachdenken automatisch eine Standard-Datei zu laden, nur für den Fall der Fälle.

Die Parameter, die an diese Funktion übergeben werden müssen, sind die Sprache und der auszugebende Text. Über die xpath-Funktion des SimpleXML-Objektes lesen wir dann nur genau den in $path definierten Bereich unserer XML-Datei aus und geben ihn über echo $res[0]->text aus. Somit ist sichergestellt, dass wir auch genau die Übersetzung ausgeben, die wir haben möchten. Sollte der in $txt_id definierte Text nicht vorhanden sein, wird nichts ausgegeben.

Über die Funktion SimpleTranslation::loadText() haben wir zusätzlich noch die Möglichkeit, einen bestimmten Text in eine Variable zu laden und dann gesondert per echo auszugeben. Darauf müssen Sie zum Beispiel zurückgreifen, wenn Sie eine Übersetzung für einen Linktitel verwenden möchten.

Auf die Funktion SimpleTranslation::loadLangArray() gehe ich hier nicht genauer ein, da sie im Grunde dasselbe tut, wie die printText Funktion, mit dem Unterschied, dass alle Übersetzungstexte einer Sprache in einen Array eingelesen werden. Wichtig ist immer, das der Wert des Parameters $lang, bei der printText sowie bei der loadLangArray() Funktion genau der ID, der in der geladenen XML-Datei definierten Sprache gleicht.

Nutzung der Klasse

Die Nutzung des Systems ist genauso einfach wie der Aufbau. Bevor wir den Code richtig verwenden können, müssen wir noch rausbekommen, welche Sprache unser Benutzer denn bevorzugt. Möglichkeit 1 in PHP wäre die Sprache, die im Browser eingestellt sind, über $_SERVER[’HTTP_ACCEPT_LANGUAGE’] abzufragen oder wir lassen den Benutzer per simplen Dropdown-Menü auswählen, welche Sprache er bevorzugt. Tutorials hierzu finden sich im Netz zuhauf, weshalb ich hier nicht näher darauf eingehe. Hier also ein kleiner Beispielcode:
<?php
// Die Klasse einbinden
include 'translation.class.php';
// Neue Instanz der Klasse erstellen
$lang = new SimpleTranslation();
// Übersetzungsdatei laden
$lang->loadTranslationFile("de.xml");
// Übersetzung ausgeben
$lang->printText("DE","MENU_HEADING");
?>

Alternativ kann hier auch eine kleine Demonstration angerufen werden.

Abschluss

Ich hoffe dieser Artikel hat Ihnen veranschaulicht, wie einfach man eine Anwendung mehrsprachig aufbauen kann und das mit relativ wenig Programmieraufwand. Durch die Nutzung des XML-Formats haben Sie auch die Möglichkeit, dieselbe Anwendung, die zum Beispiel in .Net geschrieben ist, mit ein und derselben XML-Datei mehrsprachig zu machen und damit fit für den internationalen Einsatz.

Wie im Teil „Warum XML?“ schon angemerkt, ist es uns nach momentanem Stand der Dinge nicht möglich, Platzhalter einzusetzen, die später einen bestimmten Wert repräsentieren. Als Beispiel könnte der Text „Ihre Suche lieferte %s Resultate“, wobei %s später durch die Anzahl der Such-Resultate ersetzt werden wird. Das lässt sich jedoch relativ einfach nachrüsten.

Meiner Einschätzung nach sollte dieses System aber nicht dazu genutzt werden, um zum Beispiel Blogs oder komplette Webseiten auf Inhaltsebene zu lokalisieren, dafür ist es eher nicht geeignet. Das Kern-Einsatzgebiet sehe ich eher bei der Lokalisierung von Benutzeroberflächen, wie zum Beispiel die eines Editors, eines CMS-Backends oder eines Flash-Spiels.

Natürlich ist das Ganze noch ausbau- und optimierungsfähig. So könnten Sie beim ausgeben der Texte gleich HTML und CSS-Definitionen übergeben oder Übersetzungen mit einem Link versehen. Probieren Sie einfach ein wenig und ich freue mich natürlich über jedes Feedback von Ihnen und wünsche Ihnen viel Spaß beim ausprobieren und basteln. ™

Sortiert nach:   neueste | älteste | beste Bewertung
Johann Hartmann
Gast

Wer seinem Übersetzer eine Freude machen will, nutzt XML-Formate wie XLIFF oder TMX, die von CAT-(Computer aided Translation) Tools gesprochen werden. Das wird inzwischen auch von verschiedenen PHP-Bibliotheken, wie zB dem Zend Framework angeboten – und ermöglicht dem Übersetzer durch Translation-Memory bzw. Terminologiedatenbanken eine deutliche Arbeitserleichterung.

Liebe Grüße
Johann

Rene Schmidt
Gast
Der Vorteil von Gettext ist, dass am Ende des Übersetzungsprozesses “maschinenlesbare” Objekte mit den Texten herauskommen. Die müssen im Fall von PHP nicht bei jedem Request neu geparst werden, wie das mit XML der Fall ist. IMHO ist das um viele Faktoren performanter als eine Lösung mit XML, egal, wie sehr die Arbeit der Übersetzer nun dadurch erleichtert wird. Das ist im Web-Bereich (Flash ausgenommen) völlig zweitrangig, da meiner Meinung nach hier im Vordergrund stehen sollte, dass das System auch leistungsfähig ist. Man stelle sich nur mal eine Website vor mit einer Million Pageviews pro Stunde – das XML müsste… Read more »
Martin Holzhauer
Gast
Der Artikel liest sich eigentlich recht gut. Nur die Anmerkung den gesamten Server zu rebooten nur wegen Gettext Änderungen ist wohl mehr als übertrieben. Ein Reload der HTTP Serversoftware würde auch mehr als genug sein. Meinen Vorkommentatoren muss ich auch recht geben. Bei Übersetzungen sollte man sich wirklich an die Standards der Branche halten. Nicht nur bei großen Projekten, denn für jeden Standard gibt es auch fertige (Opensource/Freeware) Tools die einem die Arbeit des Übersetzens um einiges erleichtern. Das Problem mit Gettext und Flash kann man ja entweder mit einem PHP Skript das aus Gettext XML generiert oder halt mit… Read more »
Hendrik
Gast

Wir nutzen die PHP-Klassen von i18n (http://php-flp.sourceforge.net/getting_started_deutsch.htm).
Als Datenquelle haben wir uns für txt-Dateien entschieden, um den Overhead, den XML mitbringt zu vermeiden..

Besten Gruß aus Köln

Hendrik

Rene Schmidt
Gast
Bei Änderungen an einer Gettext-Datei (.po) muss die .mo-Datei neu erzeugt werden (das ist neben der automatischen oder manuellen Synchronisierung der .pot und .po-Dateien das Nervige an Gettext). Ein Server muss nicht neu gestartet werden, weil im Fall von PHP die .mo-Datei bei jedem Request eingelesen wird. Und hier haben wir den großen Vorteil von Gettext: Es muss nichts geparst werden. Kann aber schon sein, dass eine Lösung auf XML-Basis in einigen Fällen Vorteile bietet. Hochfrequentierte Websites und Webserver (gilt also auch für Shared Hosting) erfordern aber performante Lösungen. @Hendrik: Wenn es um Leistung geht: Die i18n-Klassen unterstützen angeblich auch… Read more »
Jan Iex
Gast

An für sich gefällt mir die Idee XML zu verwenden gut. Aber was ich hier in den Kommentaren so lese, gefällt mir nicht so gut – also die Sache das XML nicht so die Performanz hat. Ich stehe selber gerade vor der Entscheidung, welche Möglichkeit ich einsetze um ein Script in mehren sprachen anzubieten. Was würdet ihr empfehlen? Ich hatte vor Smarty als Template Engine einzusetzen.

trackback

[…] vorhin einen interessanten Artikel auf drweb.de gelesen. Björn Kaiser beschreibt in seinem Beitrag PHP: Lokalisierung auf Basis von XML wie und warum er eine solche internationale Umsetzung eines Webprojekts lieber auf Basis der […]

Rene Schmidt
Gast

@Jan Iex: Hängt von der Größe des Projekts ab, ob es in “großem Rahmen” eingesetzt werden soll, ob es frei verfügbar ist und deshalb andere Übersetzer mitarbeiten können sollen. Wenn das der Fall ist, auf jeden Fall einen Standard verwenden, z.B. Gettext. In kleinen Projekten (und bei solchen, die nicht frei verfügbar sind) kann man auch Gettext nehmen, oft lohnt sich aber der Aufwand nicht. Dann geht auch was selbst Gebasteltes wie diese XML-Lösung, oder ein einfaches Array-Mapping. Gibt aber sicher auch andere Meinungen dazu. Alles *IMHO* :)

Turicon
Gast
Zitat: “Man stelle sich nur mal eine Website vor mit einer Million Pageviews pro Stunde … ” Hallo da oben, kannst Du Dir vorstellen, dass manche international tätige Firma mit Webpräsenz nur ein paar hundert Pageviews pro Stunde hat (und damit gut lebt!)? Mann oh Mann, die Seiten mit Millionen Pageviews pro Stunde sind doch nur ein Bruchteil von dem, was Online und International tätig ist. Dass diese Firmen anders kalkulieren und agieren ist ja klar. Für kleinere und mittelständige Firmen-Websites ist das vorgestellte System durchaus eine gute Alternative und lässt sich sogar recht einfach in “hauseigene” CMS integrieren. Ich… Read more »
Marotzke
Gast

Also ich finde die Variante ganz hübsch; ich denke, ich werde sie auf kleinen privaten Websites auch in Zukunft einsetzen (bisher hatte ich vor, den Text in mehrdimensionale PHP-Arrays, ähnlich wie in manchen CMS zu schreiben). Mal schauen, wie flexibel und schnell das Ganze ist, wenn es an längere Textabschnitte mit mehreren Formatierungen geht.

sili
Gast

XML würde ich für eine mehrsprachige Webseite aus Performance-Gründen ebenfalls nicht verwenden. Meine Wahl ist eine mithilfe einer Datenbank gepflegte Übersetzungstabelle. Über ein Skript können daraus jegliche Dateiformate generiert werden. Zum Beispiel soetwas:

<?php $v[‘text1′]=’text1’; $v[‘text2′]=’text2’; ?>

So eine Datei kann dann für jede Sprache generiert werden. Das ganze ist durch die Datenbank aber einfach zu übersetzen und zu pflegen. Ausserdem kann später ganz einfach eine andere Übersetzungsdatei erstellt werden.

trackback

[…] geworden durch eine gute Aufarbeitung dieser Thematik bei DrWeb: Lokalisierung auf Basis von XML sowie der Erwähnung hier, möchte ich gerne darauf hinweisen, das tolingo auch XML Dateien […]

Daniel Zielinski
Gast
Vielleicht sollte man hier zwischen Format/Art der Bereitstellung von lokalisierten Strings innerhalb einer Anwendung und dem Format für die Übersetzung unterscheiden, also zwischen Performance und Übersetzbarkeit. Ich kann mit meiner Erfahrung aus der Übersetzungs- und Lokalisierungsbranche nur sagen, dass sich Formate wie .po & .php-Dateien etc. nicht wirklich für die Arbeit mit Übersetzungstools eignen, da es keine Standardparser für diese Textformate gibt. XML können Übersetzungstools einfacher handlen. Als Beispiel sei hier der Ansatz des CMS TYPO3 genannt, das Inhalte in Datenbanken speichert, aber für die Übersetzungsworkflows XML verwendet (Stichwort: Localization Manager l10nmgr). Als Tipp für Entwickler kann ich nur sagen,… Read more »
trackback

[…] PHP: Lokalisierung auf Basis von XML […]

Flominator
Gast

Danke für diese schöne Zusammenfassung. Falls man ein Open-Source-Projekt mit XML lokalisiert empfehle ich die Nutzung von http://www.translatewiki.net

Grüße aus dem kalten Schwarzwald,
Flo

Torsten Funk
Gast

guten morgen zusammen,

ich nutze derzeit einfach separate php-dateien mit variabeln. zb gibts die datei deutsch.php in welcher die variabeln so aufgelistet werden:

$L_January = “Januar”;
$L_February = “Februar”;
$L_March = “März”;
$L_April = “April”;

jede sprachdatei enthält derzeit über 500 variabeln. im eigentlichen script habe ich dann eine funktion, die die benötigte sprache ermittelt und dann die richtige sprachdatei includiert. im quellcode habe ich so sehr lesbare variablen für fast alle strings. performance-einschränkungen spüre ich bisher keine.

würde ich obigen xml-vorschlag umsetzen, würden meine sprach-dateien aufgrund der xml-tags unnötig groß werden.

schönen wochenstart,
torsten

Silvan Troxler
Gast

Torsten Funk: Deine Methode ohne ein Datenbank zu führen ist langfristig eine schlechte Idee. Neue Strings oder eine neue Sprache einzuführen ist abgesehen vom eigentlichen Übersetzungsaufwand wirklich mühsam. Auch hast du kein geeignetes Datenformat, dass du an Übersetzungsbüros weitergeben kannst. Du solltest wennschon mit einer Datenbank arbeiten, wie es Kommentar 10 erläutert.

Frank
Gast

Ich finde die Idee für kleine Projekte recht gut. Ich werde sie umsetzen.
Aber was muss ich ändern, wenn ich auch Umlaute und html Tags übertragen will?

Danke für Hinweise,
Frank

Björn Kaiser
Gast

@Frank:
Für Umlaute solltest du als Kodierung ISO-8859-1 verwenden und HTML Tags kannst du z.B. mit HTML-Entities darstellen für “<” z.B. <.

Alternativ “sperrst” du deinen HTML Code in sowas ein <![CDATA[]]>

Siehe z.B. hier: http://www.tutorials.de/forum/xml/178082-html-tags-xml-ignorieren.html

Gruß Björn

Roman
Gast

Hey,

ich bin gerad über die Seite gestolpert.
Ich würde gern auch die gettext Variante in Verbindung mit AS3 versuchen und hatte schon die gettext Variante von sepiroth gefunden (http://www.sephiroth.it/phpwiki/index.php?title=Gettext_actionscript3).

Ich hätte noch eine zusätzliche Frage:
Gettext is ja eher dazu da, den z.B. englischen Text hart in den Quellcode zu hacken und dann später übersetzen zu lassen.
Wenn ich meine Texte aber in externen XMLs vorliegen habe. Wie ist denn dann der Workflow?

Da gibt es doch bestimmt übliche Vorgehensweisen oder?

danke und Gruß
Roman

Michael
Gast
Ich beschäftige mich auch gerade mit diesem Thema für ein größeres Projekt. Für mich kommt auch nur gettext, respektive also die .po bzw. .mo Dateien in Frage. Das Problem das sich hier aber stellt – ist die Implementation eines Translation Servers. Es gibt zwar gute Offline Editoren für po Dateien, aber ich würde gerne eine eigene Website für die Community (meines geplanten Projektes) anbieten, wo die Sprachen online verwaltet und übersetzt werden können. Hier einen passenden Server zu finden ist schwierig. Bisher habe ich nur einen Drupal i10n Server finden können – aber das ist halt für Drupal gebaut. Hat… Read more »
wpDiscuz