i18n-json-po

i18n .json to .pot file converter

Usage no npm install needed!

<script type="module">
  import i18nJsonPo from 'https://cdn.skypack.dev/i18n-json-po';
</script>

README

i18n-json-po

jsonpo is a CLI tool to convert JSON i18n entry list to gettext's POT file.

Command-line usage

To install jsonpo system-wide, run:

$ sudo npm install -g i18n-json-po

Then you can use it like this:

$ jsonpo --help

i18n JSON -> POT converter

Options:
   -h / --help                   Show this help
   -s / --src FILE               Define input JSON file name. Defaults
                                 to stdin.
   -o / --output FILE            Define output PO[T] file name. If a file
                                 already exists, it's contents will be
                                 overwritten. Defaults to stdout.
   -p / --printOccurences        Print "#:" comments which indicate string
                                 occurences in source code.

   -c / --copyrightSubject SUBJ  Team name or author name.
   -b / --bugsEmail EMAIL        Email for sending bugs
   -y / --year YEAR              Copyright year, defaults to current year.

By default jsonpo accepts input JSON file from stdin, so it's possible to combine it with i18n-stex nicely:

$ stex -s 'src/**/*.ts' | jsonpo -p > strings.pot

Output defaults to stdout, so you can use standard unix stream redirection syntax.

PO and POT

By default, if optional meta field is not present in input file, jsonpo creates POT (template) file without any translations. If you need to add translations into file, you MUST pass meta field according to its format. This will result in fully translated PO file. Note that if your translations include plural forms, you MUST provide pluralForms member in meta field: this field should contain formula describing how to choose proper plural form. See Plural-Forms header in gettext's PO file description.

API usage

Take a look at CLI entry point - index.ts. Usage of the one and only convert function is pretty straightforward and there you will find all examples you ever need.

Contributing

i18n-json-po uses github-flow to accept & merge fixes and improvements. Basic process is:

  • Fork the repo.
  • Create a branch.
  • Add or fix some code.
  • Run Karma testing suite with npm run test and make sure nothing is broken
  • Add some tests for your new code or fix broken tests.
  • Run npm run build to build pure-js distribution files.
  • Commit & push.
  • Create a new pull request to original repo.

Pull requests with failing tests will not be accepted. Also, if you add or modify packages to package.json, make sure you use yarn and update yarn.lock.