<?php

class Eppe_Localization {

	public static function setCurrent() {

		$localizationCode = static::getDefault();

		if (!Rtn::isCli()) {
			preg_match('/\/([a-z]+)/', $_SERVER['REQUEST_URI'], $matches);
			$langCode = end($matches);

			foreach (static::getAvailable() as $localization) {
				if (0 === strpos($localization, $langCode)) {
					$localizationCode = $localization;
				}
			}
		}

		static::_setBaseUrl($localizationCode);

		static::_setBaseUrl($localizationCode);

		Zend_Registry::set('localizationCode', $localizationCode);
	}

	protected static function _setBaseUrl($localizationCode) {
		if ($localizationCode != static::getDefault())
			Zend_Controller_Front::getInstance()->setBaseUrl('/' . substr($localizationCode, 0, 2) . '/');
	}

	public static function getCurrent() {
		return Zend_Registry::get('localizationCode');
	}

	public static function getAvailable() {
		return static::_getConfig()->localizationCodes->toArray();
	}

	public static function getDefault() {
		return static::_getConfig()->defaultLocalizationCode;
	}

	/**
	 * Zwraca domyślny język bez lokalizacji np 'pl', 'en', 'de' ...
	 * @return string
	 */
	public static function getDefaultLang() {
		return substr(static::_getConfig()->defaultLocalizationCode, 0, 2);
	}

	/**
	 * Zwraca aktualny język bez lokalizacji np 'pl', 'en', 'de' ...
	 * @return string
	 */
	public static function getCurrentLang() {
		return substr(Zend_Registry::get('localizationCode'), 0, 2);
	}

	protected static function _getConfig() {
		if (!Zend_Registry::isRegistered('localizationsConfig')) {
			Zend_Registry::set('localizationsConfig', new Zend_Config_Ini(APPLICATION_PATH . 'configs/localizations.ini'));
		}

		return Zend_Registry::get('localizationsConfig');
	}

}

