richan-fongdasen/laravel-i18n

Simple route and eloquent localization / translation in Laravel

3.3.0 2024-03-13 04:04 UTC

This package is auto-updated.

Last update: 2024-10-13 10:07:17 UTC


README

Build codecov StyleCI Analysis Status Total Downloads Latest Stable Version License: MIT

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.