1<?php 2 3/* 4 * This file is part of the Symfony package. 5 * 6 * (c) Fabien Potencier <fabien@symfony.com> 7 * 8 * For the full copyright and license information, please view the LICENSE 9 * file that was distributed with this source code. 10 */ 11 12namespace Symfony\Component\Translation\Extractor; 13 14use Symfony\Component\Translation\MessageCatalogue; 15 16/** 17 * ChainExtractor extracts translation messages from template files. 18 * 19 * @author Michel Salib <michelsalib@hotmail.com> 20 */ 21class ChainExtractor implements ExtractorInterface 22{ 23 /** 24 * The extractors. 25 * 26 * @var ExtractorInterface[] 27 */ 28 private $extractors = array(); 29 30 /** 31 * Adds a loader to the translation extractor. 32 * 33 * @param string $format The format of the loader 34 * @param ExtractorInterface $extractor The loader 35 */ 36 public function addExtractor($format, ExtractorInterface $extractor) 37 { 38 $this->extractors[$format] = $extractor; 39 } 40 41 /** 42 * {@inheritdoc} 43 */ 44 public function setPrefix($prefix) 45 { 46 foreach ($this->extractors as $extractor) { 47 $extractor->setPrefix($prefix); 48 } 49 } 50 51 /** 52 * {@inheritdoc} 53 */ 54 public function extract($directory, MessageCatalogue $catalogue) 55 { 56 foreach ($this->extractors as $extractor) { 57 $extractor->extract($directory, $catalogue); 58 } 59 } 60} 61