# SW4 auf SW5 API für Übersetzungen inkompatibel

**URL:** https://forum.shopware.com/t/sw4-auf-sw5-api-fur-ubersetzungen-inkompatibel/27821
**Category:** Programmierung
**Created:** [1. Juni 2015 um 16:39 UTC](https://forum.shopware.com/t/sw4-auf-sw5-api-fur-ubersetzungen-inkompatibel/27821 "2015-06-01T16:39:54Z")
**Posts on this page:** 12
**Page:** 1

<div class="post-metadata">

### Author: ![TeichDatensysteme](https://avatars.discourse-cdn.com/v4/letter/t/43a26b/32.png) [@TeichDatensysteme](https://forum.shopware.com/u/TeichDatensysteme)
#### Post date: [1. Juni 2015 um 16:39 UTC](https://forum.shopware.com/t/sw4-auf-sw5-api-fur-ubersetzungen-inkompatibel/27821/1 "2015-06-01T16:39:54Z")

</div>

Hi, ich war kurz irritiert, dass meine Übersetzungen nicht über die Translation API ankommen. Jetzt bin ich das mal bei Github durchgegangen und bemerke, dass ‘locale’ zu ‘shop’ wurde - in der ganzen Klasse: [https://github.com/shopware/shopware/commit/8403aea50cab8217f6d3c8cbe018ee498bc6e0d7](https://github.com/shopware/shopware/commit/8403aea50cab8217f6d3c8cbe018ee498bc6e0d7) Es gibt den Hinweis “Create / update / delete with `localeId` are still supported as legacy.” - das ist definitiv nicht der Fall. Mit nur der Übergabe der localeId im data array wird die Übersetzung NICHT durchgeführt. Wenn eine gültige shopId im gleichen Zug statt der localeId gesetzt wird funktioniert das. Ein Hinweis, dass sich die API dort geändert hat wäre hilfreich gewesen. Kann das noch wer anderes bestätigen? … Schöne Grüße, Niklas

---

<div class="post-metadata">

### Author: ![Heiner\_Lohaus](https://avatars.discourse-cdn.com/v4/letter/h/b5a626/32.png) [@Heiner\_Lohaus](https://forum.shopware.com/u/Heiner_Lohaus)
#### Post date: [1. Juni 2015 um 16:48 UTC](https://forum.shopware.com/t/sw4-auf-sw5-api-fur-ubersetzungen-inkompatibel/27821/2 "2015-06-01T16:48:20Z")

</div>

Hi, wie sieht den der genaue HTTP-Aufruf bei dir aus? Oder verwendest du die API über PHP? Der Fallback ist nämlich nur im HttpController hinterlegt: [https://github.com/shopware/shopware/bl … ns.php#L45](https://github.com/shopware/shopware/blob/next/engine/Shopware/Controllers/Api/Translations.php#L45) Heiner

---

<div class="post-metadata">

### Author: ![TeichDatensysteme](https://avatars.discourse-cdn.com/v4/letter/t/43a26b/32.png) [@TeichDatensysteme](https://forum.shopware.com/u/TeichDatensysteme)
#### Post date: [1. Juni 2015 um 16:53 UTC](https://forum.shopware.com/t/sw4-auf-sw5-api-fur-ubersetzungen-inkompatibel/27821/3 "2015-06-01T16:53:45Z")

</div>

Hallo Heiner! Danke für die Nachricht, ich benutze die Resourcen lokal - also nicht über die REST API. Stimmt, den Fallback sehe ich - der fehlt leider lokal. Bedeutet - wenn ich bei den Übergaben lokal die localeId statt ‘localeId’ als ‘shopId’ bezeichne klappt das? Die localeId ist aber doch eine andere ID als die shop id, so ganz schlüssig finde ich das gerade nicht 😉 Ich möchte Übersetzungen ja für eine Sprache setzen, nicht speziell für einen Shop. Wenn ich den Fall hätte das es mehrere Subshops mit der gleichen Sprache existieren möchte ich ja nicht die Übersetzungen für jeden Shop, sondern einmalig nur für die Sprache machen … Schöne Grüße, Niklas

---

<div class="post-metadata">

### Author: ![Heiner\_Lohaus](https://avatars.discourse-cdn.com/v4/letter/h/b5a626/32.png) [@Heiner\_Lohaus](https://forum.shopware.com/u/Heiner_Lohaus)
#### Post date: [2. Juni 2015 um 08:33 UTC](https://forum.shopware.com/t/sw4-auf-sw5-api-fur-ubersetzungen-inkompatibel/27821/4 "2015-06-02T08:33:58Z")

</div>

Hi, ja schon, aber auch unter Shopware 4 war die „localeId“ eigentlich die „shopId“. Mit Shopware 5 wurde es nur (richtig) benannt. Das Verhalten hat sich also nicht geändert. Heiner

---

<div class="post-metadata">

### Author: ![TeichDatensysteme](https://avatars.discourse-cdn.com/v4/letter/t/43a26b/32.png) [@TeichDatensysteme](https://forum.shopware.com/u/TeichDatensysteme)
#### Post date: [2. Juni 2015 um 10:12 UTC](https://forum.shopware.com/t/sw4-auf-sw5-api-fur-ubersetzungen-inkompatibel/27821/5 "2015-06-02T10:12:40Z")

</div>

Wir haben innerhalb von SW4 die localeId bei der Übertragung verwendet haben (aus s\_core\_locales!). Das ist auch exakt (!) so in der SW4 Doku enthalten: [http://wiki.shopware.com/REST-API-%C3%9Cbersetzungs-Endpunkt\_detail\_1693.html#Translation\_3](http://wiki.shopware.com/REST-API-%C3%9Cbersetzungs-Endpunkt%5C_detail%5C_1693.html#Translation%5C_3) [quote] localeId integer (Fremdschlüssel Locale - s\_core\_locales Benötigt[/quote] Jetzt ist die Rede von shopId - ja, die Klasse der Translation Resource wurde unbenannt, aber die ganzen Objekte wurden von locale auf shop geändert. Deswegen sieht das so aus, als ob nicht mehr mit der ID aus s\_core\_locales gearbeitet wird, sondern mit der id aus s\_core\_shops, korrekt? Wenn das so wäre hätte das mit Sicherheit nicht nur für uns größere Auswirkungen, da definitiv nicht meistens localeId == shopId ist. Das wäre doch eine völlig andere Weise Übersetzungen zu setzen. Würde bedeuten, jetzt würde man Übersetzungen pro Shop (!) setzen, und nicht mehr pro Sprache/Locale (!) Da bräuchte ich eine Rückmeldung, weil - das würde bei uns tiefgreifende Änderungen mit sich bringen die leider nicht ansatzweise so in der neuen Doku abzuschätzen waren … da steckt ja offensichtlich deutlich mehr hinter als nur eine string ID zu ändern. Ich würde mich sehr über Feedback freuen. Schöne Grüße, Niklas

---

<div class="post-metadata">

### Author: ![Heiner\_Lohaus](https://avatars.discourse-cdn.com/v4/letter/h/b5a626/32.png) [@Heiner\_Lohaus](https://forum.shopware.com/u/Heiner_Lohaus)
#### Post date: [2. Juni 2015 um 10:25 UTC](https://forum.shopware.com/t/sw4-auf-sw5-api-fur-ubersetzungen-inkompatibel/27821/6 "2015-06-02T10:25:43Z")

</div>

Hi Niklas, nein, das ist kein Problem. Im Frontend war es schon immer die shopID und nicht die localeID. Das hat sich auch bei vielen Kunden als praktischer erwiesen, da man dann z.B. auch verschiedene SEO-Texte für verschiedene Shops anbieten kann. Damit man aber die Übersetzung nicht doppelt pflegen muss, gibt es in den Shop-Einstellungen die Möglichkeit ein Fallback-Shop zu hinterlegen. Edit: Vielen Dank noch für den Hinweis auf den Wiki-Artikel. Den werden wir noch entsprechend aktualisieren. Heiner

---

<div class="post-metadata">

### Author: ![TeichDatensysteme](https://avatars.discourse-cdn.com/v4/letter/t/43a26b/32.png) [@TeichDatensysteme](https://forum.shopware.com/u/TeichDatensysteme)
#### Post date: [2. Juni 2015 um 10:46 UTC](https://forum.shopware.com/t/sw4-auf-sw5-api-fur-ubersetzungen-inkompatibel/27821/7 "2015-06-02T10:46:10Z")

</div>

Dann hätte das im Upgrade-Guide wirklich anders thematisiert werden müssen. Das ist ja nicht nur bei uns eine Änderung von Übersetzung pro Sprache zu Übersetzung pro Shop, jeder Entwickler der die Translation API nutzt wird das umbauen müssen. Halte ich dann eigentlich für etwas gefährlich im API Controller einfach localeId in shopId zu setzen, ich schätze mal, dass auch noch andere Anbieter da erst später drauf kommen. Weil Fakt ist - alle Entwickler die sich vorher an die Doku gehalten haben und die localeId gegeben haben schauen ab SW5 in die Röhre, so wie wir jetzt. Ja, dann muss ich in den sauren Apfel beißen und das umbauen ☹ Schöne Grüße, Niklas

---

<div class="post-metadata">

### Author: ![Heiner\_Lohaus](https://avatars.discourse-cdn.com/v4/letter/h/b5a626/32.png) [@Heiner\_Lohaus](https://forum.shopware.com/u/Heiner_Lohaus)
#### Post date: [2. Juni 2015 um 10:59 UTC](https://forum.shopware.com/t/sw4-auf-sw5-api-fur-ubersetzungen-inkompatibel/27821/8 "2015-06-02T10:59:20Z")

</div>

Hi, ja, verstehe. Aber das Problem ist ja, dass die API in Shopware 4 in diesem Punkt falsch war und es dann später zu komischen Ergebnissen im Frontend kam. Jetzt hat das Feld den richtigen Namen und man kommt auch schneller auf die Lösung, statt sich über die vermeintliche „localeId“ zu wundern. Heiner

---

<div class="post-metadata">

### Author: ![TeichDatensysteme](https://avatars.discourse-cdn.com/v4/letter/t/43a26b/32.png) [@TeichDatensysteme](https://forum.shopware.com/u/TeichDatensysteme)
#### Post date: [2. Juni 2015 um 11:45 UTC](https://forum.shopware.com/t/sw4-auf-sw5-api-fur-ubersetzungen-inkompatibel/27821/9 "2015-06-02T11:45:37Z")

</div>

Das heißt, Übersetzungen über die Resource bis SW5 sind eigentlich defekt und nicht produktiv nutzbar? Dann würde ich mir die Arbeit der Abwärtskompatibilität sparen und diese nur ab SW5 supporten. Danke für die schnelle Auskunft, Niklas

---

<div class="post-metadata">

### Author: ![TeichDatensysteme](https://avatars.discourse-cdn.com/v4/letter/t/43a26b/32.png) [@TeichDatensysteme](https://forum.shopware.com/u/TeichDatensysteme)
#### Post date: [1. September 2015 um 15:48 UTC](https://forum.shopware.com/t/sw4-auf-sw5-api-fur-ubersetzungen-inkompatibel/27821/10 "2015-09-01T15:48:36Z")

</div>

Die Dokumentation sollte bei euch auch immer noch angepasst werden … [http://community.shopware.com/Using-the-Shopware-4-Rest-API\_detail\_1576.html#Getting\_translations](http://community.shopware.com/Using-the-Shopware-4-Rest-API%5C_detail%5C_1576.html#Getting%5C_translations) Die Beispiele … ` $translationResource-\>getList(0, 1, array( array('property' =\> 'translation.localeId', 'value' =\> 2), array('property' =\> 'translation.key', 'value' =\> 200), array('property' =\> 'translation.type', 'value' =\> 'article') )); ` oder ` $translationResource-\>getList(0, 10, array( array('property' =\> 'translation.localeId', 'value' =\> 2) )); ` … können nicht funktionieren, da ab SW5 die localeId nicht mehr existiert und stattdessen die shopId notwendig ist (die getList() funktioniert sonst definitiv nicht). Ich kann mich erinnern, dass Ihr das Mapping in der REST API drin habt (von locale zu shopId), die Nutzung der lokalen Ressourcen wie im Beispiel haben dieses aber nicht drin. Schöne Grüße, Niklas

---

<div class="post-metadata">

### Author: ![Heiner\_Lohaus](https://avatars.discourse-cdn.com/v4/letter/h/b5a626/32.png) [@Heiner\_Lohaus](https://forum.shopware.com/u/Heiner_Lohaus)
#### Post date: [2. September 2015 um 09:55 UTC](https://forum.shopware.com/t/sw4-auf-sw5-api-fur-ubersetzungen-inkompatibel/27821/11 "2015-09-02T09:55:03Z")

</div>

Ja, die Doku für Shopware 5 findest du hier: [https://developers.shopware.com/develop … /rest-api/](https://developers.shopware.com/developers-guide/rest-api/) Und für Shopware 4 kannst du es ja mit einer IF-Bedinnung auch kompatibel machen. Beispiel: ` if (Shopware::VERSION == '\_\_\_VERSION\_\_\_'|| version\_compare(Shopware::VERSION, '5.0', '\>=')) { //Shopware 5 } else { //Shopware 4 } ` Gruß Heiner

---

<div class="post-metadata">

### Author: ![TeichDatensysteme](https://avatars.discourse-cdn.com/v4/letter/t/43a26b/32.png) [@TeichDatensysteme](https://forum.shopware.com/u/TeichDatensysteme)
#### Post date: [3. September 2015 um 15:58 UTC](https://forum.shopware.com/t/sw4-auf-sw5-api-fur-ubersetzungen-inkompatibel/27821/12 "2015-09-03T15:58:54Z")

</div>

[quote=“Heiner Lohaus”]Ja, die Doku für Shopware 5 findest du hier: [https://developers.shopware.com/develop … /rest-api/](https://developers.shopware.com/developers-guide/rest-api/)[/quote] Okay, in eurer Doku sind oft nur an bestimmten Stellen Hinweise, dass diese z.B. in höheren Versionen nicht mehr so funktionieren … [quote=“Heiner Lohaus”] Und für Shopware 4 kannst du es ja mit einer IF-Bedinnung auch kompatibel machen …[/quote] Ja, das ist mir schon klar 😉 Danke für Tipps natürlich, aber ich habe bereits dutzende Stellen drin, die abhängig der Shop-Version anders laufen - nur ich habe ja vorher bereits ausführlich geschrieben, dass ja eine ganz andere Logik erforderlich ist wenn ich Übersetzungen statt einer Sprache explizit einem Shop zuweise. Also, inhaltlich, wie welche Daten für welchen Shop nun bereitgestellt werden. Zwischen ERP und Shop können ja durchaus andere Datenstrukturen bestehen, deswegen ist das manchmal eben nicht mit einem if erledigt 😉 Aber - wie gesagt - trotzdem Danke für die Antwort. Wir haben das jedenfalls schon länger angepasst und die Übersetzungen klappen. Schöne Grüße, Niklas
