michele-angioni / laravel-js-lang-converter
Laravel Localization in JavaScript
Installs: 63 518
Dependents: 0
Suggesters: 0
Security: 0
Stars: 25
Watchers: 3
Forks: 8
Language:JavaScript
Requires
- php: >=7.0
- laravel/framework: ~5.5
- tedivm/jshrink: 1.0.*
Requires (Dev)
- mockery/mockery: 0.9.*
- orchestra/testbench: ~3.5
- phpunit/phpunit: ~6.0|~7.0
README
Laravel Localization in JavaScript.
Laravel JS Lang Converter converts all your localization messages of your Laravel app to JavaScript, providing a small JavaScript library to interact with those messages in the fron end.
Most of the work has been developed in Mariuzzo's package
Laravel 5.5+ is supported. PHP 7.0 is required. For Laravel 5.1 - 5-4 versions, use the v2.x branch.
Installation
Add the following line to you composer.json
file under require
.
"michele-angioni/laravel-js-lang-converter": "~3.0"
and run composer update
or composer install
.
Then you need to add the Laravel JS Lang Converter service provider in your app/config/app.php
file
'providers' => [ // ... 'MicheleAngioni\LaravelJsLangConverter\LaravelJsLangConverterServiceProvider', // ... ],
In order to use some package features, you need to publish the config file through the artisan command php artisan vendor:publish
. It will create the laravel_js_lang.php
file in your config directory.
Now you are done!
Usage
This project comes with a command that generate the JavaScript version of all your messages found in resources/lang
directory. The resulting JavaScript file will have the whole bunch of messages and a thin library similar to Laravel's Lang
class.
Generating JS messages
php artisan lang:js
Specifying a custom target
php artisan lang:js public/assets/dist/lang.dist.js
Converting only some files
If you don't want to convert ALL your lang files, you can specify the files you want to be converted into your laravel_js_lang.php
conf file. Under the files
array, just add the list of your source files, like so:
'files' => [ 'pagination', 'validation' ]
Compressing the JS file
php artisan lang:js -c
Use gulp to publish (optional):
-
Install
gulp-shell
from https://github.com/sun-zheng-an/gulp-shell withnpm install --save-dev gulp-shell
. -
Create an extension for elixir in your
gulpfile.js
:var shell = require('gulp-shell'); //...... var Task = elixir.Task; elixir.extend('langjs', function(path, minimize) { new Task('langjs', function() { var command = "php artisan lang:js " + (path || "public/js/messages.js"); if (minimize) { command += " -c"; } return gulp.src("").pipe(shell(command)); }); }); gulp.task('langJs', shell.task('php artisan lang:js -c public/js/messages.js'));
-
Use the new elixir task:
elixir(function(mix) { var path = "public/js"; var minimize = true; mix.langjs(path, minimize); });
Documentation
This is the documentation regarding the thin JavaScript library. The library is highly inspired on Laravel's Lang
class.
Getting a message
Lang.get('messages.home');
Getting a message with replacements
Lang.get('messages.welcome', { name: 'Joe' });
Changing the locale
Lang.setLocale('es');
Checking if a message key exists
Lang.has('messages.foo');
Support for singular and plural message based on a count
Lang.choice('messages.apples', 10);
Calling the choice
method with replacements
Lang.choice('messages.apples', 10, { name: 'Joe' });
For more detailed information, take a look at the source: Lang.js.
How to contribute
Pull requests are welcome.
- Fork this repository and clone it.
- Create a branch from develop:
git checkout -b feature-foo
. - Push your commits and create a pull request.
Setting up development environment
Prerequisites:
You need to have installed the following softwares.
- Composer
- NodeJS
- NPM
- PHP 7.0+
After getting all the required software you may run the following commands to get everything ready:
- Install PHP dependencies:
composer install
- Install NPM dependences:
npm install -g jasmine-node npm install
Now you are good to go! Happy coding!
Unit testing
This project use Jasmine-Node and PHPUnit. All tests are stored at tests
directory.
To run all JS tests type in you terminal:
npm test
To run all PHP tests type in your terminal:
vendor/bin/phpunit tests/