37 public static function init ($lang = NULL)
42 $lang = static::detect();
45 list ($language, , $char) = parse_gettext_lang($lang);
48 $langset = setlocale(LC_ALL, $lang, $language.
'.'.$char);
49 if ($langset === FALSE) {
50 trigger_error(
'Setting locale to '.$lang.
' failed');
51 } elseif ($langset != $lang) {
52 trigger_error(
'Setting locale to '.$lang.
' failed, fell back to '.$langset);
54 $GLOBALS[
't_language'] = $lang;
55 $GLOBALS[
't_gettext_message_dir'] = $BASE_DIR.
'/locale/';
56 static::setHeaders($lang,
'text/html');
59 $domain =
'fusiondirectory';
62 if ($_SERVER[
'REQUEST_METHOD'] !=
'POST') {
63 logging::debug(DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $lang,
'Setting language to');
72 if ($_SERVER[
'REQUEST_METHOD'] !=
'POST') {
104 if (isset($ui) && ($ui !== NULL) && ($ui->language !=
'')) {
105 return $ui->language.
'.UTF-8';
109 if (isset($config) && ($config->get_cfg_value(
'language') !=
'')) {
110 $lang = $config->get_cfg_value(
'language');
111 if (!preg_match(
'/utf/i', $lang)) {
118 $languages = static::getList();
122 foreach (array_keys($languages) as $lang) {
123 $langs[] = $lang.
'.UTF-8';
127 return al2gt($langs);
137 if (strpos($lang,
'.') === FALSE) {
138 $lang = $lang.
'.UTF-8';
142 $locale = setlocale(LC_ALL, 0);
145 list ($language, , $char) = parse_gettext_lang($lang);
146 $langset = setlocale(LC_ALL, $lang, $language.
'.'.$char);
149 setlocale(LC_ALL, $locale);
151 return ($langset !== FALSE);
159 public static function getList ($ownLanguage = FALSE)
163 'en_US' =>
'English',
164 'af_ZA' =>
'Afrikaans',
166 'ca_ES' =>
'Catalan',
170 'es_CO' =>
'Colombian Spanish',
171 'es_ES' =>
'Spanish',
172 'es_VE' =>
'Venezuelan',
173 'fa_IR' =>
'Persian',
174 'fi_FI' =>
'Finnish',
176 'hu_HU' =>
'Hungarian',
177 'id_ID' =>
'Indonesian',
178 'it_IT' =>
'Italian',
179 'ja_JP' =>
'Japanese',
181 'lv_LV' =>
'Latvian',
182 'nb_NO' =>
'Norwegian Bokmål',
185 'pt_BR' =>
'Brazilian',
186 'pt_PT' =>
'Portuguese',
187 'ru_RU' =>
'Russian',
188 'sv_SE' =>
'Swedish',
189 'tr_TR' =>
'Turkish',
190 'vi_VN' =>
'Vietnamese',
191 'zh_TW' =>
'Taiwanese',
192 'zh_CN' =>
'Chinese',
199 'en_US' =>
'English',
201 'af_ZA' =>
'Afrikaans',
204 'de_DE' =>
'Deutsch',
205 'el_GR' =>
'ελληνικά',
206 'es_CO' =>
'Español Colombiano',
207 'es_ES' =>
'Español',
208 'es_VE' =>
'Castellano',
211 'fr_FR' =>
'Français',
213 'id_ID' =>
'Bahasa Indonesia',
214 'it_IT' =>
'Italiano',
217 'lv_LV' =>
'Latviešu valoda',
218 'nb_NO' =>
'Norsk bokmål',
219 'nl_NL' =>
'Nederlands',
221 'pt_BR' =>
'Português (Brasil)',
222 'pt_PT' =>
'Português',
223 'ru_RU' =>
'русский язык',
224 'sv_SE' =>
'Svenska',
226 'vi_VN' =>
'Tiếng Việt',
227 'zh_TW' =>
'Taiwanese',
228 'zh_CN' =>
'中文, 汉语, 漢語',
231 foreach ($tmp_english as $key => $name) {
232 $ret[$key] = _($name).
' ('.$tmp_ownlang[$key].
')';
235 foreach ($tmp_english as $key => $name) {
236 $ret[$key] = _($name);
246 public static function isRTL ($lang)
248 return preg_match(
'/^(fa_|ar_)/', $lang);
251 public static function setHeaders ($language, $mime)
253 list ($lang, $country, $char) = parse_gettext_lang($language);
255 if (!headers_sent()) {
256 header(
"Content-Language: $lang".(empty($country) ?
'' :
"-$country"));
257 if (!empty($char) && preg_match(
'|^text/|', $mime)) {
258 header(
"Content-Type: $mime; charset=$char");
260 header(
"Content-Type: $mime");
263 trigger_error(
'Could not set language '.$lang.
' header, headers already sent');
static detect()
Determine which language to show to the user.
static load()
Loads plist and load it in config object.
static get($name)
Accessor of a session var.
& get_userinfo()
Return the current userinfo object.
static getList($ownLanguage=FALSE)
Get the language for the user connecting.
static set($name, $value)
Set a value in a session.
static init($lang=NULL)
Initialize language configuration.
This class contains all the function needed to manage languages.
static debug(int $level, int $line, string $function, string $file, $data, string $info='')
Debug output method.
static isAvailable(string $lang)
Checks if a locale is available.
static un_set($name)
Unset a session.
const LOCALE_DIR
Global locale cache dir.
static isRTL($lang)
Returns TRUE if $lang is a right to left language.
static is_set($name)
Check if the name of the session is set.