Skip to content
master
Go to file
Code

Latest commit

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
Apr 1, 2020
Feb 13, 2018
Apr 1, 2020
Apr 1, 2020
Apr 1, 2020

README.md

Property Resource Bundle Loader for Webpack

Loads .properties files into JavaScript as precompiled functions using dot-properties and messageformat.

Property values are parsed directly as ICU MessageFormat. With the default options, will assume that the filename has _ separated parts, of which the second is the two- or three-letter language code as in Java Resource Bundles.

Installation

npm install messageformat@next messageformat-properties-loader

Starting from version 0.4.0, the loader requires messageformat v3, currently in beta.

Usage

For a working demo of the following, run npm install && npm run build in the example/ directory, and then open example/dist/index.html in a browser.

Webpack configuration

{
  test: /\.properties$/,
  loader: 'messageformat-properties-loader',
  options: {
    biDiSupport: false,  // enables bi-directional text support
    defaultLocale: 'en', // used if resolution from filename fails
    encoding: 'auto',    // .properties file encoding, use one of
                         // 'auto', 'latin1', or 'utf8'
    keyPath: false,      // if true, dots '.' key names will result
                         // in multi-level objects -- use a string
                         // value to customize
    pathSep: '_'         // separator for parsing locale from filename
  }
}

Default option values are shown above, though none are required.

messages_en.properties

errors.confirmation: {src} doesn't match {attribute}
errors.accepted: {src} must be accepted
errors.wrong_length: {src} is the wrong length (should be {count, plural, one{1 character} other{# characters}})
errors.equal_to: {src} must be equal to {count}

example.js

import messages from './messages_en.properties'

messages.errors.accepted({ src: 'Terms' })
// 'Terms must be accepted'

messages.errors.wrong_length({ src: 'Foo', count: 42 })
// 'Foo is the wrong length (should be 42 characters)'
You can’t perform that action at this time.