Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class translateException extends baseException{
- /**
- * @var mixed
- */
- protected $translateVars = null;
- /**
- * @param string $message
- * @param mixed $variables
- * @param Exception $previous
- */
- public function __construct($message = '', $variables = null, Exception $previous = null) {
- parent::__construct($message, 0, $previous);
- $this->translateVars = $variables;
- }
- /**
- * @return string
- */
- public function getTranslateMessage(){
- $st = translate::getTranslateString($this->getMessage());
- if(empty($this->translateVars)){
- return $st;
- }
- if(!is_array($this->translateVars)){
- $vars = array($st, $this->translateVars);
- } else{
- $vars = $this->translateVars;
- array_unshift($vars, $st);
- }
- return call_user_func_array('sprintf', $vars);
- }
- }
- class translate{
- const localeRu = 1;
- const localeDe = 2;
- public static $translateRu = array(
- 'Number:%d' => 'Номер:%d',
- 'Error' => 'Ошибка'
- );
- public static $translateDe = array(
- 'Number:%d' => 'Zahl:%d',
- 'Error' => 'Fehler'
- );
- public static $currentLocale;
- public static function getTranslateString($s){
- $st = '';
- switch( self::$currentLocale ){
- case self::localeRu: $st = self::$translateRu[$s];
- break;
- case self::localeDe: $st = self::$translateDe[$s];
- break;
- }
- if(!strlen($st)){
- $st = $s;
- }
- return $st;
- }
- }
- translate::$currentLocale = translate::localeDe;
- try {
- throw new translateException('Number:%d', 1);
- throw new translateException('Number:%d, String:%s', array(1, 'abc'));
- throw new translateException('Error');
- } catch (translateException $e) {
- echo $e->getTranslateMessage();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement