X-Git-Url: https://vcs.fsf.org/?p=squirrelmail.git;a=blobdiff_plain;f=include%2Flanguages.php;h=149cce1c2344fe963c8b33fe01c02da0e9ace130;hp=a20af558e2afa6a96d9fd32bfe294dda7483ede1;hb=47485591c277f6da6aab7fe2b18482ea93234105;hpb=87eaef7cc1bfe350777b1c08f3c9ed95164927d6 diff --git a/include/languages.php b/include/languages.php index a20af558..149cce1c 100644 --- a/include/languages.php +++ b/include/languages.php @@ -40,28 +40,37 @@ * (OPTIONAL; default is SquirrelMail * locale directory). * - * @return void + * @return string The name of the text domain that was set + * *BEFORE* it is changed herein - NOTE that + * this differs from PHP's textdomain() * * @since 1.5.2 and 1.4.10 */ function sq_change_text_domain($domain_name, $directory='') { - if (empty($directory)) $directory = SM_PATH . 'locale/'; - static $domains_already_seen = array(); + global $gettext_domain; + $return_value = $gettext_domain; + + // empty domain defaults to "squirrelmail" + // + if (empty($domain_name)) $domain_name = 'squirrelmail'; // only need to call bindtextdomain() once // if (in_array($domain_name, $domains_already_seen)) { sq_textdomain($domain_name); - return; + return $return_value; } $domains_already_seen[] = $domain_name; + if (empty($directory)) $directory = SM_PATH . 'locale/'; + sq_bindtextdomain($domain_name, $directory); sq_textdomain($domain_name); + return $return_value; } /** @@ -84,7 +93,7 @@ function sq_change_text_domain($domain_name, $directory='') { function sq_bindtextdomain($domain,$dir='') { global $l10n, $gettext_flags, $sm_notAlias; - if (empty($dir)) $dir = SM_PATH . 'locale/' + if (empty($dir)) $dir = SM_PATH . 'locale/'; if ($gettext_flags==7) { // gettext extension without ngettext @@ -331,10 +340,12 @@ function charset_convert($in_charset,$string,$out_charset,$htmlencode=true) { * @return string $charset Adjusted name of charset */ function fixcharset($charset) { - /* remove minus and characters that might be used in paths from charset + + /* Remove minus and characters that might be used in paths from charset * name in order to be able to use it in function names and include calls. + * Also make sure it's in lower case (ala "UTF" --> "utf") */ - $charset=preg_replace("/[-:.\/\\\]/",'_',$charset); + $charset=preg_replace("/[-:.\/\\\]/",'_', strtolower($charset)); // OE ks_c_5601_1987 > cp949 $charset=str_replace('ks_c_5601_1987','cp949',$charset); @@ -369,15 +380,24 @@ function fixcharset($charset) { * 1 = mbstring support is not present, * 2 = mbstring support is not present, user's translation reverted to en_US. * - * @param string $sm_language translation used by user's interface - * @param bool $do_search use browser's preferred language detection functions. Defaults to false. - * @param bool $default set $sm_language to $squirrelmail_default_language if language detection fails or language is not set. Defaults to false. + * @param string $sm_language Translation used by user's interface + * @param bool $do_search Use browser's preferred language detection functions. + * Defaults to false. + * @param bool $default Set $sm_language to $squirrelmail_default_language if + * language detection fails or language is not set. + * Defaults to false. + * @param string $content_type The content type being served currently (OPTIONAL; + * if not specified, defaults to whatever the template + * set that is in use has defined). + * * @return int function execution error codes. + * */ -function set_up_language($sm_language, $do_search = false, $default = false) { +function set_up_language($sm_language, $do_search=false, + $default=false, $content_type='') { static $SetupAlready = 0; - global $use_gettext, $languages, + global $use_gettext, $languages, $oTemplate, $squirrelmail_language, $squirrelmail_default_language, $default_charset, $sm_notAlias, $username, $data_dir; @@ -388,6 +408,10 @@ function set_up_language($sm_language, $do_search = false, $default = false) { $SetupAlready = TRUE; sqgetGlobalVar('HTTP_ACCEPT_LANGUAGE', $accept_lang, SQ_SERVER); + // grab content type if needed + // + if (empty($content_type)) $content_type = $oTemplate->get_content_type(); + /** * If function is asked to detect preferred language * OR squirrelmail default language is set to empty string @@ -512,7 +536,7 @@ function set_up_language($sm_language, $do_search = false, $default = false) { $squirrelmail_language = $sm_notAlias; if ($squirrelmail_language == 'ja_JP') { - header ('Content-Type: text/html; charset=EUC-JP'); + $oTemplate->header ('Content-Type: ' . $content_type . '; charset=EUC-JP'); if (!function_exists('mb_internal_encoding')) { // Error messages can't be displayed here $error = 1; @@ -530,9 +554,9 @@ function set_up_language($sm_language, $do_search = false, $default = false) { mb_internal_encoding('EUC-JP'); mb_http_output('pass'); } elseif ($squirrelmail_language == 'en_US') { - header( 'Content-Type: text/html; charset=' . $default_charset ); + $oTemplate->header( 'Content-Type: ' . $content_type . '; charset=' . $default_charset ); } else { - header( 'Content-Type: text/html; charset=' . $languages[$sm_notAlias]['CHARSET'] ); + $oTemplate->header( 'Content-Type: ' . $content_type . '; charset=' . $languages[$sm_notAlias]['CHARSET'] ); } /** * mbstring.func_overload fix (#929644).