Ver Mensaje Individual
  #1 (permalink)  
Antiguo 03/04/2015, 03:23
Avatar de Djoaq
Djoaq
 
Fecha de Ingreso: septiembre-2012
Ubicación: Barcelona
Mensajes: 271
Antigüedad: 11 años, 7 meses
Puntos: 38
seteando App::locale y redireccionando

Hola a todos ,

Llevo unos días trasteando laravel 5 y la verdad es que este fmk me encanta!

Me acabo de encallar en el siguiente tema...

La idea es que quiero dar soporte multilenguaje a mi aplicación .. pero no solo el contenido sino también me gustaría que las url's también cambiaran ...

Para ello en la carpeta lang he creado un archivo de traducciones de ruta.

---lang
-----es
------rutas.php
-----en
------rutas.php



route.php -> es

Código PHP:
Ver original
  1. return [
  2.  
  3.     'inicio' => '/inicio',
  4.     'interesados' => '/interesados',
  5.     'inmuebles' => '/inmuebles',
  6.     'propietarios' => '/propietarios',
  7.  
  8. ];

route.php -> en

Código PHP:
Ver original
  1. return [
  2.  
  3.     'inicio' => '/start',
  4.     'interesados' => '/interested',
  5.     'inmuebles' => '/estates',
  6.     'propietarios' => '/owners',
  7.  
  8. ];

Luego el enrutador tengo un controller preparado que recibe el idioma y la ruta que quiero traducir :

Código PHP:
Route::get('lang/{lang}/{ruta}',['uses' => 'LenguajeController@get']); 
Y por supuesto las rutas en los distintos idiomas:

Código PHP:
Route::get('/inicio', ['middleware' => 'auth''uses' => 'HomeController@index']);
Route::get('/start', ['middleware' => 'auth''uses' => 'HomeController@index']); 
El controller recibe 2 parámetros 1 el idioma que quiero cambiar y 2 la url a redireccionar :
Código PHP:
class LenguajeController extends Controller {
    
/**
     * Display a listing of the resource.
     *
     * @return Response
     */
    
public function get($lang,$url)
    {        
        if (
Auth::user())
        {
            
App::setLocale($lang);

            return 
redirect(trans('rutas.'.$url));           
        }
        
    }    


Digamos que le paso al LenguajeController ,param1 'en' (el idioma a cambiar) y param2 /start (el nombre de la ruta a redirigir) .
El cambio de locale lo hace bién dentro del controller pero al redirigir a
/start me sigue saliendo el idioma por defecto.. es .

Solo cambia el idioma si no hago redirección .. pero entonces no puedo cambiar la url al idioma seleccionado ...