Вход Регистрация
Файл: system/vendor/gettext/translator/src/Loader/ArrayLoader.php
Строк: 106
<?php
declare(strict_types 1);

namespace 
GettextLoader;

use 
BadMethodCallException;
use 
GettextHeaders;
use 
GettextTranslations;

/**
 * Class to load a array file
 */
final class ArrayLoader extends Loader
{
    public function 
loadFile(string $filenameTranslations $translations null): Translations
    
{
        
$array self::includeSafe($filename);

        return 
$this->loadArray($array$translations);
    }

    public function 
loadString(string $stringTranslations $translations null): Translations
    
{
        throw new 
BadMethodCallException('Arrays cannot be loaded from string. Use ArrayLoader::loadFile() instead');
    }

    private static function 
includeSafe($filename): array
    {
        return include 
$filename;
    }

    public function 
loadArray(array $arrayTranslations $translations null): Translations
    
{
        if (!
$translations) {
            
$translations $this->createTranslations();
        }

        
$messages $array['messages'] ?? [];

        foreach (
$messages as $context => $contextTranslations) {
            if (
$context === '') {
                
$context null;
            }

            foreach (
$contextTranslations as $original => $value) {
                if (
$original === '') {
                    continue;
                }

                
$translation $this->createTranslation($context$original);
                
$translations->add($translation);

                if (
is_array($value)) {
                    
$translation->translate(array_shift($value));
                    
$translation->translatePlural(...$value);
                } else {
                    
$translation->translate($value);
                }
            }
        }

        if (!empty(
$array['domain'])) {
            
$translations->setDomain($array['domain']);
        }

        if (!empty(
$array['plural-forms'])) {
            
$translations->getHeaders()->set(Headers::HEADER_PLURAL$array['plural-forms']);
        }

        return 
$translations;
    }
}
Онлайн: 0
Реклама