Translating Laravel languages files using a Google Spreadsheet.
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
config Fix Lravel 5.1 support Sep 5, 2016
docs Update readme Sep 6, 2018
src Merge branch 'develop' of Sep 6, 2018
tests Apply fixes from StyleCI Jun 11, 2018
.editorconfig Initial commit Sep 4, 2016
.gitattributes Initial commit Sep 4, 2016
.gitignore Fix sension labs issies Sep 4, 2016
.styleci.yml Update .styleci.yml Jun 11, 2018
.travis.yml Initial commit Sep 4, 2016 Initial commit Sep 4, 2016 Update Licence to GPLv3 as suggest in #27 Sep 6, 2018 Update readme Sep 6, 2018
composer.json Add L5.7 support Sep 6, 2018
phpunit.xml Use 2.2.1 version of google/apiclient and fix test Apr 26, 2017
phpunit.xml.dist Initial commit Sep 4, 2016


Laravel Translation Sheet

Translating Laravel languages files using a Google Spreadsheet.

Latest Version on Packagist Software License Build Status StyleCI SensioLabsInsight Quality Score

Laravel Translation Sheet



  • Install package

    $ composer require nikaia/translation-sheet
  • If Laravel version <= 5.4, Add service provider to your 'config/app.php'. For version >= 5.5, package will be auto-discoverd by Laravel.

  • Configuration can be done via environments variables, but if you prefer you can override the configuration by publishing the package config file using :

    $ php artisan vendor:publish --provider="Nikaia\TranslationSheet\TranslationSheetServiceProvider"


Laravel 5.1 | 5.2 | 5.3 | 5.4


Google Api

  • head to
  • create a new project
  • Make sure to activate Sheet Api for the project
    • Navigate to "Library"
    • Search "Google Sheets API" > Click on "Google Sheets API"
    • Click "Enable"
  • Create a Service Account and credentials
    • Navigate to "Credentials"
    • Click "Create credentials"
    • choose "Service Account key"
    • Choose A "New Service Account" in the "Service account" select
    • Choose a name. (ie. This is the name that will show up in the Spreadsheet history operations), "Editor" as role and "JSON" for the key type.
    • Save the credentials to 'resources/google/service-account.json' folder. (You can choose another name/folder if you want in your application folder)
    • Make sure to write down the service account email, you will need it later for the package configuration.


Required configuration

In your .env file or in your published config file (config/translation_sheet.php)

# The service account email   

# The path to the downloaded service account credentials file

# The ID of the spreadsheet that we will be using for translation

# The locales of the application (separated by comma) 


1/ Setup the spreadsheet

This need to be done only once.

$ php artisan translation_sheet:setup

2/ Prepare the sheet

To avoid some conflicts, we will first run this command to rewrite the locale languages files.

$ php artisan translation_sheet:prepare

3/ Publish translation to sheet

$ php artisan translation_sheet:push

4/ Share the spreadsheet with clients or project managers for translations.

5/ Once done, You can lock the translations on the spreadsheet (to avoid conflicts)

$ php artisan translation_sheet:lock

6/ Pull the translations

This will pull the translations from the spreadsheet, and write it the language files in your applications. You can use git diff here to make sure eveything is ok (Conflicts, errors etc ...)

$ php artisan translation_sheet:pull

6/ Unlock the translations on the spreadsheet

$ php artisan translation_sheet:unlock

Open the spreadsheet in the browser

$ php artisan translation_sheet:open


Please see CHANGELOG for more information what has changed recently.


$ composer test

N.B : You need a valid configuration service-account.json file to run tests.


To test your fork using travis, you need a valid service-account.json. The file is ignored in the repository to avoid exposing credentials. You need to encode your credentials file `tests/fixtures/service-account.json using travis utilities.

# Save credential file to tests/fixtures/service-account.json
$ cd tests/fixtures
$ travis encrypt-file service-account.json

Commit the .enc result file.

PS. Travis will decrypt the file just before running the tests. See the travis.yml file.

    - openssl aes-256-cbc -K $encrypted_5affb966e7f5_key -iv $encrypted_5affb966e7f5_iv -in tests/fixtures/service-account.json.enc -out tests/fixtures/service-account.json -d


If you discover any security related issues, please email instead of using the issue tracker.


Please see CONTRIBUTING for details.