[ZendBundle] added Zend\\Translator component
This commit is contained in:
parent
1e623469a9
commit
bfb081fd96
@ -26,6 +26,7 @@ class ZendExtension extends Extension
|
||||
{
|
||||
protected $resources = array(
|
||||
'logger' => 'logger.xml',
|
||||
'i18n' => 'i18n.xml',
|
||||
);
|
||||
|
||||
/**
|
||||
@ -55,6 +56,42 @@ class ZendExtension extends Extension
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Loads the i18n configuration.
|
||||
*
|
||||
* Usage example:
|
||||
*
|
||||
* <zend:i18n locale="en" adapter="xliff" data="/path/to/messages.xml" />
|
||||
*
|
||||
* @param array $config An array of configuration settings
|
||||
* @param \Symfony\Components\DependencyInjection\ContainerBuilder $container A ContainerBuilder instance
|
||||
*/
|
||||
public function i18nLoad($config, ContainerBuilder $container)
|
||||
{
|
||||
if (!$container->hasDefinition('zend.i18n')) {
|
||||
$loader = new XmlFileLoader($container, __DIR__.'/../Resources/config');
|
||||
$loader->load($this->resources['i18n']);
|
||||
$container->setAlias('i18n', 'zend.i18n');
|
||||
}
|
||||
|
||||
if (isset($config['locale'])) {
|
||||
$container->setParameter('zend.translator.locale', $config['locale']);
|
||||
}
|
||||
|
||||
if (isset($config['adapter'])) {
|
||||
$container->setParameter('zend.translator.adapter', constant($config['adapter']));
|
||||
}
|
||||
|
||||
if (isset($config['translations']) && is_array($config['translations'])) {
|
||||
foreach ($config['translations'] as $locale => $catalogue) {
|
||||
if ($locale == $container->getParameter('zend.translator.locale')) {
|
||||
$container->setParameter('zend.translator.catalogue', $catalogue);
|
||||
}
|
||||
$container->findDefinition('zend.translator')->addMethodCall('addTranslation', array($catalogue, $locale));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the base path for the XSD files.
|
||||
*
|
||||
|
24
src/Symfony/Bundle/ZendBundle/Resources/config/i18n.xml
Executable file
24
src/Symfony/Bundle/ZendBundle/Resources/config/i18n.xml
Executable file
@ -0,0 +1,24 @@
|
||||
<?xml version="1.0" ?>
|
||||
|
||||
<container xmlns="http://www.symfony-project.org/schema/dic/services"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://www.symfony-project.org/schema/dic/services http://www.symfony-project.org/schema/dic/services/services-1.0.xsd">
|
||||
|
||||
<parameters>
|
||||
<parameter key="zend.translator.class">Zend\Translator\Translator</parameter>
|
||||
<parameter key="zend.translator.adapter" type="constant">Zend\Translator\Translator::AN_ARRAY</parameter>
|
||||
<parameter key="zend.translator.catalogue" type="constant">null</parameter>
|
||||
<parameter key="zend.translator.locale">en</parameter>
|
||||
</parameters>
|
||||
|
||||
<services>
|
||||
<service id="zend.translator" class="%zend.translator.class%">
|
||||
<argument>%zend.translator.adapter%</argument>
|
||||
<argument>%zend.translator.catalogue%</argument>
|
||||
<argument>%zend.translator.locale%</argument>
|
||||
<argument type="collection">
|
||||
<argument key="log" type="service" id="zend.logger" on-invalid="ignore" />
|
||||
</argument>
|
||||
</service>
|
||||
</services>
|
||||
</container>
|
@ -28,4 +28,17 @@ class ZendExtensionTest extends TestCase
|
||||
$loader->loggerLoad(array('priority' => 3), $container);
|
||||
$this->assertEquals(3, $container->getParameter('zend.logger.priority'), '->loggerLoad() overrides existing configuration options');
|
||||
}
|
||||
|
||||
public function testI18nLoad()
|
||||
{
|
||||
$container = new ContainerBuilder();
|
||||
$loader = new ZendExtension();
|
||||
|
||||
$loader->i18nLoad(array(), $container);
|
||||
$this->assertEquals('Zend\\Translator\\Translator', $container->getParameter('zend.translator.class'), '->i&8nLoad() loads the i18n.xml file if not already loaded');
|
||||
|
||||
$loader->i18nLoad(array('adapter' => 'Zend\\Translator\\Translator::AN_XLIFF', 'locale' => 'fr'), $container);
|
||||
$this->assertEquals('Xliff', $container->getParameter('zend.translator.adapter'), '->i18nLoad() overrides existing configuration options');
|
||||
$this->assertEquals('fr', $container->getParameter('zend.translator.locale'), '->i18nLoad() overrides existing configuration options');
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user