Magento Menampilkan lokalisasi yang tepat berdasarkan Lokasi

17

Saya ingin mengonfigurasi situs Magento agar dapat mengenali bahasa default dan lokasi pengguna dan menampilkan situs dalam bahasa itu dan dengan lokalisasi yang sesuai.

Sebagai contoh:

Seorang pengguna dari Rusia dengan bahasa Rusia sebagai default akan langsung pergi ke situs web Bahasa Rusia dengan Rubel sebagai mata uang dan harga default.

Apakah ini mungkin? Kalau begitu bagaimana?

Karlson
sumber

Jawaban:

14

Tampilan GeoIP dan Store akan membantu Anda mengatasi masalah ini.

GeoIP Anda dapat menggunakan penyedia seperti MaxMind untuk database GeoIP Anda (atau memuatnya sebagai modul server web yang menambahkan negara di header).

Berdasarkan alamat IP Anda dapat mengarahkan pelanggan ke Tampilan Toko yang tepat (periksa tautan yang dibuat oleh switcher tampilan toko.

Tampilan Toko

Bahasa Rusia harus menjadi Tampilan Toko. Periksa pengalih tampilan toko untuk melihat tautan apa yang perlu Anda gunakan untuk pelanggan Anda.

Setelah pengalihan, Anda dapat mengatur cookie untuk mengaitkan pelanggan dengan tampilan toko.

FlorinelChis
sumber
Kami juga telah menggunakan GeoIP untuk mengganti beberapa blok di situs untuk mengubah hal-hal seperti pesan Pengiriman Gratis kami
Adam Justice
1
3 hal yang harus diperhatikan pada topik ini: (1) Jika pengunjung menggunakan proxy di negara lain atau IP tidak cocok, ia mungkin ingin beralih ke situs web yang berbeda sendiri. Buat itu mungkin. (2) Bedakan antara pelokalan dan terjemahan. Misalnya, gunakan GeoIP untuk header pelokalan dan penerimaan bahasa untuk terjemahan (situs web Rusia dengan bahasa Rusia / Inggris, Situs web Swiss dengan bahasa Jerman / Italia / Prancis). Lihat jawaban di bawah ini . (3) Jika Anda memiliki harga berbeda (atau mata uang dasar berbeda) untuk Rusia, buat situs web khusus untuk itu.
Matthias Zeis
9

Ada ekstensi Magento GeoIP (ditulis oleh saya) yang mengunduh file data MaxMind terbaru dan secara berkala memperbaruinya.

Saya sarankan mengaitkan ke controller_front_init_beforeacara. Anda dapat menggunakan kode berikut untuk memeriksa mendapatkan kode ISO 3166-1 dari negara pengunjung dan kemudian mengarahkannya ke tampilan toko koresponden jika Anda memilikinya:

$geoIP = Mage::getSingleton('geoip/country');
$code = $geoIP->getCountry();

/*
 * Check if store view for this country/language exists and it is not a current store view. 
 * If so do a redirect.
 * You can also take a language from user agent into consideration.
 */

Artikel terperinci tentang penggunaan ekstensi ini dapat ditemukan di sini .

pengguna487772
sumber
5

lihat http://www.thefutureoftheweb.com/blog/use-accept-language-header jika Anda dapat memprogram. Anda bisa beralih di index.phpmemuat tampilan toko yang sesuai untuk bahasa.

Sander Mangel
sumber
Bahasa ya, tetapi masalahnya bukan hanya bahasa tetapi juga lokasi geografis.
Karlson
Anda bisa menggunakan Maxmind geo API atau layanan geo gratis lainnya untuk beralih. Saya menggunakan maxmind karena akurasi tinggi ( maxmind.com/en/geolocation_landing )
Sander Mangel
Apa yang ingin Anda lakukan jika pengguna saat ini di Rusia, tetapi bahasanya adalah en-US? Lokasi seringkali kurang informatif (dan akurat) daripada Bahasa Terima.
kojiro
@ Kojiro aku akan pergi untuk menerima bahasa http pertama. Anda benar, lokasi mengatakan sedikit tentang beberapa bahasa
Sander Mangel
1
Hati-hati, tautan tunggal dianggap sebagai jawaban yang buruk karena tidak ada artinya dengan sendirinya dan sumber daya target tidak dijamin akan hidup di masa depan . Akan lebih baik untuk memasukkan bagian-bagian penting dari jawaban di sini, dan menyediakan tautan untuk referensi.
j0k
5

Satu hal yang perlu dilihat adalah GEO IP.

Beberapa baris kode akan memberi Anda kode negara pengguna, yang dapat Anda alihkan berdasarkan itu.

Tetapi perhatikan bahwa Anda akan memiliki masalah menggunakan kode berbasis redirection jika Anda menggunakan toko yang sama dengan Edisi Perusahaan dan Cache Halaman Penuh ketika klik halaman pertama di-cache .

Jamie Teuma
sumber
Poin bagus tentang caching. Anda harus mencari cara Vary: Accept-Languagedi header untuk browser dan FPC.
kojiro
Ingin menambahkan detail tentang catatan terakhir Anda tentang FPC? Saya tertarik, untuk sedikitnya.
nevvermind
Saya memiliki masalah dengan menggunakan modul yang menggunakan GEO IP dan mengalihkan pengguna ke toko yang benar berdasarkan kode negara. Ini gagal dan setelah debugging, pengamat tidak pernah dipanggil ketika halaman di-cache menggunakan FPC, infact hanya satu pengamat dipanggil, karena FPC cache script penuh tidak menjalankan kode Magento.
Jamie Teuma
Saya tahu pengembang lain sedang membuat skrip di dalam index.php sebagai solusi, tetapi tidak yakin apakah ini berhasil atau tidak, jadi tidak dapat berkomentar BELUM !!
Jamie Teuma
4

Pilihan lain adalah menggunakan konfigurasi auto_preprogram PHP . Ini akan menyebabkan semua skrip yang ditangani oleh PHP menjalankan skrip sebelum skrip yang diminta berjalan, tetapi setelah .htaccess (jika Anda menggunakannya).

Pendekatan ini dikombinasikan dengan beberapa saran lain (misalnya menggunakan MaxMind untuk data lokasi geografis dan menyimpan tampilan untuk wilayah tertentu) dapat menghasilkan pendekatan yang agak bersih.

Jika Anda menjalankan versi Magento> = 1.4, kode toko default dapat dikonfigurasikan dengan mengatur nilai $ _SERVER ['MAGE_RUN_CODE'].

Baik dalam file .htaccess atau konfigurasi apache tambahkan yang berikut ini:

php_value auto_prepend_file /var/www/mystore/path/to/script.php

Dalam script.phpmenjalankan logika bisnis yang diperlukan dan tetapkan kode toko yang sesuai:

<?php
if (get_ip_location($_SERVER['REMOTE_ADDR']) == 'uk') {
    $_SERVER['MAGE_RUN_CODE'] = 'store_code_uk';
} else {
    $_SERVER['MAGE_RUN_CODE'] = 'store_code_us';
}

Satu hal yang perlu diperhatikan adalah ini akan berlaku untuk semua file PHP yang diminta, jadi Anda harus mengingatnya.

beeplogic
sumber