Alternc  latest
Alternc logiel libre pour l'hébergement
lang_env.php
Go to the documentation of this file.
1 <?php
2 
3 $lang_translation = array(# If you comment lang here, it won't be displayed.
4  "fr_FR" => "Français",
5  "en_US" => "English",
6  "es_ES" => "Español",
7  # "it_IT" => "Italiano",
8  # "de_DE" => "Deutsch",
9  # "pt_BR" => "Portuguese",
10  # "nl_NL" => "Dutch",
11 );
12 
13 global $arr_lang_translation;
14 $arr_lang_translation = $lang_translation; // not pretty but I don't want side effect right now
15 
16 function update_locale($langpath) {
17  global $arr_lang_translation;
18  $locales = array();
19  $file = file("/etc/locale.gen", FILE_SKIP_EMPTY_LINES);
20  if (!is_array($file)) {
21  return $locales;
22  }
23  foreach ($file as $v) {
24  if ((preg_match("/^([a-z][a-z]_[A-Z][A-Z])/", trim($v), $mat) && file_exists($langpath . '/' . $mat[1]))) {
25  if (!array_key_exists($mat[1], $arr_lang_translation)) {
26  continue;
27  }
28  $locales[$mat[1]] = $mat[1];
29  }
30  }
31  if (!count($locales)) {
32  $locales = array("en_US" => "en_US");
33  }
34  return $locales;
35 }
36 
37 // setlang is on the link at the login page
38 if (isset($_REQUEST["setlang"])) {
39  $lang = $_REQUEST["setlang"];
40  $setlang = $_REQUEST["setlang"];
41 } elseif (isset($_COOKIE['lang'])) {
42  $lang = $_COOKIE['lang'];
43 }
44 
45 $langpath = bindtextdomain("alternc", ALTERNC_LOCALES);
46 
47 // Create or update a locale.php file if it is outdated.
48 $locales = update_locale($langpath);
49 
50 // Default to en_US :
51 if (!isset($_SERVER["HTTP_ACCEPT_LANGUAGE"])) {
52  $_SERVER["HTTP_ACCEPT_LANGUAGE"] = "en_US";
53 }
54 
55 if (!(isset($lang))) { // Use the browser first preferred language
56  $lang = strtolower(substr(trim($_SERVER["HTTP_ACCEPT_LANGUAGE"]), 0, 5));
57 }
58 
59 
60 if (!isset($locales[$lang])) { // Requested language not found in locales
61  // treat special cases such as en_AU or fr_BF : use the language only, not the country.
62  $ll = substr($lang, 0, 2);
63  foreach ($locales as $l) {
64  if (substr($l, 0, 2) == $ll) {
65  $lang = $l;
66  break;
67  }
68  }
69 }
70 
71 if (!isset($locales[$lang])) {
72  list($lang) = each($locales);
73 }
74 if (isset($setlang) && isset($lang)) {
75  setcookie("lang", $lang);
76 }
77 
78 // User chose a non existent language, select the first available one
79 if ($lang == NULL) {
80  $lang = "en_US";
81 }
82 
83 /* Language ok, set the locale environment */
84 putenv("LC_MESSAGES=" . $lang);
85 putenv("LANG=" . $lang);
86 putenv("LANGUAGE=" . $lang);
87 // this locale MUST be selected in "dpkg-reconfigure locales"
88 setlocale(LC_ALL, $lang);
89 textdomain("alternc");
90 
91 $empty = "";
92 if (_($empty) && preg_match("#charset=([A-Za-z0-9\.-]*)#", _($empty), $mat)) {
93  $charset = $mat[1];
94 }
95 if (!isset($charset) || !$charset) {
96  $charset = "UTF-8";
97 }
98 bind_textdomain_codeset("alternc", "$charset");
const ALTERNC_LOCALES
Definition: bootstrap.php:15
$_REQUEST["domain_id"]
if(empty($site_name)) elseif($piwik->site_add( $site_name, $site_urls))