Multidiomas

a) Crear en /resources/lang las carpetas es, en, fr y pt (o las que se quieran)

b) Dentro de cada una de esas subcarpetas crear messages.php:
return [
    'ganador_oscar' => 'Oscar Winner',
    'nombre' => 'Name'
];

c) php artisan make:middleware Language:
public function handle($request, Closure $next)
    {
        $local = ($request->hasHeader('X-localization')) ? $request->header('X-localization') : 'en';
        app()->setLocale($local);
        return $next($request);
    }

d) Registrar ese middleware en el \App\Http\kernel.php:
\App\Http\Middleware\Language::class,

e) php artisan make:controller LanguageController:
public function index($locale) {
        App::setLocale($locale);
        $cineastas = Cineasta::orderBy('nombre', 'asc')->paginate(6);
        return view('cineastas.list',compact('cineastas'));
}

f) En la vista del header (por ejemplo):
<li><a href="{{route('cambiar_idioma','es')}}">ESP</a></li>
<li><a href="{{route('cambiar_idioma','en')}}">ING</a></li>

g) En routes/web.php:
Route::get('/language/{id}', 'LanguageController@index')->name('cambiar_idioma');

h) En la vista donde quieras hacer los cambios:
@lang('messages.nombre')
@lang('messages.ganador_oscar')

No hay comentarios:

Publicar un comentario