$v) { if (is_int($k) && $prefix != null) { $k = urlencode($prefix . $k); } if ((!empty($key)) || ($key === 0)) $k = $key.'['.urlencode($k).']'; if (is_array($v) || is_object($v)) { array_push($ret, http_build_query($v, '', $sep, $k)); } else { array_push($ret, $k.'='.urlencode($v)); } } if (empty($sep)) $sep = ini_get('arg_separator.output'); return implode($sep, $ret); } } /*** * * Translation utilities * * ***/ function translation_exists($id) { global $user, $ryzom_texts; return isset($ryzom_texts[$id]) && isset($ryzom_texts[$id][$user['lang']]); } // Translate the $id in the selected language function get_translation($id, $lang, $args=array()) { global $ryzom_texts, $user; if(!isset($ryzom_texts[$id])) return '{'.$id.'}'; if(!isset($ryzom_texts[$id][$lang])) return '{'.$id.'['.$lang.']}'; if($ryzom_texts[$id][$lang] == '' && isset($ryzom_texts[$id]['en'])) return @vsprintf($ryzom_texts[$id]['en'], $args); return @vsprintf($ryzom_texts[$id][$lang], $args); } // Translate the $id in the user language function _t($id, $args=array()) { global $ryzom_texts, $user; $a = ''; if ($args) { if (is_array($args)) { $a = array(); foreach ($args as $arg) $a[] = strval($arg); $a = ' '.implode(', ', $a); } else $a = ' '.strval($args); } if(!isset($ryzom_texts[$id])) return '{'.$id.$a.'}'; if(!isset($ryzom_texts[$id][$user['lang']])) return '{'.$id.'['.$user['lang'].']'.$a.'}'; if($ryzom_texts[$id][$user['lang']] == '' && isset($ryzom_texts[$id]['en']) && $ryzom_texts[$id]['en'] != '') return @vsprintf($ryzom_texts[$id]['en'], $args); if($ryzom_texts[$id][$user['lang']] == '' && isset($ryzom_texts[$id]['fr']) && $ryzom_texts[$id]['fr'] != '') return '{'.$id.$a.'}'; if($ryzom_texts[$id][$user['lang']] == '' && isset($ryzom_texts[$id]['de']) && $ryzom_texts[$id]['de'] != '') return '{'.$id.$a.'}'; return @vsprintf($ryzom_texts[$id][$user['lang']], $args); } /*** * * Ryzom time * * ***/ // Get a human and translated readable time, for example "3 days ago" function ryzom_relative_time($timestamp) { global $ryzom_periods, $user; $difference = time() - $timestamp; $lengths = array("60","60","24","7","4.35","12","10"); if ($difference >= 0) { // this was in the past $ending = _t('ago'); } else { // this was in the future $difference = -$difference; $ending = _t('to_go'); } for($j = 0,$m=count($lengths); $j<$m && $difference >= $lengths[$j]; $j++) $difference /= $lengths[$j]; // round hours as '1.2 hours to go' $difference = round($difference, ($j == 2) ? 1 : 0); $form = ($difference == 1) ? 'singular' : 'plural'; // Handle exceptions // French uses singular form if difference = 0 if ($user['lang'] == 'fr' && ($difference == 0)) { $form = 'singular'; } // Russian has a different plural form for plurals of 2 through 4 if ($user['lang'] == 'ru' && ($form == 'plural')) { if ($difference < 5) { $form = '2-4'; } } $final = $ryzom_periods[$user['lang']][$form][$j]; $text = _t('date_format', array($difference, $final, $ending)); return $text; } // Get a human and translated absolute date function ryzom_absolute_time($timestamp) { global $user, $ryzom_daysofweek, $ryzom_monthnames; $day_of_month = date("j", $timestamp); $dow = date("w", $timestamp); $month = date("n", $timestamp); $day_of_week = $ryzom_daysofweek[$user['lang']][$dow]; $month_str = $ryzom_monthnames[$user['lang']][$month-1]; $text = _t("absolute_date_format", array($day_of_month, $day_of_week, $month_str, $month, date("m", $timestamp), date("d", $timestamp))); return $text; } /*** * * Debug tools * * ***/ function p($var, $value=NULL) { ob_start(); debug_print_backtrace(); $bt = ob_get_contents(); ob_end_clean(); $bt = explode("\n",$bt); $bt = explode('[', $bt[1]); ob_start(); echo ''.substr($bt[count($bt)-1], 0, -1)."\n"; if ($value !== NULL) { echo ''.$var.' : '; $var = $value; } //if (is_array($var)) echo '
';
	print_r($var);
	echo '
'; // else // var_dump($var); ryLogger::getInstance()->addPrint(ob_get_contents()); ob_end_clean(); } ?>