jorisvanw/laravel-larex

Translate your Laravel application from a single CSV file!

Fund package maintenance!
Lukasss93

v4.0.1 2022-06-02 15:50 UTC

This package is auto-updated.

Last update: 2024-10-30 01:32:06 UTC


README

Laravel Larex

Version Downloads PHP Laravel License Build Coverage

Laravel Larex lets you translate your whole Laravel application with a single CSV file.

You can import translation entries from resources/lang files into a structured CSV, edit the translations and export them back to Laravel PHP files.

Laravel Larex also supports functionalities to sort entries and find strings that aren't localized yet.

See Plugins section for other features.

🚀 Installation

You can install the package using composer

composer require lukasss93/laravel-larex --dev

Then add the service provider to config/app.php.
This step can be skipped if package auto-discovery is enabled.

'providers' => [
    Lukasss93\Larex\LarexServiceProvider::class
];

⚙ Publishing the config file

Publishing the config file is optional:

php artisan vendor:publish --provider="Lukasss93\Larex\LarexServiceProvider" --tag="larex-config"

👓 Usage

  1. First, you must create the initial CSV file with php artisan larex:init.
    Or you can use php artisan larex:import to import entries from resources/lang files.
    The csv file has the following columns:

    • group (basically the file name)
    • key (the array key)
    • en (the language code)
    • other language codes...
  2. Open the project-root/resources/lang/localization.csv file and edit it as you see fit.

  3. Finally, you can use php artisan larex:export to translate your entries from the csv file to the laravel php files.

✨ Tips

  • You can import existing laravel php files with php artisan larex:import.
  • You can use php artisan larex:init --base to init the CSV file with default Laravel entries.
  • The key column inside the CSV file supports the dot notation for nested arrays.
  • You can watch your CSV file with php artisan larex:export --watch
  • You can use php artisan larex:sort to sort the CSV file by group and key.
  • Be careful when using the php artisan larex:export command! It will overwrite all files named with the group names inside the CSV.
  • Be careful when using the dot notation! Only the last entry will override the value.
  • You can use php artisan larex:insert to add new items via CLI too!
  • You can use php artisan larex:import --include=en,it to import only "en" and "it" items.
  • You can use php artisan larex:import --exclude=it to import all items except "it" item.
  • You can use php artisan larex:export --include=en,it to export only "en" and "it" columns.
  • You can use php artisan larex:export --exclude=it to export all columns except "it" column.
  • You can use php artisan larex:localize to find unlocalized strings (use the --import option to add strings in your CSV).
  • You can use php artisan larex:find to search existing groups or keys in your CSV file.
  • You can use php artisan larex:remove to remove existing strings in your CSV file.

📝 Example

  1. Run php artisan larex:init command

  2. Edit the project-root/resources/lang/localization.csv file

  1. Run php artisan larex:export command

  2. You'll get the following files:

    //project-root/resources/lang/en/app.php
    
    <?php
    
    return [
        'hello' => 'Hello',
        'list' => [
            'developers' => 'Developers',
            'teachers' => 'Teachers',
        ]
    ];
    //project-root/resources/lang/it/app.php
    
    <?php
    
    return [
        'hello' => 'Ciao',
        'list' => [
            'developers' => 'Sviluppatori',
            'teachers' => 'Insegnanti',
        ]
    ];

⏫ Exporters

The larex:export <exporter> command exports CSV strings to a specific location based on the selected exporter.

How to create an exporter:
  1. Create a class that implements the Lukasss93\Larex\Contracts\Exporter interface
  2. Add your exporter inside the larex config

⏬ Importers

The larex:import <importer> command imports the strings of the selected importer, into the CSV.

How to create an importer:
  1. Create a class that implements the Lukasss93\Larex\Contracts\Importer interface
  2. Add your importer inside the larex config

🔍 Linters

Larex provides a linting system by using the php artisan larex:lint command to validate your CSV file.

Available linters:

You can enable/disable any linter you want by comment/uncomment it inside the larex config.

How to create a linter:
  1. Create a class that implements the Lukasss93\Larex\Contracts\Linter interface
  2. Add your linter inside the larex config

🧩 Plugins

  • Crowdin Plugin
    A Laravel Larex plugin to import/export localization strings from/to Crowdin

⚗️ Testing

composer test

🔰 Version Support

📃 Changelog

Please see the CHANGELOG.md for more information on what has changed recently.

🏅 Credits

📖 License

Please see the LICENSE.md file for more information.