3 $lang_translation=array( # If you comment lang here, it won
't be displayed.
6 # "es_ES" => "Español",
7 # "it_IT" => "Italiano",
8 # "de_DE" => "Deutsch",
9 # "pt_BR" => "Portuguese",
13 global $arr_lang_translation ;
14 $arr_lang_translation = $lang_translation; // not pretty but I don't want side effect right now
16 function update_locale($langpath) {
17 global $arr_lang_translation;
19 $file=file(
"/etc/locale.gen", FILE_SKIP_EMPTY_LINES);
20 if (! is_array($file) )
return $locales;
21 foreach ($file as $v ) {
22 if ( (preg_match(
"/^([a-z][a-z]_[A-Z][A-Z])/",trim($v),$mat) && file_exists($langpath .
'/' . $mat[1]) ) ) {
23 if (! array_key_exists($mat[1], $arr_lang_translation) )
continue;
24 $locales[$mat[1]]=$mat[1];
27 if (!count($locales)) {
28 $locales=array(
"en_US"=>
"en_US");
37 } elseif (
isset($_COOKIE[
'lang'])) {
38 $lang=$_COOKIE[
'lang'];
44 $locales = update_locale($langpath);
47 if (!
isset($_SERVER[
"HTTP_ACCEPT_LANGUAGE"])) {
48 $_SERVER[
"HTTP_ACCEPT_LANGUAGE"]=
"en_US";
51 if (!(
isset($lang))) {
52 $lang=strtolower(substr(trim($_SERVER[
"HTTP_ACCEPT_LANGUAGE"]),0,5));
56 if (!
isset($locales[$lang])) {
58 $ll=substr($lang,0,2);
59 foreach($locales as $l) {
60 if (substr($l,0,2)==$ll) {
67 if (!
isset($locales[$lang])) list($lang)=each($locales);
70 setcookie(
"lang",$lang);
79 putenv(
"LC_MESSAGES=".$lang);
80 putenv(
"LANG=".$lang);
81 putenv(
"LANGUAGE=".$lang);
83 setlocale(LC_ALL,$lang);
84 textdomain(
"alternc");
87 if (_($empty) && preg_match(
"#charset=([A-Za-z0-9\.-]*)#",_($empty),$mat)) {
90 if (!
isset($charset) || !$charset) $charset=
"UTF-8";
91 bind_textdomain_codeset(
"alternc",
"$charset");