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.
Name | Wert |
---|---|
Funktion | public function mapTranslations(Localizedfield $field, array $fieldNames = [], array $map = [], ?string $defaultLanguage = ''): array |
Argument $field | Localized-Fields vom Objekt |
(Optional) Argument $fieldNames | Pimcore-Feld-Identifier des Feldes, dessen Werte exportiert werden sollen |
(Optional) Argument $map | Legt den Namen des Zielfelds im Export fest |
(Optional) Argument $defaultLanguage | Fehlt in einer Sprache ein Wert, wird er aus der angegebenen Standardsprache entnommen |
Rückgabewert | siehe 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.
Name | Wert |
---|---|
Funktion | public function prepareTranslation(array $translations, array $keyMap = []): array |
Argument $translations | Übergabe der Übersetzungs-Arrays aus export |
(Optional) Argument $keyMap | Mapping der Felder: Exportfeld zum Zielfeld. |
Rückgabewert | Array |
Beispiel
protected function store(Result $result): ?EntityWrittenContainerEvent
{
// ...
foreach ($result as $entry) {
$records[] = [
'id' => $entry['uuid'],
'translations' => $this->service->prepareTranslation($entry['texts']),
// ...,
];
}
// ...
}