<?php
class Language {
	private $default = 'english';
	private $directory;
	private $data = array();

	public function __construct($directory) {
		$this->directory = $directory;
	}

	public function get($key) {
 		return (isset($this->data[$key]) ? $this->data[$key] : $key);
  }

  public function getData() {
    return $this->data;
  }

	public function getDirectory(){
		return $this->directory ;
	}

	public function load($filename, $directory = null, $defaultLanguage = true) {

        $directory = $directory ?? $this->directory;

        if ($directory != 'portuguese-br') {
            $this->load($filename, 'portuguese-br');
        }

		$file = DIR_LANGUAGE . $directory . '/' . $filename . '.php';

		if (file_exists($file)) {
			$_ = array();

			require($file);

			if ($defaultLanguage) {
                $this->data = array_merge($this->data, $_);
            } else {
                $this->data = $_;
            }

			return $this->data;
		}

		$file = DIR_LANGUAGE . $this->default . '/' . $filename . '.php';

		if (file_exists($file)) {
			$_ = array();

			require($file);

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

			return $this->data;
		} else if ($directory == 'portuguese-br') {
			trigger_error('Error: Could not load language ' . $filename . '!');
		//	exit();
    }

    return $this->data;
  }

  public function has($filename) {
    $file = DIR_LANGUAGE . $this->directory . '/' . $filename . '.php';

    if (file_exists($file)) {
      return true;
    }

    $file = DIR_LANGUAGE . $this->default . '/' . $filename . '.php';

    if (file_exists($file)) {
      return true;
    } else {
      return false;
    }
  }
}
