2012-08-27 13 views
14

Actualmente estoy intentando habilitar el traductor en Symfony 2.0. Symfony está ignorando la variable Accept-Language Header y está usando default_locale (y cuando eso no está definido, el respaldo).¿Por qué Symfony ignora la configuración local de los navegadores (HTTP-Request Accept-Language Header)?

Mi petición es así:

Accept-Language de-DE,de;q=0.8,en-us;q=0.5,en;q=0.3 

pero $this->getRequest()->getLocale(); me pone en con la misma petición.

¿Alguien puede decirme qué puede estar mal?

Sí, me han tratado de borrar la memoria caché y eliminar mis cookies (Omnomnom) :)

Respuesta

19

Este es el comportamiento esperado. Symfony no utiliza de manera predeterminada el encabezado Aceptar idioma y, en cambio, depende de la configuración de Symfony para la configuración regional. De hecho, se recomienda no utilizar la misma dirección URL para el contenido en diferentes lugares, consulte este documento:

Symfony 2 The Book - Translations - The Locale and the URL

Pero si desea ignorar este consejo y utilizar el encabezado lenguaje Aceptar, puede hacerlo con este código en su controlador:

$request = $this->getRequest(); 
$session = $this->get('session'); 

$session->setLocale($request->getPreferredLanguage(array('de', 'en'))); 
+2

existe la posibilidad de ejecutar ese código en cada controlador sin realmente escribirlo en cada controlador? Quiero decir con escribirlo solo una vez? – Senad

+1

Puede escribir un oyente para el evento kernel.request y hacerlo allí. –

+0

gracias ... ya estoy :) :) – Senad

Cuestiones relacionadas