Domanda

Ho creato la mia sezione (ad esempio "Azienda") sotto Amministratore system_config

<config>
    <sections>
        <company translate="label">
            <label>Company</label>
            <tab>service</tab>
            <frontend_type>text</frontend_type>
            <sort_order>400</sort_order>
            <show_in_default>1</show_in_default>
            <show_in_website>1</show_in_website>
            <show_in_store>1</show_in_store>
        </company >
    </sections>
</config>
.

Ho creato 2 moduli aggiungendo il proprio gruppo sotto la sezione aziendale. Questi gruppi sono visualizzati come previsto. Entrambi i moduli sono ben configurati per gestire le traduzioni adminhtml.

Modulo 1:

<config>
    <adminhtml>
        <translate>
            <modules>
                <company>
                    <files>
                        <default>Company_Module1.csv</default>
                    </files>
                </company>
            </modules>
        </translate>
    </adminhtml>
</config>
.

e modulo 2:

<config>
    <adminhtml>
        <translate>
            <modules>
                <company>
                    <files>
                        <default>Company_Module2.csv</default>
                    </files>
                </company>
            </modules>
        </translate>
    </adminhtml>
</config>
.

Quindi ecco il mio problema: Ho creato il modulo 2 prima del modulo 1. Finché il modulo 2 è stato solo nella sezione aziendale, le mie stringhe sono state tradotte correttamente. Non appena ho creato il modulo 1 e ha aggiunto il suo gruppo sotto la sezione aziendale, solo moduli 1 etichette e commenti sono stati tradotti.

Sembra che venga utilizzato solo Company_Module1.csv. Qualsiasi stringa in Company_Module2.csv viene ignorata. Se copia il mio contenuto Company_Module2.csv nel file Company_Module1.csv, il modulo 2 è ora tradotto correttamente. È molto strano perché ho configurato esplicitamente il modulo 2 per tradurre da Company_Module2.csv e non da Company_Module1.csv.

Qualcuno può spiegare questo comportamento? Alla fine questo mi aiuterà a capire cosa ho fatto di sbagliato e risolverlo. Grazie!

È stato utile?

Soluzione

Per capire questo comportamento è necessario sapere come Magento legge i suoi file di configurazione.

Innanzitutto, tutti i file XML vengono uniti in una grande struttura.Il risultato è simile a questo:

<config>
    <adminhtml>
        <translate>
            <modules>
                <company>
                    <files>
                        <default>Company_Module1.csv</default>
                        <default>Company_Module2.csv</default>
                    </files>
                </company>
            </modules>
        </translate>
    </adminhtml>
</config>
.

Quindi la maggior parte dei valori è accessibile tramite XPath o convertiti in una struttura di array associativa.Questa struttura sarebbe qualcosa come

'files' => array(
    'default' => 'Company_Module1.csv',
    'default' => 'Company_Module2.csv',
 )
.

Ma un array non può avere la stessa chiave due volte, quindi finisce con un solo valore.

Soluzione

Utilizzare sempre i identificatori Unique nei file di configurazione, ovunque puoi sceglierli da solo.

dovrebbe essere:

<config>
    <adminhtml>
        <translate>
            <modules>
                <company_module1>
                    <files>
                        <default>Company_Module1.csv</default>
                    </files>
                </company>
            </modules>
        </translate>
    </adminhtml>
</config>
.

e

<config>
    <adminhtml>
        <translate>
            <modules>
                <company_module2>
                    <files>
                        <default>Company_Module2.csv</default>
                    </files>
                </company>
            </modules>
        </translate>
    </adminhtml>
</config>
.


.

Inoltre, in System.xml, non hai specificato quale modulo dovrebbe essere utilizzato, questo potrebbe darti comportamenti inaspettati se ci sono traduzioni in conflitto.Meglio:

    <company translate="label" module="Company_Module1">
.

Ma questo non è correlato al tuo problema

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a magento.stackexchange
scroll top