panda-babel-plugin-universal-intl

0.0.1 • Public • Published

babel-plugin-universal-intl

Extracts string messages for translation from modules that use [Universal Intl][http://gitlab.alibaba-inc.com/universal-intl/universal-intl].

** This babel plugin is forked from babel-plugin-react-intl and only visit formatMessage call expression, if your project has the same function name as formatMessage, please notice it.

Note: This Babel plugin works with Babel 6**.

Installation

$ npm install @alife/babel-plugin-universal-intl

Usage

The default message descriptors for the app's default language will be extracted from: formatMessage(), which is instance of UniversalIntl.

If a message descriptor has a description, it'll be removed from the source after it's extracted to save bytes since it isn't used at runtime.

Via .babelrc (Recommended)

.babelrc

{
  "plugins": [
    [
      "@alife/babel-plugin-universal-intl",
      {
        "messagesDir": "./build/messages/"
      }
    ]
  ]
}

Options

  • messagesDir: The target location where the plugin will output a .json file corresponding to each component from which React Intl messages were extracted. If not provided, the extracted message descriptors will only be accessible via Babel's API.

  • enforceDescriptions: Whether message declarations must contain a description to provide context to translators. Defaults to: false.

  • extractSourceLocation: Whether the metadata about the location of the message in the source file should be extracted. If true, then file, start, and end fields will exist for each extracted message descriptors. Defaults to false.

  • moduleSourceName: The ES6 module source name of the Universal Intl package. Defaults to: "@alife/universal-intl", but can be changed to another name/path to Universal Intl.

  • intlComponentModuleSourceName: The ES6 module source name of the IntlComponents package. Defaults to: "@alife/intl-components", but can be changed to another name/path to IntlComponents. @alife/intl-components

Via Node API

The extract message descriptors are available via the metadata property on the object returned from Babel's transform() API:

require("babel-core").transform("code", {
  plugins: ["universal-intl"],
}); // => { code, map, ast, metadata['universal-intl'].messages };

Package Sidebar

Install

npm i panda-babel-plugin-universal-intl

Weekly Downloads

1

Version

0.0.1

License

BSD-3-Clause

Unpacked Size

21.7 kB

Total Files

9

Last publish

Collaborators

  • zhangsi_susie