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.