cancel
Showing results for 
Search instead for 
Did you mean: 

Lingua default in base al paese

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.

7 REPLIES 7

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.

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!

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

 

Re: Lingua default in base al paese

Puoi provare con un modulo di geolocalizzazione per ip.

Prova moduli come GEOIP Mageworx e simili

------------------ [ Antonio Carboni ] ------------------Hosting Magenio
Problema risolto? Clicca Accept as Solution!

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

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

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