Necesito internacionalizar mi aplicación web pero no quiero que en la URL existan los locales
Ej: /_locale/ruta
que sea solo /ruta
y que el contenido cambie según el idioma por defecto que tenga el navegador o desde un selector de idiomas.
Gracias de antemano
Respuestas
La funcionalidad de traducir las rutas es algo que no se va a incluir en Symfony a corto plazo. Por suerte existe un bundle llamado JMSI18nRoutingBundle que hace exactamente lo que quieres.
En el capítulo Configuration de su documentación puedes ver que define varias estrategias para traducir las URL. Lo que estás buscando sería la estrategia número 4.
@javiereguiluz
Hola @nosiv99,
No he probado el Bundle que dice @javiereguiluz por el contrario, lo que yo hago es crear un listener para la sesión del usuario, así:
class UserLocaleListener { /** * @var Session */ private $session; public function __construct(Session $session) { $this->session = $session; } /** * @param InteractiveLoginEvent $event */ public function onInteractiveLogin(InteractiveLoginEvent $event) { $user = $event->getAuthenticationToken()->getUser(); if (null !== $user->getLocale()) { $this->session->set('_locale', $user->getLocale()); } } }
Como puedes ver, en la entidad del usuario existe la propiedad locale.
Espero sea de ayuda.
Saludos
@miguelplazasr
No creo que sea buena idea tener diferentes contenidos en una misma URL en términos de posicionamiento en buscadores
@diegotham