Skip to content

Guppy goes global: fünf neue Sprachen ​

digital.manufakturDmfGuppyTheme 2.7.13
  • release
  • snippets

Bisher lieferte Guppy zwei Sprachen aus: de-DE und en-GB. Ab 2.7.13 sind es sieben. Neu dabei sind fr-FR, es-ES, it-IT, pl-PL und nl-NL, jeweils unter src/Resources/snippet/<xx_YY>/guppy.<xx-YY>.json.

Der Hauptkanal ist in aller Regel deutsch, die Kundschaft dahinter oft nicht. Wer neben Deutsch weitere Sprachkanäle ausspielt, bekam für jeden Theme-String bisher eine Sprache untergeschoben, die er nicht gewählt hatte.

Was vorher wirklich passiert ist ​

Die verbreitete Annahme lautet, ein fehlender Key falle auf Deutsch zurück. Das stimmt nicht. Translator::trans() läuft die Fallback-Kette des Katalogs ab, also von fr-FR über die bloße Sprache fr zu den Fallbacks en_GB und en, die Shopware konfiguriert. Deutsch steht in dieser Kette nirgends.

Findet sich der Key in keinem Katalog der Kette, gibt Symfony den Key selbst zurück. Ein französischer Shop hat also entweder englischen Text gesehen oder, wenn der Key auch in en-GB fehlte, den nackten Key im Markup. Beides fällt im Review kaum auf, weil die Seite ansonsten normal aussieht.

Zwei englische Keys, die nie angekommen sind ​

Genau dieser Fall steckte schon länger in en-GB. Zwei Keys hießen dort anders als im Template:

  • usp-banner.* statt uspBanner.*
  • contaktLinkText statt contactLinkText

Beide gab es nur in de-DE, und de-DE steht nicht in der en-GB-Kette. Englische Shops haben deshalb uspBanner.containerAriaLabel und die fünf weiteren USP-Banner-Strings wörtlich ausgeliefert: im aria-label des Banners, in seiner visuell versteckten Überschrift und in den vier Slider-Labels. Auf der Produktseite traf es den Link zum Kontaktformular. Beides ist in 2.7.13 behoben.

Der Parity-Check ​

Fünf zusätzliche Dateien sind billig zu erzeugen und teuer zu pflegen. Jede Snippet-Änderung muss ab jetzt durch sieben Dateien statt durch zwei. Damit das nicht schleichend auseinanderläuft, prüft ein Skript die Key-Parität gegen guppy.de-DE.json:

bash
composer snippet-parity-check

Es meldet fehlende und überzählige Keys, verlorene %platzhalter%, ungültiges JSON und Dateinamen, die Shopware gar nicht erst registriert. VERBOSE=1 listet zusätzlich jeden Key pro Sprache auf. Das Skript braucht nur Node, keine Shopware-Installation und kein composer install.

In der CI läuft dieselbe Prüfung bei jedem Push als Job check:snippets.

Was du wissen solltest ​

Die fünf neuen Übersetzungen sind maschinell erzeugte Erstentwürfe und noch von keinem Muttersprachler gegengelesen. Für die Bedienung reichen sie, für Marketing-Texte im Zweifel nicht. Korrekturen nehmen wir gerne.

de-DE bleibt die Referenz. Wenn du in einem Child-Theme ein Snippet ergänzt, ergänze es in allen sieben Dateien im selben Commit, nicht nur in Deutsch. Der Parity-Check sagt dir sonst beim nächsten Push, welche fehlt.