vrnvgasu / localization
The simple button for localization changing.
Requires
- php: ^7.2.5
- illuminate/container: ^7.20
- illuminate/database: ^7.20
- illuminate/http: ^7.20
- illuminate/routing: ^7.20
- illuminate/support: ^7.20
- symfony/http-foundation: ^5.1
Requires (Dev)
This package is auto-updated.
Last update: 2025-03-29 00:38:12 UTC
README
A simple button for changing language for Laravel projects.
Russian and English are supported by default. But you can expand localization.
Installation
Install library
composer require vrnvgasu/localization
Except encrypting localization cookie
Add middleware cookie name \Vrnvgasu\Localization\Services\Locale\Locale::USER_LOCALE
to $except
array for \App\Http\Middleware\EncryptCookies if you use
this middleware.
namespace App\Http\Middleware; use Illuminate\Cookie\Middleware\EncryptCookies as Middleware; use Vrnvgasu\Localization\Services\Locale\Locale; class EncryptCookies extends Middleware { protected $except = [ Locale::USER_LOCALE, ]; }
Run migrations
By default, a locale column will be added to the users table. If this column exists, no migration is required. If the user table is named differently, then you need to make changes to the configs (detailed description in configuring the configs).
php artisan migrate
Set middleware
Set middleware for routes that support localization.
use Illuminate\Support\Facades\Route; use Vrnvgasu\Localization\Middleware\Localization; Route::group(array( 'middleware' => Localization::ALIAS, ), function() { // });
Config management
Publish config to your project
php artisan vendor:publish --tag=vrnvgasu_localization__config
The config/vrnvgasu_localization.php
will be published.
Then you can add new locales in locales
array:
'locales' => [ 'en' => [ 'lang' => 'lang', 'name' => 'en', ], 'ru' => [ 'lang' => 'яз', 'name' => 'рус', ], 'new_locale' => [ 'lang' => 'drop_down_button_name', 'name' => 'language_name', ], ],
Change default locale:
'default' => 'new_locale',
Change users table name (is necessary for migration):
'users_table' => 'users_table_name',
Include language button
Use @include('vrnvgasu::localization.index')
in your blade.
<nav class="navbar navbar-expand-sm bg-dark navbar-dark"> <ul class="navbar-nav mr-auto"> <li class="nav-item dropdown"> @include('vrnvgasu::localization.index') </li> </ul> </nav>
View management
Publish view to your project
php artisan vendor:publish --tag=vrnvgasu_localization__view
The resources/views/vendor/vrnvgasu/localization/index.blade.php
will be published.
You can change this view.
@include('vrnvgasu::localization.index')
will use your template.