ACC SHELL

Path : /srv/www/vhosts/alfa-com/engine/
File Upload :
Current File : /srv/www/vhosts/alfa-com/engine/Locale.php

<?php
	// Author: Jakub Macek, CZ; Copyright: Poski.com s.r.o.; Code is 100% my work. Do not copy.
	
	class Locale
	{
		public static			$override							= false;
		public static			$current							= array();
		public static			$container							= array();
		public static			$module								= '';

		public static function initialize()
		{
			self::$current =& self::$container[L];
			foreach (site()->locales as $locale)
				if ($locale != L)
					self::$container[$locale] = array();
		}

		public static function module($module, $locale = null)
		{
			if ($locale === null)
				$locale = L;
			if (!self::$override && !isset(self::$container[$locale][$module]))
			{
				$strings = array();
				foreach (array('%2$s', '%2$s.override', '%s/%s', '%s/%s.override') as $format)
					foreach (site()->base as $path)
					{
						$file = $path . 'locales/' . sprintf($format, $locale, $module);
						if (is_file($file))
							$strings = array_merge($strings, self::stringToArray(file_get_contents($file)));
					}
				self::$container[$locale][$module] = $strings;
			}
			self::$module = $module;
		}

		public static function stringToArray($string)
		{
			$result = array();
			foreach (explode("\n", $string) as $line)
			{
				$line = trim($line);
				if ((!empty($line)) && (substr($line, 0, 1) != '#'))
				{
					if (($temp = strpos($line, "\t")) === false)
						$result[$line] = '';
					else
						$result[substr($line, 0, $temp)] = ltrim(substr($line, $temp), "\t");
				}
			}
			return $result;
		}

		public static function message($message, $module = null, $default = null)
		{
			if ($module === null)
				$module = self::$module;

			if (isset(self::$container[L][$module]) && isset(self::$container[L][$module][$message]))
				return self::$container[L][$module][$message];

			if ($temp0 = m($module))
			{
				$class = strtolower(get_class($temp0));
				while ($class)
				{
					if (isset(self::$container[L][$class]) && isset(self::$container[L][$class][$message]))
						return self::$container[L][$class][$message];
					$class = strtolower(get_parent_class($class));
				}
			}

			if (($module != '@core') && isset(self::$container[L]['@core']) && isset(self::$container[L]['@core'][$message]))
				return self::$container[L]['@core'][$message];

			return (($default !== null) ? $default : $message);
		}

		public static function sprintf($message, $module = null, $default = null)
		{
			$args = func_get_args();
			$args = array_slice($args, 3);
			return vsprintf(self::message($message, $module, $default), $args);
		}

		public static function set($message, $module = null, $value = null)
		{
			if ($module === null)
			{
				$value = $module;
				$module = self::$module;
			}
			self::$container[L][$module][$message] = $value;
		}

		public static function transfer($from, $to, $onlynew = true)
		{
			foreach (self::$container[L][$from] as $k => $v)
				if (!$onlynew || !isset(self::$container[L][$to][$k]))
					self::$container[L][$to][$k] = $v;
		}

		public static function map1($array, $prefix = '', $module = null)
		{
			$result = array();
			foreach ($array as $item)
				$result[$item] = __($prefix.$item, $module);
			return $result;
		}
	}
	
	function __($message, $module = null, $default = null)
	{
		return Locale::message($message, $module, $default);
	}

	function l($message, $module = null, $default = null)
	{
		return Locale::message($message, $module, $default);
	}
?>

ACC SHELL 2018