Hello World!
I would like to share my experience how to detect browser language and include the right file that contents language variables.
I have created a simple echo of $server array with key “HTTP_ACCEPT_LANGUAGE”:
1 |
echo $_SERVER['HTTP_ACCEPT_LANGUAGE']; |
Test Link: http://tests.russianroot.net/language_detection/
And I have recieved this output:
OS: Windows 7
- Firefox 13.0.1: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
- Internet Explorer 9: de-DE
- Opera 12: de-DE,de;q=0.9,en;q=0.8
- Chrome 20.0.*: de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4
- Safari 5.1.5: de-DE
OS: Win XP
- Internet Explorer 7: de
- Internet Explorer 8: de
- Firefox 3.6.23: de
OS: Debian Lenny
- Epiphany: de-de, de;q=0.90
OS: Ubuntu
- Chromium 18.0.*: en-US,en;q=0.8
- Android Browser: de-DE, en-US
We see that at the beginnig of string we can cut first 2 letters and this is going to be our parameter for php switch.
So i created following script:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<? $language = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2); switch ($language){ case "de": //make simple include or whatever =) include("./system/languages/lang_de.php"); break; case "ru": include("./system/languages/lang_ru.php"); break; case "en": include("./system/languages/lang_en.php"); break; default: // Also it is very important to include a fallback language if someone // has different one of (de, ru, en) include("./system/languages/lang_en.php"); break; } ?> |
To add additional language just copy and paste “case” declaration and replace language snippet with desired one.
Have fun. Feel free to comment and give Feedback.
Best regards,
Konstantin Konobeyev.