Skip to content

This package allows you to split your website into multiple regions with route translation support.

License

Notifications You must be signed in to change notification settings

Webnuvola/laravel-i18n

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

35 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Laravel Internationalization

Latest Version on Packagist GitHub Tests Action Status Total Downloads

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):

Name Url
en-us.home /en-us
en-us.profile.show /en-us/profile
en-gb.home /en-gb
en-gb.profile.show /en-gb/profile

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 [email protected] instead of using the issue tracker.

Credits

License

The MIT License (MIT). Please see License File for more information.

About

This package allows you to split your website into multiple regions with route translation support.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages