Ciao, gestisco un negozio con 2 viste, italiano e in inglese, la mia domanda è questa:
esiste un modo, automatico, così che l'utente che si collega visualizzi di default (senza dover cambiare lingua) il negozio in italiano o in inglese a seconda del paese da cui sta visualizzando il sito? Oppure un controllo sulla lingua impostata sul browser o cose simili?
Esempio: mi collego dall'italia e il sito mi risulta direttamente in italiano; mi collego dall'Inghilterra e la lingua di default che visualizzo è l'inglese.
Grazie.
Ci sono diverse estensioni che fanno questo, cerca nel connect
Non ho qualcuna provata da consigliare purtroppo.
ciao.
Anch'io sto avendo lo stesso problema. Inoltre ho impostato come lingua base l'inglese, ma continua a essere visualizzata la pagina in italiano da qualsiasi parte del mondo. Qualcuno ha una soluzione? Magari agire a livello di index.php?
Grazie!
Ciao,
Se intendi uno switch basato dalla lingua impostata nel browser dell'utente puoi agire così:
Da Sistema > Configurazione > Web > Opzioni URL > Aggiungi codice negozio agli Url > Imposta su SI
Da Sistema > Configurazione > Web > Ottimizzazione motori di ricerca > Utilizza Web Server Rewrites > Imposta su SI
Ovviamente devi avere il mod_rewrite attivo sul server
Poi vai su > Sistema > Gestione negozi
Qui devi editare gli store view ed impostare il codice di riferimento (a due caratteri esempio: en per english, it per italiano)
Puoi prelevare i codici da qui: https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes
Poi imposta lo store view di default come ordinamento 0 e l'altro come 1
Apri index.php ed aggiungi prima di umask(0); il seguente codice:
require_once 'app/Mage.php'; /* Check For Browser languge to redirect to appropriate store */ function checkStoreLanguage() { if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) { foreach (explode(",", strtolower($_SERVER['HTTP_ACCEPT_LANGUAGE'])) as $accept) { if (preg_match("!([a-z-]+)(;q=([0-9\\.]+))?!", trim($accept), $found)) { $langs[] = $found[1]; $quality[] = (isset($found[3]) ? (float) $found[3] : 1.0); } } // Order the codes by quality array_multisort($quality, SORT_NUMERIC, SORT_DESC, $langs); // get list of stores and use the store code for the key $stores = Mage::app()->getStores(false, true); // iterate through languages found in the accept-language header foreach ($langs as $lang) { $lang = substr($lang,0,2); if (isset($stores[$lang]) && $stores[$lang]->getIsActive()) return $stores[$lang]; } } return Mage::app()->getStore(); } /* Automatically redirect to language fr or es store view if request is for root */ if ($_SERVER['REQUEST_URI'] === '/') { header('Location: '.checkStoreLanguage()->getBaseUrl()); exit; }
Finito!
In pratica l'ultima condizione se vera esegue lo switch dello store, pertanto se stai lavorando su localhost/mioprogetto/ devi scriverla così:
if ($_SERVER['REQUEST_URI'] === '/mioprogetto/') { header('Location: '.checkStoreLanguage()->getBaseUrl()); exit; }
Puoi testare il funzionamento cambiando la lingua del tuo browser, vedrai che effettua lo switch in modo automatico....
Ciao! Fabrizio
Puoi provare con un modulo di geolocalizzazione per ip.
Prova moduli come GEOIP Mageworx e simili
Grazie per le risposte! Alla fine ho risolto mettendo la lingua/negozio di default in inglese e geolocalizzazione solamente per l'Italia, e sembra funzionare!
Grazie
...vorrei condividere questo semplice snippet di codice che mi sono divertito a scrivere, imposta la lingua it sono per noi italiani ed inglese per tutti gli altri, è basato sulla geo localizzazione ip, va a sostituirsi a quello sopra che invece è basato sulla lingua impostata nel browser...non l'ho provato su magento ma dovrebbe funzionare...
/* Get CountryCode from API feegeoip (GitHub: https://github.com/fiorix/freegeoip) */ function getCountryCode() { if (isset($_SERVER['REMOTE_ADDR'])) { $GEOip='https://freegeoip.net/xml/' . $_SERVER['REMOTE_ADDR']; $GEOCountryCode=simplexml_load_file($GEOip); $CountryCode=strtolower($GEOCountryCode->CountryCode); /* Set language Italian for us Italians */ if ($CountryCode=='it') { $lang='it'; } else { /* English returns for all other */ $lang='en'; } } return $lang; } if ($_SERVER['REQUEST_URI'] === '/') { header('Location: '.getCountryCode()); exit; }
Ciao!
Fabrizio
Salve,
non si possono però utilizzare gli stessi codici per più negozi... mi spiego: nel sito base ho come store view italiano=it, inglese=en, francese=fr.
Ho un sottodominio con store view base in inglese ma non posso inserire come codice "en" poichè Magento avvisa che è già in uso. Idem per le altre lingue.
Quindi come utilizzare le stesse lingue nei vari negozi?
Grazie