X-Git-Url: https://vcs.fsf.org/?p=squirrelmail.git;a=blobdiff_plain;f=functions%2Fgettext.php;h=42950f35490d7c2e9d6a1ae484955c424e71b8a6;hp=ccb087516ce3fc97d966cc62a8772f98cf5268df;hb=dfc64d149b23ad2e06a10ff4f187ea9ce664bbc9;hpb=f875f87b639cf15d9cec0a7ffb2175e44914dc6e diff --git a/functions/gettext.php b/functions/gettext.php index ccb08751..42950f35 100644 --- a/functions/gettext.php +++ b/functions/gettext.php @@ -1,155 +1,25 @@ error==1) return $str; - } - - /* Look for a string that is very close to the one we want - Very computationally expensive */ - $oldPercent = 0; - $oldStr = ''; - $newPercent = 0; - foreach ($gettext_php_translateStrings as $k => $v) { - similar_text($str, $k, $newPercent); - if ($newPercent > $oldPercent) { - $oldStr = $v; - $oldPercent = $newPercent; - } - } - /* Require 80% match or better - Adjust to suit your needs */ - if ($oldPercent > 80) { - /* Remember this so we don't need to search again */ - $gettext_php_translateStrings[$str] = $oldStr; - return $oldStr; - } - - /* Remember this so we don't need to search again */ - $gettext_php_translateStrings[$str] = $str; - return $str; + return $l10n[$gettext_domain]->translate($str); } /** @@ -211,42 +45,59 @@ function _($str) { * Sets path to directory containing domain translations * * @link http://www.php.net/function.bindtextdomain - * @param string $name gettext domain name + * @param string $domain gettext domain name * @param string $dir directory that contains all translations * @return string path to translation directory + * @since 1.1.2 */ -function bindtextdomain($name, $dir) { - global $gettext_php_domain, $gettext_php_dir, $gettext_php_loaded; - - if ($gettext_php_domain != $name) { - $gettext_php_domain = $name; - $gettext_php_loaded = false; - } - if ($gettext_php_dir != $dir) { - $gettext_php_dir = $dir; - $gettext_php_loaded = false; - } - +function bindtextdomain($domain, $dir) { + global $l10n, $sm_notAlias; + if (substr($dir, -1) != '/') $dir .= '/'; + $mofile=$dir . $sm_notAlias . '/LC_MESSAGES/' . $domain . '.mo'; + + $input = new FileReader($mofile); + $l10n[$domain] = new gettext_reader($input); + return $dir; } /** * Alternative php textdomain function * - * Sets default domain name + * Sets default domain name. Before 1.5.1 command required + * bindtextdomain() call for each gettext domain change. * * @link http://www.php.net/function.textdomain * @param string $name gettext domain name * @return string gettext domain name + * @since 1.1.2 */ function textdomain($name = false) { - global $gettext_php_domain, $gettext_php_loaded; - - if ($name != false && $gettext_php_domain != $name) { - $gettext_php_domain = $name; - $gettext_php_loaded = false; - } + global $gettext_domain; + if ($name) $gettext_domain=$name; + return $gettext_domain; +} - return $gettext_php_domain; +/** + * Safety check. + * Setup where three standard gettext functions don't exist and dgettext() exists. + */ +if (! function_exists('dgettext')) { + /** + * Alternative php dgettext function + * + * @link http://www.php.net/function.dgettext + * @param string $domain Gettext domain + * @param string $str English string + * @return string translated string + * @since 1.5.1 + */ + function dgettext($domain, $str) { + global $l10n; + if (! isset($l10n[$domain]) || + ! is_object($l10n[$domain]) || + $l10n[$domain]->error==1) + return $str; + return $l10n[$domain]->translate($str); + } } -?> \ No newline at end of file