How do you set up localization in laravel with example?

Support Laravel Version: Laravel 8, Laravel 9, Laravel 10, Laravel 11 With Latest All Version Support.

Setting up localization in Laravel involves configuring language files, defining translation strings, and implementing language switching functionality. Here’s a step-by-step guide with an example:

Step 1: Configure Language Files

Laravel stores language files in the `resources/lang` directory. Inside this directory, create a subdirectory for each language you want to support. For example, to support English and French, you would create `en` and `fr` directories.

Step 2: Define Translation Strings

Inside each language directory, create PHP files named after the language (e.g., `en.php`, `fr.php`). These files contain arrays with key-value pairs, where the keys are the original (default) strings, and the values are their translations.

Example `en.php` file:

// resources/lang/en.php
return [
'welcome' => 'Welcome to our website!',
'about' => 'About Us',
// Add more translation strings here...
];

Example `fr.php` file:

// resources/lang/fr.php
return [
'welcome' => 'Bienvenue sur notre site web!',
'about' => 'À propos de nous',
// Add more translation strings here...
];

Step 3: Use Translation Strings in Views

In your Blade views, use the `__()` helper function or the `@lang` directive to translate strings.

Example:

<!-- Blade view -->
<h1>{{ __('welcome') }}</h1>
<p>{{ __('about') }}</p>

Step 4: Setting the Application Locale

You can set the application locale dynamically based on user preferences or the URL. You can do this in a middleware, controller, or any other appropriate place.

Example middleware:

// app/Http/Middleware/SetLocale.php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
class SetLocale
{
public function handle(Request $request, Closure $next)
{
$locale = $request->segment(1); // Assuming the first URL segment contains the language code 
if (in_array($locale, ['en', 'fr'])) {
app()->setLocale($locale);
}
return $next($request);
}
}

Step 5: Language Switcher

Implement a language switcher to allow users to change the language. This can be done using links or dropdown menus.

Example language switcher in Blade:

<!-- Blade view -->
<ul>
<li><a href="{{ route('setLocale', 'en') }}">English</a></li>
<li><a href="{{ route('setLocale', 'fr') }}">Français</a></li>
</ul>

Step 6: Route for Changing Locale (Optional)

If you want to set up routes for changing the locale, define routes and corresponding controller methods.

Example:

// web.php
Route::get('locale/{locale}', 'App\Http\Controllers\LocaleController@setLocale')->name('setLocale');

Step 7: Controller Method for Changing Locale (Optional)

If you have routes for changing the locale, implement corresponding controller methods to handle the logic.

Example:

// LocaleController.php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class LocaleController extends Controller
{
public function setLocale($locale)
{
if (in_array($locale, ['en', 'fr'])) {
app()->setLocale($locale);
}
return redirect()->back();
}
}

Notes:

1. Ensure that your application is set up to detect and serve the appropriate language based on user preferences or the URL.
2. You can also use localization for validation messages, pagination, and other parts of your application.

This example provides a basic setup for localization in Laravel. Depending on your application’s requirements, you may need to customize or extend this setup further.