Forums / Setup & design / Auto-detect language from browser accept language
Sébastien Hordeaux
Wednesday 22 August 2007 6:40:18 am
Hello,
How can Exponential display localized information based on user's AcceptLanguage settings in the browser?
If it is not possible, is there a way to redirect user to a different site access based on this?
Thanks you by advance for any hint :)
Lazaro Ferreira
Wednesday 22 August 2007 9:36:24 am
Hi Sebastien
You can create a template operator to detect the HTTP_ACCEPT_LANGUAGE, sent by the browser, the following php code get the information :
<?php echo $_SERVER['HTTP_ACCEPT_LANGUAGE']; ?>
Then you can program your pagelayout.tpl to redirect based on the operator output, you can create your own redirect operator, or use the one at the contributions
Regards
Lazaro http://www.mzbusiness.com
Andrey Astakhov
Wednesday 22 August 2007 12:14:21 pm
Hello, Sébastien
I implemented it so:
1. Update your httpd.conf (or .htaccess)
RewriteCond %{HTTP:Accept-Language} ^ru.* [NC] RewriteRule (.*) - [E=SITEACCESS:siteaccess_ru] RewriteCond %{HTTP:Accept-Language} ^en.* [NC] RewriteRule (.*) - [E=SITEACCESS:siteaccess_en]
"ru" and "en" are languages of my site.It adds appropriate server variable depending of user Accept-Language.
2. Update your settings/override/site.ini.append
MatchOrder=servervar;host ServerVariableName=SITEACCESS HostMatchMapItems[]=www.yoursite.com;siteaccess_default
Now users with Accept-Language = ru* see siteaccess_ru siteaccess, users with Accept-Language = en* see siteaccess_en siteaccess, any other users see siteaccess_default.
You could also change rewriterules to minimize set of rules and with site.ini settings to create other siteaccess matching.