X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;ds=sidebyside;f=functions%2Fi18n.php;h=c015676f9ba13fef357f3f92ee692a0c557a650c;hb=d72176b0e0e023cd6d149e1a24ac7a15e8290e01;hp=3aec6c9c6cd9ccde75f75cca43e85369a696ff9e;hpb=f435778e5dabea883d6394d5ab43ae72d51dfd50;p=squirrelmail.git diff --git a/functions/i18n.php b/functions/i18n.php index 3aec6c9c..c015676f 100644 --- a/functions/i18n.php +++ b/functions/i18n.php @@ -20,72 +20,114 @@ if (! isset($squirrelmail_language)) { $squirrelmail_language = ''; } // This array specifies the available languages. - $languages['en']['NAME'] = 'English'; - $languages['en']['CHARSET'] = 'iso-8859-1'; - $languages['ca']['NAME'] = 'Catalan'; $languages['ca']['CHARSET'] = 'iso-8859-1'; - - $languages['hr']['NAME'] = 'Croatian'; - $languages['hr']['CHARSET'] = 'iso-8859-2'; + $languages['ca_CA']['ALIAS'] = 'ca'; $languages['cs_CZ']['NAME'] = 'Czech'; $languages['cs_CZ']['CHARSET'] = 'iso-8859-2'; $languages['da']['NAME'] = 'Danish'; $languages['da']['CHARSET'] = 'iso-8859-1'; + $languages['da_DA']['ALIAS'] = 'da'; $languages['de']['NAME'] = 'Deutsch'; $languages['de']['CHARSET'] = 'iso-8859-1'; + $languages['de_DE']['ALIAS'] = 'de'; - $languages['nl']['NAME'] = 'Dutch'; - $languages['nl']['CHARSET'] = 'iso-8859-1'; + $languages['en']['NAME'] = 'English'; + $languages['en']['CHARSET'] = 'iso-8859-1'; + $languages['en_EN']['ALIAS'] = 'en'; + $languages['es']['NAME'] = 'Spanish'; + $languages['es']['CHARSET'] = 'iso-8859-1'; + $languages['es_ES']['ALIAS'] = 'es'; + + $languages['et']['NAME'] = 'Estonian'; + $languages['et']['CHARSET'] = 'iso-8859-15'; + $languages['et_EE']['ALIAS'] = 'et'; + + $languages['fi']['NAME'] = 'Finnish'; + $languages['fi']['CHARSET'] = 'iso-8859-1'; + $languages['fi_FI']['ALIAS'] = 'fi'; + $languages['fr']['NAME'] = 'French'; $languages['fr']['CHARSET'] = 'iso-8859-1'; + $languages['fr_FR']['ALIAS'] = 'fr'; - $languages['fi']['NAME'] = 'Finnish'; - $languages['fi']['CHARSET'] = 'iso-8859-1'; + $languages['hr']['NAME'] = 'Croatian'; + $languages['hr']['CHARSET'] = 'iso-8859-2'; + $languages['hr_HR']['ALIAS'] = 'hr'; $languages['hu']['NAME'] = 'Hungarian'; - $languages['hu']['CHARSET'] = 'iso-8859-1'; + $languages['hu']['CHARSET'] = 'iso-8859-2'; + $languages['hu_HU']['ALIAS'] = 'hu'; + $languages['id']['NAME'] = 'Indonesian'; + $languages['id']['CHARSET'] = 'iso-8859-1'; + $languages['id_ID']['ALIAS'] = 'id'; + $languages['is']['NAME'] = 'Icelandic'; $languages['is']['CHARSET'] = 'iso-8859-1'; + $languages['is_IS']['ALIAS'] = 'is'; $languages['it']['NAME'] = 'Italian'; $languages['it']['CHARSET'] = 'iso-8859-1'; + $languages['it_IT']['ALIAS'] = 'it'; $languages['ko']['NAME'] = 'Korean'; $languages['ko']['CHARSET'] = 'euc-KR'; + $languages['ko_KO']['ALIAS'] = 'ko'; + + $languages['nl']['NAME'] = 'Dutch'; + $languages['nl']['CHARSET'] = 'iso-8859-1'; + $languages['nl_NL']['ALIAS'] = 'nl'; $languages['no']['NAME'] = 'Norwegian (Bokmål)'; $languages['no']['CHARSET'] = 'iso-8859-1'; - + $languages['no_NO']['ALIAS'] = 'no'; $languages['no_NO_ny']['NAME'] = 'Norwegian (Nynorsk)'; $languages['no_NO_ny']['CHARSET'] = 'iso-8859-1'; $languages['pl']['NAME'] = 'Polish'; $languages['pl']['CHARSET'] = 'iso-8859-2'; + $languages['pl_PL']['ALIAS'] = 'pl'; + $languages['pt']['NAME'] = 'Português (Portugal)'; + $languages['pt']['CHARSET'] = 'iso-8859-1'; $languages['pt_BR']['NAME'] = 'Portuguese (Brazil)'; $languages['pt_BR']['CHARSET'] = 'iso-8859-1'; + $languages['pt_PT']['ALIAS'] = 'pt'; $languages['ru']['NAME'] = 'Russian KOI8-R'; $languages['ru']['CHARSET'] = 'koi8-r'; + $languages['ru_RU']['ALIAS'] = 'ru'; $languages['sr']['NAME'] = 'Serbian'; $languages['sr']['CHARSET'] = 'iso-8859-2'; + $languages['sr_SR']['ALIAS'] = 'sr'; - $languages['es']['NAME'] = 'Spanish'; - $languages['es']['CHARSET'] = 'iso-8859-1'; - $languages['sv']['NAME'] = 'Swedish'; $languages['sv']['CHARSET'] = 'iso-8859-1'; + $languages['sv_SV']['ALIAS'] = 'sv'; + + $languages['tr']['NAME'] = 'Turkish'; + $languages['tr']['CHARSET'] = 'iso-8859-1'; + $languages['tr_TR']['ALIAS'] = 'tr'; $languages['tw']['NAME'] = 'Taiwan'; $languages['tw']['CHARSET'] = 'big5'; + $languages['tw_TW']['ALIAS'] = 'tw'; + + $languages['sk_SK']['NAME'] = 'Slovak'; + $languages['sk_SK']['CHARSET'] = 'iso-8859-2'; + $languages['ro']['NAME'] = 'Romanian'; + $languages['ro']['CHARSET'] = 'iso-8859-2'; + $languages['ro_RO']['ALIAS'] = 'ro'; + + $languages['th']['NAME'] = 'Thai'; + $languages['th']['CHARSET'] = 'tis-620'; // Decodes a string to the internal encoding from the given charset function charset_decode ($charset, $string) { @@ -113,6 +155,8 @@ return charset_decode_ns_4551_1 ($string); } else if ($charset == 'koi8-r') { return charset_decode_koi8r ($string); + } else if ($charset == 'windows-1251') { + return charset_decode_koi8r ($string); } else return $string; } @@ -270,7 +314,7 @@ // Only do the slow convert if there are 8-bit characters if (! ereg("[\200-\377]", $string)) return $string; - + // NO-BREAK SPACE $string = str_replace("\240", ' ', $string); // LATIN CAPITAL LETTER A WITH OGONEK @@ -473,11 +517,11 @@ if (strtolower($default_charset) == 'iso-8859-7') return $string; - + // Only do the slow convert if there are 8-bit characters if (!ereg("[\200-\377]", $string)) return $string; - + // Some diverse characters in the beginning $string = str_replace("\240", ' ', $string); $string = str_replace("\241", '‘', $string); @@ -513,7 +557,7 @@ // These are Unicode 900-902 while (ereg("([\270-\272])", $string, $res)) { $replace = '&#' . (ord($res[1])+720) . ";"; - $string = str_replace($res[1], $replace, $string); + $string = str_replace($res[1], $replace, $string); } // 11/11 (0xBB) Right angle quotation mark is the same as in @@ -523,7 +567,7 @@ // And now the rest of the charset while (ereg("([\274-\376])", $string, $res)) { $replace = '&#' . (ord($res[1])+720) . ';'; - $string = str_replace($res[1], $replace, $string); + $string = str_replace($res[1], $replace, $string); } return $string; @@ -598,7 +642,7 @@ if ($default_charset == 'koi8-r') return $string; - + // Convert to Unicode HTML entities. // This code is rather ineffective. $string = str_replace("\200", '─', $string); @@ -737,39 +781,44 @@ global $use_gettext; // Detect whether gettext is installed. - // If it is, set the flag so we can use it. - if (! function_exists('_') || - ! function_exists('bindtextdomain') || - ! function_exists('textdomain')) - $use_gettext = false; - else - $use_gettext = true; - - - // Avoid warnings/errors if gettext is not installed - if (! function_exists('_')) { - function _($str) { return $str; }; - } - if (! function_exists('bindtextdomain')) { - function bindtextdomain() { return; } - } - if (! function_exists('textdomain')) { - function textdomain() { return; } + $gettext_flags = 0; + if (function_exists('_')) $gettext_flags += 1; + if (function_exists('bindtextdomain')) $gettext_flags += 2; + if (function_exists('textdomain')) $gettext_flags += 4; + + // If gettext is fully loaded, cool + if ($gettext_flags == 7) + $use_gettext = true; + // If we can fake gettext, try that + elseif ($gettext_flags == 0) { + $use_gettext = true; + include_once('../functions/gettext.php'); + } else { + // Uh-ho. A weird install + if (! $gettext_flags & 1) { + function _($str) { return $str; }; + } + if (! $gettext_flags & 2) { + function bindtextdomain() { return; } + } + if (! $gettext_flags & 4) { + function textdomain() { return; } + } } // Set up the language to be output // if $do_search is true, then scan the browser information // for a possible language that we know - function set_up_language($sm_language, $do_search = false) - { + function set_up_language($sm_language, $do_search = false) { static $SetupAlready = 0; global $HTTP_ACCEPT_LANGUAGE, $use_gettext, $languages, - $squirrelmail_language; + $squirrelmail_language, $squirrelmail_default_language, + $sm_notAlias; if ($SetupAlready) return; - + $SetupAlready = 1; $charset_headers_sent=false; @@ -777,20 +826,23 @@ if ($do_search && ! $sm_language && isset($HTTP_ACCEPT_LANGUAGE)) { $sm_language = substr($HTTP_ACCEPT_LANGUAGE, 0, 2); } + if (!$sm_language && isset($squirrelmail_default_language)) + $sm_language = $squirrelmail_default_language; + $sm_notAlias = $sm_language; + while (isset($languages[$sm_notAlias]['ALIAS'])) + $sm_notAlias = $languages[$sm_notAlias]['ALIAS']; if (isset($sm_language) && $use_gettext && - $squirrelmail_language != '' && - isset($languages[$sm_language]['CHARSET'])) { + $sm_language != '' && + isset($languages[$sm_notAlias]['CHARSET'])) { if ((ini_get('safe_mode') == FALSE) && (getenv('LC_ALL') != $sm_language)) { - putenv('LC_ALL=' . $sm_language); + putenv('LC_ALL=' . $sm_notAlias); } - setlocale('LC_ALL', $sm_language); + setlocale('LC_ALL', $sm_notAlias); bindtextdomain('squirrelmail', '../locale/'); textdomain('squirrelmail'); header ('Content-Type: text/html; charset=' . $languages[$sm_language]['CHARSET']); - $charset_headers_sent=true; } - return $charset_headers_sent; } function set_my_charset(){ @@ -806,8 +858,10 @@ global $data_dir, $username, $default_charset, $languages; $my_language = getPref($data_dir, $username, "language"); if (!$my_language) return; + while (isset($languages[$my_language]['ALIAS'])) + $my_language = $languages[$my_language]['ALIAS']; $my_charset=$languages[$my_language]['CHARSET']; if ($my_charset) $default_charset=$my_charset; } -?> +?> \ No newline at end of file