Question

J'ai créé ma propre section (disons "Entreprise") sous admin 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>

J'ai créé 2 modules en ajoutant leur propre groupe dans la section Entreprise.Ces groupes sont affichés comme prévu.Les deux modules sont bien configurés pour gérer les traductions adminhtml.

Module 1 :

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

et Module 2 :

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

Voici donc mon problème :J'ai créé le module 2 avant le module 1.Tant que le module 2 était seul dans la section Entreprise, mes chaînes étaient correctement traduites.Dès que j'ai créé le module 1 et ajouté son groupe dans la section Entreprise, seuls les étiquettes et les commentaires du module 1 ont été traduits.

Il semble que seulement Company_Module1.csv est utilisé.N'importe quelle chaîne dans Company_Module2.csv est ignoré.Si je copie mon Company_Module2.csv contenu dans Company_Module1.csv fichier, le module 2 est maintenant correctement traduit.C'est très bizarre car j'ai explicitement configuré le module 2 pour traduire depuis Company_Module2.csv et pas de Company_Module1.csv.

Quelqu'un peut-il expliquer ce comportement ?Finalement, cela m'aidera à comprendre ce que j'ai fait de mal et à le réparer.Merci !

Était-ce utile?

La solution

Pour comprendre ce comportement, vous devez savoir comment Magento lit ses fichiers de configuration.

Tout d’abord, tous les fichiers XML sont fusionnés en une seule grande structure.Le résultat ressemble à ceci :

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

Ensuite, la plupart des valeurs sont accessibles via XPath ou converties en une structure de tableau associative.Cette structure ressemblerait à quelque chose comme

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

Mais un tableau ne peut pas avoir deux fois la même clé, il se retrouve donc avec une seule valeur.

Solution

Utilisez toujours unique identifiants dans vos fichiers de configuration, partout où vous pouvez les choisir vous-même.

Ça devrait être:

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

et

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

De plus, dans system.xml, vous n'avez pas spécifié quel module doit être utilisé, cela pourrait vous donner un comportement inattendu en cas de traductions contradictoires.Mieux:

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

Mais ce n'est pas lié à ton problème

Licencié sous: CC-BY-SA avec attribution
Non affilié à magento.stackexchange
scroll top