# CrudService - arrayStore übersetzen?

**URL:** https://forum.shopware.com/t/crudservice-arraystore-ubersetzen/58300
**Category:** Programmierung
**Created:** [28. Februar 2019 um 07:34 UTC](https://forum.shopware.com/t/crudservice-arraystore-ubersetzen/58300 "2019-02-28T07:34:24Z")
**Posts on this page:** 4
**Page:** 1

<div class="post-metadata">

### Author: ![DenKon26](https://avatars.discourse-cdn.com/v4/letter/d/5e9695/32.png) [@DenKon26](https://forum.shopware.com/u/DenKon26)
#### Post date: [28. Februar 2019 um 07:34 UTC](https://forum.shopware.com/t/crudservice-arraystore-ubersetzen/58300/1 "2019-02-28T07:34:24Z")

</div>

Hallo Zusammen,

&nbsp;

Ich erstelle gerade ein Plugin welches ein DropDown Freitextfeld zur Verfügung stellt (combobox).

Gibt es eine Möglichkeit den arrayStore direkt beim Anlegen über den CrudService zu übersetzen?

Bisher mache ich folgendes:

&nbsp;

```
$crudService->update($table, 'my_field_position', 'combobox', [
    'label' => 'Position',
    'arrayStore' => [
        ['key' => 'top_left', 'value' => 'Oben links / Top left'],
        ['key' => 'top_right', 'value' => 'Oben rechts / Top right'],
        ['key' => 'bottom_left', 'value' => 'Unten links / Bottom left'],
        ['key' => 'bottom_right', 'value' => 'Unten rechts / Bottom right']
    ],
    'displayInBackend' => true,
]);

```

Ich suche nun nach einer Möglichkeit die ‚values‘ des arrayStore zu übersetzen. Sowas in der Richtung wie:

```
$crudService->update($table, 'my_field_position', 'combobox', [
    'label' => 'Position',
    'arrayStore' => [
        ['key' => 'top_left', 'value' => [
            'de_DE' => 'Oben links',
            'en_GB' => 'Top left'
            ]
        ],
        ['key' => 'top_right', 'value' => 'Oben rechts / Top right'],
        ['key' => 'bottom_left', 'value' => 'Unten links / Bottom left'],
        ['key' => 'bottom_right', 'value' => 'Unten rechts / Bottom right']
    ],
    'displayInBackend' => true,
]);

```

&nbsp;

Das hatte ich getestet, funktioniert aber nicht…

Hat jemand eine Idee oder weiß wie es geht?

&nbsp;

Viele Grüße

Dennis

---

<div class="post-metadata">

### Author: ![sschreier](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/sschreier/32/23296_2.png) [@sschreier](https://forum.shopware.com/u/sschreier)
#### Post date: [28. Februar 2019 um 17:47 UTC](https://forum.shopware.com/t/crudservice-arraystore-ubersetzen/58300/2 "2019-02-28T17:47:08Z")

</div>

Hallo,

es lassen sich nur das label, der supportText und der helpText übersetzen, siehe: [Attribute system](https://developers.shopware.com/developers-guide/attribute-system/#example:-translation-for-s_article_attributes.my_column) . Beim arrayStore musst du es also weiterhin “Denglisch” machen. Übersetzungen gehören aber so und so in snippet - Dateien, siehe verlinkte Dokumentation.

Grüße

Sebastian

---

<div class="post-metadata">

### Author: ![MrMDeluxe](https://avatars.discourse-cdn.com/v4/letter/m/4da419/32.png) [@MrMDeluxe](https://forum.shopware.com/u/MrMDeluxe)
#### Post date: [28. Februar 2019 um 18:07 UTC](https://forum.shopware.com/t/crudservice-arraystore-ubersetzen/58300/3 "2019-02-28T18:07:56Z")

</div>

Hallo Dennis,

&nbsp;

Du kannst den arrayStore auch von snippets (über)setzen lassen.

Dann musst Du kein „Denglisch“ verwenden.

Registriere Dich hierfür auf folgendes Event:

```
'Enlight_Controller_Action_PostDispatchSecure_Backend_AttributeData' 

```

Hier dann der zugehörige Event Handler:

```
public function onPostDispatchBackendAttributeData(\Enlight_Event_EventArgs $args)
{
    $request = $args->getSubject()->Request();

    if ($request->getActionName() == 'list' && !$request->getParam('raw')) {

        $view = $args->getSubject()->View();
        $columns = $view->data;
        $snippets = Shopware()->Container()->get('snippets')
		->getNamespace('backend/attribute_columns');

        foreach ($columns as $column) {
            $key = $column->getTableName() . '_' . $column->getColumnName() . '_';
            if ($snippet = $snippets->get($key . 'arrayStore')) {
                $column->setArrayStore($snippet);
            }
        }

        $view->data = $columns;
    }
}

```

Lege Dir dann unter dem namespace ‚backend/attribute\_columns‘

das Snippet ‚s\_articles\_attributes\_my\_field\_position\_arrayStore‘

mit folgenden values an

[de\_DE]

```
[{"key":"top_left","value":"Oben Lins"},{"key":"top_right","value":"Oben Rechts"},{"key":"bottom_left","value":"Unten Links"},{"key":"bottom_right","value":"Unten rechts"}]

```

[en\_GB]

```
[{"key":"top_left","value":"Top left"},{"key":"top_right","value":"Top right"},{"key":"bottom_left","value":"Bottom left"},{"key":"bottom_right","value":"Bottom right"}]

```

Voilà … arrayStore übersetzt 😉

---

<div class="post-metadata">

### Author: ![DenKon26](https://avatars.discourse-cdn.com/v4/letter/d/5e9695/32.png) [@DenKon26](https://forum.shopware.com/u/DenKon26)
#### Post date: [5. März 2019 um 09:40 UTC](https://forum.shopware.com/t/crudservice-arraystore-ubersetzen/58300/4 "2019-03-05T09:40:05Z")

</div>

> [@MrMDeluxe schrieb:](https://forum.shopware.com/profile/20458/MrMDeluxe "MrMDeluxe")
> 
> Hallo Dennis,
> 
> &nbsp;
> 
> Du kannst den arrayStore auch von snippets (über)setzen lassen.
> 
> Dann musst Du kein „Denglisch“ verwenden.
> 
> Registriere Dich hierfür auf folgendes Event:
> 
> ‚Enlight\_Controller\_Action\_PostDispatchSecure\_Backend\_AttributeData‘
> 
> Hier dann der zugehörige Event Handler:
> 
> public function onPostDispatchBackendAttributeData(\Enlight\_Event\_EventArgs $args)  
> {  
> $request = $args-\>getSubject()-\>Request();
> 
> if ($request-\>getActionName() == ‚list‘ && !$request-\>getParam(‚raw‘)) {
> 
> $view = $args-\>getSubject()-\>View();  
> $columns = $view-\>data;  
> $snippets = Shopware()-\>Container()-\>get(‚snippets‘)  
> -\>getNamespace(‚backend/attribute\_columns‘);
> 
> foreach ($columns as $column) {  
> $key = $column-\>getTableName() . ‚_’ . $column-\>getColumnName() . '_‘;  
> if ($snippet = $snippets-\>get($key . ‚arrayStore‘)) {  
> $column-\>setArrayStore($snippet);  
> }  
> }
> 
> $view-\>data = $columns;  
> }  
> }
> 
> Lege Dir dann unter dem namespace ‚backend/attribute\_columns‘
> 
> das Snippet ‚s\_articles\_attributes\_my\_field\_position\_arrayStore‘
> 
> mit folgenden values an
> 
> [de\_DE]
> 
> [{„key“:„top\_left“,„value“:„Oben Lins“},{„key“:„top\_right“,„value“:„Oben Rechts“},{„key“:„bottom\_left“,„value“:„Unten Links“},{„key“:„bottom\_right“,„value“:„Unten rechts“}]
> 
> [en\_GB]
> 
> [{„key“:„top\_left“,„value“:„Top left“},{„key“:„top\_right“,„value“:„Top right“},{„key“:„bottom\_left“,„value“:„Bottom left“},{„key“:„bottom\_right“,„value“:„Bottom right“}]
> 
> Voilà … arrayStore übersetzt 😉

Hat so geklappt!

&nbsp;

Ich musste mir allerdings statt $view-\>data die Columns mit $view-\>getAssign(‚data‘) holen und am Ende auch mit $view-\>assign(‚data‘, $columns) neu setzen. Das mit em Magic field hat aus unerklärlichen Gründen nicht funktioniert und das Columns-Array war leer.

&nbsp;

So funktioniert es wunderbar!
