Merged bugfixes upto [0000072] (version 2.0.3).
[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
80 session_name('FrontAccounting');
81 session_start();
82 // this is to fix the "back-do-you-want-to-refresh" issue - thanx PHPFreaks
83 header("Cache-control: private");
84
85 // Page Initialisation
86 if (!isset($_SESSION['languages'])) 
87 {
88         language::load_languages();
89 }
90
91 $lang = $_SESSION['language'];
92
93 // get_text support
94 get_text::init();
95 get_text::set_language($lang->code, $lang->encoding);
96 //get_text::add_domain("wa", $path_to_root . "/lang");
97 get_text::add_domain($lang->code, $path_to_root . "/lang");
98 // Unnecessary for ajax calls. 
99 // Due to bug in php 4.3.10 for this version set globally in php.ini
100 ini_set('default_charset', $_SESSION['language']->encoding);
101
102 if (!function_exists("_")) 
103 {
104         function _($text) 
105         {
106                 $retVal = get_text::gettext($text);
107                 if ($retVal == "")
108                         return $text;
109                 return $retVal;
110         }
111 }
112
113 function _set($key,$value) 
114 {
115         get_text::set_var($key,$value);
116 }
117
118 function reload_page($msg) 
119 {
120 //      header("Location: $_SERVER['PHP_SELF']."");
121 //      exit;
122         echo "<html>";
123         echo "<head>";
124     echo "<title>Changing Languages</title>";
125         echo '<meta http-equiv="refresh" content="0;url=' . $_SERVER['PHP_SELF'] . '">';
126         echo '</head>';
127         echo '<body>';
128         echo '<div>';
129         if ($msg != "")
130                 echo $msg . " " . $_SERVER['PHP_SELF'];
131         echo "</div>";  
132         echo "</body>";
133         echo "</html>";
134 }
135
136
137
138 ?>