Вход Регистрация
Файл: vendor/symfony/translation/Loader/ArrayLoader.php
Строк: 50
<?php

/*
 * This file is part of the Symfony package.
 *
 * (c) Fabien Potencier <fabien@symfony.com>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

namespace SymfonyComponentTranslationLoader;

use 
SymfonyComponentTranslationMessageCatalogue;

/**
 * ArrayLoader loads translations from a PHP array.
 *
 * @author Fabien Potencier <fabien@symfony.com>
 */
class ArrayLoader implements LoaderInterface
{
    public function 
load(mixed $resourcestring $localestring $domain 'messages'): MessageCatalogue
    
{
        
$resource $this->flatten($resource);
        
$catalogue = new MessageCatalogue($locale);
        
$catalogue->add($resource$domain);

        return 
$catalogue;
    }

    
/**
     * Flattens an nested array of translations.
     *
     * The scheme used is:
     *   'key' => ['key2' => ['key3' => 'value']]
     * Becomes:
     *   'key.key2.key3' => 'value'
     */
    
private function flatten(array $messages): array
    {
        
$result = [];
        foreach (
$messages as $key => $value) {
            if (
is_array($value)) {
                foreach (
$this->flatten($value) as $k => $v) {
                    if (
null !== $v) {
                        
$result[$key.'.'.$k] = $v;
                    }
                }
            } elseif (
null !== $value) {
                
$result[$key] = $value;
            }
        }

        return 
$result;
    }
}
Онлайн: 4
Реклама