DeepL Translations
Shopware 6 ExtensionInstalation + Configuration
Install and enable Translation Plugin
- Visit the DeepL site and choose plan for you. You can decide whether you would like to use free plan which allows to translate up to 500 000 characters per month or you can explore the available paid plans for additional features and higher translation limits.
After obtaining your DeepL API key, proceed to the plugin configuration section and paste the key there and save configuration.
4.
Next navigate to Setting -> Extensions -> Translation Dashboard - to see dashboard and verify that connection is established. You should see something similar to this.
Now basic configuration is done.
Live Translation Mode
This mode allows us to create translation for selected entities in selected languages as we create/edit data. In this mode every field which is defined as translation field and is of type string will be translated, we cannot select only specific fields for translation as in Existing Entities Translation Mode.
First we need to configure languages and entites for live translations, so let's navigate to Extensions -> My Extensions -> plugin configuration. Select the entities that you want to enable for translation, and choose the languages you wish to support. Also make sure switch for acitve translation is enabled. Example configuration below.

if you don't have languages other than your default one, you need to create languages first. Navigate to Settings -> Languages and add the desired languages. Make sure to add only languages with available ISO codes.
Warning: If you select language with not allowed ISO code, live translation won't work. You will see in the logs panel information which language is not supported.
Now as we create/edit entries, translation jobs will be created in the background. We have to make sure at least one messenger is running in the background.
We can track progress of translations as we navigate to Setting -> Extensions -> Translation Dashboard -> Logs - after successfully handled job we should see something like at the example below. Also in logs we can preview generated payload for translations.

Existing Entities Mode
In this mode we can choose which existing entities and which of thier fields we would like to translate. There is one limitation, we can only select from entities which has translated field with key "name". This is universal field across which all entities are displayed in the listing.
In this mode, we can select existing entities and their fields that we want to translate. There is one restriction, we can only select from entities that have a translated field with the key 'name'. This is a universal field by which all entities are displayed in the list.
To use this mode we navigate to Setting -> Extensions -> Translation Dashboard -> Translate Existing Entries.
The process consists of 4 steps and the screen will prompt you what to select.
Step 1: Language Select

Step 2: Entity Select

Step 3: Fields Select

Step 4: Records Select

After clicking translate button we will be redirected to logs panel, where we can track progress.
The translation jobs of existing entities are divided by 100 records for each message.
Only parent entities are displayed in the list. The children are translated automatically. So, for example, only the main product is selected and its variants will also be translated. The only exception is the Category entities. In this case, the retrieval of children is disabled and we see all records in the list.
Basic Snippets
Plugin also comes with generated storefront snippets in supported languages. If you would like to use snippet we first have to create snippet set. So let's head to Setting -> Snippets - and click add new snippet set button. From base file drop-down we select desired snippet file (with deepl suffix name) and save new snippets set.

Now we can assign snippet set to specific domain.
Technical Notes
- This plugin works in asynchronous mode so least one messenger must be running to handle translations
- Command used for generating base snippet sets: lcom:generate-base-snippet
- To run integration tests shopware dotenv file must contain TEST_DEEPL_AUTH_KEY with Deepl api key