@nextbook/extract-react-intl-messages
TypeScript icon, indicating that this package has built-in type declarations

2.3.8 • Public • Published

extract-react-intl-messages

Build Status tested with jest styled with prettier MIT License All Contributors

This package will generate json or yaml files from a glob. It will generate one file per locale, with the ids of each message defined by the defineMessages function of react-intl. The value of each of these keys will be an empty string, except for your defaultLocale which will be populated with the defaultMessage.

Dependencies

Babel

  • 0.x works with Babel 6

Install

$ npm install --save-dev extract-react-intl-messages babel-plugin-react-intl

Usage

.babelrc.js

['react-intl-auto', { removePrefix: 'app/' }],
[
  'react-intl',
  {
    extractFromFormatMessageCall: true,
    messagesDir: 'build/extract-messages'
  }
]

app/components/App/messages.js

import { defineMessages, useIntl } from 'react-intl'

export default defineMessages({
  hello: {
    id: 'a.hello',
    defaultMessage: 'hello'
  },
  world: {
    id: 'a.world',
    defaultMessage: 'world'
  }
})

export const SubmitButton = () => {
  const intl = useIntl()
  const label = intl.formatMessage({
    id: 'a.submit',
    defaultMessage: 'Submit Button'
  })
  return <button aria-label={label}>{label}</button>
}

Run Script

$ extract-messages -l=en,ja -o app/translations -d en --flat false 'app/**/!(*.test).js'

Output

app/translations/en.json

{
  "a": {
    "hello": "hello",
    "world": "world",
    "submit": "Submit Button"
  }
}

app/translations/ja.json

{
  "a": {
    "hello": "",
    "world": "",
    "submit": ""
  }
}

Recommend

Use with babel-plugin-react-intl-auto: i18n for the component age. Auto management react-intl ID.

CLI

$ extract-messages --help

  Extract react-intl messages

  Usage
  $ extract-react-intl-messages <input>
  $ extract-messages <input>

  Options
  -o, --output       Output directory [require: true]
  -l, --locales      locales [require: true]
  -f, --format       json|yaml [default: json]
  --flat             json [default: true] | yaml [default: false]
  --default-locale   default locale [default: en]
  --moduleSourceName module source name from where components are imported [default: react-intl]

  Example
  $ extract-messages --locales=ja,en --output app/translations 'app/**/*.js'
  $ extract-messages -l=ja,en -o i18n 'src/**/*.js'
  $ extract-messages -l=ja,en -o app/translations -f yaml 'app/**/messages.js'
  $ extract-messages -l=ja,en -o i18n 'src/**/*.js' --extractFromFormatMessageCall

create-react-app user

create .babelrc like this.

{
  "presets": ["react-app"]
}

Run with NODE_ENV=development.

$ NODE_ENV=development extract-messages ...

API

extractReactIntlMessages(locales, input, buildDir, [options])

locales

Type: Array<string>

Example: ['en', 'ja']

input

Type: Array<string>

Target files. glob.

buildDir

Type: string

Export directory.

options

defaultLocale

Type: string
Default: en

format

Type: json | yaml
Default: json

Set extension to output.

flat

Type: boolean
Default: true

If format is yaml, set to false.

Be careful if false. See this issue.

babel-plugin-react-intl's Options

See https://github.com/formatjs/formatjs/tree/master/packages/babel-plugin-react-intl#options

Contributors

Thanks goes to these wonderful people (emoji key):

akameco
akameco

💻 ⚠️ 📖 🚇
Hoan Tran
Hoan Tran

💻 ⚠️
giantpinkwalrus
giantpinkwalrus

💻
enrique-ramirez
enrique-ramirez

📖
Stefan Gojan
Stefan Gojan

🐛 💻 ⚠️
Solomon English
Solomon English

💻
Filip
Filip "Filson" Pasternak

💻
nodaguti
nodaguti

💻 ⚠️
fix-fix
fix-fix

💻
bradbarrow
bradbarrow

🐛 💻 ⚠️
Gregor MacLennan
Gregor MacLennan

💻
Dmitry Zarva
Dmitry Zarva

💻
Michael Pan
Michael Pan

💡
Bart Lens
Bart Lens

💻

This project follows the all-contributors specification. Contributions of any kind welcome!

License

MIT © akameco

Package Sidebar

Install

npm i @nextbook/extract-react-intl-messages

Weekly Downloads

1

Version

2.3.8

License

MIT

Unpacked Size

50.2 kB

Total Files

22

Last publish

Collaborators

  • bartlens