• This repository has been archived on 08/Jun/2019
  • Stars
    star
    420
  • Rank 99,277 (Top 3 %)
  • Language
    JavaScript
  • License
    Other
  • Created over 8 years ago
  • Updated almost 5 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Extracts string messages from React components that use React Intl.

This repo was migrated to the monorepo

babel-plugin-react-intl

travis

Extracts string messages for translation from modules that use React Intl.

Dependencies

React Intl

This Babel plugin works with React Intl v2.x

Babel

  • 3.x of this plugin works with Babel 7
  • 2.x works with Babel 6
  • 1.x works with Babel 5

Installation

$ npm install babel-plugin-react-intl

Usage

This Babel plugin only visits ES6 modules which import React Intl.

The default message descriptors for the app's default language will be extracted from: defineMessages(), <FormattedMessage>, and <FormattedHTMLMessage>; all of which are named exports of the React Intl package.

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": [
    ["react-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 React Intl package. Defaults to: "react-intl", but can be changed to another name/path to React Intl.

  • overrideIdFn: A function with the signature (id: string, defaultMessage: string, description: string|object) => string which allows you to override the ID both in the extracted javascript and messages.

  • removeDefaultMessage: Remove defaultMessage field in generated js after extraction.

  • additionalComponentNames: Additional component names to extract messages from, e.g: ['FormattedFooBarMessage']. NOTE: By default we check for the fact that FormattedMessage & FormattedHTMLMessage are imported from moduleSourceName to make sure variable alias works. This option does not do that so it's less safe.

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: ['react-intl']
}) // => { code, map, ast, metadata['react-intl'].messages };

More Repositories

1

formatjs

The monorepo home to all of the FormatJS related libraries, most notably react-intl.
TypeScript
14,054
star
2

intl-messageformat

[MIGRATED] Format a string with placeholders, including plural and select support to create localized messages.
TypeScript
528
star
3

formatjs-site

Documentation for client/server internationalization in JavaScript.
HTML
315
star
4

handlebars-intl

Handlebars helpers for internationalization.
JavaScript
265
star
5

intl-relativeformat

Formats JavaScript dates to relative time strings (e.g., "3 hours ago").
TypeScript
212
star
6

formatjs-old

The monorepo home to all of the FormatJS related libraries.
TypeScript
156
star
7

intl-messageformat-parser

[MIGRATED] Parses ICU message strings to an AST that can be used to format the messages for a person's locale.
JavaScript
115
star
8

date-time-format-timezone

Surgically polyfills timezone support in Intl.DateTimeFormat API
JavaScript
108
star
9

intl-locales-supported

[MIGRATED] Utility to help you polyfill the Node.js runtime when the Intl APIs are missing, or if the built-in Intl is missing locale data that you need.
JavaScript
67
star
10

intl-format-cache

Produces instances of JavaScript `Intl` formats, and caches them for reuse.
TypeScript
54
star
11

dust-intl

Dust helpers for internationalization.
JavaScript
48
star
12

js-module-formats

Detect different types of javascript modules formats
JavaScript
13
star
13

input-data-formatter

JavaScript
11
star
14

formatjs-extract-cldr-data

[MIGRATED] Utility library that extracts the CLDR data that's needed by the FormatJS libraries.
JavaScript
11
star
15

grunt-extract-cldr-data

Extract CLDR data and transform it for use in JavaScript.
JavaScript
7
star
16

broccoli-js-module-formats

Broccoli plugin for obtaining files that use a particular module system
JavaScript
2
star
17

formatjs.github.io

Website for formatjs.io
HTML
1
star