2006-04-26 12:28:53 +00:00
|
|
|
<?php
|
|
|
|
|
|
|
|
function update_locale() {
|
|
|
|
global $locales;
|
|
|
|
$f=@fopen("/etc/locale.gen","rb");
|
|
|
|
if ($f) {
|
|
|
|
$locales=array();
|
|
|
|
while ($s=fgets($f,1024)) {
|
|
|
|
if (preg_match("/^([a-z][a-z]_[A-Z][A-Z])/",trim($s),$mat)) {
|
|
|
|
$locales[$mat[1]]=$mat[1];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
fclose($f);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// setlang is on the link at the login page
|
|
|
|
if (isset($_REQUEST["setlang"])) {
|
|
|
|
$lang=$_REQUEST["setlang"];
|
|
|
|
}
|
|
|
|
|
|
|
|
$locales=array("fr_FR"=>"fr_FR","en_US"=>"en_US");
|
|
|
|
// Create or update a locale.php file if it is outdated.
|
|
|
|
update_locale();
|
|
|
|
|
|
|
|
if (!$lang) { // Use the browser first preferred language
|
|
|
|
$lang=strtolower(substr(trim($HTTP_ACCEPT_LANGUAGE),0,5));
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (!$locales[$lang]) { // Requested language not found in locales
|
|
|
|
// treat special cases such as en_AU or fr_BF : use the language only, not the country.
|
|
|
|
$ll=substr($lang,0,2);
|
|
|
|
foreach($locales as $l) {
|
|
|
|
if (substr($l,0,2)==$ll) {
|
|
|
|
$lang=$l;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if (!$locales[$lang]) $lang=$locales[0];
|
|
|
|
|
|
|
|
if ($setlang && $lang) {
|
|
|
|
setcookie("lang",$lang);
|
|
|
|
}
|
|
|
|
|
|
|
|
// User chose a non existent language, select the first available one
|
2007-08-27 07:25:19 +00:00
|
|
|
if ($lang == NULL) {
|
|
|
|
$lang = "en_US";
|
|
|
|
}
|
2006-04-26 12:28:53 +00:00
|
|
|
|
|
|
|
/* Language ok, set the locale environment */
|
|
|
|
putenv("LC_MESSAGES=$lang");
|
|
|
|
putenv("LANG=$lang");
|
|
|
|
putenv("LANGUAGE=$lang");
|
|
|
|
// this locale MUST be selected in "dpkg-reconfigure locales"
|
|
|
|
setlocale(LC_ALL,$lang);
|
|
|
|
textdomain("alternc");
|
|
|
|
|
|
|
|
?>
|