Adding snippets

Overview

By default Shopware 6 uses the Vue I18n plugin in the Administration to deal with translation.

Creating snippet files

Normally you want to use snippets in you custom module. To keep things organized, create a new directory named snippet inside your module directory <plugin root>/src/Resources/app/administration/src/module/<your-module>/snippet. For each language you want to support, you need a JSON file inside here, e.g. de-DE.json and of course en-GB.json.

Each language then receives a nested object of translations, so let's have a look at an example snippet/en-GB.json:

{
"swag-example": {
"nested": {
"value": "example"
},
"foo": "bar"
}
}

In this example you would have access the two translations by the following paths: swag-example.nested.value to get the value 'example' and swag-example.foo to get the value 'bar'. You can nest those objects as much as you want.

By default, Shopware 6 will collect those files automatically when your plugin is activated.

Using the snippets in JavaScript

Since snippets are automatically registered in the scope of your module, you can use them directly:

Component.register('my-custom-page', {
...
methods: {
createdComponent() {
// call the $tc helper function provided by Vue I18n
const myCustomText = this.$tc('swag-example.general.myCustomText');
console.log(myCustomText);
}
}
...
});

Using the snippets in templates

The same $tc helper function can be used in the templates to access translations.

{% block my_custom_block %}
<p>
{{ $tc('swag-example.general.myCustomText') }}
</p>
{% endblock %}

More interesting topics