Ver Mensaje Individual
  #3 (permalink)  
Antiguo 22/11/2013, 19:00
Makalister
 
Fecha de Ingreso: septiembre-2009
Ubicación: Madrid
Mensajes: 25
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: Traducciones en la BD con Stof Doctrine Extension

Le he tenido que agregar un listener para variable de session local que por lo que sea no basta con poner

Código PHP:
$request->getSession()->set('_locale''en');
$request->setLocale('en'); 
este es el listener de idioma que he tenido que crear

Código PHP:
use SymfonyComponentHttpKernelEventGetResponseEvent;
use 
SymfonyComponentHttpKernelKernelEvents;
use 
SymfonyComponentEventDispatcherEventSubscriberInterface;

class 
LocaleListener implements EventSubscriberInterface
{
    private 
$defaultLocale;

    public function 
__construct($defaultLocale 'es')
    {
        
$this->defaultLocale $defaultLocale;
    }

    public function 
onKernelRequest(GetResponseEvent $event)
    {

        
$request $event->getRequest();
        if (!
$request->hasPreviousSession()) {
            return;
        }

        if (
$locale $request->attributes->get('_locale')) {

            
$request->getSession()->set('_locale'$locale);
        } else {
            
$request->setLocale($request->getSession()->get('_locale'$this->defaultLocale));
        }
    }

    public static function 
getSubscribedEvents()
    {
        return array(
            
KernelEvents::REQUEST => array(array('onKernelRequest'17)),
        );
    }

Servicios

Código PHP:
<?xml version="1.0" ?>

<container xmlns="http://symfony.com/schema/dic/services"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">

    <services>
        <service id="example.locale_listener"
                 class="MGD\ExampleBundle\Listener\LocaleListener">
            <argument>%kernel.default_locale%</argument>
            <tag name="kernel.event_subscriber" />
        </service>

    </services>

</container>
Parece ser que es necesario crear este listener para que el bundle pille el idioma