a47df71d00f0507c88caa242df13c7218ef5ed9d
[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         var $is_locale_file;
16         
17         function language($name, $code, $encoding) 
18         {
19                 $this->name = $name;
20                 $this->code = $code;
21                 $this->encoding = $encoding;
22                 $this->dir = "ltr";
23         }
24
25         function get_language_dir() 
26         {
27                 return "lang/" . $this->code;
28         }
29
30
31         function get_current_language_dir() 
32         {
33                 $lang = $_SESSION['language'];
34                 return "lang/" . $lang->code;
35         }
36
37         function set_language($code) 
38         {
39             global $comp_path, $path_to_root;
40             
41                 if (isset($_SESSION['languages'][$code]) &&
42                         $_SESSION['language'] != $_SESSION['languages'][$code]) 
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                         $locale = $path_to_root . "/lang/" . $_SESSION['language']->code . "/locale.inc";
48                         // check id file exists only once for session
49                         $_SESSION['language']->is_locale_file = file_exists($locale);
50                     reload_page("");
51                 }
52         }
53
54         /**
55          * This method loads an array of language objects into a session variable
56      * called $_SESSIONS['languages']. Only supported languages are added.
57      */
58         function load_languages() 
59         {
60                 global $installed_languages;
61
62                 $_SESSION['languages'] = array();
63
64         foreach ($installed_languages as $lang) 
65         {
66                         $l = new language($lang['name'],$lang['code'],$lang['encoding']);
67                         if (isset($lang['rtl']))
68                                 $l->dir = "rtl";
69                         $_SESSION['languages'][$l->code] = $l;
70         }
71
72                 if (!isset($_SESSION['language']))
73                         $_SESSION['language'] = $_SESSION['languages']['en_GB'];
74         }
75
76 }
77 /*
78         Test if named function is defined in locale.inc file.
79 */
80 function has_locale($fun=null)
81 {
82         global $path_to_root;
83         
84         if ($_SESSION['language']->is_locale_file)
85         {
86                 global $path_to_root;
87                 include_once($path_to_root . "/lang/" . 
88                         $_SESSION['language']->code . "/locale.inc");
89
90                 if (!isset($fun) || function_exists($fun))
91                         return true;
92         }
93         return false;
94 }
95
96 session_name('FrontAccounting'.user_company());
97 session_start();
98 // this is to fix the "back-do-you-want-to-refresh" issue - thanx PHPFreaks
99 header("Cache-control: private");
100
101 // Page Initialisation
102 if (!isset($_SESSION['languages'])) 
103 {
104         language::load_languages();
105 }
106
107 $lang = $_SESSION['language'];
108
109 // get_text support
110 get_text::init();
111 get_text::set_language($lang->code, $lang->encoding);
112 //get_text::add_domain("wa", $path_to_root . "/lang");
113 get_text::add_domain($lang->code, $path_to_root . "/lang");
114 // Unnecessary for ajax calls. 
115 // Due to bug in php 4.3.10 for this version set globally in php.ini
116 ini_set('default_charset', $_SESSION['language']->encoding);
117
118 if (!function_exists("_")) 
119 {
120         function _($text) 
121         {
122                 $retVal = get_text::gettext($text);
123                 if ($retVal == "")
124                         return $text;
125                 return $retVal;
126         }
127 }
128
129 function _set($key,$value) 
130 {
131         get_text::set_var($key,$value);
132 }
133
134 function reload_page($msg) 
135 {
136 //      header("Location: $_SERVER['PHP_SELF']."");
137 //      exit;
138         echo "<html>";
139         echo "<head>";
140     echo "<title>Changing Languages</title>";
141         echo '<meta http-equiv="refresh" content="0;url=' . $_SERVER['PHP_SELF'] . '">';
142         echo '</head>';
143         echo '<body>';
144         echo '<div>';
145         if ($msg != "")
146                 echo $msg . " " . $_SERVER['PHP_SELF'];
147         echo "</div>";  
148         echo "</body>";
149         echo "</html>";
150 }
151
152
153
154 ?>