RSS Git Download  Clone
Raw Blame History
<?php 
namespace Lib;

class Language {
	
	public static $locale = null;
	public static $available_locales = null;
	
	public static $config = array();
	
	private static $items = array();
	private static $javascript_items = array();

	public static function init() {
		global $config;

		Language::$available_locales = $config['available_locales'];

        if (isset($_GET['locale'])) {
            $locale = $_GET['locale'];
        } else {
            $locale = isset($_COOKIE['locale']) && $_COOKIE['locale'] != '' ? $_COOKIE['locale'] : DEFAULT_LOCALE;
        }

		if (!in_array($locale, Language::$available_locales)) {
			$locale = DEFAULT_LOCALE;
		}
        if (isset($_GET['locale'])) {
            setcookie("locale", $locale, time() + (86400 * 365), '/');
            header('Location: /');
            exit;
        };

		Language::$locale = $locale;

	}
	
	public static function ensure_language_data($area, $javascript = false) {

		if ($javascript && !isset(static::$javascript_items[$area]) ) {

			$path = LANG_PATH . static::$locale . DIRECTORY_SEPARATOR . 'javascript' . DIRECTORY_SEPARATOR . $area . '.php';
			$lang = null;
			require_once $path;
			static::$javascript_items[$area] = $lang;
		
		} elseif ( !isset(static::$items[$area]) ) {			
			$path = LANG_PATH . static::$locale . DIRECTORY_SEPARATOR . $area . '.php';
			$lang = null;
			require_once $path;
			static::$items[$area] = $lang;
		}
	}
	
	public static function item($area, $item) {	
		static::ensure_language_data($area);		
		$item = static::$items[$area][$item];
		return $item;		
	}

	
	public static function javascript_area($area) {	
		static::ensure_language_data($area, true);		
		$area = static::$javascript_items[$area];
		return $area; 
	}
}
?>