Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

🚀 Extract POT from react-intl and convert back to json.

License

NotificationsYou must be signed in to change notification settings

evenchange4/react-intl-po

Repository files navigation

Extract POT from react-intl and convert back to json.

messages.json → POT → PO → translation.json

TravisCodecov Statusnpm packagenpm downloads

Dependency StatusdevDependency StatuspeerDependency Status

licenseprettier

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-po

Requirements and Workflow

RIP Workflow

Usage

There are two sub-commands ofreact-intl-po orrip:

  1. json2pot: Convert the json files extracted frombabel-plugin-react-intl into one.pot file.
  2. po2json: Convert translated.po files back to.json format.

json2pot

$ rip json2pot'_translations/src/**/*.json' \    -o ./mcs-public.pot
ArgumentsDescription
srcPatternsThe pattern of.json files extracted frombabel-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 isdefaultMessage)
-c, --message-context [context][Optional] Translation message context (defaults to no context)

po2json

Case 1: Output one file per locale if adirectory 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'
ArgumentsDescription
srcPatternsThe pattern of translated.po files
-m, --messages-pattern <path>The pattern of.json files extracted frombabel-plugin-react-intl
-o, --output <path>The output pathname of a file / directory
-k, --message-key [key][Optional] Translation message key (default key isdefaultMessage)
-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 tonull, 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 themessage-context (-c) to'id' of message object frombabel-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 bedefaultMessage.

$ 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 themessage-key (-k) to'id' of message object frombabel-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-lockfile

Ramda.js

You can useR.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:watch

NPM Release

Any git tags.

  1. Create a new git tag
  2. UpdateCHANGELOG.md
$ npm version patch

CONTRIBUTING

  • ⇄ 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).

MIT:http://michaelhsu.mit-license.org

About

🚀 Extract POT from react-intl and convert back to json.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors11


[8]ページ先頭

©2009-2025 Movatter.jp