[ZendBundle] fixed translator configuration
This commit is contained in:
parent
0b98a2861e
commit
eb942c8f18
@ -40,8 +40,8 @@ class ZendExtension extends Extension
|
|||||||
$this->registerLoggerConfiguration($config, $container);
|
$this->registerLoggerConfiguration($config, $container);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isset($config['i18n'])) {
|
if (isset($config['translator'])) {
|
||||||
$this->registerI18nConfiguration($config, $container);
|
$this->registerTranslatorConfiguration($config, $container);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -85,23 +85,23 @@ class ZendExtension extends Extension
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Loads the i18n configuration.
|
* Loads the translator configuration.
|
||||||
*
|
*
|
||||||
* Usage example:
|
* Usage example:
|
||||||
*
|
*
|
||||||
* <zend:i18n locale="en" adapter="xliff" data="/path/to/messages.xml" />
|
* <zend:translator locale="en" adapter="Zend\Translator\Adapter\Xliff" />
|
||||||
*
|
*
|
||||||
* @param array $config An array of configuration settings
|
* @param array $config An array of configuration settings
|
||||||
* @param ContainerBuilder $container A ContainerBuilder instance
|
* @param ContainerBuilder $container A ContainerBuilder instance
|
||||||
*/
|
*/
|
||||||
protected function registerI18nConfiguration($config, ContainerBuilder $container)
|
protected function registerTranslatorConfiguration($config, ContainerBuilder $container)
|
||||||
{
|
{
|
||||||
$config = $config['i18n'];
|
$config = $config['translator'];
|
||||||
|
|
||||||
if (!$container->hasDefinition('zend.i18n')) {
|
if (!$container->hasDefinition('zend.translator')) {
|
||||||
$loader = new XmlFileLoader($container, __DIR__.'/../Resources/config');
|
$loader = new XmlFileLoader($container, __DIR__.'/../Resources/config');
|
||||||
$loader->load('i18n.xml');
|
$loader->load('translator.xml');
|
||||||
$container->setAlias('i18n', 'zend.i18n');
|
$container->setAlias('translator', 'zend.translator');
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isset($config['locale'])) {
|
if (isset($config['locale'])) {
|
||||||
@ -109,11 +109,11 @@ class ZendExtension extends Extension
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (isset($config['adapter'])) {
|
if (isset($config['adapter'])) {
|
||||||
$container->setParameter('zend.translator.adapter', constant($config['adapter']));
|
$container->setParameter('zend.translator.adapter', $config['adapter']);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isset($config['translations']) && is_array($config['translations'])) {
|
if (isset($config['translation']) && is_array($config['translation'])) {
|
||||||
foreach ($config['translations'] as $locale => $catalogue) {
|
foreach ($config['translation'] as $locale => $catalogue) {
|
||||||
if ($locale == $container->getParameter('zend.translator.locale')) {
|
if ($locale == $container->getParameter('zend.translator.locale')) {
|
||||||
$container->setParameter('zend.translator.catalogue', $catalogue);
|
$container->setParameter('zend.translator.catalogue', $catalogue);
|
||||||
}
|
}
|
||||||
|
@ -10,6 +10,7 @@
|
|||||||
<xsd:complexType name="config">
|
<xsd:complexType name="config">
|
||||||
<xsd:sequence>
|
<xsd:sequence>
|
||||||
<xsd:element name="logger" type="logger" minOccurs="0" maxOccurs="1" />
|
<xsd:element name="logger" type="logger" minOccurs="0" maxOccurs="1" />
|
||||||
|
<xsd:element name="translator" type="translator" minOccurs="0" maxOccurs="1" />
|
||||||
</xsd:sequence>
|
</xsd:sequence>
|
||||||
</xsd:complexType>
|
</xsd:complexType>
|
||||||
|
|
||||||
@ -39,4 +40,17 @@
|
|||||||
<xsd:enumeration value="7" />
|
<xsd:enumeration value="7" />
|
||||||
</xsd:restriction>
|
</xsd:restriction>
|
||||||
</xsd:simpleType>
|
</xsd:simpleType>
|
||||||
|
|
||||||
|
<xsd:complexType name="translator">
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="translation" type="translation" minOccurs="0" maxOccurs="unbounded" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="locale" type="xsd:string" />
|
||||||
|
<xsd:attribute name="adapter" type="xsd:string" />
|
||||||
|
</xsd:complexType>
|
||||||
|
|
||||||
|
<xsd:complexType name="translation">
|
||||||
|
<xsd:attribute name="key" type="xsd:string" />
|
||||||
|
<xsd:attribute name="catalog" type="xsd:string" />
|
||||||
|
</xsd:complexType>
|
||||||
</xsd:schema>
|
</xsd:schema>
|
||||||
|
@ -29,12 +29,12 @@ class ZendExtensionTest extends TestCase
|
|||||||
$loader->configLoad(array('logger' => array('priority' => 3)), $container);
|
$loader->configLoad(array('logger' => array('priority' => 3)), $container);
|
||||||
$this->assertEquals(3, $container->getParameter('zend.logger.priority'), '->loggerLoad() overrides existing configuration options');
|
$this->assertEquals(3, $container->getParameter('zend.logger.priority'), '->loggerLoad() overrides existing configuration options');
|
||||||
|
|
||||||
// i18n
|
// translator
|
||||||
$loader->configLoad(array('i18n' => array()), $container);
|
$loader->configLoad(array('translator' => array()), $container);
|
||||||
$this->assertEquals('Zend\\Translator\\Translator', $container->getParameter('zend.translator.class'), '->i&8nLoad() loads the i18n.xml file if not already loaded');
|
$this->assertEquals('Zend\\Translator\\Translator', $container->getParameter('zend.translator.class'), '->i18nLoad() loads the translator.xml file if not already loaded');
|
||||||
|
|
||||||
$loader->configLoad(array('i18n' => array('adapter' => 'Zend\\Translator\\Translator::AN_XLIFF', 'locale' => 'fr')), $container);
|
$loader->configLoad(array('translator' => 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('Zend\\Translator\\Translator::AN_XLIFF', $container->getParameter('zend.translator.adapter'), '->i18nLoad() overrides existing configuration options');
|
||||||
$this->assertEquals('fr', $container->getParameter('zend.translator.locale'), '->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