X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=functions%2Fi18n.php;h=2ce457b1f144020b2dfb771ae0a6f10a29749d50;hb=cb48c2455cde2cf6ba67944c45decc4eca7df306;hp=11f1f64d16bb88da6392391d00aaee5797e65aad;hpb=d30d79f24098bb0e09a68467539912208434ac2f;p=squirrelmail.git diff --git a/functions/i18n.php b/functions/i18n.php index 11f1f64d..2ce457b1 100644 --- a/functions/i18n.php +++ b/functions/i18n.php @@ -1,42 +1,179 @@ - + // KOI8-R is used to encode Russian mail (Cyrrilic). Defined in RFC + // 1489. + function charset_decode_koi8r ($string) { + global $default_charset; + + if ($default_charset == 'koi8-r') + return $string; + + // Convert to Unicode HTML entities. + // This code is rather ineffective. + $string = str_replace("\200", '─', $string); + $string = str_replace("\201", '│', $string); + $string = str_replace("\202", '┌', $string); + $string = str_replace("\203", '┐', $string); + $string = str_replace("\204", '└', $string); + $string = str_replace("\205", '┘', $string); + $string = str_replace("\206", '├', $string); + $string = str_replace("\207", '┤', $string); + $string = str_replace("\210", '┬', $string); + $string = str_replace("\211", '┴', $string); + $string = str_replace("\212", '┼', $string); + $string = str_replace("\213", '▀', $string); + $string = str_replace("\214", '▄', $string); + $string = str_replace("\215", '█', $string); + $string = str_replace("\216", '▌', $string); + $string = str_replace("\217", '▐', $string); + $string = str_replace("\220", '░', $string); + $string = str_replace("\221", '▒', $string); + $string = str_replace("\222", '▓', $string); + $string = str_replace("\223", '⌠', $string); + $string = str_replace("\224", '■', $string); + $string = str_replace("\225", '∙', $string); + $string = str_replace("\226", '√', $string); + $string = str_replace("\227", '≈', $string); + $string = str_replace("\230", '≤', $string); + $string = str_replace("\231", '≥', $string); + $string = str_replace("\232", ' ', $string); + $string = str_replace("\233", '⌡', $string); + $string = str_replace("\234", '°', $string); + $string = str_replace("\235", '²', $string); + $string = str_replace("\236", '·', $string); + $string = str_replace("\237", '÷', $string); + $string = str_replace("\240", '═', $string); + $string = str_replace("\241", '║', $string); + $string = str_replace("\242", '╒', $string); + $string = str_replace("\243", 'ё', $string); + $string = str_replace("\244", '╓', $string); + $string = str_replace("\245", '╔', $string); + $string = str_replace("\246", '╕', $string); + $string = str_replace("\247", '╖', $string); + $string = str_replace("\250", '╗', $string); + $string = str_replace("\251", '╘', $string); + $string = str_replace("\252", '╙', $string); + $string = str_replace("\253", '╚', $string); + $string = str_replace("\254", '╛', $string); + $string = str_replace("\255", '╜', $string); + $string = str_replace("\256", '╝', $string); + $string = str_replace("\257", '╞', $string); + $string = str_replace("\260", '╟', $string); + $string = str_replace("\261", '╠', $string); + $string = str_replace("\262", '╡', $string); + $string = str_replace("\263", 'Ё', $string); + $string = str_replace("\264", '╢', $string); + $string = str_replace("\265", '╣', $string); + $string = str_replace("\266", '╤', $string); + $string = str_replace("\267", '╥', $string); + $string = str_replace("\270", '╦', $string); + $string = str_replace("\271", '╧', $string); + $string = str_replace("\272", '╨', $string); + $string = str_replace("\273", '╩', $string); + $string = str_replace("\274", '╪', $string); + $string = str_replace("\275", '╫', $string); + $string = str_replace("\276", '╬', $string); + $string = str_replace("\277", '©', $string); + $string = str_replace("\300", 'ю', $string); + $string = str_replace("\301", 'а', $string); + $string = str_replace("\302", 'б', $string); + $string = str_replace("\303", 'ц', $string); + $string = str_replace("\304", 'д', $string); + $string = str_replace("\305", 'е', $string); + $string = str_replace("\306", 'ф', $string); + $string = str_replace("\307", 'г', $string); + $string = str_replace("\310", 'х', $string); + $string = str_replace("\311", 'и', $string); + $string = str_replace("\312", 'й', $string); + $string = str_replace("\313", 'к', $string); + $string = str_replace("\314", 'л', $string); + $string = str_replace("\315", 'м', $string); + $string = str_replace("\316", 'н', $string); + $string = str_replace("\317", 'о', $string); + $string = str_replace("\320", 'п', $string); + $string = str_replace("\321", 'я', $string); + $string = str_replace("\322", 'р', $string); + $string = str_replace("\323", 'с', $string); + $string = str_replace("\324", 'т', $string); + $string = str_replace("\325", 'у', $string); + $string = str_replace("\326", 'ж', $string); + $string = str_replace("\327", 'в', $string); + $string = str_replace("\330", 'ь', $string); + $string = str_replace("\331", 'ы', $string); + $string = str_replace("\332", 'з', $string); + $string = str_replace("\333", 'ш', $string); + $string = str_replace("\334", 'э', $string); + $string = str_replace("\335", 'щ', $string); + $string = str_replace("\336", 'ч', $string); + $string = str_replace("\337", 'ъ', $string); + $string = str_replace("\340", 'Ю', $string); + $string = str_replace("\341", 'А', $string); + $string = str_replace("\342", 'Б', $string); + $string = str_replace("\343", 'Ц', $string); + $string = str_replace("\344", 'Д', $string); + $string = str_replace("\345", 'Е', $string); + $string = str_replace("\346", 'Ф', $string); + $string = str_replace("\347", 'Г', $string); + $string = str_replace("\350", 'Х', $string); + $string = str_replace("\351", 'И', $string); + $string = str_replace("\352", 'Й', $string); + $string = str_replace("\353", 'К', $string); + $string = str_replace("\354", 'Л', $string); + $string = str_replace("\355", 'М', $string); + $string = str_replace("\356", 'Н', $string); + $string = str_replace("\357", 'О', $string); + $string = str_replace("\360", 'П', $string); + $string = str_replace("\361", 'Я', $string); + $string = str_replace("\362", 'Р', $string); + $string = str_replace("\363", 'С', $string); + $string = str_replace("\364", 'Т', $string); + $string = str_replace("\365", 'У', $string); + $string = str_replace("\366", 'Ж', $string); + $string = str_replace("\367", 'В', $string); + $string = str_replace("\370", 'Ь', $string); + $string = str_replace("\371", 'Ы', $string); + $string = str_replace("\372", 'З', $string); + $string = str_replace("\373", 'Ш', $string); + $string = str_replace("\374", 'Э', $string); + $string = str_replace("\375", 'Щ', $string); + $string = str_replace("\376", 'Ч', $string); + $string = str_replace("\377", 'Ъ', $string); + + return $string; + } + + + global $use_gettext; + + // Detect whether gettext is installed. + $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) { + static $SetupAlready = 0; + global $HTTP_ACCEPT_LANGUAGE, $use_gettext, $languages, + $squirrelmail_language, $squirrelmail_default_language, + $sm_notAlias; + + if ($SetupAlready) + return; + + $SetupAlready = 1; + + $charset_headers_sent=false; + + if ($do_search && ! $sm_language && isset($HTTP_ACCEPT_LANGUAGE)) { + $sm_language = substr($HTTP_ACCEPT_LANGUAGE, 0, 2); + } + if (!$sm_language && isset($squirrelmail_default_language)) + $squirrelmail_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 && + $sm_language != '' && + isset($languages[$sm_notAlias]['CHARSET'])) { + if ((ini_get('safe_mode') == FALSE) && (getenv('LC_ALL') != $sm_language)) { + putenv('LC_ALL=' . $sm_notAlias); + } + setlocale('LC_ALL', $sm_notAlias); + bindtextdomain('squirrelmail', '../locale/'); + textdomain('squirrelmail'); + header ('Content-Type: text/html; charset=' . $languages[$sm_notAlias]['CHARSET']); + } + } + + function set_my_charset(){ + // + // There can be a $default_charset setting in the + // config.php file, but the user may have a different language + // selected for a user interface. This function checks the + // language selected by the user and tags the outgoing messages + // with the appropriate charset corresponding to the language + // selection. This is "more right" (tm), than just stamping the + // message blindly with the system-wide $default_charset. + // + 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