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

1.0.0 2026-02-17 18:40 UTC

This package is auto-updated.

Last update: 2026-02-23 05:12:48 UTC


README

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads

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 your lang directory.
    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:

  1. Path: The relative path to the translation file (e.g., en/auth or vendor/package/en/messages).
  2. Key: The dot-notation key for the translation.
  3. Original: The current translation value.
  4. 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.

Credits