Spamworldpro Mini Shell
Spamworldpro


Server : Apache
System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64
User : corals ( 1002)
PHP Version : 7.4.33
Disable Function : exec,passthru,shell_exec,system
Directory :  /home/corals/old/lib/internal/Customweb/I18n/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : //home/corals/old/lib/internal/Customweb/I18n/Translation.php
<?php 
/**
  * You are allowed to use this API in your web application.
 *
 * Copyright (C) 2018 by customweb GmbH
 *
 * This program is licenced under the customweb software licence. With the
 * purchase or the installation of the software in your application you
 * accept the licence agreement. The allowed usage is outlined in the
 * customweb software licence which can be found under
 * http://www.sellxed.com/en/software-license-agreement
 *
 * Any modification or distribution is strictly forbidden. The license
 * grants you the installation in one application. For multiuse you will need
 * to purchase further licences at http://www.sellxed.com/shop.
 *
 * See the customweb software licence agreement for more details.
 *
 */


/**
 * This class provides an interface to translate messages to the language
 * of the user. To translate something the static method __() can be used.
 * 
 * Example:
 *   Customweb_I18n_Translation::__(
 *   	"My message with some parameter !parameter", 
 *   	array('!parameter' => 'My Parameter')
 *   );
 * 
 * In this example the !parameter is replaced with the string 'My Parameter'. 
 * The leading bang char indicates that the parameter is replaced as given. 
 * If you want to escape any html tag you can use a leading @ char. 
 * 
 * To integrate the translation service into your application you can implement
 * a Customweb_I18n_ITranslationResolver.
 * 
 * The implemenation can be set by invoking Customweb_I18n_Translation->getInstance()->setResolvers();
 * 
 * 
 * @author Thomas Hunziker
 *
 */
final class Customweb_I18n_Translation {
	
	/**
	 * @var Customweb_I18n_Translation
	 */
	private static $instance;
	
	/**
	 * @var Customweb_I18n_ITranslationResolver[]
	 */
	private $resolvers = array();
	
	/**
	 * Returns a translation of a string. The returned object can be casted to
	 * a string. The result is then translated.
	 * 
	 * @param string $string
	 * @param array $args
	 * @return Customweb_I18n_LocalizableString
	 */
	public static function __($string, $args = array()) {
		return new Customweb_I18n_LocalizableString($string, $args);
	}
	
	/**
	 * @return Customweb_I18n_Translation
	 */
	public static function getInstance() {
		
		if (self::$instance == null) {
			self::$instance = new Customweb_I18n_Translation();
		}
		
		return self::$instance;
	}
	
	public function addResolver(Customweb_I18n_ITranslationResolver $resolver) {
		$this->resolvers[] = $resolver;
		return $this;
	}
	
	public function getResolvers() {
		return $this->resolver;
	}
	
	public function translate($string, $args = array()) {
		$resolvers = array_reverse($this->resolvers);
		
		$rs = null;
		foreach ($resolvers as $resolver) {
			$rs = $resolver->getTranslation($string, $args);
			if ($rs !== null && $rs !== $string) {
				break;
			}
		}
		
		if ($rs === null) {
			$rs = $string;
		}
		
		return self::formatString($rs, $args);
	}

	public static function formatString($string, $args) {
		$cleanedArgs = array();
		foreach ($args as $key => $value) {
			switch ($key[0]) {
				case '!':
					$cleanedArgs[$key] = $value;
					break;
						
				case '@':
					$cleanedArgs[$key] = htmlspecialchars($value, ENT_QUOTES, 'UTF-8');
					break;
	
			}
		}
	
		return strtr($string, $cleanedArgs);
	}
	
}

Spamworldpro Mini