diff --git a/include/class_Language.inc b/include/class_Language.inc index 7b67c983de85e19fe37612fbc0755d12c82d163f..d15453854104bcb61f3f8a2641969744c39a8b77 100644 --- a/include/class_Language.inc +++ b/include/class_Language.inc @@ -42,11 +42,14 @@ class Language $lang = static::detect(); } + list ($language, $country, $char) = parse_gettext_lang($lang); putenv('LANGUAGE='); putenv("LANG=$lang"); - $langset = setlocale(LC_ALL, $lang); + $langset = setlocale(LC_ALL, $lang, $language.'.'.$char); if ($langset === FALSE) { trigger_error('Setting locale to '.$lang.' failed'); + } elseif ($langset != $lang) { + trigger_error('Setting locale to '.$lang.' failed, fell back to '.$langset); } $GLOBALS['t_language'] = $lang; $GLOBALS['t_gettext_message_dir'] = $BASE_DIR.'/locale/'; @@ -134,7 +137,7 @@ class Language /* locales in english */ $tmp_english = array( 'en_US' => 'English', - 'ar' => 'Arabic', + 'ar_EG' => 'Arabic', 'ca_ES' => 'Catalan', 'cs_CZ' => 'Czech', 'de_DE' => 'German', @@ -146,16 +149,16 @@ class Language 'fi_FI' => 'Finnish', 'fr_FR' => 'French', 'hu_HU' => 'Hungarian', - 'id' => 'Indonesian', + 'id_ID' => 'Indonesian', 'it_IT' => 'Italian', - 'ja' => 'Japanese', - 'ko' => 'Korean', - 'lv' => 'Latvian', - 'nb' => 'Norwegian BokmÃ¥l', + 'ja_JP' => 'Japanese', + 'ko_KR' => 'Korean', + 'lv_LV' => 'Latvian', + 'nb_NO' => 'Norwegian BokmÃ¥l', 'nl_NL' => 'Dutch', 'pl_PL' => 'Polish', 'pt_BR' => 'Brazilian', - 'pt' => 'Portuguese', + 'pt_PT' => 'Portuguese', 'ru_RU' => 'Russian', 'sv_SE' => 'Swedish', 'tr_TR' => 'Turkish', @@ -168,7 +171,7 @@ class Language /* locales in their own language */ $tmp_ownlang = array( 'en_US' => 'English', - 'ar' => 'عربية', + 'ar_EG' => 'عربية', 'ca_ES' => 'Català ', 'cs_CZ' => 'ÄŒesky', 'de_DE' => 'Deutsch', @@ -180,16 +183,16 @@ class Language 'fi_FI' => 'Suomi', 'fr_FR' => 'Français', 'hu_HU' => 'Magyar', - 'id' => 'Bahasa Indonesia', + 'id_ID' => 'Bahasa Indonesia', 'it_IT' => 'Italiano', - 'ja' => '日本語', - 'ko' => '한êµì–´', - 'lv' => 'LatvieÅ¡u valoda', - 'nb' => 'Norsk bokmÃ¥l', + 'ja_JP' => '日本語', + 'ko_KR' => '한êµì–´', + 'lv_LV' => 'LatvieÅ¡u valoda', + 'nb_NO' => 'Norsk bokmÃ¥l', 'nl_NL' => 'Nederlands', 'pl_PL' => 'Polski', 'pt_BR' => 'Português (Brasil)', - 'pt' => 'Português', + 'pt_PT' => 'Português', 'ru_RU' => 'руÑÑкий Ñзык', 'sv_SE' => 'Svenska', 'tr_TR' => 'Türkçe', @@ -210,16 +213,11 @@ class Language } /*! - * \brief Returns TRUE if $lang is a right to left language ($lang should match /.._..(\.UTF-8)?/) + * \brief Returns TRUE if $lang is a right to left language */ public static function isRTL ($lang) { - $lang = preg_replace('/\.UTF-8$/', '', $lang); - - if (preg_match('/^fa_/', $lang)) { - return TRUE; - } - return FALSE; + return preg_match('/^(fa_|ar_)/', $lang); } public static function setHeaders($language, $mime)