Cleaning startup code.
[fa-stable.git] / includes / lang / language.php
1 <?php
2 /**********************************************************************
3     Copyright (C) FrontAccounting, LLC.
4         Released under the terms of the GNU General Public License, GPL, 
5         as published by the Free Software Foundation, either version 3 
6         of the License, or (at your option) any later version.
7     This program is distributed in the hope that it will be useful,
8     but WITHOUT ANY WARRANTY; without even the implied warranty of
9     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  
10     See the License here <http://www.gnu.org/licenses/gpl-3.0.html>.
11 ***********************************************************************/
12 include_once($path_to_root . "/lang/installed_languages.inc");
13 include_once($path_to_root . "/includes/lang/gettext.php");
14
15 class language 
16 {
17         var $name;
18         var $code;                      // eg. ar_EG, en_GB
19         var $encoding;          // eg. UTF-8, CP1256, ISO8859-1
20         var     $dir;                   // Currently support for Left-to-Right (ltr) and
21                                                 // Right-To-Left (rtl)
22         var $is_locale_file;
23         
24         function language($name, $code, $encoding) 
25         {
26                 $this->name = $name;
27                 $this->code = $code;
28                 $this->encoding = $encoding;
29                 $this->dir = "ltr";
30         }
31
32         function get_language_dir() 
33         {
34                 return "lang/" . $this->code;
35         }
36
37         function get_current_language_dir() 
38         {
39                 $lang = $_SESSION['language'];
40                 return "lang/" . $lang->code;
41         }
42
43         function set_language($code) 
44         {
45             global $comp_path, $path_to_root;
46                 
47                 $changed = $_SESSION['language']->code != $code;
48                 if (isset($_SESSION['languages'][$code]) && $changed)
49                 {
50                 // flush cache as we can use several languages in one account
51                     flush_dir($comp_path.'/'.user_company().'/js_cache');
52                     $_SESSION['language'] = $_SESSION['languages'][$code];
53                         $locale = $path_to_root . "/lang/" . $_SESSION['language']->code . "/locale.inc";
54                         // check id file exists only once for session
55                         $_SESSION['language']->is_locale_file = file_exists($locale);
56                 }
57
58                 $lang = $_SESSION['language'];
59                 get_text::set_language($lang->code, $lang->encoding);
60                 get_text::add_domain($lang->code, $path_to_root . "/lang");
61                 
62                 // Necessary for ajax calls. Due to bug in php 4.3.10 for this 
63                 // version set globally in php.ini
64                 ini_set('default_charset', $lang->encoding);
65
66                 if (isset($_SESSION['App']) && $changed)
67                         $_SESSION['App']->init(); // refresh menu
68         }
69
70         /**
71          * This method loads an array of language objects into a session variable
72      * called $_SESSIONS['languages']. Only supported languages are added.
73      */
74         function load_languages() 
75         {
76                 global $installed_languages, $dflt_lang;
77
78                 $_SESSION['languages'] = array();
79
80         foreach ($installed_languages as $lang) 
81         {
82                         $l = new language($lang['name'],$lang['code'],$lang['encoding']);
83                         if (isset($lang['rtl']))
84                                 $l->dir = "rtl";
85                         $_SESSION['languages'][$l->code] = $l;
86         }
87
88                 if (!isset($_SESSION['language']))
89                         $_SESSION['language'] = $_SESSION['languages'][$dflt_lang];
90         }
91
92 }
93 /*
94         Test if named function is defined in locale.inc file.
95 */
96 function has_locale($fun=null)
97 {
98         global $path_to_root;
99         
100         if ($_SESSION['language']->is_locale_file)
101         {
102                 global $path_to_root;
103                 include_once($path_to_root . "/lang/" . 
104                         $_SESSION['language']->code . "/locale.inc");
105
106                 if (!isset($fun) || function_exists($fun))
107                         return true;
108         }
109         return false;
110 }
111
112 function _set($key,$value) 
113 {
114         get_text::set_var($key,$value);
115 }
116
117 if (!function_exists("_")) 
118 {
119         function _($text) 
120         {
121                 $retVal = get_text::gettext($text);
122                 if ($retVal == "")
123                         return $text;
124                 return $retVal;
125         }
126 }
127 ?>