Browser Language Redirection For Multi Language Stores In Magento

Automatic redirection based on Customers Location, Geographical detection and browser language.

Many people debate that Google or other search engine robots do not wish to see automatic redirection and you can be penalized for doing this. In my opinion it is true but there are some definite workarounds which can solve your problem without being penalized by search engines. You can specifically tell search engines and show them links which are necessary for SEO after redirection or may be before redirection. A well devised strategy can help in SEO and avoid penalties. If you are choosing this type of redirection make sure that you follow Google’s guidelines related to redirection and SEO, some best practices can further help.

Let’s take an example where you have a Magento multi language store (http://www.magento-exmaple-store.com) already setup:

  1. Default store language is English
  2. Multi language stores are in French and Spanish.

Customers coming from Spain or customers coming from France should redirect to http://www.magento-exmaple-store.com/es or http://www.magento-exmaple-store.com/fr respectively. I am assuming that you have already assigned/enabled store codes in URL’s via Admin Panel => System => Configuration => Web => Url Options => Add store code to Urls=> Yes

This ensures that any customers coming from the above mentioned geographic area should be redirected to their browser language store. In our case (French {fr} or Spain {es}) otherwise they will land on default English version of your store. Check Valid country code list for reference.

Prerequisites

  1. Server should be mod_rewrite = enabled.
  2. Store codes are enabled via admin as mentioned above.
  3. URL Rewriting is enabled (Admin Panel => System => Configuration => Web => Url Options => Use Web Server Rewrites => Yes)
  4. Two letter browser local code created (e.g. fr for French and es for Spanish) Admin Panel => System => Manage Stores
  5. Default store (English) should have store code “en” and sort order “0”.
  6. Spanish store “es” created with sort order “1” & French store code “fr” with sort order “2”.
  7. All these three stores are accessible via browser i.e. http://www.magento-exmaple-store.com http://www.magento-exmaple-store.com/es andhttp://www.magento-exmaple-store.com/fr


Auto Redirection To Browser Language Store

In order to automatically redirect the customers to their browser language settings we need to edit index.php file which will be found in your store’s root directory i.e.http://www.magento-exmaple-store.com/index.php

Edit the file and place the following piece of code:

/* 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;
}
 
#Varien_Profiler::enable();

#Mage::setIsDeveloperMode(true);

#ini_set('display_errors', 1);

umask(0);
Mage::run();

The above code will first parse the HTTP_ACCEPT_LANGUAGE header sent by browser with priority code and desired language code. [Ref:http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.4]. Your sort order will tell Magento which is the most preferred store (in our case “0” which is English version of the store). It will loop through the entire store views and look for ISO 639-2 letter country code (in our case en, fr and es), finally it will return whether the country code is found otherwise opens default store view which is English version of the store.

if ($_SERVER['REQUEST_URI'] === '/') {
   header('Location: '.checkStoreLanguage()->getBaseUrl());
   exit;
}

Function call to checkStoreLanguage will ensure that when root “/” (if Magento is installed in other directory than root change it accordingly) is called it fetches the correct store view and redirect the customers to their preferred language store view.


How To Test Automatic Redirection

There are two methods which can help you to test the entire redirection process:

  1. Use Firefox plug-in called Quick Locale which is by far the easiest language switcher.
  2. You can optionally change your browser’s language setting. Read the instructions carefully on how to change your browser language settings.


Browser Language Redirection on IP Based Geolocation

There are various third-party tools/APIs available i.e.http://www.ipligence.com/geolocation/ which can be used to detect the customers IP address by sending ($_SERVER['REMOTE_ADDR']). Based on the return value you can redirect your users to a particular store view.

I hope this will help the browser language redirection and gain more trust from a customer’s point of view. Now, your customers don’t have to choose their language prior to their purchase but they will be presented with their very own language site. I would love to hear your experiences on the same. Please leave me a comment and let me know. Subscribe our RSS to receive latest Magento updates, tips and tricks.


原文:

http://blog.magikcommerce.com/browser-language-redirection-for-multi-language-stores-in-magento/

發佈了15 篇原創文章 · 獲贊 4 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章