- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Lingua default in base al paese
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.
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Re: Lingua default in base al paese
Ci sono diverse estensioni che fanno questo, cerca nel connect
Non ho qualcuna provata da consigliare purtroppo.
ciao.
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Re: Lingua default in base al paese
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!
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Re: Lingua default in base al paese
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
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Re: Lingua default in base al paese
Puoi provare con un modulo di geolocalizzazione per ip.
Prova moduli come GEOIP Mageworx e simili
Problema risolto? Clicca Accept as Solution!
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Re: Lingua default in base al paese
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
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Re: Lingua default in base al paese
...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
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Re: Lingua default in base al paese
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