(no commit message)
[freeside.git] / fs_selfservice / fri / includes / lang.php
1 <?php
2
3 /**
4  * @file
5  * i18n language functions
6  */
7
8 /**
9   * Class for login
10   */
11 class Language {
12
13   var $error;
14
15   /**
16    * Sets i18n locale language
17    *
18    * sets the language for i18n php gettext module
19    * (gettext has to be enabled in the php.ini)
20    *
21    */
22   function set() {
23
24     if (extension_loaded('gettext')) {
25
26       // try and find the default locale
27       $default_lang = preg_replace('/-/','_',$_SERVER['HTTP_ACCEPT_LANGUAGE']);
28
29       $locale = 'en_US';
30       $locale_dir = "./locale";
31       $directories = getdirectories($locale_dir,"");
32       foreach($directories as $directory) {
33         $buf = substr($directory,strlen($locale_dir)+1,strlen($directory) - strlen($locale_dir));
34         if (preg_match("/" . $buf . "/i",$default_lang)) {
35           $locale = $buf;  
36           break;
37         }
38       }
39
40       // set locale
41       $language = isset($_COOKIE['ari_lang']) ? $_COOKIE['ari_lang'] : $locale;
42       putenv("LANG=$language"); 
43       putenv("LANGUAGE=$language");
44       setlocale(LC_MESSAGES,$language);
45       bindtextdomain('ari','./locale');
46       bind_textdomain_codeset('ari', 'UTF-8');
47       textdomain('ari');
48
49     } else {
50       function _($str) {
51         return $str;
52       }
53     }
54   }
55
56   /**
57    * Sets the i18n language in a cookie
58    *
59    * @param $lang_code
60    *   length of random number
61    */
62   function setCookie($lang_code) {
63
64     if (extension_loaded('gettext')) {
65       setcookie("ari_lang", $lang_code, time()+365*24*60*60);
66     }
67   }
68
69   /**
70    * Sets the i18n language in a cookie
71    *
72    * @param $lang_code
73    *   length of random number
74    */
75   function getForm() {
76
77     // lang setting options
78     if (extension_loaded('gettext')) {
79
80       $langOptions = "
81         <script>
82           function setCookie(name,value) {
83             var t = new Date();
84             var e = new Date();
85             e.setTime(t.getTime() + 365*24*60*60);
86             document.cookie = name+\"=\"+escape(value) + \";expires=\"+e.toGMTString();
87           }
88         </script>
89         <form class='lang' name='lang' action=" . $_SESSION['ARI_ROOT'] . " method='POST'>
90           <select class='lang_code' name='lang_code'  onChange=\"setCookie('ari_lang',document.lang.lang_code.value); window.location.reload();\">
91             <option value='en_US' " . ($_COOKIE['ari_lang']=='en_US' ? 'selected' : '') .  ">English</option>
92             <option value='es_ES' " . ($_COOKIE['ari_lang']=='es_ES' ? 'selected' : '') .  ">Espa&ntilde;ol</option>
93             <option value='fr_FR' " . ($_COOKIE['ari_lang']=='fr_FR' ? 'selected' : '') .  ">French</option>
94             <option value='de_DE' " . ($_COOKIE['ari_lang']=='de_DE' ? 'selected' : '') .  ">German</option>
95             <option value='el_GR' " . ($_COOKIE['ari_lang']=='el_GR' ? 'selected' : '') .  ">Greek</option>
96             <option value='he_IL' " . ($_COOKIE['ari_lang']=='he_IL' ? 'selected' : '') .  ">Hebrew</option>
97             <option value='hu_HU' " . ($_COOKIE['ari_lang']=='hu_HU' ? 'selected' : '') .  ">Hungarian</option>
98             <option value='it_IT' " . ($_COOKIE['ari_lang']=='it_IT' ? 'selected' : '') .  ">Italian</option>
99             <option value='pt_BR' " . ($_COOKIE['ari_lang']=='pt_BR' ? 'selected' : '') .  ">Portuguese</option>
100             <option value='sv_SE' " . ($_COOKIE['ari_lang']=='sv_SE' ? 'selected' : '') .  ">Swedish</option>
101           </select>
102         </form>";
103     } 
104
105     return $langOptions;
106   }
107
108
109 }
110
111
112 ?>