Beschreibungen pro Storefront/Sprache pushen #17

Closed
opened 2026-05-10 16:44:42 +00:00 by csaeum · 1 comment
csaeum commented 2026-05-10 16:44:42 +00:00 (Migrated from gitlab.localdomain)

Produktbeschreibungen sprachspezifisch nach Shopware pushen:

  • ERPNext Item Description → Shopware Product Translation
  • Endpoint: PATCH /api/product/{id}/translations/{languageId}
  • Sprache wird aus dem Storefront-Mapping ausgelesen
  • Unterstützte Felder: Name, Beschreibung, Meta-Title, Meta-Description
  • Pro Storefront die konfigurierte Sprache verwenden
Produktbeschreibungen sprachspezifisch nach Shopware pushen: - ERPNext Item Description → Shopware Product Translation - Endpoint: `PATCH /api/product/{id}/translations/{languageId}` - Sprache wird aus dem Storefront-Mapping ausgelesen - Unterstützte Felder: Name, Beschreibung, Meta-Title, Meta-Description - Pro Storefront die konfigurierte Sprache verwenden
Owner

Implementiert (shopware6/api/translation.py, push_translations()).

Abweichung vom im Issue genannten Endpunkt: PATCH /api/product/{id}/translations/{languageId} funktioniert live nachweislich nicht wie im Issue beschrieben — die languageId aus der URL wird beim Schreiben stillschweigend ignoriert, jeder Aufruf landet im selben (offenbar Default-)Übersetzungs-Slot. Ein zweisprachiger Live-Test (zwei PATCHes mit unterschiedlicher languageId auf dasselbe Produkt) hat das eindeutig gezeigt: danach existierte nur eine product-translation-Zeile, mit dem Inhalt des zweiten Aufrufs. Bestätigt über einen gezielten Retest mit klar unterscheidbarem Inhalt.

Verwendeter Ansatz stattdessen: PATCH /api/product/{id} (Hauptendpunkt) mit einem verschachtelten translations-Objekt, geschlüsselt nach Sprach-UUID, alle konfigurierten Sprachen in einem Aufruf pro Item. Entspricht dem offiziellen "Product Translator"-App-Tutorial (das Locale-Codes statt UUIDs nutzt) sowie Marcels Bulk-_action/sync-API (die UUID-Keys dokumentiert). Live mit zwei Sprachen verifiziert: zwei korrekte, sprachspezifische product-translation-Zeilen pro Produkt.

Weitere Punkte:

  • Zwei neue Custom Fields auf Item: meta_title, meta_description (ERPNext-Core hat dafür kein natives Feld, live per frappe.get_meta("Item") geprüft).
  • Sprachen kommen aus Shopware Storefront Domain.shopware_language_id (#7/#11) — keine Live-Auflösung pro Push nötig, da bereits persistiert.
  • Da Item keine sprachspezifischen Felder hat, wird derselbe Name/Beschreibung/Meta-Inhalt in jeden konfigurierten Sprach-Slot geschrieben — #17 verteilt bestehenden Inhalt auf Storefront-Sprachen, übersetzt ihn nicht.
  • Push nur für einfache Items mit bereits gesetzter shopware_product_id (#16); ohne diese: skipped_not_pushed, kein failed.
  • Templates/Varianten bleiben #19.
  • Neuer Button "Push Descriptions" auf Shopware Account.

Volle Begründung: docs/architecture.md#issue-17, Gotcha-Eintrag: docs/stolperfallen.md.

Live-Round-Trip erfolgreich getestet (Testdaten danach entfernt). Deploy auf den 4 App-Containern durchgeführt.

Implementiert (`shopware6/api/translation.py`, `push_translations()`). **Abweichung vom im Issue genannten Endpunkt**: `PATCH /api/product/{id}/translations/{languageId}` funktioniert live nachweislich **nicht** wie im Issue beschrieben — die `languageId` aus der URL wird beim Schreiben stillschweigend ignoriert, jeder Aufruf landet im selben (offenbar Default-)Übersetzungs-Slot. Ein zweisprachiger Live-Test (zwei PATCHes mit unterschiedlicher `languageId` auf dasselbe Produkt) hat das eindeutig gezeigt: danach existierte nur eine `product-translation`-Zeile, mit dem Inhalt des *zweiten* Aufrufs. Bestätigt über einen gezielten Retest mit klar unterscheidbarem Inhalt. **Verwendeter Ansatz stattdessen**: `PATCH /api/product/{id}` (Hauptendpunkt) mit einem verschachtelten `translations`-Objekt, geschlüsselt nach Sprach-UUID, alle konfigurierten Sprachen in einem Aufruf pro Item. Entspricht dem offiziellen "Product Translator"-App-Tutorial (das Locale-Codes statt UUIDs nutzt) sowie Marcels Bulk-`_action/sync`-API (die UUID-Keys dokumentiert). Live mit zwei Sprachen verifiziert: zwei korrekte, sprachspezifische `product-translation`-Zeilen pro Produkt. **Weitere Punkte**: - Zwei neue Custom Fields auf `Item`: `meta_title`, `meta_description` (ERPNext-Core hat dafür kein natives Feld, live per `frappe.get_meta("Item")` geprüft). - Sprachen kommen aus `Shopware Storefront Domain.shopware_language_id` (#7/#11) — keine Live-Auflösung pro Push nötig, da bereits persistiert. - Da `Item` keine sprachspezifischen Felder hat, wird derselbe Name/Beschreibung/Meta-Inhalt in jeden konfigurierten Sprach-Slot geschrieben — #17 verteilt bestehenden Inhalt auf Storefront-Sprachen, übersetzt ihn nicht. - Push nur für einfache Items mit bereits gesetzter `shopware_product_id` (#16); ohne diese: `skipped_not_pushed`, kein `failed`. - Templates/Varianten bleiben #19. - Neuer Button "Push Descriptions" auf `Shopware Account`. Volle Begründung: [docs/architecture.md#issue-17](../../src/branch/shopware6-dach/docs/architecture.md#issue-17-push-item-translations-per-storefront-language), Gotcha-Eintrag: [docs/stolperfallen.md](../../src/branch/shopware6-dach/docs/stolperfallen.md). Live-Round-Trip erfolgreich getestet (Testdaten danach entfernt). Deploy auf den 4 App-Containern durchgeführt.
Sign in to join this conversation.
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
Frappe-Projekte/ecommerce_integrations#17
No description provided.