annotate vendor/symfony/translation/Reader/TranslationReader.php @ 19:fa3358dc1485 tip

Add ndrum files
author Chris Cannam
date Wed, 28 Aug 2019 13:14:47 +0100
parents 129ea1e6d783
children
rev   line source
Chris@14 1 <?php
Chris@14 2
Chris@14 3 /*
Chris@14 4 * This file is part of the Symfony package.
Chris@14 5 *
Chris@14 6 * (c) Fabien Potencier <fabien@symfony.com>
Chris@14 7 *
Chris@14 8 * For the full copyright and license information, please view the LICENSE
Chris@14 9 * file that was distributed with this source code.
Chris@14 10 */
Chris@14 11
Chris@14 12 namespace Symfony\Component\Translation\Reader;
Chris@14 13
Chris@14 14 use Symfony\Component\Finder\Finder;
Chris@14 15 use Symfony\Component\Translation\Loader\LoaderInterface;
Chris@14 16 use Symfony\Component\Translation\MessageCatalogue;
Chris@14 17
Chris@14 18 /**
Chris@14 19 * TranslationReader reads translation messages from translation files.
Chris@14 20 *
Chris@14 21 * @author Michel Salib <michelsalib@hotmail.com>
Chris@14 22 */
Chris@14 23 class TranslationReader implements TranslationReaderInterface
Chris@14 24 {
Chris@14 25 /**
Chris@14 26 * Loaders used for import.
Chris@14 27 *
Chris@14 28 * @var array
Chris@14 29 */
Chris@17 30 private $loaders = [];
Chris@14 31
Chris@14 32 /**
Chris@14 33 * Adds a loader to the translation extractor.
Chris@14 34 *
Chris@14 35 * @param string $format The format of the loader
Chris@14 36 * @param LoaderInterface $loader
Chris@14 37 */
Chris@14 38 public function addLoader($format, LoaderInterface $loader)
Chris@14 39 {
Chris@14 40 $this->loaders[$format] = $loader;
Chris@14 41 }
Chris@14 42
Chris@14 43 /**
Chris@14 44 * {@inheritdoc}
Chris@14 45 */
Chris@14 46 public function read($directory, MessageCatalogue $catalogue)
Chris@14 47 {
Chris@14 48 if (!is_dir($directory)) {
Chris@14 49 return;
Chris@14 50 }
Chris@14 51
Chris@14 52 foreach ($this->loaders as $format => $loader) {
Chris@14 53 // load any existing translation files
Chris@14 54 $finder = new Finder();
Chris@14 55 $extension = $catalogue->getLocale().'.'.$format;
Chris@14 56 $files = $finder->files()->name('*.'.$extension)->in($directory);
Chris@14 57 foreach ($files as $file) {
Chris@17 58 $domain = substr($file->getFilename(), 0, -1 * \strlen($extension) - 1);
Chris@14 59 $catalogue->addCatalogue($loader->load($file->getPathname(), $catalogue->getLocale(), $domain));
Chris@14 60 }
Chris@14 61 }
Chris@14 62 }
Chris@14 63 }