Monday, August 8, 2011

Multi language Magento store having language redirection

Browser language redirection is the solution for you. It can run on popular browsers like Firefox, IE, Mozilla, Google Chrome, Avant and Safar. Normally, Magento Development does not support geographical detection and redirection. So, various online merchants initially direct their customers to land on their default page where they ask them to choose their preferred language. This is the default way of redirecting customers to their local language store. Another alternative is to choose a country drop-down or flag to redirect customers to their language store (widely used in multi lingual stores).
Automatic redirection based on Customers Location, Geographical detection and browser language
It is a highly debatable topic that search engine robots do not wish to see automatic redirection and one can be penalized for doing this. However there are workarounds that 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. Here it is assumed 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 and http://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:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
/* 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.
1
2
3
4
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.
Testing 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.

13 comments:

  1. The post shared is worth to read and interesting for the newbies by all means for more knowledge - I was in search of such blog who explore my knowledge in the industry.for more knowledge- web design orlando

    ReplyDelete
  2. "I was in search of such blog who explore my knowledge in the industry.for more knowledge- I was in search of such blog who explore my knowledge in the industry.for more knowledge- website design dubai

    ReplyDelete
  3. Thankful to you to share such a great post for other readers like me who are keen to gather knowledge on this.for more knowledge- Jogging track

    ReplyDelete
  4. The post shared is worth to read and interesting for the newbies by all means for more knowledge - I was in search of such blog who explore my knowledge in the industry.for more knowledge- web design dubai

    ReplyDelete
  5. "I was in search of such blog who explore my knowledge in the industry.for more knowledge- I was in search of such blog who explore my knowledge in the industry.for more knowledge-link seo in New Zealand

    ReplyDelete
  6. Very helpful and admirable post. Thank you very much for the share.

    Buy Wardrobe Online | Buy Celebrations Online

    ReplyDelete
  7. Thanks for the very informative blog and I extremely grateful that you perform this piece of writing very simply, I mean to say that it's quite simple to read and understand. Website Design Company Bangalore | Web Development Company Bangalore

    ReplyDelete
  8. outsourcingall.com is a Porn Training site. outsourcingall.com is the largest Amateur porn training institute with the hottest selection Online and offline real life cam.
    free bangla sex video dhaka

    ReplyDelete
  9. Very nice code, Berikut ini adalah penipuan yang telah marak selama bertahuntahun. Ketika pengunjung togel totojitu online datang ke Las Vegas untuk pertama kalinya mereka sering tiba dengan pesawat togel totojitu online. Dari bandara mereka akan sering dengan mudah menemukan taksi yang akan membawa mereka ke tempat tujuan. Sayangnya beberapa taksi memanfaatkan 8togel ketidaktahuan penghuninya. Pengemudi taksi akan membawa penumpang melalui rute terpanjang ke tujuan sehingga mereka king4d online menerima biaya yang lebih besar. Karena ekstrem yang ekstrem kadangkadang supir taksi mencoba membawa penumpang mereka berkeliling togel lotus4d sebelum langsung ke tujuan. Namun Anda dapat menghindari praktik ini dengan togel singapore mengetahui karakteristik alat yang digunakan untuk memindai kartu yang biasanya dipasang di ATM ilegal togel king4d. Las Vegas adalah kota yang menyenangkan penuh kegembiraan. Banyak pengunjung menghabiskan waktu berjalan di lxtoto online daerah kota ini. Ketika Anda berjalanjalan di kota ini Anda akan sering ditawari barangbarang Eyang Togel berbau gratis seperti layanan gratis atau yang ditingkatkan. Biasanya jika Anda tertarik Anda akan ditransfer ke gedung Toto Singapore tertentu apakah itu kasino restoran toko atau yang sejenis.

    ReplyDelete
  10. promote your business, then sms marketing is best way and SMS Plus is leading Bulk SMS Service Provider in Delhi ncr and all over India.offers bulk sms service for their clients at cost effective price. For getting more information, Dial 9999441707.

    ReplyDelete
  11. Thanks for sharing this post because this very useful and informative thanks again !!

    Bulk SMS Services in Delhi

    Website Development Delhi

    Website Design Delhi

    ReplyDelete