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.1, 5.2 and 5.3 are supported.
Add the following line to you composer.json
file under require
.
"michele-angioni/laravel-js-lang-converter": "~2.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!
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);
});
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.
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.
Prerequisites:
You need to have installed the following softwares.
- Composer
- NodeJS
- NPM
- PHP 5.5.9+
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!
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:
phpunit