Code Coverage
 
Classes and Traits
Functions and Methods
Lines
Total
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
CRAP
100.00% covered (success)
100.00%
6 / 6
Translate\Mvc\I18n\TranslatorFactory
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
2
100.00% covered (success)
100.00%
6 / 6
 __invoke
100.00% covered (success)
100.00%
1 / 1
2
100.00% covered (success)
100.00%
6 / 6
<?php
/**
 * Class TranslatorFactory
 *
 * @package     Translate\Mvc\I18n
 * @author      Nigel Hurnell
 * @version     v.1.0.0
 * @license     BSD
 * @copyright   Copyright (c) 2017, Nigel Hurnell
 */
namespace Translate\Mvc\I18n;
use Zend\ServiceManager\Factory\FactoryInterface;
use Interop\Container\ContainerInterface;
use Translate\I18n\Translator\Translator as I18nTranslator;
use Zend\Mvc\I18n\Translator as MvcTranslator;
use Translate\Service\TranslationSaver;
/**
 * Class TranslatorFactory used to instantiate MvcTranslator
 *
 * @package     Translate\Mvc\I18n
 * @author      Nigel Hurnell
 * @version     v.1.0.0
 * @license     BSD
 * @copyright   Copyright (c) 2017, Nigel Hurnell
 */
class TranslatorFactory implements FactoryInterface
{
    /**
     * This is the factory for MvcTranslator. Its purpose is to instantiate 
     * MvcTranslator and inject dependencies into it.
     * 
     * @param ContainerInterface $container
     * @param string $requestedName
     * @param array $options
     * @return MvcTranslator
     */
    public function __invoke(ContainerInterface $container, $requestedName, array $options = null)
    {
        $config = $container->get('config');
        // Create translator from configuration
        $i18nTranslator = I18nTranslator::factory($config['translator']);
        if (array_key_exists('locale', $config['translator'])) {
            $i18nTranslator->setFallbackLocale($config['translator']['locale']);
        }
        /**
         * Inject TranslatorPluginManager, if you need to use same 
         * if ($container->has('TranslatorPluginManager')) {
         * $i18nTranslator->setPluginManager($container->get('TranslatorPluginManager'));
         * }
         * */
        $i18nTranslator->setTranslationSaver($container->get(TranslationSaver::class));
        return new MvcTranslator($i18nTranslator);
    }
}