@digidem/extract-react-intl-messages
v2.0.2
Published
Extract react-intl messages
Downloads
13
Readme
extract-react-intl-messages
This is forked from extract-react-intl-messages. It removes un-used options (custom delimiter, exporting nested files, and yaml export), and adds an option to export messages in the same format that Chrome Apps use. We use this because the translation service we use, crowdin.com, accepts this format of file, and will include the description as context for the translator.
This package will generate json 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, or an object with the property message
an empty string, except for your defaultLocale
which will be populated with
the
defaultMessage
.
Dependencies
Babel
- 2.x works with Babel 7
- 1.x works with Babel 7
- 0.x works with Babel 6
Install
$ npm install --save-dev @digidem/extract-react-intl-messages
Usage
app/components/App/messages.js
import { defineMessages } from 'react-intl'
export default defineMessages({
hello: {
id: 'a.hello',
defaultMessage: 'hello'
},
world: {
id: 'a.world',
defaultMessage: 'world'
}
})
Run Script
$ extract-messages -l=en,ja -o app/translations -d en 'app/**/!(*.test).js'
Output
app/translations/en.json
{
"a.hello": "hello",
"a.world": "world",
"b.hello": "hello",
"b.world": "world"
}
}
app/translations/ja.json
{
"a.hello": "",
"a.world": "",
"b.hello": "",
"b.world": ""
}
}
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]
--descriptions include descriptions in output [default: false]
--default-locale default locale [default: en]
--module-name 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'
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
moduleName
Type: string
Default: react-intl
Set from where defineMessages, <FormatterMessage />
and <FormattedHTML />
are imported.
descriptions
Type: boolean
Default: false
Includes message descriptions in the returned object. Each message id property
will be an object with properties message
and description
instead of a
message string e.g.
{
en: {
'components/App/hello': {
message: 'hello',
description: 'hello message description'
},
'components/App/welcome': {
message: 'welcome to extract-react-intl',
description: 'welcome message description
}
},
ja: {
'components/App/hello': {
message: '',
description: 'hello message description'
},
'components/App/welcome': {
message: '',
description: 'welcome message description
}
}
}
Contributors
Thanks goes to these wonderful people (emoji key):
This project follows the all-contributors specification. Contributions of any kind welcome!
License
MIT © akameco