webnuvola / laravel-i18n
Laravel internationalization package
Installs: 5 991
Dependents: 0
Suggesters: 0
Security: 0
Stars: 2
Watchers: 2
Forks: 0
Open Issues: 0
Requires
- php: ^8.1
- laravel/framework: ^9.0||^10.0||^11.0
Requires (Dev)
- orchestra/testbench: ^7.0||^8.0||^9.0
- pestphp/pest: ^1.0||^2.34
README
This package allows you to register i18n routes for your Laravel app.
Installation
Install via composer:
composer require webnuvola/laravel-i18n
After the installation, you must publish the config file and set it up to your needs.
php artisan vendor:publish --provider="Webnuvola\Laravel\I18n\I18nServiceProvider" --tag="config"
Configuration
After publishing, the configuration will be located in config/i18n.php
.
You must configure at least one region to use this package.
Example configuration:
<?php return [ /* |-------------------------------------------------------------------------- | Available regions |-------------------------------------------------------------------------- | | List of languages and countries to view your site in the format {language}-{country}. | Available languages: https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes | Available countries: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2 | Examples: en-us, en-gb, it-it, ... | */ 'regions' => [ 'en-us', 'en-gb', ], /* |-------------------------------------------------------------------------- | Default region |-------------------------------------------------------------------------- | | The default region that will be assigned if running from console or current | route is not i18n. If null, the first element of regions will be used | as default. | */ 'default' => null, ];
Usage
Define i18n routes in routes/web.php
:
use Illuminate\Routing\Router; use Webnuvola\Laravel\I18n\Facades\I18nRoutes; I18nRoutes::group(static function (Router $router): void { Route::get('/', [HomeController::class, 'show'])->name('home'); Route::get('/profile', [ProfileController::class, 'show'])->name('profile.show'); });
This will register the following routes (with the config file of previous step):
I18n functions
To set or get the current region, you can use the following methods:
use Webnuvola\Laravel\I18n\Facades\I18n; I18n::setRegion('en-us'); I18n::getRegion(); // en-us I18n::getCountry(); // us I18n::getLanguage(); // en
Helper functions
This package will extend this default Laravel helper functions by adding i18n support:
url() -> i18n_url()
I18n::setRegion('en-us'); url('page'); // /page i18n_url('page'); // /en-us/page
route() -> i18n_route()
I18n::setRegion('en-us'); route('profile.show'); // /profile i18n_route('profile.show'); // /en-us/profile // If you want a fixed region i18n url route('en-gb.profile.show'); // /en-gb/profile
redirect() -> i18n_redirect()
I18n::setRegion('en-us'); redirect('redirect-page'); // /redirect-page i18n_redirect('redirect-page'); // /en-us/redirect-page
Security
If you discover any security-related issues, please email fabio@webnuvola.com instead of using the issue tracker.
Credits
License
The MIT License (MIT). Please see License File for more information.