| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 | <?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 Symfony\Component\Translation\Loader;use Symfony\Component\Translation\MessageCatalogue;/** * ArrayLoader loads translations from a PHP array. * * @author Fabien Potencier <fabien@symfony.com> */class ArrayLoader implements LoaderInterface{    /**     * {@inheritdoc}     */    public function load($resource, string $locale, string $domain = 'messages')    {        $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;    }}
 |