[FrameworkBundle][config] allow multiple fallback locales.
This commit is contained in:
parent
51983d0583
commit
1251f0e0b2
|
@ -364,8 +364,13 @@ class Configuration implements ConfigurationInterface
|
|||
->arrayNode('translator')
|
||||
->info('translator configuration')
|
||||
->canBeEnabled()
|
||||
->fixXmlConfig('fallback')
|
||||
->children()
|
||||
->scalarNode('fallback')->defaultValue('en')->end()
|
||||
->arrayNode('fallbacks')
|
||||
->beforeNormalization()->ifString()->then(function ($v) { return array($v); })->end()
|
||||
->prototype('scalar')->end()
|
||||
->defaultValue(array('en'))
|
||||
->end()
|
||||
->end()
|
||||
->end()
|
||||
->end()
|
||||
|
|
|
@ -226,7 +226,7 @@ class FrameworkExtension extends Extension
|
|||
'memcached' => 'Symfony\Component\HttpKernel\Profiler\MemcachedProfilerStorage',
|
||||
'redis' => 'Symfony\Component\HttpKernel\Profiler\RedisProfilerStorage',
|
||||
);
|
||||
list($class,) = explode(':', $config['dsn'], 2);
|
||||
list($class, ) = explode(':', $config['dsn'], 2);
|
||||
if (!isset($supported[$class])) {
|
||||
throw new \LogicException(sprintf('Driver "%s" is not supported for the profiler.', $class));
|
||||
}
|
||||
|
@ -534,10 +534,7 @@ class FrameworkExtension extends Extension
|
|||
// Use the "real" translator instead of the identity default
|
||||
$container->setAlias('translator', 'translator.default');
|
||||
$translator = $container->findDefinition('translator.default');
|
||||
if (!is_array($config['fallback'])) {
|
||||
$config['fallback'] = array($config['fallback']);
|
||||
}
|
||||
$translator->addMethodCall('setFallbackLocales', array($config['fallback']));
|
||||
$translator->addMethodCall('setFallbackLocales', array($config['fallbacks']));
|
||||
|
||||
// Discover translation directories
|
||||
$dirs = array();
|
||||
|
|
|
@ -125,6 +125,9 @@
|
|||
</xsd:complexType>
|
||||
|
||||
<xsd:complexType name="translator">
|
||||
<xsd:sequence>
|
||||
<xsd:element name="fallback" type="xsd:string" minOccurs="0" maxOccurs="unbounded" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="enabled" type="xsd:boolean" />
|
||||
<xsd:attribute name="fallback" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
|
|
|
@ -115,7 +115,7 @@ class ConfigurationTest extends \PHPUnit_Framework_TestCase
|
|||
),
|
||||
'translator' => array(
|
||||
'enabled' => false,
|
||||
'fallback' => 'en',
|
||||
'fallbacks' => array('en'),
|
||||
),
|
||||
'validation' => array(
|
||||
'enabled' => false,
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
<?php
|
||||
|
||||
$container->loadFromExtension('framework', array(
|
||||
'translator' => array(
|
||||
'fallbacks' => array('en', 'fr'),
|
||||
),
|
||||
));
|
|
@ -0,0 +1,15 @@
|
|||
<?xml version="1.0" ?>
|
||||
|
||||
<container xmlns="http://symfony.com/schema/dic/services"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xmlns:framework="http://symfony.com/schema/dic/symfony"
|
||||
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd
|
||||
http://symfony.com/schema/dic/symfony http://symfony.com/schema/dic/symfony/symfony-1.0.xsd">
|
||||
|
||||
<framework:config secret="s3cr3t">
|
||||
<framework:translator enabled="true">
|
||||
<framework:fallback>en</framework:fallback>
|
||||
<framework:fallback>fr</framework:fallback>
|
||||
</framework:translator>
|
||||
</framework:config>
|
||||
</container>
|
|
@ -0,0 +1,3 @@
|
|||
framework:
|
||||
translator:
|
||||
fallbacks: [en, fr]
|
|
@ -206,6 +206,14 @@ abstract class FrameworkExtensionTest extends TestCase
|
|||
$this->assertEquals(array('fr'), $calls[0][1][0]);
|
||||
}
|
||||
|
||||
public function testTranslatorMultipleFullback()
|
||||
{
|
||||
$container = $this->createContainerFromFile('translator_fallbacks');
|
||||
|
||||
$calls = $container->getDefinition('translator.default')->getMethodCalls();
|
||||
$this->assertEquals(array('en', 'fr'), $calls[0][1][0]);
|
||||
}
|
||||
|
||||
/**
|
||||
* @expectedException \Symfony\Component\Config\Definition\Exception\InvalidConfigurationException
|
||||
*/
|
||||
|
|
Reference in New Issue