primo commit
This commit is contained in:
		
							
								
								
									
										255
									
								
								libraries/vendor/joomla/language/src/Text.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										255
									
								
								libraries/vendor/joomla/language/src/Text.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,255 @@ | ||||
| <?php | ||||
|  | ||||
| /** | ||||
|  * Part of the Joomla Framework Language Package | ||||
|  * | ||||
|  * @copyright  Copyright (C) 2005 - 2020 Open Source Matters, Inc. All rights reserved. | ||||
|  * @license    GNU General Public License version 2 or later; see LICENSE | ||||
|  */ | ||||
|  | ||||
| namespace Joomla\Language; | ||||
|  | ||||
| /** | ||||
|  * Text handling class. | ||||
|  * | ||||
|  * @since  1.0 | ||||
|  */ | ||||
| class Text | ||||
| { | ||||
|     /** | ||||
|      * Language instance | ||||
|      * | ||||
|      * @var    Language | ||||
|      * @since  1.0 | ||||
|      */ | ||||
|     private $language; | ||||
|  | ||||
|     /** | ||||
|      * Constructor | ||||
|      * | ||||
|      * @param   Language  $language  Language instance to use in translations | ||||
|      * | ||||
|      * @since   2.0.0-alpha | ||||
|      */ | ||||
|     public function __construct(Language $language) | ||||
|     { | ||||
|         $this->setLanguage($language); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Retrieve the current Language instance | ||||
|      * | ||||
|      * @return  Language | ||||
|      * | ||||
|      * @since   2.0.0-alpha | ||||
|      */ | ||||
|     public function getLanguage(): Language | ||||
|     { | ||||
|         return $this->language; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Set the Language object | ||||
|      * | ||||
|      * @param   Language  $language  Language instance | ||||
|      * | ||||
|      * @return  $this | ||||
|      * | ||||
|      * @since   2.0.0-alpha | ||||
|      */ | ||||
|     public function setLanguage(Language $language): self | ||||
|     { | ||||
|         $this->language = $language; | ||||
|  | ||||
|         return $this; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Translates a string into the current language. | ||||
|      * | ||||
|      * @param   string   $string                The string to translate. | ||||
|      * @param   array    $parameters            Array of parameters for the string | ||||
|      * @param   boolean  $jsSafe                True to escape the string for JavaScript output | ||||
|      * @param   boolean  $interpretBackSlashes  To interpret backslashes (\\=\, \n=carriage return, \t=tabulation) | ||||
|      * | ||||
|      * @return  string  The translated string or the key if $script is true | ||||
|      * | ||||
|      * @since   2.0.0-alpha | ||||
|      */ | ||||
|     public function translate(string $string, array $parameters = [], bool $jsSafe = false, bool $interpretBackSlashes = true): string | ||||
|     { | ||||
|         $translated = $this->getLanguage()->translate($string, $jsSafe, $interpretBackSlashes); | ||||
|  | ||||
|         if (!empty($parameters)) { | ||||
|             $translated = strtr($translated, $parameters); | ||||
|         } | ||||
|  | ||||
|         return $translated; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Translates a string into the current language. | ||||
|      * | ||||
|      * @param   string   $string                The string to translate. | ||||
|      * @param   string   $alt                   The alternate option for global string | ||||
|      * @param   array    $parameters            Array of parameters for the string | ||||
|      * @param   mixed    $jsSafe                Boolean: Make the result javascript safe. | ||||
|      * @param   boolean  $interpretBackSlashes  To interpret backslashes (\\=\, \n=carriage return, \t=tabulation) | ||||
|      * | ||||
|      * @return  string  The translated string or the key if $script is true | ||||
|      * | ||||
|      * @since   1.0 | ||||
|      */ | ||||
|     public function alt($string, $alt, array $parameters = [], $jsSafe = false, $interpretBackSlashes = true) | ||||
|     { | ||||
|         if ($this->getLanguage()->hasKey($string . '_' . $alt)) { | ||||
|             return $this->translate($string . '_' . $alt, $parameters, $jsSafe, $interpretBackSlashes); | ||||
|         } | ||||
|  | ||||
|         return $this->translate($string, $parameters, $jsSafe, $interpretBackSlashes); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Pluralises a string in the current language | ||||
|      * | ||||
|      * The last argument can take an array of options to configure the call to `Joomla\Language\Language::translate()`: | ||||
|      * | ||||
|      * array( | ||||
|      *   'jsSafe' => boolean, | ||||
|      *   'interpretBackSlashes' =>boolean | ||||
|      * ) | ||||
|      * | ||||
|      * where: | ||||
|      * | ||||
|      * jsSafe is a boolean to specify whether to make the result JavaScript safe. | ||||
|      * interpretBackSlashes is a boolean to specify whether backslashes are interpreted (\\ -> \, \n -> new line, \t -> tab character). | ||||
|      * | ||||
|      * @param   string   $string  The format string. | ||||
|      * @param   integer  $n       The number of items | ||||
|      * | ||||
|      * @return  string  The translated string | ||||
|      * | ||||
|      * @note    This method can take a mixed number of arguments for the sprintf function | ||||
|      * @since   1.0 | ||||
|      */ | ||||
|     public function plural($string, $n) | ||||
|     { | ||||
|         $lang  = $this->getLanguage(); | ||||
|         $args  = \func_get_args(); | ||||
|         $count = \count($args); | ||||
|  | ||||
|         // Try the key from the language plural potential suffixes | ||||
|         $found    = false; | ||||
|         $suffixes = $lang->getPluralSuffixes((int) $n); | ||||
|         array_unshift($suffixes, (int) $n); | ||||
|  | ||||
|         foreach ($suffixes as $suffix) { | ||||
|             $key = $string . '_' . $suffix; | ||||
|  | ||||
|             if ($lang->hasKey($key)) { | ||||
|                 $found = true; | ||||
|  | ||||
|                 break; | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         if (!$found) { | ||||
|             // Not found so revert to the original. | ||||
|             $key = $string; | ||||
|         } | ||||
|  | ||||
|         if (\is_array($args[$count - 1])) { | ||||
|             $args[0] = $lang->translate( | ||||
|                 $key, | ||||
|                 $args[$count - 1]['jsSafe'] ?? false, | ||||
|                 $args[$count - 1]['interpretBackSlashes'] ?? true | ||||
|             ); | ||||
|         } else { | ||||
|             $args[0] = $lang->translate($key); | ||||
|         } | ||||
|  | ||||
|         return \sprintf(...$args); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Passes a string thru a sprintf. | ||||
|      * | ||||
|      * The last argument can take an array of options to configure the call to `Joomla\Language\Language::translate()`: | ||||
|      * | ||||
|      * array( | ||||
|      *   'jsSafe' => boolean, | ||||
|      *   'interpretBackSlashes' =>boolean | ||||
|      * ) | ||||
|      * | ||||
|      * where: | ||||
|      * | ||||
|      * jsSafe is a boolean to specify whether to make the result JavaScript safe. | ||||
|      * interpretBackSlashes is a boolean to specify whether backslashes are interpreted (\\ -> \, \n -> new line, \t -> tab character). | ||||
|      * | ||||
|      * @param   string  $string  The format string. | ||||
|      * | ||||
|      * @return  string|null  The translated string | ||||
|      * | ||||
|      * @note    This method can take a mixed number of arguments for the sprintf function | ||||
|      * @since   1.0 | ||||
|      */ | ||||
|     public function sprintf($string) | ||||
|     { | ||||
|         $lang  = $this->getLanguage(); | ||||
|         $args  = \func_get_args(); | ||||
|         $count = \count($args); | ||||
|  | ||||
|         if (\is_array($args[$count - 1])) { | ||||
|             $args[0] = $lang->translate( | ||||
|                 $string, | ||||
|                 $args[$count - 1]['jsSafe'] ?? false, | ||||
|                 $args[$count - 1]['interpretBackSlashes'] ?? true | ||||
|             ); | ||||
|         } else { | ||||
|             $args[0] = $lang->translate($string); | ||||
|         } | ||||
|  | ||||
|         return \sprintf(...$args); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Passes a string thru an printf. | ||||
|      * | ||||
|      * The last argument can take an array of options to configure the call to `Joomla\Language\Language::translate()`: | ||||
|      * | ||||
|      * array( | ||||
|      *   'jsSafe' => boolean, | ||||
|      *   'interpretBackSlashes' =>boolean | ||||
|      * ) | ||||
|      * | ||||
|      * where: | ||||
|      * | ||||
|      * jsSafe is a boolean to specify whether to make the result JavaScript safe. | ||||
|      * interpretBackSlashes is a boolean to specify whether backslashes are interpreted (\\ -> \, \n -> new line, \t -> tab character). | ||||
|      * | ||||
|      * @param   string  $string  The format string. | ||||
|      * | ||||
|      * @return  string|null  The translated string | ||||
|      * | ||||
|      * @note    This method can take a mixed number of arguments for the printf function | ||||
|      * @since   1.0 | ||||
|      */ | ||||
|     public function printf($string) | ||||
|     { | ||||
|         $lang  = $this->getLanguage(); | ||||
|         $args  = \func_get_args(); | ||||
|         $count = \count($args); | ||||
|  | ||||
|         if (\is_array($args[$count - 1])) { | ||||
|             $args[0] = $lang->translate( | ||||
|                 $string, | ||||
|                 $args[$count - 1]['jsSafe'] ?? false, | ||||
|                 $args[$count - 1]['interpretBackSlashes'] ?? true | ||||
|             ); | ||||
|         } else { | ||||
|             $args[0] = $lang->translate($string); | ||||
|         } | ||||
|  | ||||
|         return \printf(...$args); | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user