Language switcher package for Laravel
, (*1)
This package allows switching locale easily on Laravel projects. It's so simple to use, once it's installed, your App locale will change only by passing routes into SetLanguage middleware., (*2)
Top features:, (*3)
- Change automatically app locale depending on user browser configuration
- Language flags built-in for easy implementation
- Get language name like 'English' or 'EspaƱol' from codes such as 'en' or 'es'
- Option to choose short (en) or long (en-GB) language code
- Store locale on users table
- Restrict users to set languages you don't have translations
- Helper functions for clean, simple and easy to read API
- Supports Carbon and Date packages
Getting Started
1. Install
Run the following command:, (*4)
composer require akaunting/laravel-language
2. Register (for Laravel < 5.5)
Register the service provider in config/app.php, (*5)
Akaunting\Language\Provider::class,
Add alias if you want to use the facade., (*6)
'Language' => Akaunting\Language\Facade::class,
3. Publish
Publish config, migration and blade files., (*7)
php artisan vendor:publish --tag=language
4. Migrate
Add locale column to users table:, (*8)
php artisan migrate
Default values can be modified also on config/language.php, (*9)
Keys
- route: Makes route available
- carbon: Sets briannesbitt/carbon translator language
- date: Sets jenssegers/date translator language
- home: Make home route available
- auto: Sets language automatically depending on user's browser config
- prefix: Prefix of routes URI to set locale
- middleware: default middleware to set locale
- controller: default controller to handle locale
- flags: Settings such as width, class etc for flags
- mode: The language code and name mode
- allowed: Allowed language codes
- all: Available language names and codes
Usage
Middleware
All routes in which you want to set language should be under the language
middleware to set at each request to App locale., (*10)
Route::group(['middleware' => 'language'], function () {
// Here your routes
});
URL
- Via URL with return home: /languages/{locale}/home
- Via URL with return back: /languages/{locale}/back
Tip: /languages prefix can be changed from config/language.php, (*11)
Methods
language()->allowed()
Returns an array with [$code => $name] for all allowed
languages of config. Example usage on blade:, (*12)
@foreach (language()->allowed() as $code => $name)
<a href="{{ language()->back($code) }}">{{ $name }}</a>
@endforeach
language()->flags()
Returns an output with flags for all allowed languages of config.
Output can be changed from resources/views/vendor/language folder, (*13)
language()->flag()
Returns the flag of the current locale.
Output can be changed from resources/views/vendor/language folder, (*14)
language()->names($codes = null)
Get an array like [$code => $name] from an array of only $codes., (*15)
language()->codes($langs = null)
Get an array like [$name => $code] from an array of only $langs., (*16)
language()->back($code)
Returns the URL to set up language and return back: back(), (*17)
Also if you prefer to use directly route() function you can use it
as following code:, (*18)
{{ route('language::back', ['locale' => $code]) }}
language()->home($code)
Returns the URL to set language and return to home: url('/'), (*19)
Also if you prefer to use directly route() function you can use it
as following code:, (*20)
{{ route('language::home', ['locale' => $code]) }}
language()->getName($code = 'default')
Returns the language name of $code if specified or the current
language set if not., (*21)
Tip: Use app()->getLocale() to get the current locale, (*22)
language()->getCode($name = 'default')
Returns the language code of $name if specified or the current
language set if not., (*23)
Changelog
Please see Releases for more information what has changed recently., (*24)
Contributing
Pull requests are more than welcome. You must follow the PSR coding standards., (*25)
Security
If you discover any security related issues, please email security@akaunting.com instead of using the issue tracker., (*26)
Credits
License
The MIT License (MIT). Please see LICENSE for more information., (*27)