JSPM

messageformat-properties-loader

0.4.0
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 722
  • Score
    100M100P100Q112048F
  • License MIT

Locale Property Resource Bundle Loader for Webpack

Package Exports

  • messageformat-properties-loader

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (messageformat-properties-loader) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

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