Giter Club home page Giter Club logo

laravel-js-lang-converter's Introduction

Laravel JS Lang Converter

Laravel Localization in JavaScript.

Latest Stable Version License Build Status SensioLabsInsight

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):

  1. Install gulp-shell from https://github.com/sun-zheng-an/gulp-shell with npm install --save-dev gulp-shell .

  2. 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'));
  3. 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.

  1. Fork this repository and clone it.
  2. Create a branch from develop: git checkout -b feature-foo.
  3. 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:

  1. Install PHP dependencies:
composer install
  1. 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/

laravel-js-lang-converter's People

Contributors

rmariuzzo avatar micheleangioni avatar vluzrmos avatar xaockd avatar gpopoteur avatar okaufmann avatar eossa avatar matthew-sycle avatar gitter-badger avatar antonkomarev avatar

Watchers

James Cloos avatar Alexandre Almeida avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.