Gerenciando arquivos de tradução Magento csv

22

Com o passar do tempo, a equipe principal do Magento adicionou mais e mais pacotes de idiomas padrão ao

app/locale 

pasta. Existe uma maneira comum de gerenciar seus próprios arquivos de tradução, de modo que eles não interfiram nas futuras atualizações do sistema? ou seja, eu quero mudar alguns rótulos no Magento, então eu edito

app/locale/en_US/Mage_Sales.csv

diretamente. Se atualizarmos o Magento, minhas alterações serão apagadas. O recurso de localidade do tema é suficiente para isso? (ele lida com arquivos específicos do módulo ou apenas translate.csv). Ou é melhor reescrever os modelos de tradução para carregar arquivos de um local diferente? Ou alguma outra coisa?

Alan Storm
fonte

Respostas:

17

Tente isso.

Para resumir, especifique um arquivo de tradução adicional no XPath de tradução do módulo principal e coloque seus pares CSV substitutos nele.

<frontend>
    <translate>
        <modules>
            <Mage_Sales>
                <files>
                    <mr_storms_wicked_translations>Mage_Sales_Custom.csv</mr_storms_wicked_translations>
                </files>
            </Mage_Sales>
        </modules>
    </translate>
</frontend>
benmarks
fonte
5
Você foi muito rápido. Estou começando a perdê-lo.
Marius
15

Ao lado da translate.csvtradução inline e não portátil, existe outra maneira. Eu faço assim.

Cada módulo suporta mais de um arquivo de tradução.

Se você adicionar isso em config.xml:

    <translate>
        <modules>
            <[Namespace]_[Module]>
                <files>
                    <default>[Namespace]_[Module].csv</default>
                    <alternative>[Namespace]_[Module]_version2.csv</alternative>
                </files>
            </[Namespace]_[Module]>
        </modules>
    </translate>

ambos os arquivos [Namespace]_[Module].csve [Namespace]_[Module]_version2.csvserão carregados para tradução.

e eles serão processados ​​na ordem em que são declarados.

Portanto, se você precisar, por exemplo, adicionar / modificar algo no Mage_Sales.csvarquivo não edite, basta criar um módulo que adicione outro arquivo à lista de arquivos de tradução.

Algo assim:
app/code/local/Easylife/Sales/etc/config.xml

<?xml version="1.0"?>
<config>
    <modules>
        <Easylife_Sales>
            <version>0.0.1</version>
        </Easylife_Sales>
    </modules>
    <frontend>
        <translate>
            <modules>
                <Mage_Sales>
                    <files>
                        <alternative>Easylife_Sales.csv</alternative>
                    </files>
                </Mage_Sales>
            </modules>
        </translate>
    </frontend>
    <adminhtml>
        <translate>
            <modules>
                <Mage_Sales>
                    <files>
                        <alternative>Easylife_Sales.csv</alternative>
                    </files>
                </Mage_Sales>
            </modules>
        </translate>
    </adminhtml>
</config>

e certifique-se de fazer o módulo depender Mage_Sales.
Você também pode criar um módulo "tamanho único" para gerenciar a tradução. Basta adicionar um arquivo de tradução alternativo para qualquer módulo necessário e verifique se esse novo módulo depende de todos eles.

Marius
fonte
Ele apenas procurará app/locale/**/Easylife_Sales.csveste arquivo? Presumo que ele também permita subpastas, desde que você conheça o separador de diretório para o seu sistema de arquivos?
31414 pspahn #
Eu acho que você pode usar subpastas, se quiser. Eu apenas nunca tentei.
Marius
9

Os arquivos CSV localizados em app/localedevem ser considerados como arquivos principais e não modificados. Acho que a melhor maneira de adicionar tradução personalizada é colocá-las emapp/design/frontend/{package}/{theme}/locale/{locale}/translate.csv

Observe que você também pode usar nomes de módulos em translate.csvarquivos, em "Mage_Adminhtml::Sales","Sales"vez de "Sales","Sales". Isso também permite que você use traduções personalizadas para temas específicos.

Pronto
fonte
1
O arquivo de localidade do tema é uma maneira boa e rápida de fazer as coisas, mas e se você tiver vários temas na mesma instância?
Marius
2
Eu quase sempre prefiro usar traduções específicas do tema - às vezes, o tema tem menos espaço e preciso usar abreviações. Isso também simplifica o teste de temas.
Pronto
@Pronto Eu fiz o que você disse, mas por algum motivo o Magento só carrega o translate.csv se estiver app/locale/, como eu digo para ele carregar app/design/frontend/{package}/{theme}/locale/? Veja minha pergunta aqui: stackoverflow.com/questions/26554195/…
Justin
4

Você pode editar / criar o design / tema específico "translate.csv". Para substituir uma tradução de um "arquivo de tradução de módulo". por exemplo "Mage_Catalog.csv":

"Mage_Catalog::add to basket","into Basket"

Portanto, a regra é "Namespace do módulo :: string a ser traduzida", "string traduzida". Eu acho que é a última regra do fluxo de trabalho de tradução do Magento.

roman204
fonte
1

Na SemExpert, fazemos exatamente isso. Temos nosso próprio pacote de tradução es_AR (com arquivos CSV e modelos de email) e, em seguida, todas as personalizações são feitas pelo translate.csv ou pelo recurso de tradução embutida (em casos muito raros de usuário final).

Não corremos o risco (por enquanto) de perder arquivos de tradução devido à atualização do Magento, pois é muito improvável que eles suportem o es_AR imediatamente, mas sofremos com o Magento fazendo pequenas alterações em suas strings (como adicionar um '.' Em final de uma frase) que fazem as strings em inglês aparecerem quando você menos espera.

Comecei a desenvolver um pequeno módulo para monitorar as strings de tradução que usamos sempre que uma nova versão do Mage é lançada. Você pode encontrá-lo aqui: https://github.com/barbazul/SemExpert_TranslationDoctor

barbazul
fonte