Advertisement
Guest User

Untitled

a guest
Jan 23rd, 2015
225
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 3.72 KB | None | 0 0
  1. <?php
  2. /*
  3.  *  LangQuery - PHP Language Class
  4.  *  https://github.com/enesnr/langquery/
  5.  */
  6.  
  7. // If langquery.php is called by its own, not included.
  8. if(count(get_included_files())==1){
  9.     if(isset($_GET[json])){$L = new LangQuery(); echo $L->json();}
  10. }
  11.  
  12. class LangQuery{
  13.     public $default = "en";
  14.     /* All language abbreviations list : http://msdn.microsoft.com/en-us/library/ms693062(v=vs.85).aspx      */
  15.     public $list,$data,$current;
  16.     public $language_folder = "language";
  17.     public $get_parameter = "Language";
  18.     public $cookie_name = "Language";
  19.     public $cookie_expire = 31536000; //365*24*60*60
  20.     public $domain = ($_SERVER['SERVER_NAME']);
  21.     public $page = basename($_SERVER['PHP_SELF']);
  22.  
  23.     public function __construct($auto=TRUE){
  24.         if(!is_dir(dirname(__FILE__)."/$this->language_folder")){die("LANGQUERY : No language folder /$this->language_folder/");}
  25.         $this->list = str_replace(".ini","",array_slice(scandir(dirname(__FILE__)."/$this->language_folder"),2));
  26.         if(count($this->list)==0){
  27.             die("LANGQUERY : No language file in /$this->language_folder/ directory. Please add at least default language $this->default.ini");
  28.         }
  29.         if($auto){
  30.             if($this->is_valid($_GET[$this->get_parameter])){
  31.                 $this->load($_GET[$this->get_parameter]);
  32.             }else{
  33.                 if($this->is_valid($_COOKIE[$this->cookie_name])){
  34.                     $this->load($_COOKIE[$this->cookie_name]);
  35.                 }elseif($this->is_valid($this->browser())){
  36.                     $this->load($this->browser(),FALSE);
  37.                 }else{
  38.                     $this->load($this->default,FALSE);
  39.                 }
  40.             }
  41.         }
  42.     }
  43.     /* USTAWIENIE ADRESU */
  44.     $this->setaddress();
  45.     $this->page = basename($_SERVER['PHP_SELF']);
  46.     $this->domain = ($_SERVER['SERVER_NAME']);
  47.     }
  48.     public function __invoke(){
  49.         $arguments=func_get_args();
  50.         $key=$arguments[0];
  51.         array_shift($arguments);
  52.         preg_match("/(?P<operation>[>]?)(\[(?P<language>\w+)\])?(?P<key>\w+)/", $key, $matches);
  53.         $text = $this->find($matches['key'], $arguments, $matches['language']);
  54.         if($matches['operation']==">"){
  55.             echo($text);
  56.         }else{
  57.             return $text;
  58.         }
  59.     }
  60.     public function browser(){
  61.         return substr($_SERVER["HTTP_ACCEPT_LANGUAGE"],0,2);
  62.     }
  63.     public function is_valid($language){
  64.         return in_array($language,$this->list);
  65.     }
  66.     public function load($language,$save_cookie=TRUE){
  67.         $this->ini_loader($language);
  68.         $this->current = $language;
  69.         if($save_cookie) setcookie($this->cookie_name, $language, time()+$this->cookie_expire,"/");
  70.     }
  71.     public function free($language=""){
  72.         if($language==""){
  73.             $this->data = array();
  74.         }else{
  75.             if(isset($this->data[$language])) unset($this->data[$language]);
  76.         }
  77.     }
  78.     private function ini_loader($language){
  79.         if(!isset($this->data[$language])){
  80.             if($this->is_valid($language)){
  81.                 $this->data[$language] = parse_ini_file(dirname(__FILE__)."/$this->language_folder/$language.ini");
  82.             }else{
  83.                 die("LANGQUERY : No such language file : $this->language_folder/$language.ini");
  84.             }
  85.         }
  86.     }
  87.     private function find($key,$arguments="",$language=""){
  88.         if($language==""){
  89.             $language=$this->current;
  90.         }else{
  91.             $this->ini_loader($language);
  92.         }
  93.         return
  94.             isset($this->data[$language][$key])
  95.                 ? vsprintf($this->data[$language][$key],$arguments)
  96.                 : "<script>alert('LANGQUERY : UNDEFINED_LANGUAGE_KEY[$language][$key]')</script>";
  97.     }
  98.     public function json(){
  99.         return json_encode($this->data[$this->current]);
  100.     }
  101.     /* USTAWIANIE ADRESU - PATRZ TEZ LINIJKA 41 */
  102.        $this->page oznacza nazwe pliku, np /index.php
  103.     public function setaddress(){
  104.         if(!isset($_GET['language']))
  105.             header("Location: ".$this->domain.'/' .$this->page);
  106.         if(!in_array($_GET['language'], $this->list))
  107.             header("Location: ".'/'.$this->domain.'/'.$this->page);
  108.     }
  109. }
  110. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement