Terjemahkan mode Pemeliharaan per situs web dalam pengaturan multi-situs web multi-domain
Apa cara yang tepat untuk menerjemahkan halaman Pemeliharaan (pelokalan) di lingkungan multi-situs web dan multi-domain?
Pengaturan dibuat menjadi:
- MAGENTO_ROOT / index.php
- MAGENTO_ROOT / uk / index.php
- MAGENTO_ROOT / us / index.php
- MAGENTO_ROOT / somecode / index.php
Mari kita asumsikan bahwa toko dapat diakses melalui:
- http://MagentoExample.com/index.php (default)
- http://MagentoExample.uk/ (uk)
- http://MagentoExample.us/ (kami)
- http://MagentoExample.com (somecode)
Saya dapat dengan mudah melihat beberapa solusi untuk itu tetapi semua dari mereka tampaknya lebih merupakan solusi daripada solusi yang bagus dan bersih.
Bagaimana Anda mengatasi masalah ini?
Jawaban:
Secara default Magento tidak mendukung terjemahan out-of-box untuk halaman kesalahan, dan memerlukan beberapa penyesuaian untuk memungkinkan fitur tersebut. Jadi secara teknis tidak ada cara yang tepat untuk melakukan itu.
Karena tumpukan penuh TIDAK diinisialisasi selama pembuatan kesalahan, fungsi terjemahan normal
$this->__('foobar');
tidak akan berfungsi dalam template.Beberapa detail tentang bagaimana halaman kesalahan dihasilkan dapat ditemukan di MageBase:
Salah satu pilihan adalah dengan hanya menyalin
errors/
ke masing-masing sub direktori Anda bahasa Andauk
,us
, dll dan memodifikasi template untuk mencerminkan bahasa entry point website pengguna akhir.Perhatikan
index.php
saja setiap tampilan Anda untuk menyertakan sub kesalahan relatif dokumen:Perlu diketahui juga ada template dasar untuk semua kesalahan, termasuk 404 di
page.html
Mungkin ada solusi yang lebih elegan tetapi karena Anda sudah menduplikasi
index.php
untuk tampilan yang berbeda, beberapa file mungkin tidak terlalu berantakan. Anda juga dapat memodifikasi template untuk menyertakan CSS tingkat atas dan gambar untuk menghemat redundansi.Anda juga dapat membuat file bahasa sama seperti yang Anda lakukan di lokalisasi standar Magento dan membaca nilai-nilai dengan
process.php
file, sebagai judul dan beberapa data lain yang akan membutuhkan lokalisasi sedang diatur di sana. Contoh sederhana menggunakan Varien_File_Csv untuk membaca file .CSV bahasa:Catatan tambahan: Karena tumpukan pada titik waktu berjalan saat ini mungkin tidak memungkinkan untuk
Varien_File_Csv
inklusi kelas menggunakan fungsi PHP internal fgetcsv mungkin merupakan alternatif yang lebih baik.Dan parsing file CSV bahasa yang diperlukan untuk mengisi data yang diperlukan dalam
process.php
file.Alternatif lain adalah dengan menambahkan Google translate atau alat pihak ketiga tersebut untuk secara otomatis menerjemahkan halaman kesalahan ke bahasa pengguna akhir.
Referensi:
sumber
Seperti disebutkan sebelumnya, tidak ada cara mudah untuk menerjemahkan halaman perawatan. Namun ada satu solusi untuk itu (yang memiliki sejumlah kelebihan / kekurangan) - gunakan beberapa ekstensi mode pemeliharaan, seperti ini:
http://www.magentocommerce.com/magento-connect/store-maintenance.html
Ini menampilkan halaman mode pemeliharaan SETELAH tumpukan Magento telah dimuat, yang berarti bahwa Anda perlu memiliki koneksi database dan beberapa hal lainnya. Karena itu juga lebih lambat dan membutuhkan lebih banyak sumber daya. Tetapi jika itu bukan masalah bagi Anda, itu membuat halaman pemeliharaan sepenuhnya dapat disesuaikan.
sumber
Memperbarui:
Temukan cara lain untuk halaman pemeliharaan yang diterjemahkan:
https://github.com/OpenMage/magento-lts/blob/1.9.3.x/errors/processor.php#L160-L162
Konstruktor halaman pemeliharaan menerima
skin
parameter POST untuk mengubah tata letak. Tampaknya menjadi cara yang disengaja, tetapi tidak didokumentasikan (belum) ...Tambahkan beberapa aturan penulisan ulang ke Anda
.htaccess
yang menambahkanskin
parameter ke URL Anda. Misalnya.Salin
errors/default
keerrors/french
Mungkin sedikit terlambat, tapi baik solusi bekerja, tanpa menyalin
error
direktori untuk setiap subfolder ..."Kerugian":
processor.php
untuk membaca yang dimodifikasilocal.xml
.Pengaturan dasar
Multi-situs multi-store set-up seperti ini, hanya differnce adalah bahwa saya telah menetapkan
MAGE_RUN_CODE
di.htaccess
bukanindex.php
. Untuk domain 1 saya tidak menggunakan yangRUN_CODE
lainnya seperti ...Selain jawaban terkait aku harus mengatur
RewriteBase
dalam.htaccess
untuk mencocokkan direktori lokal dan mengeditindex.php
dien
,fr
dan perubahanuntuk
Edit
errors/404.php
,503.php
danreport.php
Menggantikan
dengan
Dan tambahkan ini ke
errors/processor_multiwebsite.php
local.xml
Struktur baruAlih-alih pengaturan
<skin>
di tingkat pertama mencari situs web runcode / lokal terlebih dahuluTemplat
Tambahkan
503.phtml
, ..., CSS ke direktori yang cocok<runcode>-<locale>
default-default
(Bahasa default domain 1)default-en
default-fr
website1-default
(Bahasa default domain 2)Tidak ada duplikat CSS / gambar
<skin_base>
node kelocal.xml
page.phtml
file dari mis.href="css/styles.css"
ke<?php echo $this->getSkinBaseUrl('css/styles.css')?>
sumber