Aloha There !
In This article we talk about make app with Mutli language.
- Using mcamara laravel localization package to make direction in laravel app .
- Using Laravel Spatie Transtable To make dynamic json Columns
- Using Laravel Sptaie Sluggable To Create Slug
- Describe how we can make Multi slug with lang
Point 2,3,4 in the next level of this article
*When Create A new project laravel as we know
*
composer create-project --prefer-dist laravel/laravel MultiLangApp
Then
We begin with mcamara laravel-localization package
this package contain many features Some of it
- Detect language from browser
- Smart redirects (Save locale in session/cookie)
- Smart routing (Define your routes only once, no matter how many languages you use)
- Translatable Routes
- Supports caching & testing
- Option to hide default locale in url
Install the package via composer:
composer require mcamara/laravel-localization
*In order to edit the default configuration you may execute:
*
php artisan vendor:publish --provider="Mcamara\LaravelLocalization\LaravelLocalizationServiceProvider"
*You may register the package middleware in the app/Http/Kernel.php file:
*
<?php namespace App\Http;
use Illuminate\Foundation\Http\Kernel as HttpKernel;
class Kernel extends HttpKernel {
/**
* The application's route middleware.
*
* @var array
*/
protected $routeMiddleware = [
/**** OTHER MIDDLEWARE ****/
'localize' => \Mcamara\LaravelLocalization\Middleware\LaravelLocalizationRoutes::class,
'localizationRedirect' => \Mcamara\LaravelLocalization\Middleware\LaravelLocalizationRedirectFilter::class,
'localeSessionRedirect' => \Mcamara\LaravelLocalization\Middleware\LocaleSessionRedirect::class,
'localeCookieRedirect' => \Mcamara\LaravelLocalization\Middleware\LocaleCookieRedirect::class,
'localeViewPath' => \Mcamara\LaravelLocalization\Middleware\LaravelLocalizationViewPath::class
];
}
*Add the following to your routes file:
*
// routes/web.php
Route::group(['prefix' => LaravelLocalization::setLocale()], function()
{
Route::get('/', function () {
return view('welcome');
});
});
in config in laravelLocalization.php file we can uncomment for the language we need to use in the application .
we can make test now add translate to words then we can the translation and redirect make perfectly with this package
you can see the code in this repo
https://github.com/salmazz/Multi-Langague-Example-Laravel-
and continue in the next article
how can we make dynamic columns with multi lang for slug.
bye bye !
Top comments (1)
As my analyses i find this some important point.
using
spatie/laravel-translatable
stores translations in a JSON format within a single column. This approach can have some performance implications, particularly:Slower Queries: Retrieving data with JSON columns can be slower than standard text columns because of the additional processing required to parse the JSON.
Indexing Limitations: JSON columns have limited indexing capabilities, which may impact query performance when filtering or sorting by translated fields.
Increased Complexity: Working with JSON columns can add complexity to your queries, especially if you need to filter or order by specific language values.