richan-fongdasen / laravel-i18n
Simple route and eloquent localization / translation in Laravel
Installs: 77 816
Dependents: 0
Suggesters: 0
Security: 0
Stars: 13
Watchers: 1
Forks: 3
Open Issues: 2
Requires
- php: ^8.0
- illuminate/database: ^8.0|^9.0|^10.0|^11.0
- illuminate/support: ^8.0|^9.0|^10.0|^11.0
- nesbot/carbon: ^2.16|^3.0
Requires (Dev)
- ekino/phpstan-banned-code: ^1.0
- fakerphp/faker: ^1.9
- larastan/larastan: ^1.0|^2.0
- mockery/mockery: ^1.4
- orchestra/testbench: ^6.0|^7.0|^8.0|9.x-dev
- phpmd/phpmd: ^2.11
- phpstan/phpstan-deprecation-rules: ^1.0
- phpstan/phpstan-strict-rules: ^1.0
- phpunit/phpunit: ^9.5|^10.0|^11.0
README
Laravel I18n
Simple Route localization and Eloquent translation in Laravel
Synopsis
This package provides easy ways to setup database translation and route localization.
Table of contents
Setup
Install the package via Composer :
$ composer require richan-fongdasen/laravel-i18n
Publish package assets
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
Configuration
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), ];
Documentation
Please check the documentation here https://laravel-i18n.richan.id/
Credits
- 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.
License
The MIT License (MIT). Please see License File for more information.