Entwickelt man für die Shop-Software OXID eShop ein eigenes Modul, benötigt man für Sprach-Variablen im Front- oder Backend eigene Sprachdateien ("Lang Files" oder "Language Files"). Je nachdem wie die Verzeichnis-Struktur im Modul ist, müssen die Sprachdateien jedoch an unterschiedlichen Orten liegen, damit die Shop-Software die Dateien findet.

Hinweis: Wir betrachten hier das Handling für OXID eShop Versionen ab 4.9.0 und höher. Das Language Handling vor dieser Version war nochmals abweichend. Die 4.9.0 wurde aber vor nun über 4 Jahren released und ist damit selbst schon so alt, dass sie nicht mehr produktiv eingesetzt werden sollte.

Sprachdateien für das OXID eShop Frontend

Nehmen wir als Beispiel ein Modul, das im modules-Ordner im Verzeichnis ysquare/ys_module liegt. Benötige ich nun eine Sprachdatei fürs Frontend in der Sprache deutsch, so kann ich diese language Datei unter folgendem Pfad ablegen:

modules/ysquare/ys_module/translations/de/

Benötige ich eine englische Sprachdatei, so würde die Datei nicht im Ordner "de" liegen, sondern in "en" (für englisch) oder das relevante Sprachkürzel bei einer anderen Sprache.

Beispiel für Modul-Sprachdateien ohne Application Ordner (Modul oepaypal)

Habe ich jedoch in meinem Modul einen zusätzlichen Unterordner namens "application" (oder "Application" ab OXID Version 6), so wird die Sprachdatei an der oben genannten Stelle nicht gefunden. Sobald der application Ordner vorhanden ist, muss sich der translations Ordner inkl. Unterordner ebenfalls unterhalb von application befinden.

modules/ysquare/ys_module/application/translations/de/
Beispiel für Modul-Sprachdateien mit Application Ordner (Modul gdproptin)

Sprachdateien für den OXID eShop Admin (Backend)

Falls man Dinge im Admin erweitert oder Einstellungen am Modul pflegbar machen möchte, benötigt man Sprachdateien für den Admin. Auch hier gibt es wie bei den Frontend Sprachdateien Unterschiede, je nachdem ob sich im Modul ein Ordner "application" befindet.

Hat man im eigenen Modul keinen application Ordner, so muss man die Admin Sprachdateien in diesen Ordner ablegen (oder anstatt "de" das relevante Sprach-Kürzel):

modules/ysquare/ys_module/views/admin/de/

Gibt es jedoch den Unterordner "application", so wird in diesem Ordner nach der Sprach-Datei gesucht:

modules/ysquare/ys_module/application/views/admin/de/

Benennung der Sprachdateien

Auch bei den Benennung der Sprachdateien muss man auf bestimmte Konventionen achten. Der OXID eShop sucht in den oben genannten Ordnern nach Dateien, die auf "_lang.php" enden. Wenn die Sprachdatei also "bfa_lang.php" oder "ysquare_lang.php" heißt, würde sie gefunden werden.

Für den Admin-Bereich gibt es noch zusätzlich die Möglichkeit die Datei "module_options.php" zu nennen. Diese Datei ist für die Übersetzung von Moduleinstellungen gedacht. Sie kann aber auch für andere Sprachvariablen im Admin genutzt werden.

Änderung von Sprachdateien

OXID eShop sammelt alle Inhalte der Sprachdateien in einer Cache-Datei (pro Sprache, Theme und Shop-Mandant eine Datei) und speichert diese Cache-Datei im tmp Ordner des Shops. Ändert man den Inhalt einer Sprachdatei, so muss danach der Language Cache geleert werden, da sonst die Änderung nicht sichtbar wird. Der Shop würde weiterhin nur den Inhalt aus der Cache-Datei lesen. Um den Language Cache zu leeren, muss man im tmp-Ordner alle Dateien mit "langcache" im Namen löschen. Beim nächsten Seitenaufruf werden die Cache-Dateien erneut generiert.

Beispiel einer language Cache-Datei

Tip: Eigenem Style treu bleiben

Warum OXID sich entschieden hat, mehrere und in Front- und Backend abweichende Wege zu implementieren bleibt vermutlich ein Geheimnis. Es wird sicher nicht ausbleiben, dass man bei der Arbeit mit Modulen mal mit der einen Variante und mal mit der anderen konfrontiert wird. Erstellt man selber Module, sollte man für sich einen Weg aussuchen und diesem Treu bleiben. Arbeitet man in Teams innerhalb einer Firma, dann macht es sicher Sinn einen Weg als Richtlinie in die Coding Guidelines aufzunehmen, um zu verhindern, dass man selber und die eigenen Kollegen an anders abgelegten Dateien unnötig Zeit vergeuden.