Bagaimana cara mengetahui file csv terjemahan mana yang digunakan dalam file phtml saat ini

8

Apakah ada metode untuk mengetahui file CSV terjemahan mana yang digunakan dalam file template phtml saat ini?

Bizboss
sumber

Jawaban:

3

Saya menganggap Anda maksud terjemahan di $this->__('...')mana tidak ada helper explict digunakan. Maka itu tergantung pada ruang lingkup modul blok

Ini tergantung pada beberapa faktor:

  1. 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.

  2. Jika properti module_nametelah disetel (misalnya melalui tata letak XML), ini akan diutamakan.
  3. Akhirnya, jika blok menimpa getModuleName()metode, ruang lingkup yang dikembalikan dari metode ini digunakan.

Apakah kita sudah sampai?

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.

  1. Jika file ini berisi string yang akan diterjemahkan, Anda menemukannya, kecuali jika Anda memiliki translate.csvdalam tema Anda, yang mengesampingkan terjemahan untuk cakupan yang tepat ini (seperti "Module_Name::Foo","Foo":).

  2. Jika tidak ada di keduanya, cari terjemahan tanpa awalan lingkup modul di translate.csv(jika ada).

  3. 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

Tangkapan layar: Petunjuk Penerjemahan

Fabian Schmengler
sumber
2

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.

Jay El-Kaake
sumber
1
"Biasanya kamu tidak terlalu peduli terjemahan mana yang digunakan csv karena mereka semua digabungkan sebelum Magento memulai terjemahan apa pun." - Kecuali pengujian unit untuk paket terjemahan yang ada. Modul saya biasanya gagal jika bahasa Inggris, Spanyol, atau Prancis hilang sebelum menjadikannya tim QA.
Luke A. Leber
1

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:

$ cd magento/app/
$ find . -iname '*.csv' | xargs grep -in --color 'Mes Commandes'
./locale/fr_FR/Mage_Sales.csv:73:"Back to My Orders","Retour à mes commandes"
./locale/fr_FR/Mage_Sales.csv:308:"My Orders","Mes commandes"
./locale/fr_FR/Mage_Sales.csv:309:"My Orders - Details","Mes commandes - Détails"
./locale/fr_FR/Mage_Oscommerce.csv:7:"Back to My Orders","Retour à mes commande "
./locale/fr_FR/Mage_Oscommerce.csv:51:"My Previous Orders","Mes commandes précédentes"
./locale/fr_FR/Mage_Customer.csv:215:"My Orders","Mes commandes"

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; -inameuntuk find, dan -iuntuk grep. Ini mengurangi upaya yang Anda butuhkan untuk berburu. The --colorpilihan tidak mencerminkan sini, tapi output akan jauh lebih mudah dibaca dibandingkan dengan apa yang Anda lihat di sini.

Anthony
sumber
0

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:

array(1) {
    [0]=> object(Mage_Core_Model_Translate_Expr)#161 (2) {
        ["_text":protected]=> string(18) "Orders and Returns"
        ["_module":protected]=> string(10) "Mage_Sales"
    }
}

Jika Anda ingin melihat nama modul apa yang digunakan templat, Anda dapat memanggil suatu fungsi:

 $this->getModuleName();

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

David Manners
sumber
Baris mana dalam file Abstract.php yang besar ini?
Vicky Dev