Вход Регистрация
Файл: public_html/system/classes/lang.php
Строк: 109
<?php

/*
    @author: Plato
    @modified: Artas
    @package: PerfCMS
    @year: 2012
*/
class Lang
    
{
    public 
$languages = array();
    public 
$cache = 0;
    public 
$language = 'en';
    public 
$data = array();

    public function 
__construct() {

        
$this->get_languages();
        global 
$settings;
        global 
$system;
        
        if (
$settings['lang']) {
            
$this->set_language($settings['lang']);
        }else
        if (
$_SESSION['lang']) {
             
$this->set_language($_SESSION['lang']);
         }
         elseif (
$_COOKIE['lang']) {
             
$this->set_language($_COOKIE['lang']);
         } 
         else
        if (
$_SERVER['HTTP_ACCEPT_LANGUAGE']) {
            
$this->set_language(substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2));
        } else {
            
$this->set_language($system['lang']);
        }


        @
define('LANGUAGE', $this->language);


        
$dir = opendir(SYS .'/lang/'. $this->language);

        while (
$file = readdir($dir)) {
            if (
$file == '.' OR $file == '..' OR $file == 'lang.ini') continue;

            
$data = include_once SYS .'/lang/'. $this->language .'/' . $file;


            
$this->data = array_merge($this->data, $data);
        }
    }


public function 
get_browser_language() {
        if ( ! 
$_SERVER['HTTP_ACCEPT_LANGUAGE']) return 'en';


        
$language = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);


        if ( ! 
in_array($language, array_keys($this->languages))) {
            
$language = 'en';
        }

        return 
$language;
    }


    public function 
set_language($language) {

        if ( ! 
in_array($language, array_keys($this->languages))) {
            
$language = $this->get_browser_language();
        }
        
        if(!
file_get_contents(SYS .'/lang/'.$language.'/lang.ini')) {
        
$language = $system['lang'];
        }

        
$this->language = $language;

        
$_SESSION['lang'] = $language;
        
$_COOKIE['lang'] = $language;
    }
    



    public function 
word($key) {
        if (empty(
$this->data[$key])) $data = $key;
        else 
$data = $this->data[$key];

        if (
is_string($key)) {

            
$lgr = parse_ini_file(SYS .'/lang/'. $this->language .'/lang.ini');
            
$data = $lgr[$key];
        }

        return 
$data;
    }


    protected function 
get_languages() {
        
$dir = opendir(SYS .'/lang');

        while (
$lang = readdir($dir)) {

            if ( ! 
file_exists(SYS .'/lang/'. $lang .'/lang.ini')) continue;


            
$config = parse_ini_file(SYS .'/lang/'. $lang .'/lang.ini');

            if (empty(
$config['name'])) continue;

            
$this->languages = array_merge($this->languages, array($lang => $config['name']));
        }
    }
}
Онлайн: 2
Реклама