Gestione dei file di traduzione CSV Magento


22

Con il passare del tempo, il core team di Magento ha aggiunto sempre più language pack predefiniti a

app/locale 

cartella. Esiste un modo canonico per gestire i propri file di traduzione in modo che non interferiscano con futuri aggiornamenti del sistema? cioè voglio cambiare alcune etichette in Magento, quindi modifico

app/locale/en_US/Mage_Sales.csv

direttamente. Se aggiorniamo Magento, le mie modifiche verranno cancellate. La funzione locale del tema è sufficiente per questo? (gestisce file specifici del modulo o semplicemente translate.csv). Oppure è meglio riscrivere i modelli di traduzione per caricare file da una posizione diversa? O qualcos'altro?

Risposte:


17

Prova questo.

Per riassumere, specifica un file di traduzione aggiuntivo sotto XPath di traduzione del modulo principale e inserisci le tue coppie CSV di sostituzione.

<frontend>
    <translate>
        <modules>
            <Mage_Sales>
                <files>
                    <mr_storms_wicked_translations>Mage_Sales_Custom.csv</mr_storms_wicked_translations>
                </files>
            </Mage_Sales>
        </modules>
    </translate>
</frontend>

5
Eri troppo veloce. Sto iniziando a perderlo.
Marius

15

Oltre alla translate.csvtraduzione in linea non portatile e c'è un altro modo. Lo faccio così.

Ogni modulo supporta più di un file di traduzione.

Se lo aggiungi in config.xml:

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

entrambi i file [Namespace]_[Module].csve [Namespace]_[Module]_version2.csvverranno caricati per la traduzione.

e saranno elaborati nell'ordine in cui sono dichiarati.

Quindi, se ad esempio hai bisogno di aggiungere / modificare qualcosa nel Mage_Sales.csvnon modificare il file, basta creare un modulo che aggiunge un altro file all'elenco dei file di traduzione.

Qualcosa come questo:
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 assicurati di far dipendere il modulo Mage_Sales.
Puoi anche creare un modulo "taglia unica" per gestire la traduzione. Basta aggiungere un file di traduzione alternativo per qualsiasi modulo necessario e assicurarsi che questo nuovo modulo dipenda da tutti.


Guarderà solo app/locale/**/Easylife_Sales.csvquesto file? Presumo che consentirà anche sottocartelle fintanto che conosci il separatore di directory per il tuo filesystem?
pspahn,

Immagino che tu possa usare le sottocartelle se vuoi. Non l'ho mai provato.
Marius

9

I file CSV che si trovano in app/localedovrebbero essere considerati file core e non modificati. Trovo che il modo migliore per aggiungere una traduzione personalizzata sia inserirliapp/design/frontend/{package}/{theme}/locale/{locale}/translate.csv

Si noti che è possibile utilizzare i nomi dei moduli nei translate.csvfile utilizzando anche "Mage_Adminhtml::Sales","Sales"anziché "Sales","Sales". Ciò consente anche di utilizzare traduzioni personalizzate per temi specifici.


1
Il file delle impostazioni locali del tema è un modo efficace e veloce di fare le cose, ma cosa succede se si hanno più temi nella stessa istanza?
Marius

2
Preferisco quasi sempre usare traduzioni specifiche per tema - a volte il tema ha meno spazio e devo usare abbreviazioni. Questo semplifica anche il test del tema.
Pronto

@Pronto Ho fatto come hai detto, ma per qualche motivo Magento caricherà translate.csv solo se è presente app/locale/, come posso invece dirlo per caricarlo app/design/frontend/{package}/{theme}/locale/? Vedi la mia domanda qui: stackoverflow.com/questions/26554195/…
Justin

4

È possibile modificare / creare il design / tema specifico "translate.csv". Per sovrascrivere una traduzione da un "file-traduzione-modulo". ad esempio "Mage_Catalog.csv":

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

Quindi la regola è "Modulo Namespace :: stringa da tradurre", "stringa tradotta". Penso che sia l'ultima regola del flusso di lavoro di traduzione di Magento.


1

In SemExpert facciamo esattamente questo. Abbiamo il nostro pacchetto di traduzione es_AR (con file CSV e modelli di e-mail) e quindi tutte le personalizzazioni vengono eseguite da translate.csv o dalla funzione di traduzione in linea (in casi molto rari per l'utente finale).

Non rischiamo (per ora) di perdere i file di traduzione a causa dell'aggiornamento di Magento in quanto è molto improbabile che supporteranno mai es_AR fuori dalla scatola, ma soffriamo del fatto che Magento apporti piccole modifiche alle loro stringhe (come aggiungere un '.' A la fine di una frase) che fa apparire le stringhe inglesi quando meno te le aspetti.

Ho iniziato a sviluppare un piccolo modulo per monitorare le stringhe di traduzione che utilizziamo ogni volta che viene rilasciata una nuova versione di Mage. Puoi trovarlo qui: https://github.com/barbazul/SemExpert_TranslationDoctor

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.