# Übersetzung Backend Plugins

**URL:** <https://forum.shopware.com/t/ubersetzung-backend-plugins/34374>\
**Category:** Programmierung\
**Created:** [10. Februar 2016 um 13:04 UTC](https://forum.shopware.com/t/ubersetzung-backend-plugins/34374 "2016-02-10T13:04:31Z")\
**Posts on this page:** 15\
**Page:** 1

<div class="post-metadata">

**Author:** ![rtrau](https://avatars.discourse-cdn.com/v4/letter/r/cab0a1/32.png) [@rtrau](https://forum.shopware.com/u/rtrau)\
**Post date:** [10. Februar 2016 um 13:04 UTC](https://forum.shopware.com/t/ubersetzung-backend-plugins/34374/1 "2016-02-10T13:04:31Z")

</div>

Hallo zusammen,

ist es möglich ein eigens erstelltes Backend Plugin (View extended vom Shopware.model.Container) übersetzbar zu machen (Weltkugel)?

Ich habe versucht bei den einzelnen Feldern den Parameter ‚translatable: true‘ mitzugeben - jedoch ohne Erfolg.

Hat hier jemand ein Beispiel wie es funktionieren könnte?

Danke im Voraus schonmal

```
 &nbsp;
```

---

<div class="post-metadata">

**Author:** ![DannyDan](https://avatars.discourse-cdn.com/v4/letter/d/c2a13f/32.png) [@DannyDan](https://forum.shopware.com/u/DannyDan)\
**Post date:** [5. April 2016 um 08:56 UTC](https://forum.shopware.com/t/ubersetzung-backend-plugins/34374/2 "2016-04-05T08:56:48Z")

</div>

Hi,

gibt es zu diesem Thema bereits einen Lösungsvorschlag? Ich stehe zur Zeit aktuell nämlich genau vor dem gleichen Problem.

Gruß

Daniel

---

<div class="post-metadata">

**Author:** ![Simon\_Baumer](https://avatars.discourse-cdn.com/v4/letter/s/8e7dd6/32.png) [@Simon\_Baumer](https://forum.shopware.com/u/Simon_Baumer)\
**Post date:** [5. April 2016 um 09:09 UTC](https://forum.shopware.com/t/ubersetzung-backend-plugins/34374/3 "2016-04-05T09:09:46Z")

</div>

Hey DannyDan,

wenn solche Probleme auftauchen kannst du immer in den Core schauen wie wir das dort gelöst haben oder dir ein unverschlüsseltes Plugin installieren 😉

Hier findest du ein paar Ansätze:  
themes/Backend/ExtJs/backend/article/view/detail/window.js:370

Grüße,  
Simon&nbsp;

---

<div class="post-metadata">

**Author:** ![DannyDan](https://avatars.discourse-cdn.com/v4/letter/d/c2a13f/32.png) [@DannyDan](https://forum.shopware.com/u/DannyDan)\
**Post date:** [5. April 2016 um 09:30 UTC](https://forum.shopware.com/t/ubersetzung-backend-plugins/34374/4 "2016-04-05T09:30:21Z")

</div>

Hi Simon,

das Plugin Attribut habe ich bereits erfolglos in meinem window welches von Shopware.model.Container erbt getestet. Leider taucht die Weltkugel nicht auf bei den gewünschten Feldern?!?

```
//{namespace name="plugin/data_structure/backend/location"}
Ext.define('Shopware.apps.Location.view.detail.Location', {
    extend: 'Shopware.model.Container',
    padding: 20,

    configure: function () {
        return {
                 plugins: [{
                 ptype: 'translation',
                 pluginId: 'translation',
                 translationType: 'location',
                 translationMerge: false,
                 translationKey: null
             }],
            controller: 'Location',
            fieldSets: [{
                title: '{s name=list_window_location}Location{/s}',                
                fields: {
                    active : { fieldLabel: '{s name=list_window_active}Active{/s}' },
                    name : { fieldLabel: '{s name=list_window_name}Name{/s}', allowBlank: false },
                    address : { fieldLabel: '{s name=list_window_address}Address{/s}', translatable: true, translationName: 'addressTranslation' },
                    zip : { fieldLabel: '{s name=list_window_zip}Zip{/s}' },
                    city : { fieldLabel: '{s name=list_window_city}City{/s}', translatable: true, translationName: 'cityTranslation' }
                }
             }
            }]
        };
    }
});

```

&nbsp;

---

<div class="post-metadata">

**Author:** ![Michael\_Telgmann](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/michael_telgmann/32/20289_2.png) [@Michael\_Telgmann](https://forum.shopware.com/u/Michael_Telgmann)\
**Post date:** [5. April 2016 um 09:53 UTC](https://forum.shopware.com/t/ubersetzung-backend-plugins/34374/5 "2016-04-05T09:53:22Z")

</div>

Hi Daniel,

‚plugins‘ ist kein valider Value der in der 'configure" function genutzt werden kann. Versuche mal folgendes:

```
//{namespace name="plugin/data_structure/backend/location"}
Ext.define('Shopware.apps.Location.view.detail.Location', {
    extend: 'Shopware.model.Container',
    padding: 20,

    initComponent: function () {
        var me = this;
        
        if (me.plugins === undefined) {
            me.plugins = [];
        }

        me.plugins.push(
            {
                pluginId: 'translation',
                ptype: 'translation',
                translationType: 'mein-eigener-translation-type'
            }
        );
    },

    configure: function () {
        return {
            controller: 'Location',
            fieldSets: [{
                title: '{s name=list_window_location}Location{/s}',                
                fields: {
                    active : { fieldLabel: '{s name=list_window_active}Active{/s}' },
                    name : { fieldLabel: '{s name=list_window_name}Name{/s}', allowBlank: false },
                    address : { fieldLabel: '{s name=list_window_address}Address{/s}', translatable: true, translationName: 'addressTranslation' },
                    zip : { fieldLabel: '{s name=list_window_zip}Zip{/s}' },
                    city : { fieldLabel: '{s name=list_window_city}City{/s}', translatable: true, translationName: 'cityTranslation' }
                }
             }
            }]
        };
    }
});

```

&nbsp;

---

<div class="post-metadata">

**Author:** ![DannyDan](https://avatars.discourse-cdn.com/v4/letter/d/c2a13f/32.png) [@DannyDan](https://forum.shopware.com/u/DannyDan)\
**Post date:** [5. April 2016 um 11:04 UTC](https://forum.shopware.com/t/ubersetzung-backend-plugins/34374/6 "2016-04-05T11:04:06Z")

</div>

Danke für deine Antwort, Michael.  
Leider funktioniert das nicht weil ein Fehler geschmissen wird:

Uncaught TypeError: me.client.getForm is not a function

&nbsp;

Daniel

---

<div class="post-metadata">

**Author:** ![Michael\_Telgmann](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/michael_telgmann/32/20289_2.png) [@Michael\_Telgmann](https://forum.shopware.com/u/Michael_Telgmann)\
**Post date:** [5. April 2016 um 11:34 UTC](https://forum.shopware.com/t/ubersetzung-backend-plugins/34374/7 "2016-04-05T11:34:19Z")

</div>

Hi Daniel,

sorry hatte eine Zeile vergessen:

in der initComponent fehlt noch der Aufruf der parent function

```
initComponent: function () {
        var me = this;

        me.callParent(arguments);
        
        if (me.plugins === undefined) {
            me.plugins = [];
        }

        me.plugins.push(
            {
                pluginId: 'translation',
                ptype: 'translation',
                translationType: 'mein-eigener-translation-type'
            }
        );
    },

```

&nbsp;

Ohne den Aufruf werden natürlich wichtige Teile nicht ausgeführt&nbsp;

---

<div class="post-metadata">

**Author:** ![DannyDan](https://avatars.discourse-cdn.com/v4/letter/d/c2a13f/32.png) [@DannyDan](https://forum.shopware.com/u/DannyDan)\
**Post date:** [5. April 2016 um 11:53 UTC](https://forum.shopware.com/t/ubersetzung-backend-plugins/34374/8 "2016-04-05T11:53:07Z")

</div>

Richtig, die hatte ich bereits eingefügt. Dann kommt der oben genannte Fehler.

😉

Edit: ich hatte die parent Funktion fälschlicherweise ans Ende der Funktion gelegt. So wie in Deinem Snippet bekomme ich nun einen anderen Fehler:

Uncaught TypeError: a.init is not a function

![Frown](https://europe1.discourse-cdn.com/flex013/uploads/shopware/original/1X/569ff272a6dd35730487f053b5b3cd1f98b23eea.png "Frown")

Daniel

---

<div class="post-metadata">

**Author:** ![Michael\_Telgmann](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/michael_telgmann/32/20289_2.png) [@Michael\_Telgmann](https://forum.shopware.com/u/Michael_Telgmann)\
**Post date:** [5. April 2016 um 12:25 UTC](https://forum.shopware.com/t/ubersetzung-backend-plugins/34374/9 "2016-04-05T12:25:53Z")

</div>

schieb den Aufruf von callParent mal hinter dem push des Translations Plugin

---

<div class="post-metadata">

**Author:** ![DannyDan](https://avatars.discourse-cdn.com/v4/letter/d/c2a13f/32.png) [@DannyDan](https://forum.shopware.com/u/DannyDan)\
**Post date:** [5. April 2016 um 12:34 UTC](https://forum.shopware.com/t/ubersetzung-backend-plugins/34374/10 "2016-04-05T12:34:33Z")

</div>

Dann wird ja der Fehler geschmissen den ich oben beschrieben hatte:

Uncaught TypeError: me.client.getForm is not a function

Daniel

---

<div class="post-metadata">

**Author:** ![Michael\_Telgmann](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/michael_telgmann/32/20289_2.png) [@Michael\_Telgmann](https://forum.shopware.com/u/Michael_Telgmann)\
**Post date:** [5. April 2016 um 12:57 UTC](https://forum.shopware.com/t/ubersetzung-backend-plugins/34374/11 "2016-04-05T12:57:13Z")

</div>

Hatte dein edit zu spät gelesen 🙂

versuche mal folgendes:

```
//{namespace name="plugin/data_structure/backend/location"}
Ext.define('Shopware.apps.Location.view.detail.Location', {
    extend: 'Shopware.model.Container',
    padding: 20,

    initComponent: function () {
        var me = this;
        
        if (me.plugins === undefined) {
            me.plugins = [];
        }

        me.plugins.push(
            {
                pluginId: 'translation',
                ptype: 'translation',
                translationType: 'mein-eigener-translation-type'
            }
        );
        me.callParent(arguments);
    },

    getForm: function () {
        return this;
    },

    getRecord: function () {
        return this.record;
    },

    getFields: function () {
        var me = this;

        return {
            items: [
                me.down('[name=address]'),
                me.down('[name=city]')
            ]
        };
    },

    configure: function () {
        return {
            controller: 'Location',
            fieldSets: [{
                title: '{s name=list_window_location}Location{/s}',                
                fields: {
                    active : { fieldLabel: '{s name=list_window_active}Active{/s}' },
                    name : { fieldLabel: '{s name=list_window_name}Name{/s}', allowBlank: false },
                    address : { fieldLabel: '{s name=list_window_address}Address{/s}', translatable: true, translationName: 'addressTranslation' },
                    zip : { fieldLabel: '{s name=list_window_zip}Zip{/s}' },
                    city : { fieldLabel: '{s name=list_window_city}City{/s}', translatable: true, translationName: 'cityTranslation' }
                }
             }
            }]
        };
    }
});

```

Es scheint da noch einen Fehler in den Backend Komponenten zu geben im Zusammenhang mit den Übersetzungsplugin. Durch die zusätzlichen Methoden umgehen wir dieses Problem

---

<div class="post-metadata">

**Author:** ![DannyDan](https://avatars.discourse-cdn.com/v4/letter/d/c2a13f/32.png) [@DannyDan](https://forum.shopware.com/u/DannyDan)\
**Post date:** [5. April 2016 um 13:25 UTC](https://forum.shopware.com/t/ubersetzung-backend-plugins/34374/12 "2016-04-05T13:25:00Z")

</div>

Super!

Besten dank für die tolle Unterstützung. So&nbsp;funktioniert das ganze endlich.

---

<div class="post-metadata">

**Author:** ![uehler](https://avatars.discourse-cdn.com/v4/letter/u/f14d63/32.png) [@uehler](https://forum.shopware.com/u/uehler)\
**Post date:** [6. Juni 2016 um 15:26 UTC](https://forum.shopware.com/t/ubersetzung-backend-plugins/34374/13 "2016-06-06T15:26:12Z")

</div>

Hi Michael,

danke für deine Antwort, hat mir sehr weiter geholfen!

Allerdings habe ich noch ein Problem mit Textareas festgestellt. Hier hat das Übersetzungsfenster dann zwei Textareas. Eine ausgegraute und eine, welche ich nochmal übersetzen könnte. Ich kann zwar ganz normal Übersetzungen speichern, anschließend verschwindet aber die Textarea im eigentlichen Pluginfenster.

Ist das auch ein Fehler in den Komponenten oder liegt das an meinem Code? Falls das ein Shopwarefehler ist, weißt du da auch einen Workaround?

&nbsp;

EDIT: es lag an der Zeile “id: ‘reviewContent’,”. Man darf einem Feld, das übersetzt werden soll, scheinbar keine ID zuweisen.

&nbsp;

```
//{namespace name="backend/ExpertReviews"}
//{block name="backend/expert_reviews/view/detail/reviews_container"}
Ext.define('Shopware.apps.ExpertReviews.view.detail.ReviewsContainer', {
    extend: 'Shopware.model.Container',
    alias: 'widget.detail-reviews-container',
    padding: 20,

    title: 'Reviews',

    /**
     * init translation
     */
    initComponent: function () {
        var me = this;

        if (me.plugins === undefined) {
            me.plugins = [];
        }

        me.plugins.push(
            {
                ptype: 'translation',
                pluginId: 'translation',
                translationType: 'swf_expert_reviews_review' // Ein eindeutiger Name
            }
        );

        me.callParent(arguments);
    },

    /**
     * workaround for shopware bug
     */
    getForm: function () {
        return this;
    },

    /**
     * workaround for shopware bug
     */
    getRecord: function () {
        return this.record;
    },

    /**
     * workaround for shopware bug
     */
    getFields: function () {
        var me = this;

        return {
            items: [
                me.down('[name=content]'),
                me.down('[name=linkText]')
            ]
        };
    },

    configure: function () {
        return {
            controller: 'Reviews', // php controller

            fieldSets: [
                {
                    title: 'Review bearbeiten',
                    id: "reviewDetailForm",

                    fields: {
                        articleID: {
                            fieldLabel: 'Artikel',
                            xtype: 'articlesearchfield'
                        },
                        expertID: {
                            fieldLabel: 'ExpertenID',
                            id: 'ExpertenID',
                            hidden: true
                        },
                        content: {
                            id: 'reviewContent',
                            fieldLabel: 'Meinung',
                            xtype: 'textarea',
                            height: 90,
                            grow: true,
                            allowBlank: false,
                            translatable: true,
                            translationName: 'content'
                        },
                        rating: {
                            fieldLabel: 'Rating',
                            maxValue: 5
                        },
                        teaser: {
                            fieldLabel: 'Teaser'
                        },
                        teaserImage: {
                            fieldLabel: 'TeaserImage',
                            xtype: 'base-element-media'
                        },
                        linkText: {
                            fieldLabel: 'Linktext',
                            translatable: true,
                            translationName: 'linkText'
                        }
                    },
                    layout: 'fit'
                }
            ]
        };
    }
});
//{/block}

```

&nbsp;

---

<div class="post-metadata">

**Author:** ![Oliver\_Skroblin](https://avatars.discourse-cdn.com/v4/letter/o/6bbea6/32.png) [@Oliver\_Skroblin](https://forum.shopware.com/u/Oliver_Skroblin)\
**Post date:** [8. Juni 2016 um 14:10 UTC](https://forum.shopware.com/t/ubersetzung-backend-plugins/34374/14 "2016-06-08T14:10:52Z")

</div>

Hi,

&nbsp;

habe gerade den Thread gelesen und gesehen dass dies in den Backend Komponenten gar nicht vorgesehen ist bisher. Die Lösung von Michael hat dir ja schon weiter geholfen. Dadurch sind jedoch nur die Felder von dem einem Shopware.model.Container übersetzbar.&nbsp;

Habe hierfür im Shopware.window.Detail gerade eine Konfigurations Möglichkeit eingebaut:

> <https://github.com/shopware/shopware/commit/3f1d1a17c2b60f93000f951639fcb783512116a3>

Dadurch sind alle FieldSets im Fenster unter dem gleichen Key übersetzbar.

&nbsp;

---

<div class="post-metadata">

**Author:** ![uehler](https://avatars.discourse-cdn.com/v4/letter/u/f14d63/32.png) [@uehler](https://forum.shopware.com/u/uehler)\
**Post date:** [8. Juni 2016 um 14:16 UTC](https://forum.shopware.com/t/ubersetzung-backend-plugins/34374/15 "2016-06-08T14:16:25Z")

</div>

Ach großartig, danke 🙂
