Herausforderung:
Eine bestehende Webseite soll nach mehreren Jahren intensiver redaktioneller Bearbeitung mehrsprachig verfügbar werden. Die Inhalte sollen in zwei Wellen in schlussendlich 18 zusätzlichen Sprachen abrufbar sein.
Neben den im CMS hinterlegten Inhalten muss die URL-Struktur so angepasst werden, dass übersetzte Seiten von außen verlinkt werden können. Die Seitensuche mit ElasticSearch muss die übersetzten Inhalte abbilden.
Aufgrund der hohen Anzahl an Text, der übersetzt werden muss, muss die Kommunikation mit dem Übersetzungsdienst möglichst einfach gestaltet werden. Zudem muss der Fall nur teilübersetzter Inhalte abgedeckt werden.
Umsetzung:
Wir beraten den Kunden in Bezug auf die Erweiterung der URL-Struktur und entscheiden, die Sprache in die Pfad-Komponente der URL mit aufzunehmen (Beispiel: /de/suche
oder /fr/mentions-legales
). Anschließend wird der Text im Projekt in zwei „Töpfe“ verteilt.
Bei Texten, die in der Datenbank vorliegen, wird die übersetzte Version ebenfalls in der DB gespeichert. Texte, die im Quellcode hartgecoded verwendet werden, werden mithilfe von gettext
und sogenannten PO/MO-Dateien verwaltet.
Dabei dienen die PO-Dateien gleichzeitig als einfaches Austauschformat für den Übersetzungsdienstleister. Die Datenbank-Inhalte können mit einfachen Abfragen extrahiert und später wieder importiert werden. Einzelne Übersetzungen kann das Redaktionsteam über die Admin-Oberfläche einspielen oder anpassen.
Der Suchindex der ElasticSearch-Instanz wird erweitert, sodass zu jedem Eintrag auch die Sprache indiziert wird. Dadurch ist es sowohl möglich, nur nach Resultaten in einer Sprache als auch nach Ergebnissen über alle Sprachen hinweg zu suchen.
Für Suchmaschinen werden <link>
-Elemente hinzugefügt, die die Übersetzungen kenntlich machen. Bei noch nicht vollständig übersetzten Texten wird die englische Version automatisch als Fallback ausgeliefert. Für Besucher wird eine barrierefreie und sprachunabhängige Möglichkeit geschaffen, die automatisch detektierte Sprache bei Bedarf zu ändern.
Nach einem erfolgreichen Testlauf auf einer Staging-Instanz erfolgt der Rollout in zwei Phasen: In einem ersten Deployment werden die DB-Strukturen geschaffen und mit den vorhandenen Inhalten befüllt. In einem zweiten Schritt werden dann die für Besucher sichtbare Komponenten ausgeliefert, wodurch ab der ersten Minute eine erfolgreiche Übersetzung abgerufen werden kann.
Eingesetzte Techniken beinhalteten u.a. PostgreSQL, ElasticSearch, Django, gettext und XLIFF.