Schon sehr lange wollte ich eine Extension schreiben, mit welcher sich URLs übersetzen lassen. Irgendwie sieht es ja nicht besonders schön aus, wenn in der URL eines Deutschen Shops z.B. „customer/account/register“ steht, oder?
Dies alles ist nun umgesetzt. Und das beste: Man kann die URLs im Backend selbst pflegen. Das ganze ist dabei total generisch – man kann also wirklich alles übersetzen. Die alten URLs funktionieren dabei aber immer noch genauso.
Die Erweiterung habe ich auf GitHub gestellt.
Generell funktioniert das Ganze so:
- Es wird ein weiterer Router hinzugefügt, welcher vom Standard-Router erbt
- Bevor im match die URL geparst wird, wird diese zerlegt, übersetzt und ausgetauscht
- Damit auch sonst im Shop überall übersetzte Adressen stehen, wurde das URL-Model überschrieben
- Hier werden die URLs dann entsprechend modifiziert
- Damit alles schneller geht, wird der Magento-Cache genutzt
- Zur Sicherheit werden nur URLs übersetzt, welche kein „.html“ enthalten (andernfalls könnte es Probleme mit dem rewrite geben)
- Das Ganze funktioniert sogar für CMS-Seiten, da der Request im Router manipuliert wird
- Man kann für jeden Store eine andere Übersetzung speichern
In Zukunft sind noch ein paar Punkte vorgesehen:
- Einfacher URLs übersetzen können (eventuell, wenn die Inline-Übersetzung aktiviert wurde?)
- Es ist schon vorbereitet, dass man im Backend Vorschläge bekommt, was alles übersetzt werden kann
- Basis-Übersetzungen für Deutschland
- Fallback auf CSV (momentan nur Datenbank)
- Für mehrere Stores eine Übersetzung speichern
- Übersetzungen aneinander binden – aktuell kann z.B. nur die Action „index“ übersetzt werden, in welchem Kontext ist dabei dann egal.
- Dokumentation
Für Kritik, Anregungen und Wünsche bin ich natürlich immer offen.