Plugin-Snippets übersetzen - wie?

Hallo!

Bin zur Zeit an der Entwicklung eines neuen Plugins für Shopware 6. 

In Shopware 5 sollte man bei der Implementierung ja darauf achten, dass man für Texte die Textbausteine verwendet. Diese ließen sich über eine .ini-Datei festlegen und vom Shop-Besitzer im Backend übersetzen.

Für Shopware 6 gibt es ein Tutorial, wie Snippets zu realisieren sind: https://docs.shopware.com/en/shopware-platform-dev-en/getting-started/indepth-guide-bundle/storefront#adding-translations-to-the-storefront

 

Das habe ich für mein Plugin auch so umgesetzt, allerdings fällt mir auf, dass der Shopbesitzer dadurch nicht automatisch in der Lage ist, die in der JSON definierten Übersetzungen im Backend anzupassen. Auf der Seite Einstellungen > Textbausteine werden weiterhin nur die “Basisdateien” angezeigt.

Wird das noch kommen? Oder muss ich hier selbst Hand anlegen und falls dem so ist, wie wäre der richtige Weg dafür?

 

Viele Grüße
Christian

Hallo Christian,

Eigentlich sollte der Guide noch aktuell sein und die Snippets, die via Plugin für die Storefront mitgliefert werden bereits angezeigt werden. Beim schnellen überfliegen fällt mir auch nichts auf, was nicht mehr stimmen sollte. Entsprechend hat sich wohl irgendwo ein Fehler eingeschlichen.

Wichtig ist eben nur, dass das SnippetFile angelegt und in der services.xml registriert ist, sowie dass “isBase” den Wert “false” hat. Dann sollten in der Administration in einem SnippetSet der angegebenen Locale die vom Plugin mitgelieferten Snippets auch registriert sein. Rechts an der Seite im Textbausteinmodul findest du zum Beispiel einen Balken mit Filtern. Dort müsste dann auch der Autorenfilter mit dem von dir angegebenen Autorennamen zu finden sein. Taucht dieser schon auf?

Ich check das selbst nochmal nach, aber eigentlich sollte das alles laufen. Poste ansonsten doch mal deine Implementierung der Snippets. Vielleicht finde ich ja schnell was. :slight_smile:

Liebe Grüße aus Schöppingen,
Marcel Brode

Hallo Marcel,

vielen Dank für Deine schnelle Antwort! Tatsächlich tauchen die Snippets auf. Ich ging davon aus, dass ein neuer Eintrag angelegt wird, nicht dass die Snippets in den BASE Einträgen hinzugefügt werden. So funktioniert es allerdings super 

Vielleicht kannst Du mir noch einen Tipp geben, wie ich die Snippets backendseitig übersetzen kann. Ich habe gesehen, dass das Twig-Plugin den trans-Filter lediglich auf die gettext-Funktion mapped. Das Aufrufen von gettext(snippetKey) im Backend returned allerdings lediglich wieder den Key, keine Übersetzung.

Das ist vielleicht nicht klar genug in der Doku. Das müssen wir wohl nochmal nachbessern.

Ein SnippetSet ist in dem Sinne eigentlich nicht als eine einzelne Datei zu verstehen, sondern mehr ein Patch der Datenbank. Die Base SnippetSets sind dabei einfach die Sets, wo beim Auslieferungszustand keine Datenbankänderungen passiert sind.

Generell werden Systemseitig immer die Base-Files ausgelesen, dann alle weiter vorhandenen SnippetFiles draufgemerged, wodurch man eben einen vollen Stand von Snippets aus Datein bekommt. Dann kommen die änderungen aus dem Admin, also die tatsächlichen SnippetSets zu tragen und patchen diesen Stand nochmal. Muss vielleicht noch etwas klarer in die Doku :slight_smile:

 

Mit Backendseitig meinst du Snippets für die Administration selbst? Die sind gänzlich von denen aus der Storefront/vom Core abgetrennt, da wir hier nicht mehr auf der Ebene sind, die ein Shopbetreiber (ohne Programmierkenntnisse) selbst pflegen wird, sondern hier nur der Programmierer von Shopware/von Shopware-Plugins anrühren wird. Entsprechend ist es auch nicht von uns angedacht dafür ein Modul bereitszustellen o.Ä.

Im Admin rufst du die Keys mit this.$tc(key, count, params); auf. Dazu kann ich dir diesen Beitrag empfehlen: https://docs.shopware.com/en/shopware-platform-dev-en/how-to/adding-snippets?category=shopware-platform-dev-en/how-to

Wobei ich gerade sehe, dass der Punkt für eine gänzlich neue Sprache noch etwas veraltet ist. Da werde ich mich mal dransetzen. Hilft dir das soweit?

Liebe Grüße aus Schöppingen,
Marcel Brode

Hallo Marcel,

danke für Deien Hilfe. Ich hatte mich unklar ausgedrückt, ich meinte mit backendseitig einfach den PHP-Code meines Plugins. Habe mittlerweile gefunden, dass man den Service mit der ID „translator“ injected kann, dessen trans() Methode genau das tut, was ich möchte.

Vielen Dank. Was ich bisher in Shopware 6 gesehen habe, gefällt mir wirklich gut. Die Dokumentation ist zwar ausbaufähig, aber vieles lernt man schon allein durch den Blick in den Code Thumb-Up

Hey Christian,

Ah, okay. Der alte Backend-Begriff ist auch intern noch immer hart mit dem Verknüpft, was in SW6 nun die Administration ist. Das machts nicht so einfach das immer vernünftig auseinanderzuhalten. Aber es freut mich, dass du dich schon zurechtgefunden hast. Wenn du dennoch noch was hast, weißt du ja, wo du richtig bist :smiley:

Das mit der Doku ist uns bewusst und das ärgert uns auch noch. Da hoffe ich einfach mal, dass das besser wird mit der Zeit. Ansonsten freut mich, dass SW6 gut bei dir ankommt  Thumb-Up 

Liebe Grüße aus Schöppingen,
Marcel Brode