Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- /*
- * LangQuery - PHP Language Class
- * https://github.com/enesnr/langquery/
- */
- // If langquery.php is called by its own, not included.
- if(count(get_included_files())==1){
- if(isset($_GET[json])){$L = new LangQuery(); echo $L->json();}
- }
- class LangQuery{
- public $default = "en";
- /* All language abbreviations list : http://msdn.microsoft.com/en-us/library/ms693062(v=vs.85).aspx */
- public $list,$data,$current;
- public $language_folder = "language";
- public $get_parameter = "Language";
- public $cookie_name = "Language";
- public $cookie_expire = 31536000; //365*24*60*60
- public $domain = ($_SERVER['SERVER_NAME']);
- public $page = basename($_SERVER['PHP_SELF']);
- public function __construct($auto=TRUE){
- if(!is_dir(dirname(__FILE__)."/$this->language_folder")){die("LANGQUERY : No language folder /$this->language_folder/");}
- $this->list = str_replace(".ini","",array_slice(scandir(dirname(__FILE__)."/$this->language_folder"),2));
- if(count($this->list)==0){
- die("LANGQUERY : No language file in /$this->language_folder/ directory. Please add at least default language $this->default.ini");
- }
- if($auto){
- if($this->is_valid($_GET[$this->get_parameter])){
- $this->load($_GET[$this->get_parameter]);
- }else{
- if($this->is_valid($_COOKIE[$this->cookie_name])){
- $this->load($_COOKIE[$this->cookie_name]);
- }elseif($this->is_valid($this->browser())){
- $this->load($this->browser(),FALSE);
- }else{
- $this->load($this->default,FALSE);
- }
- }
- }
- }
- /* USTAWIENIE ADRESU */
- $this->setaddress();
- $this->page = basename($_SERVER['PHP_SELF']);
- $this->domain = ($_SERVER['SERVER_NAME']);
- }
- public function __invoke(){
- $arguments=func_get_args();
- $key=$arguments[0];
- array_shift($arguments);
- preg_match("/(?P<operation>[>]?)(\[(?P<language>\w+)\])?(?P<key>\w+)/", $key, $matches);
- $text = $this->find($matches['key'], $arguments, $matches['language']);
- if($matches['operation']==">"){
- echo($text);
- }else{
- return $text;
- }
- }
- public function browser(){
- return substr($_SERVER["HTTP_ACCEPT_LANGUAGE"],0,2);
- }
- public function is_valid($language){
- return in_array($language,$this->list);
- }
- public function load($language,$save_cookie=TRUE){
- $this->ini_loader($language);
- $this->current = $language;
- if($save_cookie) setcookie($this->cookie_name, $language, time()+$this->cookie_expire,"/");
- }
- public function free($language=""){
- if($language==""){
- $this->data = array();
- }else{
- if(isset($this->data[$language])) unset($this->data[$language]);
- }
- }
- private function ini_loader($language){
- if(!isset($this->data[$language])){
- if($this->is_valid($language)){
- $this->data[$language] = parse_ini_file(dirname(__FILE__)."/$this->language_folder/$language.ini");
- }else{
- die("LANGQUERY : No such language file : $this->language_folder/$language.ini");
- }
- }
- }
- private function find($key,$arguments="",$language=""){
- if($language==""){
- $language=$this->current;
- }else{
- $this->ini_loader($language);
- }
- return
- isset($this->data[$language][$key])
- ? vsprintf($this->data[$language][$key],$arguments)
- : "<script>alert('LANGQUERY : UNDEFINED_LANGUAGE_KEY[$language][$key]')</script>";
- }
- public function json(){
- return json_encode($this->data[$this->current]);
- }
- /* USTAWIANIE ADRESU - PATRZ TEZ LINIJKA 41 */
- $this->page oznacza nazwe pliku, np /index.php
- public function setaddress(){
- if(!isset($_GET['language']))
- header("Location: ".$this->domain.'/' .$this->page);
- if(!in_array($_GET['language'], $this->list))
- header("Location: ".'/'.$this->domain.'/'.$this->page);
- }
- }
- ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement