Laravel 10 Create Multi Language Website Example Tutorial

Laravel 10 Create Multi Language Website Example Tutorial

Create mutli language website in laravel 10/9 apps; Through this tutorial, you will learn how to create multi language website in laravel 10/9 apps.

Laravel 10/9 Create Multi Language Website Example Tutorial

Follow the following steps to create multi language website in laravel 9 apps:

  • Step 1 – Install Laravel
  • Step 2 – Create Lang Files
  • Step 3 – Create Routes
  • Step 4 – Create LangController Controller
  • Step 5 – Create View
  • Step 6 – Create Middleware
  • Step 7 – Start Laravel App

Step 1 – Install Laravel

Execute the following command on command prompt to install laravel app in your system:

composer create-project laravel/laravel example-app

Step 2 – Create Lang Files

Create the following folders and files for english, france and spanish language files in lang folder; is as follows:

resources/lang/en/messages.php

<?php

  

return [

  

    'title' => 'This is English Language Title.',

  

];

resources/lang/fr/messages.php

<?php

   

return [

  

    'title' => 'Ceci est le titre fr langue anglaise.',

  

];

resources/lang/sp/messages.php

<?php

  

return [

  

    'title' => "Il s'agit du titre en langue espagnole.",

  

];

Step 3 – Create Routes

Visit the routes directory and open web.php. Then create two routes one for displaying the dashboard page with language dropdown and another for you can change language logic; is as follows:

<?php

  

use Illuminate\Support\Facades\Route;

  

use App\Http\Controllers\LangController;

  

/*

|--------------------------------------------------------------------------

| Web Routes

|--------------------------------------------------------------------------

|

| Here is where you can register web routes for your application. These

| routes are loaded by the RouteServiceProvider within a group which

| contains the "web" middleware group. Now create something great!

|

*/

  

Route::get('lang/home', [LangController::class, 'index']);

Route::get('lang/change', [LangController::class, 'change'])->name('changeLang');

Step 4 – Create LangController Controller

Execute the following command on command prompt to create LangController file:

php artisan make:controller LangController

Then visit app/http/controllers directorya and open LangController.php file. Then add the following code into it:

<?php

  

namespace App\Http\Controllers;

  

use Illuminate\Http\Request;

use App;

  

class LangController extends Controller

{

    /**

     * Display a listing of the resource.

     *

     * @return \Illuminate\Http\Response

    */

    public function index()

    {

        return view('lang');

    }

  

    /**

     * Display a listing of the resource.

     *

     * @return \Illuminate\Http\Response

    */

    public function change(Request $request)

    {

        App::setLocale($request->lang);

        session()->put('locale', $request->lang);

  

        return redirect()->back();

    }

}

Step 5 – Create View

Visit resources/views directory and create lang.blade.php file. And add the following code into lang.blade.php file:

<!DOCTYPE html>

<html>

<head>

    <title>How to Create Multi Language Website in Laravel - Tutsmake.com</title>

    <meta charset="utf-8">

    <meta http-equiv="X-UA-Compatible" content="IE=edge">

    <meta name="viewport" content="width=device-width, initial-scale=1">

    <link href="//netdna.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css" rel="stylesheet">

    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>

</head>

<body>

    <div class="container">

  

        <h1>How to Create Multi Language Website in Laravel - Tutsmake.com</h1>

  

        <div class="row">

            <div class="col-md-2 col-md-offset-6 text-right">

                <strong>Select Language: </strong>

            </div>

            <div class="col-md-4">

                <select class="form-control changeLang">

                    <option value="en" {{ session()->get('locale') == 'en' ? 'selected' : '' }}>English</option>

                    <option value="fr" {{ session()->get('locale') == 'fr' ? 'selected' : '' }}>France</option>

                    <option value="sp" {{ session()->get('locale') == 'sp' ? 'selected' : '' }}>Spanish</option>

                </select>

            </div>

        </div>

    

        <h1>{{ __('messages.title') }}</h1>

     

    </div>

</body>

  

<script type="text/javascript">

  

    var url = "{{ route('changeLang') }}";

  

    $(".changeLang").change(function(){

        window.location.href = url + "?lang="+ $(this).val();

    });

  

</script>

</html>

Step 6 – Create Middleware

Execute the following command on command prompt to create one middleware that will manage dynamic language that we selected on dropdown; is as follow:

php artisan make:middleware LanguageManager

Then visit app/Http/Middleware/ directory and open LanguageManager.php file. And add the following code into it:

<?php

  

namespace App\Http\Middleware;

  

use Closure;

use App;

  

class LanguageManager

{

    /**

     * Handle an incoming request.

     *

     * @param  \Illuminate\Http\Request  $request

     * @param  \Closure  $next

     * @return mixed

     */

    public function handle($request, Closure $next)

    {

        if (session()->has('locale')) {

            App::setLocale(session()->get('locale'));

        }

          

        return $next($request);

    }

}

Then visit app/Http/ directory and open Kernel.php file. And register middleware; is as follows:

<?php

  

namespace App\Http;

  

use Illuminate\Foundation\Http\Kernel as HttpKernel;

  

class Kernel extends HttpKernel

{

    ....

  

    /**

     * The application's route middleware groups.

     *

     * @var array

     */

    protected $middlewareGroups = [

        'web' => [

            \App\Http\Middleware\EncryptCookies::class,

            \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,

            \Illuminate\Session\Middleware\StartSession::class,

            \Illuminate\View\Middleware\ShareErrorsFromSession::class,

            \App\Http\Middleware\VerifyCsrfToken::class,

            \Illuminate\Routing\Middleware\SubstituteBindings::class,

            \App\Http\Middleware\LanguageManager::class,

        ],

  

        'api' => [

            'throttle:60,1',

            \Illuminate\Routing\Middleware\SubstituteBindings::class,

        ],

    ];

  

    ...

Step 7 – Start Laravel App

Execute the following command on command prompt to start larave app; is as follows:

php artisan serve

Recommended Laravel Tutorials

AuthorAdmin

My name is Devendra Dode. I am a full-stack developer, entrepreneur, and owner of Tutsmake.com. I like writing tutorials and tips that can help other developers. I share tutorials of PHP, Python, Javascript, JQuery, Laravel, Livewire, Codeigniter, Node JS, Express JS, Vue JS, Angular JS, React Js, MySQL, MongoDB, REST APIs, Windows, Xampp, Linux, Ubuntu, Amazon AWS, Composer, SEO, WordPress, SSL and Bootstrap from a starting stage. As well as demo example.

Leave a Reply

Your email address will not be published. Required fields are marked *