kiberzauras / laravel.multilanguage
Multilanguage support for Laravel 5.1+ routes
Requires
- php: >=5.5.9
README
This package is not maintained anymore, please use mcamara/laravel-localization instead!
Multilanguage for Laravel 5.1
This package will help you to easy create multilanguage routes on top of your single language website. With this package you will be able to access your website with these routes example.com, example.com/en, example.com/en/page and etc. and there is no need to change your routes.php file!
Installation
At first you need to install our package:
composer require "kiberzauras/laravel.multilanguage"
Then you need to create new file under /config/multilanguage.json with this content:
{"default":"en","enabled":["en","ru","lt"]}
In /public/index.php file change these lines:
$response = $kernel->handle(
$request = Illuminate\Http\Request::capture()
);
With these lines:
$response = $kernel->handle(
$request = Kiberzauras\MultiLanguage\Request::capture()
);
Add new provider (/config/app.php providers[]):
Kiberzauras\MultiLanguage\MultiLanguageServiceProvider::class
Thats it, your application now can be accessed with url like these:
example.com
example.com/
example.com/en
example.com/en/
example.com/admin/page/etc
example.com/en/admin/page/etc
Now, try creating hyperlinks:
<?= URL::to('main/index'); ?> //or
<?= url('main/index'); ?> // will create route to /en/main/index (it will use default language as prefix)
<?= URL::to('main/index', ['language'=>'ru']) // will create create route/change default language to /ru/main/index
<?= route('profile'); ?>
<?= route('profile', ['language'=>'ru']); ?>
You can access current language like before:
App::getLocale();
Notes
For assets link, use asset('img/foo.jpg');
or secure_asset('foo/bar.zip', $title, $attributes = []);
instead of url('img/foo.jpg');
https://laravel.com/docs/5.1/helpers#method-asset
License
The Laravel Multilanguage is open-sourced software licensed under the MIT license