Übersetzungen (Snippets) in Plugins

Hello again.

Im Frontend werden die Bezeichner direkt angesprochen und mit trans erweitert, z.B.

{{ "detail.tabsDescription"|trans }}

Wie ich sehe, kommen diese aus Snippet JSON Dateien.
Ist das auch für Plugins so vorgesehen? Wenn ja - wie soll man hier vorgehen?
Dazu finde ich keine Beispiele und Hinweise in der Dokumentation.

Schöne Grüße!
Niklas

Moin @TeichDatensysteme‍,

das Thema haben wir im Bundle Example einmal angeschnitten. Das ist zwar prinzipiell eine ganze Serie von Tutorials, für dich wichtig ist aber nur der Teil hier:
https://docs.shopware.com/en/shopware-platform-dev-en/getting-started/indepth-guide-bundle/storefront#adding-translations-to-the-storefront

Das ist, wie gesagt, sehr auf das Bundle Example zugeschnitten, aber das dürfte dir eine grobe Idee davon vermitteln, wie das allgemein funktioniert.
Das dazugehörige Plugin findest du hier.

Gruß,
Patrick  Shopware

Danke [@Patrick Stahl](http://forum.shopware.com/profile/1869/Patrick Stahl „Patrick Stahl“)‍ - da habe ich wohl an völlig falschen Stellen geguckt.
Habe den Teil im Plugin Bereich erwartet.

Spiele ich gleich einmal durch - sieht gut aus - Danke!
Niklas

[@Patrick Stahl](http://forum.shopware.com/profile/1869/Patrick Stahl “Patrick Stahl”)‍ Habe ein Problem mit Snippets …

Ich habe zwei eigene Plugins, die sich offensichtlich mit den Übersetzungen in die Quere kommen.

  1. Plugin A ist installiert - Übersetzung wird in der Storefront angezeigt.
  2. Plugin B wird installiert - Übersetzung von Plugin B bleibt aus
  3. Plugin A wird deinstalliert - Übersetzung von Plugin B erscheint.

Habe die Übersetzung so wie in der Doku (und im BundleExample) geschrieben.
Woran kann es liegen? Was soll ich tun?

Kann die beiden kleinen Erweiterungen gerne zusenden.

Schöne Grüße,
Niklas

hier auch - die snippets scheinen nicht importiert zu werden und werden dann entsprechend auch nicht ausgegeben. bug?

was muss/darf denn eigentlich in getName(): muss das hier “storefront.xyz” sein?

danke,
nils

War ein Bug https://issues.shopware.com/issues/NEXT-4339 und ist für die EA 1.1 als gelöst markiert.

1 „Gefällt mir“

Es klappt immer noch nicht (gerade eben den letzten Stand aus Git gezogen) - super nervig. Alles nach Doku gemacht, auch noch mal mit anderen Plugins verglichen - kein einziges Snippet wird importiert.  

Grüße @netzperfekt!

Ich habe es selbst gerade nochmal einige Fälle ausprobiert, wo ich mir hätte Problem ausmalen können und bislang keinen Fehler festgestellt. Wäre es möglich, dass du mal deine services.xml bzw. die Registrierung der SnippetFiles und entsprechend den Inhalt deines SnippetFiles hier postest? Dann kann ich mir das mal genauer ansehen :slight_smile:

Ansonsten, auf die Idee bist du sicherlich schon gekommen, aber da doppelt besser hält: Cache geleert?

Schöne Grüße aus Schöppingen,
Marcel 

@mbrode‍ danke - hab’ den Fehler dann doch gerade noch gefunden: das JSON war nicht valide, ein kleines Komma zu viel ;-(((

…wäre natürlich supertoll, wenn das irgendein kleiner Validator beim Aktivieren des Plugins anmäkeln könnte… 

Ich lasse das hier mal so für die Nachwelt stehen

{
    "netzp": {
        "address-validator": {
            "wrong-number": "Keine oder falsche Hausnummer eingegeben",
            "unknown": "Die Adresse ist unbekannt. Bitte überprüfen Sie die Eingabe.",
            "other-country": "Die Adresse scheint in einem anderen Land zu sein. Bitte überprüfen Sie die Eingabe.",
            "check": "Bitte überprüfen Sie die eingegebene Adresse."
        }
    }, 

 

Ärgerlich, aber gut, dass es dann gefunden wurde!
PHPStorm meckert bei mir persönlich immer, dass ein trailing comma nicht JSON-standard sei. Aber eine Komma-breite rote Linie kann man schon mal übersehen…
 

Aber schlecht ist der Gedanke auf keinen Fall. Ich würde dir entsprechend empfehlen mal ein Ticket im Issue-Tracker aufzumachen. ( https://issues.shopware.com )
Wird sicherlich der ein oder andere dankbar drüber sein. :slight_smile:

Schöne Grüße aus Schöppingen,
Marcel 

Weil ich bisschen gesucht habe wie ich Snippet Texte in Twig mit Platzhaltern umsetzen kann hier meine Lösung:

{
    "MyPlugin": {
        "details": {
            "textToShow": "Foobar teilt man in '[0]' und '[1]'"
        }
    }
}

 In dem Twig Template

{{ "MyPlugin.details.textToShow"|trans|replace({'[0]': "foo", '[1]': "bar"}) }}

Ergebnis:

Foobar teilt man in 'foo' und 'bar'

Vielleicht hilft es jemanden weiter.

3 „Gefällt mir“

@daMardl schrieb:

Weil ich bisschen gesucht habe wie ich Snippet Texte in Twig mit Platzhaltern umsetzen kann hier meine Lösung:

{
„MyPlugin“: {
„details“: {
„textToShow“: „Foobar teilt man in ‚[0]‘ und ‚[1]‘“
}
}
}

 In dem Twig Template

{{ „MyPlugin.details.textToShow“|trans|replace({‚[0]‘: „foo“, ‚[1]‘: „bar“}) }}

Ergebnis:

Foobar teilt man in ‚foo‘ und ‚bar‘

Vielleicht hilft es jemanden weiter.

Schien für mich bei meinem Problem als hoffnungsvollster Lösungsansatz, aber leider vergebens…
Zu meinem Problem:
Ich schreibe aktuell mein allererstes Storefront-Plugin und bin mittlerweile glücklich, dass alles soweit nun funktioniert (steile Lernkurve).

Allerdings gibt es in meinem Plugin gerade mal zwei Wörter, die multilingual zur Verfügung stehen sollten.
Dafür lohnt es sich meiner Meinung nach nicht eine extra Translate-Tabelle für das Plugin anzulegen.

Also habe ich dieses Beispiel hier gefunden und mich daran gehangelt:
https://docs.shopware.com/en/shopware-platform-dev-en/how-to/adding-snippets

  • Snippet-Ordner und darunter Sprachkürzel-Ordner angelegt
  • dort dann jeweils die Klasse und die JSON angelegt
  • die service-xml erweitert

Soweit keinerlei Fehlermeldungen, alles gut!
JSON sieht in etwa so aus:
 

{
  "MeinPluginName": 
  {
    "details": 
    {
      "preisblabla": "Preisblabla",
      "preisNormal": "Normalpreis"
    }
  }
}

Und jetzt möchte ich hier „storefront->page->product-detail-> meine twig-Datei“ gerne darauf zugreifen und habe folgendes geschrieben: {{ "MeinPluginName.details.preisblabla"|trans}} Dennoch wird nach cache leeren, plugin deaktivieren/aktivieren usw. an dieser Stelle „MeinPluginName.details.preisblabla“ ausgegeben und nicht der zugewiesene Text :confused: was mach ich da nur falsch? :frowning:

  • ist geklärt, war kleiner Schreibfehler meinerseits.
    Die Logik von @daMardl‍ funktionierte dann auch ohne Probleme
1 „Gefällt mir“