rmariuzzo / laravel-localization-loader

Laravel Localization loader for webpack. Convert Laravel Translation strings to JavaScript Objects.
MIT License
70 stars 7 forks source link
laravel-localization webpack-loader

Laravel localization Loader – Laravel localization Loader for Webpack. Convert Laravel Translation files (php or json) to JavaScript Objects.

Features

Installation

npm install laravel-localization-loader --save-dev

or

yarn add laravel-localization-loader --dev

Configuration

Webpack 2+

// webpack.config.js
module.exports = {
  module: {
    rules: [
      {
        // Matches all PHP or JSON files in `resources/lang` directory.
        test: /resources[\\\/]lang.+\.(php|json)$/,
        loader: 'laravel-localization-loader',
      }
    ]
  }
}

Laravel Mix

// webpack.mix.js
mix.webpackConfig({
  module: {
    rules: [
      {
        // Matches all PHP or JSON files in `resources/lang` directory.
        test: /resources[\\\/]lang.+\.(php|json)$/,
        loader: 'laravel-localization-loader',
      }
    ]
  }
});

Usage

Lang.js

First, you will need to install Lang.js then you may want to create a messages.js files that look as follow:

// messages.js
export default {
  // The key format should be: 'locale.filename'.
  'en.messages': require('../../resources/lang/en/messages.php'),
  'es.messages': require('../../resources/lang/es/messages.php'),
  'en.auth': require('../../resources/lang/en/auth.php'),
  'es.auth': require('../../resources/lang/es/auth.php'),
}

Then somewhere else in your awesome app:

// page.js
import Lang from 'lang.js'
import messages from './messages'

const lang = new Lang({ messages })
lang.get('messages.hello')

Profit!

Development

  1. Clone and fork this repo.
  2. Install dependencies: yarn or npm install.
  3. Run tests.
  4. Prepare a pull request.

Test

Coverage

Publish

  1. Bump package version: yarn version --new-version x.x.x -m 'Version %s.'.
  2. Publish to NPM registry: npm publish.
  3. Push new tag: git push origin --tags.
Made with :heart: by [Rubens Mariuzzo](https://github.com/rmariuzzo). [MIT license](LICENSE)