Multilingualism in Laravel 11: How to Implement Multilingual Support in Laravel 11 Applications?

Updated: Feb 23, 2025

Multilingualism in Laravel 11: How to Implement Multilingual Support in Laravel 11 Applications?

Multilingual support is an essential feature for many web applications, allowing users to interact with the platform in their preferred language. Laravel, a popular PHP framework, provides built-in support for multilingual applications through its localization feature. In this answer, we will discuss how to implement multilingual support in Laravel 11 applications.

First, let's create a new language file. Laravel looks for language files in the resources/lang directory. To create a new language file, run the following command in your terminal:

php artisan make:language --lang=es

This command will create a new file resources/lang/es/welcome.php. This file will contain the default welcome message in Spanish. You can add or modify the translations as needed.

Next, we need to configure the localization settings in the config/app.php file. Add the following lines to the supported_languages array:

'supported_languages' => [
    'en' => 'English',
    'es' => 'EspaƱol',
],

Now, let's create a route that will serve the language-specific views. Add the following route to your routes/web.php file:

Route::get('/{locale}', function ($locale) {
    Session::put('locale', $locale);
    return redirect()->intended();
})->where('locale', ['en', 'es']);

This route will set the user's preferred language based on the URL parameter and redirect them to their intended page.

Next, we need to create language-specific views. To create a language-specific version of a view, add the language code as a suffix to the view file name. For example, create a file resources/views/welcome.es.blade.php for the Spanish version of the welcome view.

Finally, we need to load the language files in our application. Add the following line to the bootstrap/app.php file, before the $app variable is instantiated:

$loader = collect(app_paths());

foreach (config('app.supported_languages') as $locale => $name) {
    $loader->push(resource_path('lang/' . $locale));
}

$app = new Application(realpath(__DIR__.'/../') . '/');

This code will load all the language files in the resources/lang directory.

With these steps, you have successfully implemented multilingual support in your Laravel 11 application. Users can now switch between languages based on their preference, and your application will serve the appropriate language-specific views and translations.