Mengelola File Terjemahan Magento csv

22

Seiring waktu berlalu, tim inti Magento telah menambahkan semakin banyak paket bahasa default ke

app/locale 

map. Apakah ada cara kanon untuk mengelola file terjemahan Anda sendiri sehingga tidak mengganggu peningkatan sistem di masa mendatang? yaitu saya ingin mengubah beberapa label di Magento, jadi saya edit

app/locale/en_US/Mage_Sales.csv

langsung. Jika kami meningkatkan Magento, perubahan saya akan terhapus. Apakah fitur tema lokal cukup untuk ini? (apakah itu menangani file modul tertentu, atau hanya translate.csv). Atau lebih baik menulis ulang model terjemahan untuk memuat file dari lokasi yang berbeda? Atau sesuatu yang lain?

Alan Storm
sumber

Jawaban:

17

Coba ini.

Singkatnya, tentukan file terjemahan tambahan di bawah XPath terjemahan modul inti dan tempatkan pasangan CSV utama Anda di sana.

<frontend>
    <translate>
        <modules>
            <Mage_Sales>
                <files>
                    <mr_storms_wicked_translations>Mage_Sales_Custom.csv</mr_storms_wicked_translations>
                </files>
            </Mage_Sales>
        </modules>
    </translate>
</frontend>
tanda batas
sumber
5
Kamu terlalu cepat. Saya mulai kehilangan itu.
Marius
15

Di samping translate.csvdan terjemahan non-portabel inline ada cara lain. Saya melakukannya seperti ini.

Setiap modul mendukung lebih dari satu file terjemahan.

Jika Anda menambahkan ini di config.xml:

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

kedua file [Namespace]_[Module].csvdan [Namespace]_[Module]_version2.csvakan dimuat untuk terjemahan.

dan mereka akan diproses sesuai dengan urutannya.

Jadi, jika Anda perlu misalnya menambah / memodifikasi sesuatu di Mage_Sales.csvjangan mengedit file, cukup buat modul yang menambahkan file lain ke daftar file terjemahan.

Sesuatu seperti ini:
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>

dan pastikan Anda membuat modul bergantung Mage_Sales.
Anda juga dapat membuat modul "satu ukuran cocok untuk semua" untuk mengelola terjemahan. Cukup tambahkan file terjemahan alternatif untuk setiap modul yang Anda butuhkan dan pastikan modul baru ini bergantung pada semuanya.

Marius
sumber
Apakah hanya melihat app/locale/**/Easylife_Sales.csvfile ini? Saya berasumsi bahwa itu juga akan memungkinkan subfolder selama Anda tahu pemisah direktori untuk sistem file Anda?
pspahn
Saya kira Anda dapat menggunakan subfolder jika Anda mau. Saya tidak pernah mencobanya.
Marius
9

File CSV yang terletak di app/localeharus dianggap sebagai file inti dan tidak dimodifikasi. Saya menemukan bahwa cara terbaik untuk menambahkan terjemahan khusus adalah memasukkannya ke dalamapp/design/frontend/{package}/{theme}/locale/{locale}/translate.csv

Harap dicatat bahwa Anda dapat menggunakan nama modul dalam translate.csvfile juga menggunakan "Mage_Adminhtml::Sales","Sales"bukan "Sales","Sales". Ini juga memungkinkan Anda untuk menggunakan terjemahan yang dirancang khusus untuk tema tertentu.

Segera
sumber
1
File lokal tema adalah cara yang baik dan cepat dalam melakukan sesuatu tetapi bagaimana jika Anda memiliki banyak tema dengan contoh yang sama?
Marius
2
Saya hampir selalu lebih suka menggunakan terjemahan tema khusus - terkadang tema memiliki lebih sedikit ruang dan saya perlu menggunakan singkatan. Ini juga membuat pengujian tema WAY lebih sederhana.
Pronto
@Pronto Saya telah melakukan apa yang Anda katakan tetapi untuk beberapa alasan Magento hanya akan memuat translate.csv jika ada app/locale/, bagaimana cara saya mengatakannya untuk memuatnya app/design/frontend/{package}/{theme}/locale/? Lihat pertanyaan saya di sini: stackoverflow.com/questions/26554195/…
Justin
4

Anda dapat mengedit / membuat desain / tema spesifik "translate.csv". Untuk mengganti terjemahan dari "modul-terjemahan-file". misalnya "Mage_Catalog.csv":

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

Jadi Aturannya adalah "Module Namespace :: string yang akan diterjemahkan", "string yang diterjemahkan". Saya pikir ini adalah Aturan terakhir dari alur kerja terjemahan Magento.

roman204
sumber
1

Di SemExpert kami melakukan hal itu. Kami memiliki paket terjemahan es_AR kami sendiri (dengan file CSV dan templat email) dan kemudian semua penyesuaian dilakukan dengan translate.csv atau dengan fitur terjemahan sebaris (dalam kasus pengguna akhir yang sangat jarang).

Kami tidak mengambil risiko (untuk saat ini) kehilangan file terjemahan karena pemutakhiran Magento karena sangat tidak mungkin mereka akan mendukung es_AR di luar kotak, tetapi kami menderita Magento membuat perubahan kecil pada string mereka (seperti menambahkan '.' Di akhir kalimat) yang membuat string bahasa Inggris muncul ketika Anda mengharapkannya paling sedikit.

Saya sudah mulai mengembangkan modul kecil untuk memonitor string terjemahan yang kami gunakan setiap kali versi Mage baru dirilis. Anda dapat menemukannya di sini: https://github.com/barbazul/SemExpert_TranslationDoctor

barbazul
sumber