Share this:

In today’s digital landscape, catering to a global audience has become a necessity for businesses and individuals alike.

Creating a multi-language website is one of the most effective ways to achieve this. Laravel, a popular PHP web application framework, is a perfect tool for developing such websites.

With the recent release of Laravel 10, developers can now leverage new features and enhancements to create a seamless multi-language experience for users.

In this blog post, we will explore the process of building a multi-language website using Laravel 10. We will cover localization, language selection, and routing to provide a comprehensive understanding of this topic.

Localization in Laravel 10

Localization is the process of adapting an application to cater to the specific needs and preferences of users from different locales. Laravel 10 provides an easy-to-use localization system that allows developers to manage language strings and translations. Here’s how to set up localization in Laravel 10:

  • Create Language Files

Laravel stores language strings in the resources/lang directory. Create a sub-directory for each language you wish to support (e.g., en for English, es for Spanish), and create a messages.php file in each sub-directory containing the translations.

  • Set the Default Locale

In the config/app.php file, set the locale configuration option to your application’s default language. For example, to set English as the default language, use 'locale' => 'en'.

  • Use Translation Strings

To use translations in your views, use the __() function or the @lang directive. For example, {{ __('messages.welcome') }} or @lang('messages.welcome').

Language Selection

To allow users to switch between languages, implement a language selection mechanism in your application. Here are the steps to create a language selector:

  • Create a Language Selector Form

In your view, create a form with a dropdown menu that lists all available languages. Assign each language option a unique value that corresponds to the language directory in resources/lang.

  • Process Language Selection

Create a route in your routes/web.php file to handle the language selection form submission. In the corresponding controller method, set the application’s locale to the selected language using the App::setLocale() method.

  • Store the Selected Language

To persist the user’s language preference across sessions, store the selected language in a cookie, session variable, or database, depending on your application’s requirements.

Routing for Multi-Language Websites

To create SEO-friendly URLs for your multi-language website, consider using a route group with a language prefix. Follow these steps:

  • Create a Middleware

Create a new middleware to handle language-related tasks, such as setting the application’s locale based on the URL’s language prefix or the user’s language preference.

  • Register the Middleware

Register the new middleware in your app/Http/Kernel.php file, and add it to the list of route middleware.

  • Define Routes with Language Prefix

In your routes/web.php file, create a route group with the {locale} route parameter as a prefix. Include all your application’s routes within this group.


Building a multi-language website with Laravel 10 is a straightforward process thanks to the framework’s robust localization features.

By following the steps outlined in this blog post, you can create a seamless and user-friendly experience for your global audience. Embrace the power of Laravel 10 and take your web application to new heights!

Share this:

Categorized in: