Zweisprachige Website "on the fly"

In der letzten Woche habe ich unsere bisher deutschsprachige Firmenwebsite www.partmaster.de um eine englische Version ergänzt. Tatkräftige Unterstützung erhielt ich dabei von Kristina Koebe von www.sprachservice.de, die die eigentliche Übersetzung der Inhalte vornahm. Danke dafür!

Die technische Realisierung erfolgte dann dank Drupal und dem i18n.module in  atemberaubender Geschwindigkeit. Für die 55 Seiten, 14 Views, 3 Menüs und 4 Vokabulare benötigte ich gerade mal 40 Stunden. Dabei ging natürlich die meiste Zeit auf die (ziemlich monotone) Erfassung der übersetzen Artikel drauf.

Anmerkung im Voraus: Bei der Erstellung der ursprünglischen,  deutschsprachigen Website wurden schon bei allen Beiträgen ein URL-Alias mit "de/" als Präfix erzeugt. Nun werden die englischsprachigen Versionen mit dem Präfix "en/" und sonst identischem URl-Alias erzeugt.

Ansonsten war es ein relativ einfacher Ablauf:

  1. Mit Hilfe einer View wurden alle Beiträge der Website exportiert, in ein Word-Dokument eingefügt und zum Übersetzen gegeben.
  2. Dann wurde das i18n.module installiert und alle "nicht-experimentellen" Module aktiviert.
  3. Als nächstes habe ich alle Menüeinträge zu Beiträgen geändert, so dass sie nicht mehr auf den Node, sondern aauf den URL-Alias ohne den Sprachpräfix verweisen, z.B. von node/123 auf company/about. Außerdem habe ich die deutschen Menübeschriftungen durch englische Beschriftungen ersetzt, diese werden dann automatisch übersetzt.
  4. Bei Taxonomy-Terms, sich in deutsch und englisch unterscheiden und somit die übersetzt werden müssen (z.B. Unternehmen und Company), wurden diese als German gekennzeichnet, eine englische Übersetzung erstellt. Dann wurden diese Terms noch gegenseitig als Übersetzung gekennzeichnet.
    Alle anderen Terms (meist Software-Technologien etc.) wurden sprachunabhängig belassen.
  5. Es wurde der Translation-Block zum Umschalten zwischen den Sprachversionen einer Seite in das Seitenlayout aufgenommen.
  6. In allen relevanten Views wurde ein Filter Internationalization: selection eingefügt und auf den Wert Only current language and no language gesetzt. So können die View ohne weitere Modifikation für alle Sprachen weiter verwendet werden und zeigen nur die Einträge in der jeweiligen Sprache an. Der ggf. definierte URL-Präfix "de/" wurde in allen Views entfernt.
  7. Der nächste Schritt war in der Datenbank (phpmyadmin) leichter zu erledigen als mit Drupal-Mitteln: In der Tabelle {i18n_nodes} wurden Einträge für alle vorhandenen Beiträge (Nodes) nach folgendem Muster generiert:
    INSERT INTO `i18n_node` (`nid`, `trid`, `language`, `status`)<br />VALUES (50, 16, 'de', 1);

    So wurden diese Beiträge als deutsche Originalbeiträge (language=‘de’, status=1) markiert. Alternativ müsste man jeden Beitrag in Drupal  editieren und diese Werte im Formular setzen.

  8. Nun wurden alle englischen Beiträge erfasst. Nach dem Speichern des Beitrags wurden die deutsche und englische Version des Beitrags im Tab Translation (neben View und Edit im Formularkopf) einander zugeordnet.
  9. Im Theme (selbstgebaut) wurden einige Textausgaben (in page.tpl.php, node.tpl.php und block.tpl.php)  in die Übersetzungsfunktion t(’...’) gekapselt
  10. Abschließend waren noch die zahlreichen fehlenden deutschsprachigen Vokabeln für die Menüeinträge im Abschitt Localization zu ergänzen, so dass das Menü sauber zwischen den Sprachen umschaltet.

Insgesamt eine Menge Fleißarbeit (insbesondere die ~30 Stunden zum Erfassen der Beiträge). Rückblickend finde ich Drupal+i18n eine sehr elegante, schnelle und konsequente Möglichkeit, eine mehrsprachige Website aufzusetzen. Witwere Sprachversionen sollten sich nun noch schneller und einfacher einbauen lassen. Das i18n-Framework skaliert super.

Erstaunlicherweise arbeiteten alle Module ohne Code-Modifikation mit i18n. Mit einer Ausnahme: simarterms.module. Dafür steht jedoch in der Issue queue des Moduls schon ein Patch bereit, der auch prompt (nach dem Einspielen) funktionierte.

Super Post. Ich hätte da noch zwei Fragen:
1. Ich hatte einmal ein wenig mit einer zweisprachigen Seite gewerkelt. Da war jedoch das Problem, dass wenn man von einer Sprache auf die andere wechselte, dass man auf dem gleichen Node sitzen blieb -> sprich, die Sprache des Inhalts blieb in der alten Sprache, da man nachwievor auf node/xxx blieb.

  1. “Dann wurden diese Terms noch gegenseitig als Übersetzung gekennzeichnet.” Wie machst du das?

Danke.

Interessante Fragen! (Weil es mich auch ein wenig Zeit gekostet hat, dies rauszufinden ;)

Zu 1.: Die i18N-Module bringen zwei "Language Switcher"-Blöcke mit, der eine heißt ebenso, der andere heißt "Translations" bzw. "Übersetzungen" und ist aus dem translations.module. Der arbeitet kontext-sensitiv und generiert korrekte Links auf die zugeordnete Seite in der anderen Sprache. Wenn das Modul aktiviert ist und man zwei Beiträge als "Translation" zueinander definiert hat, dann klappt das Umschalten und die Anzeige wechselt von node/123 auf node/124 (Beispiel ;)). Außerdem bietet das translations.module an, im Fußbereich (im Links-Bereich?) eines Beitrags den Link zur Übersetzung des Beitrags einzufügen. Das kann man auch abschalten.

Zu 2.: Auch mit dem translations.module: Im Adminbereich findest Du in admin/content/taxonomy im Term Listing zu einem Vokabular auch den Tab "Translations". Dort kannst Du jeweils Begriffe aus beiden Sprachen als Übersetzung gegenüberstellen. Zuvor muss man jedoch zwei Begriffe jeweils als Begriff der einen und der anderen Sprache definieren, zum beispiel den Begriff "Sichtung" als "deutsch" und "Review" als "englisch". Im Tab "Translations" werden nur die Terms angezeigt, die als sprachabhängig markiert sind.
Allerdings hatte das Ganze bei mir nur Einfluss auf die Vorschlagswerte beim Freetagging: es wurden nur Werte ohne Sprachkennzeichnung und in der aktuellen Sprache vorgeschlagen. Die Tags wurden beim Umsachalten der Sprache an einem vorhandene Artikel nicht übersetzt :-/

Und noch was: Wenn das mit den Vorschlagswerten beim Tagging klappen soll, dann muss mann unter Umständen zwischendurch auf "Preview node" klicken: wenn man nämlich in der deutschen Sprachumgebung ist und einen engischsprachigen Beitrag erfasst.

D.

Always borrow money from a pessimist; he doesn’t expect to be paid back.

Moin,

endlich mal eine Seite, die sich nicht mit der Übersetzung des Adminbereiches, sondern des Inhaltes auseinander setzt….

... habe aber dennoch Probleme:
Installation: Drupal 6.1 mit i18n 6.x-1.0-beta1 (alle Sub-Module aktiviert)

Ziel: Standard ist Deutsch + die Seiten in Englisch als eher “statische Seiten” also Pages

Stand der Dinge:
Deutsch als Sprache ist geladen und als default aktiviert
/admin/settings/language

ich ging davon aus , dass unter bearbeiten man das “de” bei deutsch rausnehmen und dafür bei Englisch als “en” wieder einsetzen kann, ging aber nicht – Standard blieb bei en und nur mit /de/ waren die Ausgaben deutsch

unter Multilingual Systems ist erster Radiobutton “Only current language and no language” aktiviert

erstelle ich nun Pages, haben diese als Sprache “Deutsch” – die eine Seite, die ich davor erzeugt hat als Sprache “Language neutral” (??)

gehe ich unter /de/admin/content/node auf Bearbeiten einer Page, gibt es nirgens was zum Übersetzten (wie ich vermutet hätte)

unter Blöcke habe ich rechts den “Language switcher” eingefügt – erscheint aber nicht in der Admin-Ansicht??

unter /de/admin/content/taxonomy/edit/vocabulary/1 habe ich den letzten Radiobutton angegeben “Set language to vocabulary. The vocabulary will…” und kann zwischen Deutsch und Englisch wechseln – ich dachte ich könnte in Form einer Gegenüberstellung die 1:1 Übersetzung einfügen…

... irgendwie stehe ich noch aufm Schlauch – zugegeben, bin noch Newbie bei Drupal

Dank vorab!

x-herbert

Vielen Dank für die Beschreibung des Prozesses.
Auch ich habe eine Frage zu den sog. “Language neutral” Beiträgen (deutsch und englisch, deutsch als Original und neutral).

Nach Installation des Moduls habe ich testweise zwei Beiträge übersetzt. Leider besteht keine Möglichkeit, die “neutralen” Beiträge dem deutschen zuzuordnen, d.h auch im Pfad mit “en” Präfix tauchen alle nicht übersetzten Artikel auf. Interessantenweise werden im en-Pfad ALLE html-Seiten mit der Sprache “en” generiert. Abhilfe könnte hier dein “insert into i18n_node …” bringen (Schritt 7 in deiner Liste).

Meine Frage / mein Verständnisproblem liegt bei Schritt 3 deiner Liste.Was muss / kann an den Menüeintzrägen geändert werden? Wenn ich das richtig sehe, dann beinhalten die Menüs / blocks schon den Präfix.