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

Commit

Permalink
Merge branch 'feature/12' into develop
Browse files Browse the repository at this point in the history
Close #12
  • Loading branch information
weierophinney committed Oct 29, 2015
2 parents e45d2fd + e852e3b commit 758570a
Show file tree
Hide file tree
Showing 8 changed files with 91 additions and 40 deletions.
24 changes: 24 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# Changelog

All notable changes to this project will be documented in this file, in reverse chronological order by release.

## 3.0.0 - TBD

### Added

- Nothing.

### Deprecated

- Nothing.

### Removed

- Nothing.

### Fixed

- [#12](https://github.com/zendframework/zend-i18n/pull/12) updates the
component to the v3 version of zend-servicemanager.
- [#12](https://github.com/zendframework/zend-i18n/pull/12) updates the
component to the v3 version of zend-eventmanager.
10 changes: 5 additions & 5 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,13 +17,13 @@
"zendframework/zend-stdlib": "~2.5"
},
"require-dev": {
"zendframework/zend-cache": "~2.5",
"zendframework/zend-cache": "dev-develop as 2.6.0",
"zendframework/zend-config": "~2.5",
"zendframework/zend-eventmanager": "~2.5",
"zendframework/zend-eventmanager": "dev-develop as 2.7.0",
"zendframework/zend-filter": "~2.5",
"zendframework/zend-servicemanager": "~2.5",
"zendframework/zend-servicemanager": "dev-develop as 2.7.0",
"zendframework/zend-validator": "~2.5",
"zendframework/zend-view": "~2.5",
"zendframework/zend-view": "dev-develop as 2.6.0",
"fabpot/php-cs-fixer": "1.7.*",
"phpunit/PHPUnit": "~4.0"
},
Expand All @@ -43,7 +43,7 @@
"extra": {
"branch-alias": {
"dev-master": "2.5-dev",
"dev-develop": "2.6-dev"
"dev-develop": "3.0-dev"
}
},
"autoload-dev": {
Expand Down
20 changes: 11 additions & 9 deletions src/Translator/LoaderPluginManager.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@

use Zend\I18n\Exception;
use Zend\ServiceManager\AbstractPluginManager;
use Zend\ServiceManager\Factory\InvokableFactory;

/**
* Plugin manager implementation for translation loaders.
Expand Down Expand Up @@ -54,15 +55,16 @@
*/
class LoaderPluginManager extends AbstractPluginManager
{
/**
* Default set of loaders.
*
* @var array
*/
protected $invokableClasses = [
'gettext' => 'Zend\I18n\Translator\Loader\Gettext',
'ini' => 'Zend\I18n\Translator\Loader\Ini',
'phparray' => 'Zend\I18n\Translator\Loader\PhpArray',
protected $aliases = [
'gettext' => Loader\Gettext::class,
'ini' => Loader\Ini::class,
'phparray' => Loader\PhpArray::class
];

protected $factories = [
Loader\Gettext::class => InvokableFactory::class,
Loader\Ini::class => InvokableFactory::class,
Loader\PhpArray::class => InvokableFactory::class
];

/**
Expand Down
25 changes: 14 additions & 11 deletions src/Translator/Translator.php
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
use Zend\I18n\Translator\Loader\FileLoaderInterface;
use Zend\I18n\Translator\Loader\RemoteLoaderInterface;
use Zend\Stdlib\ArrayUtils;
use Zend\ServiceManager\ServiceManager;

/**
* Translator.
Expand Down Expand Up @@ -334,7 +335,7 @@ public function setPluginManager(LoaderPluginManager $pluginManager)
public function getPluginManager()
{
if (!$this->pluginManager instanceof LoaderPluginManager) {
$this->setPluginManager(new LoaderPluginManager());
$this->setPluginManager(new LoaderPluginManager(new ServiceManager));
}

return $this->pluginManager;
Expand Down Expand Up @@ -445,17 +446,18 @@ protected function getTranslatedMessage(
}

if ($this->isEventManagerEnabled()) {
$results = $this->getEventManager()->trigger(
$until = function ($r) {
return is_string($r);
};
$results = $this->getEventManager()->triggerUntil(
$until,
self::EVENT_MISSING_TRANSLATION,
$this,
[
'message' => $message,
'locale' => $locale,
'text_domain' => $textDomain,
],
function ($r) {
return is_string($r);
}
]
);
$last = $results->last();
if (is_string($last)) {
Expand Down Expand Up @@ -574,16 +576,17 @@ protected function loadMessages($textDomain, $locale)
if (!$messagesLoaded) {
$discoveredTextDomain = null;
if ($this->isEventManagerEnabled()) {
$results = $this->getEventManager()->trigger(
$until = function ($r) {
return ($r instanceof TextDomain);
};
$results = $this->getEventManager()->triggerUntil(
$until,
self::EVENT_NO_MESSAGES_LOADED,
$this,
[
'locale' => $locale,
'text_domain' => $textDomain,
],
function ($r) {
return ($r instanceof TextDomain);
}
]
);
$last = $results->last();
if ($last instanceof TextDomain) {
Expand Down
15 changes: 13 additions & 2 deletions src/Translator/TranslatorServiceFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,15 @@

namespace Zend\I18n\Translator;

use Zend\ServiceManager\FactoryInterface;
use Zend\ServiceManager\ServiceLocatorInterface;
use Zend\ServiceManager\Factory\FactoryInterface;
use Interop\Container\ContainerInterface;

/**
* Translator.
*/
class TranslatorServiceFactory implements FactoryInterface
{
/*
public function createService(ServiceLocatorInterface $serviceLocator)
{
// Configure the translator
Expand All @@ -25,4 +26,14 @@ public function createService(ServiceLocatorInterface $serviceLocator)
$translator = Translator::factory($trConfig);
return $translator;
}
*/

public function __invoke(ContainerInterface $container, $requestedName, array $options = null)
{
// Configure the translator
$config = $container->get('Config');
$trConfig = isset($config['translator']) ? $config['translator'] : [];
$translator = Translator::factory($trConfig);
return $translator;
}
}
8 changes: 4 additions & 4 deletions src/View/HelperConfig.php
Original file line number Diff line number Diff line change
Expand Up @@ -36,12 +36,12 @@ class HelperConfig implements ConfigInterface
* in this class.
*
* @param ServiceManager $serviceManager
* @return void
* @return ServiceManager
*/
public function configureServiceManager(ServiceManager $serviceManager)
{
foreach ($this->invokables as $name => $service) {
$serviceManager->setInvokableClass($name, $service);
}
return $serviceManager->withConfig(
[ 'invokables' => $this->invokables ]
);
}
}
2 changes: 1 addition & 1 deletion test/Translator/TranslatorServiceFactoryTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ public function testCreateServiceWithNoTranslatorKeyDefined()
->will($this->returnValueMap($slContents));

$factory = new TranslatorServiceFactory();
$translator = $factory->createService($serviceLocator);
$translator = $factory($serviceLocator, 'Zend\I18n\Translator\Translator');
$this->assertInstanceOf('Zend\I18n\Translator\Translator', $translator);
}
}
27 changes: 19 additions & 8 deletions test/Translator/TranslatorTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -165,7 +165,14 @@ public function testTranslate()
{
$loader = new TestLoader();
$loader->textDomain = new TextDomain(['foo' => 'bar']);
$this->translator->getPluginManager()->setService('test', $loader);
$pm = $this->translator->getPluginManager();
$this->translator->setPluginManager(
$pm->withConfig([
'services' => [
'test' => $loader
]
])
);
$this->translator->addTranslationFile('test', null);

$this->assertEquals('bar', $this->translator->translate('foo'));
Expand All @@ -191,7 +198,8 @@ public function testTranslationsAreStoredInCache()

$loader = new TestLoader();
$loader->textDomain = new TextDomain(['foo' => 'bar']);
$this->translator->getPluginManager()->setService('test', $loader);
$plugins = $this->translator->getPluginManager()->withConfig(['services' => ['test' => $loader]]);
$this->translator->setPluginManager($plugins);
$this->translator->addTranslationFile('test', null);

$this->assertEquals('bar', $this->translator->translate('foo'));
Expand Down Expand Up @@ -317,13 +325,14 @@ public function testListenerOnMissingTranslationEventCanReturnString()
$doNotTriger = null;

$this->translator->enableEventManager();
$this->translator->getEventManager()->attach(Translator::EVENT_MISSING_TRANSLATION, function (EventInterface $event) use (&$trigger) {
$events = $this->translator->getEventManager();
$events->attach(Translator::EVENT_MISSING_TRANSLATION, function (EventInterface $event) use (&$trigger) {
$trigger = true;
});
$this->translator->getEventManager()->attach(Translator::EVENT_MISSING_TRANSLATION, function (EventInterface $event) {
$events->attach(Translator::EVENT_MISSING_TRANSLATION, function (EventInterface $event) {
return 'EVENT TRIGGERED';
});
$this->translator->getEventManager()->attach(Translator::EVENT_MISSING_TRANSLATION, function (EventInterface $event) use (&$doNotTrigger) {
$events->attach(Translator::EVENT_MISSING_TRANSLATION, function (EventInterface $event) use (&$doNotTrigger) {
$doNotTrigger = true;
});

Expand All @@ -338,9 +347,11 @@ public function testNoMessagesLoadedEvent()
$actualEvent = null;

$this->translator->enableEventManager();
$this->translator->getEventManager()->attach(Translator::EVENT_NO_MESSAGES_LOADED, function (EventInterface $event) use (&$actualEvent) {
$actualEvent = $event;
});
$this->translator
->getEventManager()
->attach(Translator::EVENT_NO_MESSAGES_LOADED, function (EventInterface $event) use (&$actualEvent) {
$actualEvent = $event;
});

$this->translator->translate('foo', 'bar', 'baz');

Expand Down

0 comments on commit 758570a

Please sign in to comment.