use zend router
[GitHub/Stricted/Domain-Control-Panel.git] / vendor / Zend / Mvc / Service / TranslatorServiceFactory.php
1 <?php
2 /**
3 * Zend Framework (http://framework.zend.com/)
4 *
5 * @link http://github.com/zendframework/zf2 for the canonical source repository
6 * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
7 * @license http://framework.zend.com/license/new-bsd New BSD License
8 */
9
10 namespace Zend\Mvc\Service;
11
12 use Interop\Container\ContainerInterface;
13 use Traversable;
14 use Zend\I18n\Translator\Translator;
15 use Zend\Mvc\I18n\DummyTranslator;
16 use Zend\Mvc\I18n\Translator as MvcTranslator;
17 use Zend\ServiceManager\FactoryInterface;
18 use Zend\ServiceManager\ServiceLocatorInterface;
19
20 /**
21 * Overrides the translator factory from the i18n component in order to
22 * replace it with the bridge class from this namespace.
23 */
24 class TranslatorServiceFactory implements FactoryInterface
25 {
26 /**
27 * @param ContainerInterface $container
28 * @param string $name
29 * @param null|array $options
30 * @return MvcTranslator
31 */
32 public function __invoke(ContainerInterface $container, $name, array $options = null)
33 {
34 // Assume that if a user has registered a service for the
35 // TranslatorInterface, it must be valid
36 if ($container->has('Zend\I18n\Translator\TranslatorInterface')) {
37 return new MvcTranslator($container->get('Zend\I18n\Translator\TranslatorInterface'));
38 }
39
40 // Load a translator from configuration, if possible
41 if ($container->has('config')) {
42 $config = $container->get('config');
43
44 // 'translator' => false
45 if (array_key_exists('translator', $config) && $config['translator'] === false) {
46 return new MvcTranslator(new DummyTranslator());
47 }
48
49 // 'translator' => array( ... translator options ... )
50 if (array_key_exists('translator', $config)
51 && ((is_array($config['translator']) && !empty($config['translator']))
52 || $config['translator'] instanceof Traversable)
53 ) {
54 $i18nTranslator = Translator::factory($config['translator']);
55 $i18nTranslator->setPluginManager($container->get('TranslatorPluginManager'));
56 $container->setService('Zend\I18n\Translator\TranslatorInterface', $i18nTranslator);
57 return new MvcTranslator($i18nTranslator);
58 }
59 }
60
61 // If ext/intl is not loaded, return a dummy translator
62 if (!extension_loaded('intl')) {
63 return new MvcTranslator(new DummyTranslator());
64 }
65
66 // For BC purposes (pre-2.3.0), use the I18n Translator
67 return new MvcTranslator(new Translator());
68 }
69
70 /**
71 * Create and return MvcTranslator instance
72 *
73 * For use with zend-servicemanager v2; proxies to __invoke().
74 *
75 * @param ServiceLocatorInterface $container
76 * @return MvcTranslator
77 */
78 public function createService(ServiceLocatorInterface $container)
79 {
80 return $this($container, MvcTranslator::class);
81 }
82 }