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; }
printf("%-12s\t%-10s\t%-10s\t%-10s", strftime("%A", $date), strftime("%a", $date), strftime("%B", $date), strftime("%b", $date), strftime("%c", $date)); // if (isset($supported_locales[$rv])) { // echo $supported_locales[$rv]; // } echo "\n"; @($supported_locales[$rv] .= $id3 . ' '); resetlocale(); } echo "\nsetlocale('language name')\n\n"; $language_id3_hash = fbISO639_Alpha3::getNameToIDHash(); foreach ($language_id3_hash as $language => $id3) { $rv = setlocale(LC_ALL, $language); if (!$rv) { continue; } $a = fbLocale::_parseLocale($rv); //print_r($a); if (isset($supported_locales[$rv])) { // $supported_locales[$rv] .= $id3 . ' '; continue; } if (strpos($rv, $language) === false) { $rv .= ' ??'; } $id2 = fbISO639_Map::getID2($id3); $ids = $id3 . ' ' . $id2; printf("%-40s%-10s\t", $language, $ids); printf("%-40s\t", $rv); printf("%-12s\t%-10s\t%-10s\t%-10s", strftime("%A", $date), strftime("%a", $date), strftime("%B", $date), strftime("%b", $date), strftime("%c", $date)); // if (isset($supported_locales[$rv])) { // echo $supported_locales[$rv];
echo html_header_demo('fbLocale Class'); echo "<pre>\n"; require_once FREEBEER_BASE . '/lib/Locale.php'; //exit; $iso_codes = array('it_IT' => 'Italian', 'fr_FR' => 'French', 'es_ES' => 'Spanish', 'nl_NL' => 'Dutch', 'en_US' => 'English', 'pt_PT' => 'Portuguese'); echo "fbLocale::getLocale(LC_ALL)=", fbLocale::getLocale(LC_ALL), "\n"; foreach ($iso_codes as $iso_code => $language) { // putenv('LANG=' . $iso_code); fbLocale::setLocale(LC_ALL, $iso_code); /* // \todo convert to one function! putenv('LANG=' . $iso_code); if (preg_match('/^win/i', PHP_OS)) { $rv = setlocale(LC_ALL, $language); } else { $rv = setlocale(LC_ALL, $iso_code); } */ printf("%-12s: %s\n", $language, strftime("%A %a %B %b %c\n")); fbLocale::setLocale(LC_ALL, 'en_US'); } ?> </pre> <address> $CVSHeader: _freebeer/www/demo/Locale.php,v 1.2 2004/03/07 17:51:33 ross Exp $ </address> </body> </html>
function _getDateNames($format, $locale = null) { static $rv = array(); $get_locale = is_null($locale); if ($get_locale) { $locale = fbLocale::getLocale(LC_TIME); } if (!isset($rv[$locale])) { if (!$get_locale) { fbLocale::pushLocale(LC_TIME, $locale); } $t = array(); for ($i = 0; $i < 12; ++$i) { $date = mktime(0, 0, 0, 1 + $i, 1, 2003); $t['B'][] = strftime('%B', $date); $t['b'][] = strftime('%b', $date); } for ($i = 0; $i < 7; ++$i) { $date = mktime(0, 0, 0, 11, 9 + $i, 2003); // 9-Nov-2003 was a Sunday $t['A'][] = strftime('%A', $date); $t['a'][] = strftime('%a', $date); } $rv[$locale] = $t; if (!$get_locale) { fbLocale::popLocale(LC_TIME); } } return $rv[$locale][$format]; }
echo 'gettext("24 hours")=',gettext("24 hours"),"\n"; echo 'gettext(\'24 hours\')=',gettext('24 hours'),"\n"; // _() as in alias for gettext() echo '_("24 hours")=',_("24 hours"),"\n"; echo '_(\'24 hours\')=',_('24 hours'),"\n"; //echo 'fbLocale::parseAcceptLanguages='; //print_r(fbLocale::parseAcceptLanguages()); */ // echo 'fbLocale::parseAcceptLanguages='; // print_r(fbLocale::parseAcceptLanguages()); // echo "\n"; echo 'fbLocale::getNearestLocales(fbLocale::parseAcceptLanguages())='; print_r(fbLocale::getNearestLocales(fbLocale::parseAcceptLanguages())); print "\n"; echo 'fbLocale::getAvailableLocales='; print_r(fbLocale::getAvailableLocales()); echo '$long_month_names_hash ='; print_r($long_month_names_hash); echo '$long_weekday_names_hash ='; print_r($long_weekday_names_hash); /* $locales = fbLocaleWindows::mimeToWindowsLocaleMap(); foreach ($locales as $iso_locale => $country_name) { $nearest_locale = fbLocale::getNearestLocale($iso_locale); $nearest_country_name = ''; printf("%-10s %-30s %-10s %-30s\n", $iso_locale, $country_name, $nearest_locale, $nearest_country_name); } */ /* setlocale(LC_ALL, 'usa');
function numberFormat($number, $digits = null, $locale = null) { fbDebug::enter(); static $localeconv_cache = array(); $get_locale = is_null($locale); fbDebug::dump($get_locale, '$get_locale'); if ($get_locale) { $locale = fbLocale::getLocale(LC_MONETARY); fbDebug::dump($locale, '$locale'); } fbDebug::dump($localeconv_cache, '$localeconv_cache'); if (!isset($localeconv_cache[$locale])) { fbDebug::dump($locale, '$locale'); if (!$get_locale) { $rv = fbLocale::pushLocale(LC_MONETARY, $locale); fbDebug::dump($rv, '$rv'); } $_locale = fbLocale::getLocale(LC_MONETARY); fbDebug::dump($_locale, '$_locale'); $localeconv_cache[$locale] = localeconv(); fbDebug::dump($localeconv_cache[$locale], '$localeconv_cache[$locale]'); if (!$get_locale) { fbLocale::popLocale(LC_MONETARY); } } $lc = $localeconv_cache[$locale]; fbDebug::dump($lc, '$lc'); if (is_null($digits)) { $digits = $lc['int_frac_digits']; } $rv = number_format($number, $digits, $lc['mon_decimal_point'], $lc['mon_thousands_sep']); $n = strpos($rv, '-'); if ($n !== false) { $rv = str_replace('-', $lc['negative_sign'], $rv); } fbDebug::leave($rv); 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; }
function resetlocale() { fbLocale::setlocale(LC_ALL, 'C') || fbLocale::setlocale(LC_ALL, '') || fbLocale::setlocale(LC_ALL, 'usa') || fbLocale::setlocale(LC_ALL, 'us') || fbLocale::setlocale(LC_ALL, 'en_US'); }