adampatterson / laravel-csv-translations
Manage translations in CSV files and import them into Laravel.
Fund package maintenance!
Adam Patterson
Installs: 0
Dependents: 0
Suggesters: 0
Security: 0
Stars: 8
Watchers: 1
Forks: 1
Open Issues: 1
pkg:composer/adampatterson/laravel-csv-translations
Requires
- php: ^8.4
- illuminate/contracts: ^11.0||^12.0
- spatie/laravel-package-tools: ^1.16
Requires (Dev)
- larastan/larastan: ^3.0
- laravel/pint: ^1.14
- nunomaduro/collision: ^8.8
- orchestra/testbench: ^10.0.0||^9.0.0
- pestphp/pest: ^4.0
- pestphp/pest-plugin-arch: ^4.0
- pestphp/pest-plugin-laravel: ^4.0
- phpstan/extension-installer: ^1.4
- phpstan/phpstan-deprecation-rules: ^2.0
- phpstan/phpstan-phpunit: ^2.0
- spatie/laravel-ray: ^1.43.5
This package is auto-updated.
Last update: 2026-02-23 05:12:48 UTC
README
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.
Installation
You can install the package via composer:
composer require adampatterson/laravel-csv-translations
You 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'), ];
Usage
Publishing Translations
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/package
For example, Filament's translations can be published with:
php artisan vendor:publish --tag=filament-translations
Exporting Translations
To export your translations to a CSV file, use the translation:export command:
php artisan translation:export
By default, this exports the base locale (defined in config('app.locale')) to the path specified in your config.
Options
- 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.
Importing Translations
To import translations from a CSV file, use the translation:import command:
php artisan translation:import
The 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.
Options
- 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
Testing
composer test
Changelog
Please see CHANGELOG for more information on what has changed recently.