Вход Регистрация
Файл: concrete5.7.5.6/concrete/vendor/gettext/gettext/src/Extractors/Twig.php
Строк: 113
<?php
namespace GettextExtractors;

use 
GettextTranslations;
use 
Twig_Loader_String;
use 
Twig_Environment;
use 
Twig_Extensions_Extension_I18n;

/**
 * Class to get gettext strings from twig files returning arrays
 */
class Twig extends Extractor implements ExtractorInterface
{
    
/**
     * Twig instance
     *
     * @var Twig_Environment
     */
    
protected static $twig;

    
/**
     * {@inheritDoc}
     */
    
public static function fromString($stringTranslations $translations null$file '')
    {
        
self::addExtension('Twig_Extensions_Extension_I18n');

        
$string self::$twig->compileSource($string);

        
// add default global php gettext functions
        
PhpCode::$functions['gettext'] = '__';
        
PhpCode::$functions['ngettext'] = '__';
        
PhpCode::$functions['_'] = '__';

        return 
PhpCode::fromString($string$translations$file);
    }

    
/**
     * Initialise Twig if it isn't already, and add a given Twig extension.
     * This must be called before calling fromString()
     *
     * @param mixed Already initialised extension to add
     */
    
public static function addExtension($extension)
    {
        
// initialise twig
        
if (!isset(self::$twig)) {
            
$twigCompiler = new Twig_Loader_String();

            
self::$twig = new Twig_Environment($twigCompiler);
        }

        if (!
self::checkHasExtensionByClassName($extension)) {
            
self::$twig->addExtension(new $extension());
        }
    }

    
/**
     * Checks if a given Twig extension is already registered or not
     *
     * @param  string   Name of Twig extension to check
     * @return boolean  Whether it has been registered already or not
     */
    
protected static function checkHasExtensionByClassName($className)
    {
        foreach (
self::$twig->getExtensions() as $extension) {
            if (
$className == get_class($extension)) {
                return 
true;
            }
        }

        return 
false;
    }
}
Онлайн: 1
Реклама