react-intl-po v2.2.2
react-intl-po
Extract POT from react-intl and convert back to json.
messages.json → POT → PO → translation.json
Tutorial
Please take a look at standalone repo based on Create-React-App: https://github.com/evenchange4/react-intl-po-example
Installation
$ yarn add react-intl-poRequirements and Workflow
- react-intl
^2.0.0 - babel-plugin-react-intl
^2.0.0

Usage
There are two sub-commands of react-intl-po or rip:
- json2pot: Convert the json files extracted from babel-plugin-react-intl into one
.potfile. - po2json: Convert translated .po files back to
.jsonformat.
json2pot
$ rip json2pot '_translations/src/**/*.json' \
-o ./mcs-public.pot| Arguments | Description |
|---|---|
srcPatterns | The pattern of .json files extracted from babel-plugin-react-intl |
-o, --output <path> | The output pathname of .pot file to be translated |
-k, --message-key [key] | Optional Translation message key (default key is defaultMessage) |
-c, --message-context [context] | Optional Translation message context (defaults to no context) |
po2json
Case 1: Output one file per locale if a directory is set
$ rip po2json './node_modules/mcs-translation/po/mcs-public*.po' \
-m './_translations/src/**/*.json' \
-o './translations'Case 2: Output one merged file if a .json file is set
$ rip po2json './node_modules/mcs-translation/po/mcs-public*.po' \`
-m './_translations/src/**/*.json' \
-o './translations.json'| Arguments | Description |
|---|---|
srcPatterns | The pattern of translated .po files |
-m, --messages-pattern <path> | The pattern of .json files extracted from babel-plugin-react-intl |
-o, --output <path> | The output pathname of a file / directory |
-k, --message-key [key] | Optional Translation message key (default key is defaultMessage) |
-c, --message-context [context] | Optional Translation message context (defaults to no context) |
-l, --lang-mapper-pattern <pattern> | Optional Custom regex to use for lang mapping. PR#122 |
-i, --lang-mapper-pattern-index [index] | Optional When specifying a custom lang-mapper-pattern, the index of match to use for the lang mapping. Default is 1, index is ignored if not using a custom lang mapping regex. PR#122 |
--indentation <number\|char> | Optional Specify a number of spaces or a set of characters to be used before each entry of the resulting json file. Defaults to null, which means the entries are not prefixed with spaces. |
--sort-by-id | Optional If specified, the entries of each language are sorted by id before being output |
Property
Q&A
How to translate the same message into two different meanings?
Option 1 (Recommended):
Set the message-context (-c) to 'id' of message object from babel-plugin-react-intl (there is no context by default).
The advantage of this option over Option 2 (below) is that PO file editors that provide features such as translation suggestions or error-checking often expect the message key to be defaultMessage.
$ rip po2json './node_modules/mcs-translation/po/mcs-public*.po' \
-m './_translations/src/**/*.json' \
-o './translations' \
-c 'id'
$ rip po2json './node_modules/mcs-translation/po/mcs-public*.po' \`
-m './_translations/src/**/*.json' \
-o './translations.json' \
-c 'id'Example: https://github.com/evenchange4/react-intl-po-example#option
Option 2: Maybe deprecated next major release
Set the message-key (-k) to 'id' of message object from babel-plugin-react-intl (default key is 'defaultMessage'). (#41)
$ rip po2json './node_modules/mcs-translation/po/mcs-public*.po' \
-m './_translations/src/**/*.json' \
-o './translations' \
-k 'id'
$ rip po2json './node_modules/mcs-translation/po/mcs-public*.po' \`
-m './_translations/src/**/*.json' \
-o './translations.json' \
-k 'id'Development
$ yarn install --pure-lockfileRamda.js
You can use R.tap() for developing.
R.pipe(
R.concat(...),
+ R.tap(e => console.log(e)),
R.mergeAll,
);Requirements
- node >= 9.11.1
- yarn >= 1.5.1
Test
$ yarn run format
$ yarn run eslint
$ yarn run test:watchNPM Release
Any git tags.
- Create a new git tag
- Update
CHANGELOG.md
$ npm version patchCONTRIBUTING
- ⇄ Pull requests and ★ Stars are always welcome.
- For bugs and feature requests, please create an issue.
- Pull requests must be accompanied by passing automated tests (
$ yarn run test).
CHANGELOG
LICENSE
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago