Verwalten von Magento CSV-Übersetzungsdateien


22

Mit der Zeit hat das Magento-Kernteam immer mehr Standard-Sprachpakete hinzugefügt

app/locale 

Mappe. Gibt es einen Canon-Weg, um Ihre eigenen Übersetzungsdateien so zu verwalten, dass sie zukünftige System-Upgrades nicht beeinträchtigen? dh ich möchte einige Labels in Magento ändern, also bearbeite ich

app/locale/en_US/Mage_Sales.csv

direkt. Wenn wir Magento aktualisieren, werden meine Änderungen gelöscht. Reicht das Gebietsschema für dieses Thema aus? (Handelt es sich um modulspezifische Dateien oder nur translate.csv). Oder ist es besser, die Übersetzungsmodelle neu zu schreiben, um Dateien von einem anderen Speicherort zu laden? Oder etwas anderes?

Antworten:


17

Versuche dies.

Zusammenfassend können Sie eine zusätzliche Übersetzungsdatei unter dem Übersetzungs-XPath des Kernmoduls angeben und Ihre übergeordneten CSV-Paare dort ablegen.

<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
Du warst zu schnell. Ich fange an, es zu verlieren.
Marius

15

Neben dem translate.csvund dem nicht portablen Inline-Übersetzer gibt es noch einen anderen Weg. So mach ich es.

Jedes Modul unterstützt mehr als eine Übersetzungsdatei.

Wenn Sie dies hinzufügen in config.xml:

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

beide Dateien [Namespace]_[Module].csvund [Namespace]_[Module]_version2.csvwerden zur Übersetzung geladen.

und sie werden in der Reihenfolge verarbeitet, in der sie deklariert sind.

Wenn Sie also zum Beispiel etwas in der Mage_Sales.csvDatei hinzufügen / ändern müssen, bearbeiten Sie die Datei nicht, sondern erstellen Sie ein Modul, das der Liste der Übersetzungsdateien eine weitere Datei hinzufügt.

Etwas wie das:
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>

und stellen Sie sicher, dass Sie das Modul abhängig machen Mage_Sales.
Sie können auch ein "One Size Fits All" -Modul zum Verwalten der Übersetzung erstellen. Fügen Sie einfach eine alternative Übersetzungsdatei für jedes benötigte Modul hinzu und stellen Sie sicher, dass dieses neue Modul von allen Modulen abhängt.


Wird es nur nach app/locale/**/Easylife_Sales.csvdieser Datei suchen ? Ich gehe davon aus, dass es auch Unterordner zulässt, solange Sie das Verzeichnis-Trennzeichen für Ihr Dateisystem kennen?
Pspahn

Ich denke, Sie können Unterordner verwenden, wenn Sie möchten. Ich habe es einfach nie ausprobiert.
Marius

9

CSV-Dateien in app/localesollten als Kerndateien betrachtet und nicht geändert werden. Ich finde, dass der beste Weg, eine benutzerdefinierte Übersetzung hinzuzufügen, darin besteht, sie in einzufügenapp/design/frontend/{package}/{theme}/locale/{locale}/translate.csv

Bitte beachten Sie, dass Sie anstelle von auch Modulnamen in translate.csvDateien verwenden können . Auf diese Weise können Sie auch Übersetzungen verwenden, die auf bestimmte Themen zugeschnitten sind."Mage_Adminhtml::Sales","Sales""Sales","Sales"


1
Die Theme-Locale-Datei ist eine gute und schnelle Methode, aber was ist, wenn Sie mehrere Themes auf derselben Instanz haben?
Marius

2
Ich bevorzuge fast immer themenspezifische Übersetzungen - manchmal hat das Thema weniger Platz und ich muss stattdessen Abkürzungen verwenden. Dies vereinfacht auch das Testen von Themen.
Pronto

@Pronto Ich habe getan, wie Sie sagten, aber aus irgendeinem Grund wird Magento translate.csv nur laden, wenn es in app/locale/ist. Wie kann ich es anweisen, es app/design/frontend/{package}/{theme}/locale/stattdessen von zu laden ? Siehe meine Frage hier: stackoverflow.com/questions/26554195/…
Justin

4

Sie können das design- / themenspezifische "translate.csv" bearbeiten / erstellen. So überschreiben Sie eine Übersetzung aus einer "Modul-Übersetzungsdatei". Zum Beispiel "Mage_Catalog.csv":

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

Die Regel lautet also "Modul-Namespace :: zu übersetzende Zeichenfolge", "übersetzte Zeichenfolge". Ich denke, es ist die letzte Regel des Magento-Übersetzungs-Workflows.


1

Bei SemExpert machen wir genau das. Wir haben unser eigenes es_AR-Übersetzungspaket (mit CSV-Dateien und E-Mail-Vorlagen), und alle Anpassungen werden entweder über translate.csv oder über die Inline-Übersetzungsfunktion (in sehr seltenen Fällen für Endbenutzer) vorgenommen.

Wir riskieren (vorerst) nicht, Übersetzungsdateien aufgrund eines Magento-Upgrades zu verlieren, da es sehr unwahrscheinlich ist, dass es_AR von Anfang an unterstützt wird, aber wir leiden darunter, dass Magento kleine Änderungen an ihren Zeichenfolgen vornimmt (wie das Hinzufügen eines '.' Bei das Ende eines Satzes), die englische Zeichenfolgen erscheinen lassen, wenn Sie sie am wenigsten erwarten.

Ich habe begonnen, ein kleines Modul zur Überwachung von Übersetzungszeichenfolgen zu entwickeln, das wir verwenden, wenn eine neue Mage-Version veröffentlicht wird. Sie finden es hier: https://github.com/barbazul/SemExpert_TranslationDoctor

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.