Simple Route localization and Eloquent translation in Laravel
This package provides easy ways to setup database translation and route localization.
Install the package via Composer :
$ composer require richan-fongdasen/laravel-i18n
Publish the package asset files using this php artisan
command
$ php artisan vendor:publish --provider="RichanFongdasen\I18n\ServiceProvider"
The command above would create three new files in your application, such as:
- New configuration file
/config/i18n.php
- New database migration
/database/migrations/0000_00_00_000000_create_languages_table.php
- New languages json file
/storage/i18n/languages.json
return [
/*
|--------------------------------------------------------------------------
| Language repository driver
|--------------------------------------------------------------------------
|
| Define your language repository driver here. The available options are:
| database and json.
|
*/
'driver' => 'json',
/*
|--------------------------------------------------------------------------
| Language repository datasource
|--------------------------------------------------------------------------
|
| Define your language repository datasource here.
| - Define your database table name, when you're using database driver.
| - Define your json file path, when you're using json driver.
|
*/
'language_datasource' => storage_path('i18n/languages.json'),
// 'language_datasource' => 'languages',
/*
|--------------------------------------------------------------------------
| Cache duration
|--------------------------------------------------------------------------
|
| Define how long we should cache the language dataset in seconds.
|
*/
'cache_duration' => 60 * 60 * 24,
/*
|--------------------------------------------------------------------------
| Language key
|--------------------------------------------------------------------------
|
| Define which language key in datasource that we should use.
| Available options are:
| - language, ie: en, es, de, etc.
| - ietfCode, ie: en-US, en-UK, de-DE, etc.
|
*/
'language_key' => 'language',
/*
|--------------------------------------------------------------------------
| API query key
|--------------------------------------------------------------------------
|
| Define the query parameter name which will be used as language selector
| in every API request.
| e.g: http://localhost:8000/api/articles?lang=en
|
*/
'api_query_key' => 'lang',
/*
|--------------------------------------------------------------------------
| Language negotiator class
|--------------------------------------------------------------------------
|
| Define your language negotiator class here.
| The class should implement LanguageNegotiator contract / interface.
|
*/
'negotiator' => \RichanFongdasen\I18n\Negotiators\BrowserNegotiator::class,
/*
|--------------------------------------------------------------------------
| Locale URL segment number
|--------------------------------------------------------------------------
|
| Define which url segment number that will be used to put the current
| locale information. URL segment is started with '1'.
| e.g: http://my-application.app/en/home
|
*/
'locale_url_segment' => 1,
/*
|--------------------------------------------------------------------------
| Translation table suffix
|--------------------------------------------------------------------------
|
| Define your preferred suffix to be appended to your database's
| translation table name.
|
*/
'translation_table_suffix' => 'translations',
/*
|--------------------------------------------------------------------------
| Enable Store to the cache
|--------------------------------------------------------------------------
|
| Toggle store locale to the cache
|
*/
'enable_cache' => env('I18N_ENABLE_CACHE', true),
];
Please check the documentation here https://laravel-i18n.richan.id/
- mcamara/laravel-localization - Route localization concepts in this repository was inspired by this package.
- Wico Chandra - Database translation concepts in this repository was inspired by his
Model Translation
concept. - dimsav/laravel-translatable - Some of database translation concepts in this repository was inspired by this package.
The MIT License (MIT). Please see License File for more information.