Apakah ada metode untuk mengetahui file CSV terjemahan mana yang digunakan dalam file template phtml saat ini?
sumber
Apakah ada metode untuk mengetahui file CSV terjemahan mana yang digunakan dalam file template phtml saat ini?
Saya menganggap Anda maksud terjemahan di $this->__('...')
mana tidak ada helper explict digunakan. Maka itu tergantung pada ruang lingkup modul blok
Kelas blok yang digunakan untuk merender templat. Anda harus dapat menentukannya dari tata letak file XML, tetapi beberapa blok dibuat secara terprogram, dalam hal ini Anda harus mencari dalam kode. Jika Anda beruntung, kelas blok didokumentasikan dalam templat itu sendiri, seperti ini:
/** @var $this Mage_Catalog_Block_Product_List */
atau seperti ini:
/** @see Mage_Catalog_Block_Product_List */
Cakupannya adalah modul yang dimiliki kelas ini (seperti Mage_Catalog
). Tapi hati-hati dengan penulisan ulang kelas. Jika kelas blok telah ditulis ulang oleh ekstensi, cakupan akan berubah ke ekstensi ini.
module_name
telah disetel (misalnya melalui tata letak XML), ini akan diutamakan.getModuleName()
metode, ruang lingkup yang dikembalikan dari metode ini digunakan.Sekarang setelah Anda mengetahui ruang lingkupnya, Anda dapat mencari file CSV yang sesuai, yaitu yang didefinisikan dalam modul ini config.xml
. Bisa juga lebih dari satu, tetapi konvensi yang diikuti secara umum adalah memiliki satu file per modul dalam formulir Module_Name.csv
.
Jika file ini berisi string yang akan diterjemahkan, Anda menemukannya, kecuali jika Anda memiliki translate.csv
dalam tema Anda, yang mengesampingkan terjemahan untuk cakupan yang tepat ini (seperti "Module_Name::Foo","Foo"
:).
Jika tidak ada di keduanya, cari terjemahan tanpa awalan lingkup modul di translate.csv
(jika ada).
Jika tidak ada di sana, cari di semua file CSV modul lainnya . Yang dari modul yang dimuat pertama, menang (yaitu modul inti pertama, kemudian menurut abjad, menghormati dependensi). Perhatikan bahwa fallback ini hanya digunakan saat tidak dalam mode pengembang.
Jika Anda ingin memastikan, dari mana file terjemahan tertentu pada halaman ini berasal, saya dapat merekomendasikan Anda ekstensi bebas TranslationHints ( DISCLAIMER: saya menulis itu)
Dapatkan di sini: https://github.com/schmengler/TranslationHints
Kecuali jika Anda menguji unit, Anda biasanya tidak terlalu peduli dengan terjemahan csv mana yang digunakan karena semuanya digabungkan sebelum Magento memulai terjemahan apa pun.
Namun jika Anda masih ingin mengetahuinya, pertama-tama gunakan file layout xml untuk mengetahui kelas blok apa yang sedang digunakan. Jika Anda menemukan kelas blok, maka ia akan menggunakan config.xml dari modul itu. Jika tidak ada kelas blok yang ditentukan dalam tata letak Anda mungkin perlu mencari di kelas blok induk dan pengontrol.
Hal utama yang perlu diketahui adalah bahwa templat menggunakan fungsi terjemahan __ dari kelas blok terkait, dan kelas blok menggunakan modul __ fungsi helper class Data.php helper-nya.
Sepertinya Anda ingin tetap teratur ketika Anda menambahkan terjemahan Anda. Dengan begitu banyak file CSV untuk terjemahan, mengapa memilih file acak, mengapa tidak menambahkannya ke file CSV yang tepat?
Berikut adalah contoh yang sedang saya kerjakan: Misalkan Anda mengedit halaman akun pelanggan, dan Anda telah mengubah buku alamat menjadi Alamat Saya . Sekarang tidak ada terjemahan bahasa Prancis yang menunjukkan Alamat Saya .
Cara menemukan file CSV yang tepat adalah dengan mencari terjemahan yang ada di bagian situs yang sama. Item Pesanan Saya / Mes Perintah berada di bagian yang sama dari situs, sehingga saya dapat menjalankan pencarian:
Jadi, melihat ini dengan sedikit menebak, file terbaik untuk memodifikasi adalah locale / fr_FR / Mage_Sales.csv. Setelah melakukan perubahan, jangan lupa menyegarkan Terjemahan di System> Cache Management !
Selain: perhatikan opsi case-insensitive;
-iname
untukfind
, dan-i
untukgrep
. Ini mengurangi upaya yang Anda butuhkan untuk berburu. The--color
pilihan tidak mencerminkan sini, tapi output akan jauh lebih mudah dibaca dibandingkan dengan apa yang Anda lihat di sini.sumber
Metode terjemahan __ () yang digunakan dalam templat ada di file /app/code/core/Mage/Core/Block/Abstract.php dan menggunakan nama modul untuk menemukan terjemahan yang benar. Itu membangun sebuah array dalam format berikut untuk digunakan untuk terjemahan:
Jika Anda ingin melihat nama modul apa yang digunakan templat, Anda dapat memanggil suatu fungsi:
Maka harus ada file terjemahan yang cocok dengan string ini. Sebagai contoh bagi saya pada halaman tampilan kategori fungsi ini akan mengembalikan * Mage_Catalog * dan kemudian dari ini saya dapat menemukan file terjemahan Mage_Catalog.csv
sumber