3 * Zend Framework (http://framework.zend.com/)
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
10 namespace Zend\Mvc\Service
;
12 use Interop\Container\ContainerInterface
;
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
;
21 * Overrides the translator factory from the i18n component in order to
22 * replace it with the bridge class from this namespace.
24 class TranslatorServiceFactory
implements FactoryInterface
27 * @param ContainerInterface $container
29 * @param null|array $options
30 * @return MvcTranslator
32 public function __invoke(ContainerInterface
$container, $name, array $options = null)
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'));
40 // Load a translator from configuration, if possible
41 if ($container->has('config')) {
42 $config = $container->get('config');
44 // 'translator' => false
45 if (array_key_exists('translator', $config) && $config['translator'] === false) {
46 return new MvcTranslator(new DummyTranslator());
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
)
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);
61 // If ext/intl is not loaded, return a dummy translator
62 if (!extension_loaded('intl')) {
63 return new MvcTranslator(new DummyTranslator());
66 // For BC purposes (pre-2.3.0), use the I18n Translator
67 return new MvcTranslator(new Translator());
71 * Create and return MvcTranslator instance
73 * For use with zend-servicemanager v2; proxies to __invoke().
75 * @param ServiceLocatorInterface $container
76 * @return MvcTranslator
78 public function createService(ServiceLocatorInterface
$container)
80 return $this($container, MvcTranslator
::class);