Zum Hauptinhalt springen

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']),
// ...,
];
}

// ...
}