This package allows you to export and import Laravel translations using CSV files. This makes it easy to share translations with non-technical team members or external translation services.
It supports both standard Laravel language files and vendor-published translations, and can handle both PHP array and JSON formats.
You can install the package via composer:
composer require adampatterson/laravel-csv-translationsYou can publish the config file with:
php artisan vendor:publish --tag="laravel-csv-translations"This is the contents of the published config file:
return [
/*
|--------------------------------------------------------------------------
| Default Export Path
|--------------------------------------------------------------------------
|
| This is the default path where the translations will be exported to.
|
*/
'export_path' => base_path('lang.csv'),
];By default, the Laravel application skeleton does not include the lang directory. If you would like to customize Laravel's language files, you may publish them via the
lang:publish Artisan command.
Further, you can also publish translations from any vendor package that has published its translations. To do this, use the --vendor (or -v) option with the package name:
php artisan lang:publish --vendor=vendor/packageFor example, Filament's translations can be published with:
php artisan vendor:publish --tag=filament-translationsTo export your translations to a CSV file, use the translation:export command:
php artisan translation:exportBy default, this exports the base locale (defined in config('app.locale')) to the path specified in your config.
- Specify Path: Provide a path as an argument to change the output location.
php artisan translation:export custom/path/translations.csv
- Export All Locales: Use the
--all(or-a) flag to export every locale found in yourlangdirectory.php artisan translation:export --all
- Specific Locales: Use the
--locales(or-l) option with a comma-separated list.php artisan translation:export --locales=en,fr,es
The CSV will contain the following columns:
- Path: The relative path to the translation file (e.g.,
en/authorvendor/package/en/messages). - Key: The dot-notation key for the translation.
- Original: The current translation value.
- New: An empty column for you to provide new translations.
To import translations from a CSV file, use the translation:import command:
php artisan translation:importThe command will read the CSV and update your language files. If a value is present in the New column, it will be used; otherwise, the Original value is preserved.
- Specify Path: Provide the path to the CSV file as an argument.
php artisan translation:import custom/path/translations.csv
- Filter by Locale: Import only a specific locale from the CSV.
php artisan translation:import --locale=fr
- Import as JSON: Convert the translations into JSON files instead of PHP arrays.
php artisan translation:import --json
composer testPlease see CHANGELOG for more information on what has changed recently.