function smarty_block_tr($params, $content, &$smarty) { global $_SERVER; // < 4.1.0 static $init; static $default_languages = false; if (!$init) { $init = true; fbGettext::init(); if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) { $default_languages =& fbLocale::parseAcceptLanguages($_SERVER['HTTP_ACCEPT_LANGUAGE']); } } $lang = false; extract($params); if ($lang) { $languages =& fbLocale::parseAcceptLanguages($lang); } else { $languages = $default_languages; } /// \todo only switch locales if the current locale is different! fbLocale::pushLocale(LC_ALL, $languages); $rv = gettext($content); fbLocale::popLocale(LC_ALL); return $rv; }
function gettext($message) { fbDebug::enter(); static $current_locale = null; $locale = fbLocale::getLocale(); if ($locale != $current_locale) { fbGettext::_loadData(); $current_locale = $locale; } $translation_map =& fbGettext::_translation_map(); fbDebug::dump($translation_map, 'translation_map'); if (isset($translation_map[$message])) { return $translation_map[$message]; } return $message; }