Skip to content
This repository has been archived by the owner on Jan 8, 2020. It is now read-only.

Commit

Permalink
Merge branch 'feature/5406' into develop
Browse files Browse the repository at this point in the history
Close #5406
Fixes #5108
  • Loading branch information
weierophinney committed Jan 3, 2014
2 parents 21fe365 + 475c891 commit 2fb32fe
Show file tree
Hide file tree
Showing 14 changed files with 141 additions and 36 deletions.
2 changes: 1 addition & 1 deletion library/Zend/File/Transfer/Adapter/AbstractAdapter.php
Expand Up @@ -14,7 +14,7 @@
use Zend\File\Transfer\Exception;
use Zend\Filter;
use Zend\Filter\Exception as FilterException;
use Zend\I18n\Translator\Translator;
use Zend\I18n\Translator\TranslatorInterface as Translator;
use Zend\I18n\Translator\TranslatorAwareInterface;
use Zend\Stdlib\ErrorHandler;
use Zend\Validator;
Expand Down
2 changes: 1 addition & 1 deletion library/Zend/I18n/Translator/Translator.php
Expand Up @@ -23,7 +23,7 @@
/**
* Translator.
*/
class Translator
class Translator implements TranslatorInterface
{
/**
* Event fired when the translation for a message is missing.
Expand Down
12 changes: 6 additions & 6 deletions library/Zend/I18n/Translator/TranslatorAwareInterface.php
Expand Up @@ -14,18 +14,18 @@ interface TranslatorAwareInterface
/**
* Sets translator to use in helper
*
* @param Translator $translator [optional] translator.
* Default is null, which sets no translator.
* @param string $textDomain [optional] text domain
* Default is null, which skips setTranslatorTextDomain
* @param TranslatorInterface $translator [optional] translator.
* Default is null, which sets no translator.
* @param string $textDomain [optional] text domain
* Default is null, which skips setTranslatorTextDomain
* @return TranslatorAwareInterface
*/
public function setTranslator(Translator $translator = null, $textDomain = null);
public function setTranslator(TranslatorInterface $translator = null, $textDomain = null);

/**
* Returns translator used in object
*
* @return Translator|null
* @return TranslatorInterface|null
*/
public function getTranslator();

Expand Down
12 changes: 5 additions & 7 deletions library/Zend/I18n/Translator/TranslatorAwareTrait.php
Expand Up @@ -9,12 +9,10 @@

namespace Zend\I18n\Translator;

use Zend\I18n\Translator\Translator;

trait TranslatorAwareTrait
{
/**
* @var Translator
* @var TranslatorInterface
*/
protected $translator = null;

Expand All @@ -31,11 +29,11 @@ trait TranslatorAwareTrait
/**
* Sets translator to use in helper
*
* @param Translator $translator
* @param string $textDomain
* @param TranslatorInterface $translator
* @param string $textDomain
* @return mixed
*/
public function setTranslator(Translator $translator = null, $textDomain = null)
public function setTranslator(TranslatorInterface $translator = null, $textDomain = null)
{
$this->translator = $translator;

Expand All @@ -49,7 +47,7 @@ public function setTranslator(Translator $translator = null, $textDomain = null)
/**
* Returns translator used in object
*
* @return Translator
* @return TranslatorInterface
*/
public function getTranslator()
{
Expand Down
44 changes: 44 additions & 0 deletions library/Zend/I18n/Translator/TranslatorInterface.php
@@ -0,0 +1,44 @@
<?php
/**
* Zend Framework (http://framework.zend.com/)
*
* @link http://github.com/zendframework/zf2 for the canonical source repository
* @copyright Copyright (c) 2005-2013 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/

namespace Zend\I18n\Translator;

/**
* Translator interface.
*/
interface TranslatorInterface
{
/**
* Translate a message.
*
* @param string $message
* @param string $textDomain
* @param string $locale
* @return string
*/
public function translate($message, $textDomain = 'default', $locale = null);

/**
* Translate a plural message.
*
* @param string $singular
* @param string $plural
* @param int $number
* @param string $textDomain
* @param string|null $locale
* @return string
*/
public function translatePlural(
$singular,
$plural,
$number,
$textDomain = 'default',
$locale = null
);
}
2 changes: 1 addition & 1 deletion library/Zend/I18n/View/Helper/AbstractTranslatorHelper.php
Expand Up @@ -9,7 +9,7 @@

namespace Zend\I18n\View\Helper;

use Zend\I18n\Translator\Translator;
use Zend\I18n\Translator\TranslatorInterface as Translator;
use Zend\I18n\Translator\TranslatorAwareInterface;
use Zend\View\Helper\AbstractHelper;

Expand Down
28 changes: 28 additions & 0 deletions library/Zend/Mvc/I18n/DummyTranslator.php
@@ -0,0 +1,28 @@
<?php
/**
* Zend Framework (http://framework.zend.com/)
*
* @link http://github.com/zendframework/zf2 for the canonical source repository
* @copyright Copyright (c) 2005-2013 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/

namespace Zend\Mvc\I18n;

use Zend\I18n\Translator\TranslatorInterface as I18nTranslatorInterface;
use Zend\Validator\Translator\TranslatorInterface as ValidatorTranslatorInterface;

class DummyTranslator implements
I18nTranslatorInterface,
ValidatorTranslatorInterface
{
public function translate($message, $textDomain = 'default', $locale = null)
{
return $message;
}

public function translatePlural($singular, $plural, $number, $textDomain = 'default', $locale = null)
{
return ($number == 1 ? $singular : $plural);
}
}
28 changes: 26 additions & 2 deletions library/Zend/Mvc/I18n/Translator.php
Expand Up @@ -9,9 +9,33 @@

namespace Zend\Mvc\I18n;

use Zend\I18n\Translator\Translator as I18nTranslator;
use Zend\I18n\Translator\TranslatorInterface as I18nTranslatorInterface;
use Zend\Validator\Translator\TranslatorInterface as ValidatorTranslatorInterface;

class Translator extends I18nTranslator implements ValidatorTranslatorInterface
class Translator implements
I18nTranslatorInterface,
ValidatorTranslatorInterface
{
/**
* @var I18nTranslator
*/
protected $translator;

/**
* @param I18nTranslator $translator
*/
public function __construct(I18nTranslatorInterface $translator)
{
$this->translator = $translator;
}

public function translate($message, $textDomain = 'default', $locale = null)
{
return $this->translator->translate($message, $textDomain, $locale);
}

public function translatePlural($singular, $plural, $number, $textDomain = 'default', $locale = null)
{
return $this->translator->translatePlural($singular, $plural, $number, $textDomain, $locale);
}
}
Expand Up @@ -9,7 +9,7 @@

namespace Zend\Mvc\Router\Http;

use Zend\I18n\Translator\Translator;
use Zend\I18n\Translator\TranslatorInterface as Translator;
use Zend\I18n\Translator\TranslatorAwareInterface;
use Zend\Stdlib\RequestInterface as Request;

Expand Down
14 changes: 7 additions & 7 deletions library/Zend/Mvc/Service/TranslatorServiceFactory.php
Expand Up @@ -9,22 +9,22 @@

namespace Zend\Mvc\Service;

use Zend\I18n\Translator\TranslatorServiceFactory as I18nTranslatorServiceFactory;
use Zend\Mvc\I18n\DummyTranslator;
use Zend\Mvc\I18n\Translator;
use Zend\ServiceManager\ServiceLocatorInterface;

/**
* Overrides the translator factory from the i18n component in order to
* replace it with the bridge class from this namespace.
*/
class TranslatorServiceFactory extends I18nTranslatorServiceFactory
class TranslatorServiceFactory
{
public function createService(ServiceLocatorInterface $serviceLocator)
{
// Configure the translator
$config = $serviceLocator->get('Config');
$trConfig = isset($config['translator']) ? $config['translator'] : array();
$translator = Translator::factory($trConfig);
return $translator;
if (!$serviceLocator->has('translator')) {
return new DummyTranslator();
}

return new Translator($serviceLocator->get('translator'));
}
}
2 changes: 1 addition & 1 deletion library/Zend/View/Helper/HeadTitle.php
Expand Up @@ -9,7 +9,7 @@

namespace Zend\View\Helper;

use Zend\I18n\Translator\Translator;
use Zend\I18n\Translator\TranslatorInterface as Translator;
use Zend\I18n\Translator\TranslatorAwareInterface;
use Zend\View\Exception;

Expand Down
2 changes: 1 addition & 1 deletion library/Zend/View/Helper/Navigation/AbstractHelper.php
Expand Up @@ -13,7 +13,7 @@
use Zend\EventManager\EventManager;
use Zend\EventManager\EventManagerAwareInterface;
use Zend\EventManager\EventManagerInterface;
use Zend\I18n\Translator\Translator;
use Zend\I18n\Translator\TranslatorInterface as Translator;
use Zend\I18n\Translator\TranslatorAwareInterface;
use Zend\Navigation;
use Zend\Navigation\Page\AbstractPage;
Expand Down
25 changes: 18 additions & 7 deletions library/Zend/View/HelperPluginManager.php
Expand Up @@ -143,13 +143,24 @@ public function injectRenderer($helper)
*/
public function injectTranslator($helper)
{
if ($helper instanceof TranslatorAwareInterface) {
$locator = $this->getServiceLocator();
if ($locator && $locator->has('MvcTranslator')) {
$helper->setTranslator($locator->get('MvcTranslator'));
} elseif ($locator && $locator->has('translator')) {
$helper->setTranslator($locator->get('translator'));
}
if (!$helper instanceof TranslatorAwareInterface) {
return;
}

$locator = $this->getServiceLocator();

if (!$locator) {
return;
}

if ($locator->has('MvcTranslator')) {
$helper->setTranslator($locator->get('MvcTranslator'));
return;
}

if ($locator->has('translator')) {
$helper->setTranslator($locator->get('translator'));
return;
}
}

Expand Down
2 changes: 1 addition & 1 deletion tests/ZendTest/View/HelperPluginManagerTest.php
Expand Up @@ -81,7 +81,7 @@ public function testIdentityFactoryCanInjectAuthenticationServiceIfInParentServi

public function testIfHelperIsTranslatorAwareAndMvcTranslatorIsAvailableItWillInjectTheMvcTranslator()
{
$translator = new MvcTranslator();
$translator = new MvcTranslator($this->getMock('Zend\I18n\Translator\TranslatorInterface'));
$services = new ServiceManager();
$services->setService('MvcTranslator', $translator);
$this->helpers->setServiceLocator($services);
Expand Down

0 comments on commit 2fb32fe

Please sign in to comment.