Übersetzungen in PrestaShop-Modulen: Domains, Kataloge und typische Fehler
Wenn Ihr Modul in einem spanischen Shop auf Englisch erscheint, ist fast immer eine falsch geschriebene Domain oder ein Cache schuld. Wir erklären, wie das Übersetzungssystem von PrestaShop funktioniert.
PrestaShop hat zwei Übersetzungssysteme, die nebeneinander bestehen: das alte ($this->l() und PHP-Dateien in translations/) und das neue, das auf Symfony-Domains basiert. Für ein neues Modul verwenden Sie das neue.
Das neue System aktivieren
public function isUsingNewTranslationSystem()
{
return true;
}
Domains
Jeder Text gehört zu einer Domain der Form Modules.Nombremodulo.Zona, wobei der Modulname mit großem Anfangsbuchstaben und sonst klein geschrieben wird:
Modules.Mimodulo.Adminfür das Backoffice.Modules.Mimodulo.Shopfür das Frontend.
// PHP
$this->trans('Bestellung versandt', [], 'Modules.Mimodulo.Shop');
{* Smarty *}
{l s='Bestellung versandt' d='Modules.Mimodulo.Shop'}
{# Twig #}
{{ 'Bestellung versandt'|trans({}, 'Modules.Mimodulo.Admin') }}
Warum eine Übersetzung nicht erscheint
- Falsch geschriebene Domain.
Modules.MiModulo.Shopist nicht dasselbe wieModules.Mimodulo.Shop. - Der Quelltext hat sich geändert. Die Übersetzung wird über den exakten Text gesucht; ein Leerzeichen oder Komma Unterschied, und sie passt nicht mehr.
- Cache. Übersetzungen werden gecacht; leeren Sie nach dem Import den Cache.
- Das Theme hat eine eigene Kopie des Templates. Wenn das Theme das Template des Moduls überschreibt, wird die Übersetzung diesem Theme zugeordnet gesucht. Speichern Sie die Übersetzung auch für das aktive Theme.
Parameter und Plural
$this->trans('Sie haben %count% Produkte', ['%count%' => $n], 'Modules.Mimodulo.Shop');
Verwenden Sie benannte Platzhalter und verketten Sie nie Sätze: Die Wortreihenfolge ändert sich von Sprache zu Sprache.
Übersetzungen ausliefern
Exportieren Sie die Kataloge unter International > Übersetzungen und legen Sie sie dem ZIP des Moduls bei, damit es in einem neuen Shop von Anfang an übersetzt erscheint. Und prüfen Sie das Modul vor der Veröffentlichung immer mit dem Shop in mindestens zwei Sprachen.