All Projects → nikaia → Translation Sheet

nikaia / Translation Sheet

Licence: gpl-3.0
Translating Laravel languages files using a Google Spreadsheet.

Projects that are alternatives of or similar to Translation Sheet

Laravel Translatable
It's a Laravel database translations manager
Stars: ✭ 47 (-81.5%)
Mutual labels:  translation, laravel-package
tarjama
This package allows you to translate your models fields. `2.0` version will be continued here: https://github.com/fevrok/laravel-translatable
Stars: ✭ 2 (-99.21%)
Mutual labels:  translation, laravel-package
lost-in-translation
Uncover missing translations and localization strings in Laravel applications.
Stars: ✭ 32 (-87.4%)
Mutual labels:  translation, laravel-package
Laravel Localization Helpers
🎌 Artisan commands to generate and update lang files automatically
Stars: ✭ 190 (-25.2%)
Mutual labels:  translation, laravel-package
Tms
基于频道模式的团队沟通协作+轻量级任务看板,支持mardown、富文本、在线表格和思维导图的团队博文wiki,i18n国际化翻译管理的响应式web开源团队协作系统。
Stars: ✭ 232 (-8.66%)
Mutual labels:  translation
Wagonwheel
Offer an online version of your Laravel emails to users.
Stars: ✭ 224 (-11.81%)
Mutual labels:  laravel-package
Wisteria
Beautiful document tool for your project.
Stars: ✭ 226 (-11.02%)
Mutual labels:  laravel-package
Web Socket
Laravel library for asynchronously serving WebSockets.
Stars: ✭ 225 (-11.42%)
Mutual labels:  laravel-package
Nexmo Laravel
Add Nexmo functionality such as SMS and voice calling to your Laravel app with this Laravel Service Provider.
Stars: ✭ 250 (-1.57%)
Mutual labels:  laravel-package
Vimdoc Ja
A project which translate Vim documents into Japanese.
Stars: ✭ 245 (-3.54%)
Mutual labels:  translation
Auth Tests
Always-current tests for Laravel's authentication system. Curated by the community.
Stars: ✭ 230 (-9.45%)
Mutual labels:  laravel-package
Laravel Views
Laravel package to create beautiful common views like data tables using the TALL stack.
Stars: ✭ 221 (-12.99%)
Mutual labels:  laravel-package
Deep Translator
A flexible free and unlimited python tool to translate between different languages in a simple way using multiple translators.
Stars: ✭ 233 (-8.27%)
Mutual labels:  translation
Laravel World
provide countries, states, and cities relations and database.
Stars: ✭ 222 (-12.6%)
Mutual labels:  translation
Laravel Gitscrum
GitScrum is a Project Management Tool, developed to help entrepreneurs, freelancers, managers, and teams Skyrocket their Productivity with the Agile methodology and Gamification.
Stars: ✭ 2,686 (+957.48%)
Mutual labels:  laravel-package
Clamav Validator
Laravel virus validator based on ClamAV anti-virus scanner
Stars: ✭ 224 (-11.81%)
Mutual labels:  laravel-package
Dxup
A d3d9 and d3d10 to d3d11 translation layer.
Stars: ✭ 231 (-9.06%)
Mutual labels:  translation
Laravel Multilingual Routes
A package to handle multilingual routes in your Laravel application.
Stars: ✭ 241 (-5.12%)
Mutual labels:  laravel-package
Laravel Query Monitor
Simple artisan command to monitoring triggered queries
Stars: ✭ 230 (-9.45%)
Mutual labels:  laravel-package
Jshistory Cn
🇨🇳 《JavaScript 二十年》中文版
Stars: ✭ 3,686 (+1351.18%)
Mutual labels:  translation

Laravel Translation Sheet

Translating Laravel languages files using a Google Spreadsheet.

Latest Version on Packagist Build Status Quality Score

Contents

Installation

  • Install package

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

    Nikaia\TranslationSheet\TranslationSheetServiceProvider::class,
    
  • 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 translation_sheet:publish
        or
    $ php artisan vendor:publish --provider="Nikaia\TranslationSheet\TranslationSheetServiceProvider"
    

Requirements

Laravel >= 5.1

Configuration

Google Api credentials

  • Create a new project in https://console.developers.google.com/
  • Make sure to activate Sheet Api for the created project
    • Navigate to "Library"
    • Search "Google Sheets API" > Click on "Google Sheets API" and click enable
  • Create 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),
      • Choose "Editor" as the role
      • Choose "JSON" for the key type.
    • Save the credentials to 'resources/google/service-account.json' folder. (You can choose another name/folder and update the package configuration)
    • Make sure to write down the service account email, you will need to share the spreadsheet with this email (see below).

Spreadsheet

Package configuration

In your .env file or in your published config file (config/translation_sheet.php), you need to add the following

# The service account email   
TS_SERVICE_ACCOUNT_EMAIL=***@***.iam.gserviceaccount.com

# The path to the downloaded service account credentials file
TS_SERVICE_ACCOUNT_CREDENTIALS_FILE=resources/google/service-account.json

# The ID of the spreadsheet that we will be using for translation (the last portion of the spreadsheet url)
TS_SPREADSHEET_ID=xxxx

# The locales of the application (separated by comma) 
TS_LOCALES=fr,en,es

Usage

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

Excluding translations

Sometimes you might need to instruct the package to exclude some translations. You can do so by specifying patterns in the exclude config option. It accepts multiple patterns that target the full translation keys and that the Str::is can understand.

[
    // ...
    
    'exclude' => [
        'validation*',  // This will exclude all the `validation.php` translations.
        'foo::*',       // This will exclude all the `foo` namespace translations.
        'foo::bar.*',   // this will exclude the `bar` translations from the `foo` namespace.
    ],
    
    // ...
]

Extra sheets

Extra sheets

Sometimes you may have other files that need translations. They are not related to the laravel application per se and are not stored in the resources\lang folder. Maybe you are building a web app (spa), or even a mobile app alongside the laravel app, and you need to handle their translations.

In this specific case, you can configure extra sheets to handle those translations files stored inside a specific path.

  • This feature handles only json files.
  • The files must live outside the resources\lang directory. For instance resources\web-app\lang.
[
    // ...

    'extra_sheets' => [
        [
            'name' => 'Web App',                        // Spreadsheet sheet (tab) name.
            'path' => resource_path('web-app/lang'),    // Path where json files are stored. Files can be organized inside sub folders.        
            'tabColor' => '#0000FF',                    // Color of the spreadsheet tab
        ],
        [
            'name' => 'Mobile App',
            'path' => resource_path('mobile-app/lang'),        
            'tabColor' => '#0000FF',
        ],    
    ],
]

You need to run translation_sheet:setup command, if you add this config later on.

Changelog

Please see CHANGELOG for more information what has changed recently.

Testing

$ composer test

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

Github action

To test your fork using github action, 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 usinggpg`

# Save credential file to tests/fixtures/service-account.json
$ gpg -c tests/fixtures/service-account.json  tests/fixtures/service-account.json.gpg

Commit the .gpg encoded file.

PS. Github action will decrypt the file just before running the tests. See the run-tests.yml file.

Security

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

Contributing

Please see CONTRIBUTING for details.

Credits

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].