localizator
localizator copied to clipboard
Scan your Laravel project and generate language files ready to translate in language(s) of choosing.
Localizator
Localizator is a small tool for Laravel that gives you the ability to extract untranslated string from your project files with one command.
Support
Compatibility
Laravel | Localizator |
---|---|
6.x LTS | ^0.3 |
8.x | * |
9.x | ^0.8 |
Installation
You can install the package via composer:
composer require --dev amirami/localizator
This package makes use of Laravels package auto-discovery mechanism, which means if you don't install dev dependencies in production, it also won't be loaded.
If for some reason you want manually control this:
- add the package to the
extra.laravel.dont-discover
key incomposer.json
, e.g."extra": { "laravel": { "dont-discover": [ "amirami/localizator" ] } }
- Add the following class to the
providers
array inconfig/app.php
:
If you want to manually load it only in non-production environments, instead you can add this to yourAmirami\Localizator\ServiceProvider::class,
AppServiceProvider
with theregister()
method:public function register() { if ($this->app->isLocal()) { $this->app->register(\Amirami\Localizator\ServiceProvider::class); } // ... }
Note: Avoid caching the configuration in your development environment, it may cause issues after installing this package; respectively clear the cache beforehand via
php artisan cache:clear
if you encounter problems when running the commands
You can publish the config file with:
php artisan vendor:publish --provider="Amirami\Localizator\ServiceProvider" --tag="config"
This is the contents of the published config file:
<?php
return [
/**
* Localize types of translation strings.
*/
'localize' => [
/**
* Short keys. This is the default for Laravel.
* They are stored in PHP files inside folders name by their locale code.
* Laravel comes with default: auth.php, pagination.php, passwords.php and validation.php
*/
'default' => true,
/**
* Translations strings as key.
* They are stored in JSON file for each locale.
*/
'json' => true,
],
/**
* Search criteria for files.
*/
'search' => [
/**
* Directories which should be looked inside.
*/
'dirs' => ['resources/views'],
/**
* Patterns by which files should be queried.
* The values can be a regular expression, glob, or just a string.
*/
'patterns' => ['*.php'],
/**
* Functions that the strings will be extracted from.
* Add here any custom defined functions.
* NOTE: The translation string should always be the first argument.
*/
'functions' => ['__', 'trans', '@lang']
],
/**
* Should the localize command sort extracted strings alphabetically?
*/
'sort' => true,
];
Usage
To extract all the strings, it's as simple as running:
php artisan localize de,fr
This command will create (if don't exist) de.json
and fr.json
files inside the resources/lang
directory.
If you have short keys enabled and used in your files (e.g. pagination.next
) the localize command will create folders de
and fr
inside resources/lang
directory and PHP files inside by the short key's prefix (e.g. pagination.php
).
You can also run the artisan command without the country code arguments.
php artisan localize
In this case translation strings will be generated for the language specified in app.locale
config.
Note: Strings you have already translated will not be overwritten.
Key Sorting
By default, the strings generated inside those JSON files will be sorted alphabetically by their keys.
If you wanna turn off this feature just set sort => false
in the config file.
Searching
The way the strings are being extracted is simple.
We are looking inside the directories defined in search.dirs
config, we match the files using patterns defined in search.patterns
, and finally we look to extract strings
which are the first argument of the functions defined in search.functions
.
You are free to change any of these values inside the config file to suit you own needs.
Testing
composer test
Changelog
Please see CHANGELOG for more information on what has changed recently.
Contributing
Please see CONTRIBUTING for details.
Security Vulnerabilities
Please review our security policy on how to report security vulnerabilities.
Credits
- Amir Rami
- All Contributors
License
The MIT License (MIT). Please see License File for more information.