Magento Visualizzazione della localizzazione appropriata in base alla posizione


17

Vorrei configurare il sito Magento per poter riconoscere la lingua e la posizione predefinite dell'utente e visualizzare il sito in quella lingua e con la localizzazione appropriata.

Per esempio:

Un utente dalla Russia con la lingua russa di default andrà direttamente al sito web della lingua russa con Rubles come valuta e prezzi predefiniti.

È possibile? Se é cosi, come?

Risposte:


14

GeoIP e Store Views ti aiuteranno a risolvere questo problema.

GeoIP È possibile utilizzare un provider come MaxMind per il database GeoIP (o caricarlo come modulo del server Web che aggiunge il paese nell'intestazione).

Sulla base dell'indirizzo IP è possibile reindirizzare il cliente alla vista negozio corretta (controllare il collegamento generato dal commutatore vista negozio.

Store Views

Il russo dovrebbe essere una vista dello store. Controlla il commutatore di visualizzazione negozio per vedere qual è il link che devi utilizzare per i tuoi clienti.

Dopo il reindirizzamento è possibile impostare un cookie per associare il cliente alla vista del negozio.


Abbiamo anche usato il GeoIP per cambiare alcuni blocchi sul sito per cambiare cose come il nostro messaggio di spedizione gratuita
Adam Justice

1
3 cose a cui prestare attenzione su questo argomento: (1) Se il visitatore utilizza un proxy in un altro paese o l'IP non è corrispondente, potrebbe voler passare a un altro sito Web. Rendilo possibile. (2) Differenzia tra localizzazione e traduzione. Ad esempio, utilizzare GeoIP per la localizzazione e le intestazioni di accettazione della lingua per le traduzioni (sito Web russo con lingua russa / inglese, sito Web svizzero con lingua tedesca / italiana / francese). Vedi la risposta sotto . (3) Se hai prezzi diversi (o una valuta di base diversa) per la Russia, crea un sito Web dedicato.
Matthias Zeis,

9

Esiste un'estensione Magento GeoIP (scritta da me) che scarica l'ultimo file di dati MaxMind e lo aggiorna periodicamente.

Suggerisco di collegarmi controller_front_init_beforeall'evento. È possibile utilizzare il seguente codice per verificare ottenere il codice ISO 3166-1 del paese del visitatore e quindi reindirizzarlo alla vista negozio corrispondente se ne hai uno:

$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.
 */

L'articolo dettagliato sull'uso di questa estensione è disponibile qui .


5

dai un'occhiata a http://www.thefutureoftheweb.com/blog/use-accept-language-header se puoi programmare. È possibile effettuare una modifica nel index.phpcaricamento della visualizzazione negozio appropriata per la lingua.


Lingua sì, ma il problema non è solo la lingua ma anche la posizione geografica.
Karlson,

È possibile utilizzare l'API di geo Maxmind o qualsiasi altro servizio di geo gratuito per effettuare il passaggio. Uso maxmind per via della loro elevata precisione ( maxmind.com/en/geolocation_landing )
Sander Mangel

Cosa vuoi fare se l'utente si trova attualmente in Russia, ma la sua lingua è en-US? La posizione è spesso meno istruttiva (e precisa) rispetto a Accept-Language.
Kojiro,

@kojiro preferirei prima la lingua di accettazione http. hai ragione, la posizione dice poco su una lingua
Sander Mangel

1
Fai attenzione, il collegamento solitario è considerato una risposta scadente poiché non ha senso da solo e non è garantito che la risorsa target sia viva in futuro . Sarebbe preferibile includere qui le parti essenziali della risposta e fornire il collegamento come riferimento.
J0K

5

Un'altra cosa da guardare è GEO IP.

Un paio di righe di codice ti daranno il codice paese dell'utente, che puoi cambiare in base a quello.

Si noti tuttavia che si avranno problemi nell'utilizzo di qualsiasi codice basato sul reindirizzamento se si utilizza lo stesso negozio con Enterprise Edition e cache della pagina intera poiché il primo colpo della pagina viene memorizzato nella cache .


Un buon punto sulla memorizzazione nella cache. Dovresti capire come Vary: Accept-Languagenell'intestazione sia per il browser che per l'FPC.
Kojiro,

Vuoi aggiungere alcuni dettagli sulla tua ultima nota riguardo a FPC? Sono incuriosito, per non dire altro.
nevvermind

Ho avuto un problema con l'utilizzo di un modulo che utilizza GEO IP e reindirizza l'utente al negozio corretto in base al codice paese. Questo non è riuscito e dopo il debug, l'osservatore non è mai stato chiamato quando la pagina è stata memorizzata nella cache utilizzando FPC, infatti è stato chiamato solo un osservatore, poiché FPC ha memorizzato nella cache l'intero script senza codice magento.
Jamie Teuma,

So che un altro sviluppatore stava costruendo uno script all'interno di index.php come soluzione, ma non sono sicuro che abbia avuto successo o meno, quindi non posso commentare ANCORA !!
Jamie Teuma,

4

Un'altra opzione è quella di utilizzare la configurazione auto_prepend di PHP . Questo farà sì che tutti gli script gestiti da PHP eseguano lo script prima dell'esecuzione dell'effettivo script richiesto, ma successivamente .htaccess (se lo stai usando).

Questo approccio combinato con alcuni degli altri suggerimenti (ad esempio l'utilizzo di MaxMind per i dati di geolocalizzazione e le visualizzazioni dello store per aree specifiche) può risultare in un approccio piuttosto pulito.

Se stai eseguendo una versione di Magento> = 1.4, il codice negozio predefinito può essere configurato impostando il valore $ _SERVER ['MAGE_RUN_CODE'].

Nel file .htaccess o nella configurazione di apache aggiungere quanto segue:

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

Nel tuo script.phpeseguire qualsiasi logica aziendale necessaria e impostare il codice negozio appropriato:

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

Una cosa da notare è che questo si applica a tutti i file PHP richiesti, quindi è necessario tenerlo presente.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.