Pergunta

Criei minha própria seção (diga "Empresa") em 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>

Criei 2 módulos adicionando seu próprio grupo na seção Empresa.Esses grupos são exibidos conforme pretendido.Ambos os módulos estão bem configurados para lidar com traduções adminhtml.

Módulo 1 :

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

e Módulo 2:

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

Então aqui está meu problema :Criei o Módulo 2 antes do Módulo 1.Desde que o Módulo 2 estivesse sozinho na seção Empresa, minhas strings foram traduzidas corretamente.Assim que criei o Módulo 1 e adicionei seu grupo na seção Empresa, apenas os rótulos e comentários do Módulo 1 foram traduzidos.

Parece que apenas Company_Module1.csv é usado.Qualquer string em Company_Module2.csv é ignorado.Se eu copiar meu Company_Module2.csv conteúdo em Company_Module1.csv arquivo, então o Módulo 2 agora está traduzido corretamente.É muito estranho porque configurei explicitamente o Módulo 2 para traduzir de Company_Module2.csv e não de Company_Module1.csv.

Alguém pode explicar esse comportamento?Eventualmente, isso me ajudará a entender o que fiz de errado e consertar.Obrigado !

Foi útil?

Solução

Para entender esse comportamento você precisa saber como o Magento lê seus arquivos de configuração.

Primeiro, todos os arquivos XML são mesclados em uma grande estrutura.O resultado é assim:

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

Então a maioria dos valores são acessados ​​via XPath ou convertidos em uma estrutura de array associativa.Essa estrutura seria algo como

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

Mas um array não pode ter a mesma chave duas vezes, então ele termina com apenas um valor.

Solução

Sempre use exclusivo identificadores em seus arquivos de configuração, onde você puder escolhê-los por conta própria.

Deveria ser:

<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>

Além disso, em system.xml, você não especificou qual módulo deve ser usado, isso pode causar um comportamento inesperado se houver traduções conflitantes.Melhorar:

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

Mas isso não está relacionado ao seu problema

Licenciado em: CC-BY-SA com atribuição
Não afiliado a magento.stackexchange
scroll top