Import von Übersetzungen?

Hallöchen Community,

ich werde gerade leicht wahnsinnig- ich versuche momentan einen SW5 Shop auf SW6 zu migrieren, allerdings klappt der Plan mit “Ich lege einfach weitere Sprachen an und importiere diese” nicht wirklich.

Der Grund für das Ganze? Es sind spezialisierte Subshops, die alle zwar auf Deutsch sind, aber Artikel im Backend wurden / werden zentral verwaltet. Ein Artikel in bspw. 5 Shops, mit unterschiedlichen Namen und Beschreibungen.

Über Einstellungen > Sprachen

habe ich beispielsweise “Deutsch (Shop1)” und “Deutsch (Shop2)” angelegt. Lokalisierung Deutsch, ISO-Code de-DE und geerbt von Deutsch als Hauptsprache.

Im Import-Export-Tool wird das auch pseudomäßig angezeigt:

Hier dachte ich mir “kein Problem, ich wähle einfach ein Profil aus, exportiere es damit, wenn die Übersetzung hier nicht auftaucht, probiere ich das nächste aus”. 4x DE ist korrekt, 3 davon sind meine Kreationen.

Er exportiert aber immer ausschließlich die Hauptsprache und importiert dementsprechend auch nur die Hauptsprache Deutsch. Wie bekommen wir es also hin, verschiedene Übersetzungen zu importieren? Von mir aus auch in 4 verschiedenen Profilen.

In der Datenbank habe ich testweise mal eigene Locale angelegt, in der Hoffnung, dass es hier im Assistenten angezeigt wird, aber Fehlanzeige, da taucht nix auf. Was ich getan habe:

### Locale für Deutsch (Shop1)
INSERT INTO locale (id, code, created_at)
VALUES (UNHEX(REPLACE(UUID(),‚-‘,‚‘)), ‚de-S1‘, NOW());

### de-S1: deutsche Übersetzung
INSERT INTO locale_translation (locale_id, language_id, name, territory, created_at)
VALUES (
(SELECT id FROM locale WHERE code = ‚de-S1‘),
(SELECT id FROM language WHERE name LIKE ‚Deutsch%‘ LIMIT 1),
‚Deutsch (S1)‘,
‚Germany‘,
NOW()
);

Cache geleert, der Sprache in den Einstellungen den neuen ISO-Code zugeordnet → leider keine Anzeige im Import/Export-Tool.

Bin mit meinem Latein leider am Ende, weiß jemand, wie zum Geier wir das hinbekommen? Das Migrationstool hat an dieser Stelle auch nichts getan…

EDIT: Eine Idee wäre es natürlich, eine vorhandene Sprache zu missbrauchen- aber soweit ich das richtig verstanden habe, würde alles auf der Seite für die Suchmaschine beispielsweise Tschechich schreien, ist das korrekt?

Hat keiner eine Idee? :eyes: Habe schon letztes Jahr nachgefragt, leider ebenfalls antwortlos, ist ja schon fast traurig bei so einem riesigen Unternehmen…

(mir ist bewusst, dass das die Community Sektion ist- früher konnte man wenigstens den Support noch anschreiben ohne einen Kleinkredit aufzunehmen)

Als Idee:

Vergiss den Import der Übersetzungen und lasse über Google Translate, OpenAI oder DeepL (das nutzen wir) übersetzen. Klappt auch bei Erlebniswelten: im store.shopware.com nach „biloba translate“ suchen.

Wenn du sonst eine schnelle Antwort haben möchtest, direkt von Shopware: Plan zulegen und Anfrage auf https://account.shopware.com/ stellen.

Hi Raymond,

  1. das trifft bei uns leider nicht ganz zu, weil es wie gesagt hier nicht wirklich um “echte” Übersetzungen geht, sondern um Subshop- / Kanalspezifische Texte. Texter wurden hierzu auch beauftragt und die Mühe kann nicht aus dem Fenster geworfen werden.

  2. Als es noch die Silver Subscription für einen Tausender pro Jahr gab, konnte sich unser Kunde das noch leisten- aber für 7200€ / Jahr für Features, die wir nicht benötigen und die Erbarmung, uns per E-Mail Fragen beantworten zu lassen, zeigt unser Kunde UNS UND Shopware zurecht den Mittelfinger.

Vielleicht versteh ich das ja falsch, aber wäre da ein anderer Ansatz ggf. besser? Sprache lassen und in SW6 in separate Subshops importieren?

Ich meine, ja aber wie denn sonst, wenn nicht über die Sprache?

Die Diskussion hatten wir vor Jahren schonmal, da habe ich auch keine richtige Antwort bekommen:

Oder gibt es Subshopimporte mittlerweile, was Texte betrifft? Wenn ja, lasse ich mich gerne eines Besseren belehren, gerne her mit der Information wo wie D:

Auf gut Deutsch: Wie bekommt man Artikel XYZ auf Kanal A mit Text A und auf Kanal B mit Text B (importiert)?

Also, nach ewigem hin und her, hier eine Lösung, die komplett nativ funktioniert, auch mit dem Import-/Export Tool von Shopware selbst. ChatGPT lässt grüßen, keine Gewähr wie immer, es gibt ja seit Jahren keine Antwort zu diesem Thema.

Beispiel anhand der neuen Sprache “Deutsch (Custom) | de-CS”

1.) Neue Locale in der Datenbank direkt hinzufügen:

INSERT INTO locale (id, code, created_at)
VALUES (UNHEX(REPLACE(UUID(), '-', '')), 'de-CS', NOW());

Jetzt kann unter Shopware > Einstellungen > Sprachen eine neue Sprache angelegt werden, die mit dem neuen ISO Code ausgestattet werden kann:

2.) Sprachtabelle updaten:

UPDATE language
SET locale_id = (SELECT id FROM locale WHERE code = 'de-CS')
WHERE name = 'Deutsch (Custom)';

3.) Damit im Backend alles richtig dargestellt wird:

Shopware UI auf Englisch:

INSERT INTO locale_translation (locale_id, language_id, name, territory, created_at)
SELECT l.id, lt.language_id, 'German (Custom)', 'Germany', NOW()
FROM locale l
JOIN locale_translation lt ON lt.name = 'English'
WHERE l.code = 'de-CS'
LIMIT 1;

Shopware UI auf Deutsch:

INSERT INTO locale_translation (locale_id, language_id, name, territory, created_at)
SELECT l.id, lt.language_id, 'Deutsch (PCS)', 'Deutschland', NOW()
FROM locale l
JOIN locale_translation lt ON lt.name = 'Deutsch'
WHERE l.code = 'de-PCS'
LIMIT 1;

Tada:

Gerade auch überprüft, Import klappt wunderbar. Ich habe übrigens auch alle verfügbaren Import Drittanbieter-Plugins testweise angemietet, wovon keines basierend auf der Sprach-UUID etwas importieren konnte. Alle können nur über obigen Weg importieren, was die Plugins überflüssig macht.

Ist das der richtige Weg / hat das Konsequenzen? Sehen wir noch, keine Ahnung. Funktioniert erst einmal. Feierabend.

NACHTRAG:
FALSCH, IGNORIEREN!: Bei der Live-Schaltung konnte kein Testbaustein mehr bei Änderung oder Hinzufügen einer Domain ausgewählt werden- hier einfach in der Tabelle „snippet_set“ sein Textbaustein-Set auswählen (ggf. ein separates erstellen, das haben wir auch gemacht), bspw. „BASE de-CS“ basierend auf der „messages.de-DE“. Hier in der Spalte „iso“ einfach den Wert von „de-DE“ auf „de-CS“ abändern. Jetzt ist es im Backend auswählbar.

NACHTRAG 2:
Der obige Nachtrag funktioniert so nicht, anscheinend kommt Shopware nicht damit klar, wenn der Wert iso einfach abgeändert wird, dann erscheint im Frontend nämlich nur ein Platzhalter, statt die richtige Übersetzung. Da die Zuordnung im Backend nicht geht, muss es manuell erzwungen werden:

UPDATE sales_channel_domain d
JOIN snippet_set ss ON ss.name = ‚BASE de-DE-CS‘
SET d.snippet_set_id = ss.id
WHERE d.url LIKE ‚https://MEINE.DOMAIN%‘;
2 „Gefällt mir“