abstract business code coder
TYPO3 Blog

TYPO3 Extension translatelabels 

Mit dieser Extension können Redakteure Labels im Frontend in Verbindung mit dem Adminpanel selbst übersetzen.

Frisch released haben wir die Extension sitegeist/translatelabels auf github.

Auch Formulare, die mit dem Formulareditor mit dem Form Framework von TYPO3 erstellt wurden, lassen sich so vollständig übersetzen. Angefangen von den Labels über Placeholder, Descriptions, Fehlermeldungen usw.

Mit aktiviertem „Translate Labels“-Modul im Adminpanel werden Labels unterstrichen. Bei Mouseover erscheint ein Tooltip und zeigt den Namen des Labels an. Klickt man auf den Namen des Labels, so öffnet sich eine Tabelle im Admin-Panel und darin ist das gewählte Label hervorgehoben und man kann dort direkt inline die Übersetzung editieren.

Erweitertes Frontend mit unterstrichenen Labels und Tooltips, die den Namen des Labels anzeigen

 

Das Adminpanel wurde erweitert um ein Modul, in dem alle Labels, die auf der aktuellen Seite enthalten sind, tabellarisch angezeigt werden:

Anzeige der Labels im neuen Modul „Translate Labels“ im Admin Panel

 

Die Übersetzungen lassen sich in dieser tabellarischen Ansicht direkt inline editieren. Man braucht nur auf den Text der Label zu klicken und die Übersetzung zu schreiben.

Wer es lieber „klassisch“ mag, benutzt die Edit-Buttons rechts und kommt in einem neuen Browser-Tab direkt zur Bearbeitungsmaske des Übersetzungsdatensatzes im TYPO3 Backend.

Entwickler fragen sich oft: Wo kommt dieser Text her. Schnell werden alle Dateien des Projekts durchsucht und wenn man nicht fündig wurde, dann vermutet man, dass das Label wohl doch im redaktionellen Content versteckt ist.

Oder doch nicht? Ist es vielleicht doch in einer Sprachdatei? Und wurde die Datei vielleicht durch eine Extension überladen? Oder noch schlimmer, von mehreren Extensions? Welche gewinnt denn? Oder wurde das Label mit Typoscript gesetzt?

Auf diese Fragen bietet das zweite Tab „Language Files“ eine Antwort:

Tab „Language Files“ des Translation-Moduls im Admin-Panel

 

In dieser Tabelle sieht man in der Spalte „Overrides“ sämtliche Quellen und deren Überladungen, wobei die letzte jeweils die höchste Priorität hat und damit für die auf der Seite angezeigte Übersetzung zuständig ist.

Für Entwickler also eine echte Arbeitserleichterung: Einfach nachschauen und sofort auf direktem Wege die Übersetzung in der richtigen Sprachdatei anpassen.

Unter der Haube arbeitet die Extension mit Translation-Datensätzen, die innerhalb eines Sysfolders im Backend angelegt werden. Diese können auch ganz normal direkt im Backend gepflegt werden.

Die translate-Viewhelper werden überladen und schauen auch in der Datenbank nach. Wenn es einen Datensatz mit passendem Key gibt, so wird die Übersetzung aus diesem Datensatz verwendet.

Das Form-Framework verwendet eigene Viewhelper für Übersetzungen. Auch für diese bietet die Extension eine überladene Version.

Last but not least lassen sich auch alte pi_base Plugins damit übersetzen. Da diese allerdings in der Regel kein Fluid nutzen, müssen diese per xclass überladen werden. Die Extension enthält ein Beispiel für das felogin-Plugin, das in der aktuellen Version 9.5.9 leider noch nicht auf fluid umgestellt wurde. Dieses Beispiel kann als Vorlage für alle anderen pi_base Plugins verwendet werden.

Wir haben die Extension entwickelt, um bei Projekten mit sehr vielen Sprachen und Plugins die Zusammenarbeit zwischen Kunde, Übersetzungsbüro und Agentur zu beschleunigen. Vor der Extension gab es häufig schöne Excel-Tabellen, Word-Dokumente usw., die im optimalen Fall 80% der benötigten Übersetzungen für einen Bereich der Seite enthielten. Die fehlenden 20% haben dann noch mal 80% an Aufwand und Zeit gekostet…

Nun können unsere Kunden einen Großteil der Übersetzungen schon während der Entwicklungsphase selbst einpflegen oder das von einem Übersetzungsbüro mit einem eigenen Redakteurszugang erledigen lassen.

Für die folgenden Versionen haben wir schon spannende Erweiterungen geplant:

  • Aktuell wird der Text aus der Default-Sprache übernommen, wenn man einen Übersetzungsdatensatz für ein Label neu erstellt. Hier werden wir einen Language Provider bauen, der den Text in der gewünschten Sprache von einem Übersetzungsdienstleister on the fly per API holt, wie z.B. von LanguageWire, Google Translate oder DeepL.
  • Darüber hinaus werden wir einen Mechanismus entwickeln, mit dem man die angelegten Übersetzungen in den Datensätzen automatisch in Sprachdateien überführen kann, so dass man danach die Übersetzungen wieder an Ort und Stelle in Dateien hat und diese mit in die Versionierung aufnehmen kann. Apropos Versionierung: Da die Übersetzungen nun als Datensätze vorliegen, gibt es eine Versionierung der Änderungen im TYPO3 Backend gleich mit dazu.

Aktuell gibt es die Extension sitegeist/translatelabels nur auf github, in den nächsten Tagen werden wir sie auch im TER bereitstellen.

Mit composer ist sie schnell installiert und in der README findet sich alles, was man zur Konfiguration wissen muss.

composer require sitegeist/translatelabels

Wir wünschen euch viel Spaß mit der Extension und freuen uns auf euer Feedback!