Fixed session name to avoid conflicts during multiuser debugging.
[fa-stable.git] / includes / lang / language.php
1 <?php
2
3 if (!isset($path_to_root) || isset($_GET['path_to_root']) || isset($_POST['path_to_root']))
4         die("Restricted access");
5 include_once($path_to_root . "/lang/installed_languages.inc");
6 include_once($path_to_root . "/includes/lang/gettext.php");
7
8 class language 
9 {
10         var $name;
11         var $code;                      // eg. ar_EG, en_GB
12         var $encoding;          // eg. UTF-8, CP1256, ISO8859-1
13         var     $dir;                   // Currently support for Left-to-Right (ltr) and
14                                                 // Right-To-Left (rtl)
15
16         function language($name, $code, $encoding) 
17         {
18                 $this->name = $name;
19                 $this->code = $code;
20                 $this->encoding = $encoding;
21                 $this->dir = "ltr";
22         }
23
24         function get_language_dir() 
25         {
26                 return "lang/" . $this->code;
27         }
28
29
30         function get_current_language_dir() 
31         {
32                 $lang = $_SESSION['language'];
33                 return "lang/" . $lang->code;
34         }
35
36         function set_language($code) 
37         {
38             global $comp_path;
39             
40                 if (isset($_SESSION['languages'][$code]) &&
41                         $_SESSION['language'] != $_SESSION['languages'][$code]) 
42                 {
43             
44                 // flush cache as we can use several languages in one account
45                     flush_dir($comp_path.'/'.user_company().'/js_cache');
46                     $_SESSION['language'] = $_SESSION['languages'][$code];
47                     reload_page("");
48                 }
49         }
50
51         function get_stylesheet() 
52         {
53                 return 'lang/' . $_SESSION['language']->code . '/stylesheet.css';
54         }
55
56         /**
57          * This method loads an array of language objects into a session variable
58      * called $_SESSIONS['languages']. Only supported languages are added.
59      */
60         function load_languages() 
61         {
62                 global $installed_languages;
63
64                 $_SESSION['languages'] = array();
65
66         foreach ($installed_languages as $lang) 
67         {
68                         $l = new language($lang['name'],$lang['code'],$lang['encoding']);
69                         if (isset($lang['rtl']))
70                                 $l->dir = "rtl";
71                         $_SESSION['languages'][$l->code] = $l;
72         }
73
74                 if (!isset($_SESSION['language']))
75                         $_SESSION['language'] = $_SESSION['languages']['en_GB'];
76         }
77
78 }
79 session_name('FrontAccounting'.user_company());
80 session_start();
81 // this is to fix the "back-do-you-want-to-refresh" issue - thanx PHPFreaks
82 header("Cache-control: private");
83
84 // Page Initialisation
85 if (!isset($_SESSION['languages'])) 
86 {
87         language::load_languages();
88 }
89
90 $lang = $_SESSION['language'];
91
92 // get_text support
93 get_text::init();
94 get_text::set_language($lang->code, $lang->encoding);
95 //get_text::add_domain("wa", $path_to_root . "/lang");
96 get_text::add_domain($lang->code, $path_to_root . "/lang");
97 // Unnecessary for ajax calls. 
98 // Due to bug in php 4.3.10 for this version set globally in php.ini
99 ini_set('default_charset', $_SESSION['language']->encoding);
100
101 if (!function_exists("_")) 
102 {
103         function _($text) 
104         {
105                 $retVal = get_text::gettext($text);
106                 if ($retVal == "")
107                         return $text;
108                 return $retVal;
109         }
110 }
111
112 function _set($key,$value) 
113 {
114         get_text::set_var($key,$value);
115 }
116
117 function reload_page($msg) 
118 {
119 //      header("Location: $_SERVER['PHP_SELF']."");
120 //      exit;
121         echo "<html>";
122         echo "<head>";
123     echo "<title>Changing Languages</title>";
124         echo '<meta http-equiv="refresh" content="0;url=' . $_SERVER['PHP_SELF'] . '">';
125         echo '</head>';
126         echo '<body>';
127         echo '<div>';
128         if ($msg != "")
129                 echo $msg . " " . $_SERVER['PHP_SELF'];
130         echo "</div>";  
131         echo "</body>";
132         echo "</html>";
133 }
134
135
136
137 ?>