Zum Hauptinhalt springen
Version: 2025.5

Umgang mit Übersetzungen

In einigen Fällen ist es notwendig Übersetzungen zu exportieren und anschließend in Shopware zu importieren.

Pimcore​

In Pimcore steht der TranslationService zur Verfügung. Dieser kann im Adapter über die Methode $this->translationHelper() bezogen werden.

Klasse​

Twocream\ShopwareConnectorBundle\Service\TranslationService

Methode mapTranslations​

Die Methode ermittelt die Werte in allen verfügbaren Pimcore-Sprachen und gibt ein Array zurück. Dabei können Feldnamen beim Export umbenannt werden, um die spätere Verarbeitung in Shopware zu vereinfachen.

NameWert
Funktionpublic function mapTranslations(Localizedfield $field, array $fieldNames = [], array $map = [], ?string $defaultLanguage = ''): array
Argument $fieldLocalized-Fields vom Objekt
(Optional) Argument $fieldNamesPimcore-Feld-Identifier des Feldes, dessen Werte exportiert werden sollen
(Optional) Argument $mapLegt den Namen des Zielfelds im Export fest
(Optional) Argument $defaultLanguageFehlt in einer Sprache ein Wert, wird er aus der angegebenen Standardsprache entnommen
Rückgabewertsiehe Ausgabe

Beispiel​

protected function prepare($object): array
{
$texts = $this->translationHelper()->mapTranslations(
$object->getLocalizedfields(),
['articleName', 'description'],
['articleName' => 'name']
);

return [
// ...,
'translations' => $texts ?? [],
// ...,
];
}

Ausgabe​

[
"de" => {
"name" => "Beispiel Name",
"description" => "Beispiel Beschreibung"
},
"en" => {
"name" => "Example name",
"description" => "Example description"
}
]

Shopware​

In Shopware steht der ModuleService zur Verfügung und wird über $this->translationHelper() aufgerufen.

Klasse​

Twocream\JsonImporter\Core\System\Import\Module\Service\ModuleService

Methode prepareTranslation​

Die Methode transformiert die exportierten Übersetzungen in das passende Shopware-Importformat. Dabei kann auch optional durch ein Mapping eine Umbenennung der Felder vorgenommen werden.

NameWert
Funktionpublic function prepareTranslation(array $translations, array $keyMap = []): array
Argument $translationsÜbergabe der Übersetzungs-Arrays aus export
(Optional) Argument $keyMapMapping der Felder: Exportfeld zum Zielfeld.
RückgabewertArray

Beispiel​

protected function store(Result $result): ?EntityWrittenContainerEvent
{
// ...

foreach ($result as $entry) {
$records[] = [
'id' => $entry['uuid'],
'translations' => $this->service->prepareTranslation($entry['texts']),
// ...,
];
}

// ...
}