Skip to content

Instantly share code, notes, and snippets.

@yene
Created June 3, 2011 14:39
Show Gist options
  • Save yene/1006430 to your computer and use it in GitHub Desktop.
Save yene/1006430 to your computer and use it in GitHub Desktop.
simple language detection in php
<?php
define(DEBUG, 0);
$supported_languages = array("en", "de");
$default_language = "en";
$language = $default_language;
if (isset($_POST['lang']) && in_array($_POST['lang'], $supported_languages)) { // Detecting if param was set
$language = $_POST['lang'];
setcookie("language", $language, time()+ (3600 * 24 * 30)); // cache 30 days
if (DEBUG) echo "found parameter lang " .$language;
} else if (isset($_COOKIE['language']) && in_array($_COOKIE['language'], $supported_languages)) { // Detecting if cookie was set
$language = $_COOKIE['language'];
if (DEBUG) echo "found cookie lang " .$language;
} else if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) { // Detecting Browser language
$langs = explode(",", $_SERVER["HTTP_ACCEPT_LANGUAGE"]);
foreach ($langs as $value) {
$choice = substr($value, 0, 2); // select only the first two letters: de-de, en-us
if (in_array($choice, $supported_languages)) {
$language = $choice;
break;
}
if (DEBUG) $choice = "no supported language found";
}
if (DEBUG) echo "browser lang: " .$choice;
}
require("index_" . $language . ".html");
?>
<!-- example for language switcher -->
<form id="lang_en" method="post" action="">
<input type="hidden" name="lang" value="en" />
<a href="#" onclick="javascript:document.forms['lang_en'].submit()">englisch</a>
</form>
<form id="lang_de" method="post" action="">
<input type="hidden" name="lang" value="de" />
<a href="#" onclick="javascript:document.forms['lang_de'].submit()">deutsch</a>
</form>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment