https://github.com/mondeja/potojson
Pofile to JSON conversion.
https://github.com/mondeja/potojson
Last synced: 8 months ago
JSON representation
Pofile to JSON conversion.
- Host: GitHub
- URL: https://github.com/mondeja/potojson
- Owner: mondeja
- License: bsd-3-clause
- Created: 2020-10-29T19:33:17.000Z (almost 5 years ago)
- Default Branch: master
- Last Pushed: 2024-09-03T21:06:05.000Z (about 1 year ago)
- Last Synced: 2025-02-22T21:32:22.345Z (8 months ago)
- Language: Python
- Homepage:
- Size: 114 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# 📦 potojson
[![PyPI][pypi-version-badge-link]][pypi-link]
[![Python versions][pypi-pyversions-badge-link]][pypi-link]
[![License][license-image]][license-link]Pofile to JSON conversion without pain.
## Status
[![Tests][tests-image]][tests-link]
[![coverage-image]][coverage-link]## Installation
```bash
pip install potojson
```## Documentation
### API
# pofile_to_json(content, fallback_to_msgid=False, fuzzy=False, pretty=False, indent=2, language=None, plural_forms=None, as_dict=False) ⇒ `str`
Converts a pofile passed as string or filepath and returns a JSON formatted
output. Given this pofile:```po
##, fuzzy
msgid ""
msgstr ""
"Language: es\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"msgid "msgid"
msgstr "msgstr"msgctxt "msgctxt"
msgid "msgid"
msgstr "msgstr"msgid "msgid"
msgid_plural "msgid_plural"
msgstr[0] "msgstr[0]"
msgstr[1] "msgstr[1]"msgctxt "msgctxt"
msgid "msgid"
msgid_plural "msgid_plural"
msgstr[0] "msgstr[0]"
msgstr[1] "msgstr[1]"
```... the output will be:
```json
{
"": {
"language": "es",
"plural-forms": "nplurals=2; plural=n != 1;",
},
"msgid": "msgstr",
"msgctxt": {
"msgid": "msgstr",
},
"msgid": ["msgstr[0]", "msgstr[1]"],
"msgctxt": {
"msgid": ["msgstr[0]", "msgstr[1]"],
}
}
```This output can be customized tuning the parameters of the function:
- **content** (str) Content or filepath of the pofile to convert.
- **fallback_to_msgid** (bool) Use msgid if translation is missing.
- **fuzzy** (bool) Include fuzzy messages.
- **pretty** (bool) Pretty-print JSON output.
- **sort_keys** (bool) Sort dictionary by key. Combined with `as_dict`
parameter, returns an instance of [`collections.OrderedDict`][ordereddict].
- **indent** (int) Number of spaces for indentation used pretty-printing JSON
output. Only takes effect if `pretty` is enabled.
- **language** (str) Language for the translations. Will be inserted in the
empty key of the JSON output. If not provided and the passed pofile includes
the "Language" header, will be extracted from it.
- **plural_forms** (str) Plural forms for the language of the translations.
Will be inserted in the empty key of the JSON output. If not provided and the
passed pofile includes the "Plural-Forms" header, will be extracted from it.
- **as_dict** (bool) Returns the output as a Python dictionary.
- **encoding** (str) The encoding to use reading the pofile. By default will
be auto-detected.### CLI
```
usage: potojson [-h] [-v] [-m] [-f] [-p] [-k] [-i N] [-l LANGUAGE] [-s PLURAL_FORMS] [-e ENCODING] [PO_FILEPATH_OR_CONTENT ...]Pofile to JSON conversion without pain.
positional arguments:
PO_FILEPATH_OR_CONTENT
Path to pofile or pofile content as string. If the input file stream is interactive, will be read from STDIN.options:
-h, --help show this help message and exit
-v, --version Show program version number and exit.
-m, --fallback-to-msgid
Use msgid if translation is missing.
-f, --fuzzy Include fuzzy messages.
-p, --pretty Pretty-print JSON output.
-k, --sort-keys Sort JSON output by keys.
-i N, --indent N Number of spaces for indentation used pretty-printing JSON output. Only takes effect passing the "--pretty" option.
-l LANGUAGE, --language LANGUAGE
Language for the translations. Will be inserted in the empty key of the JSON output. If not provided and the passed pofile includes the "Language" header, will be extracted from it.
-s PLURAL_FORMS, --plural-forms PLURAL_FORMS
Plural forms for the language of the translations. Will be inserted in the empty key of the JSON output. If not provided and the passed pofile includes the "Plural-Forms" header, will be extracted from it.
-e ENCODING, --encoding ENCODING
The encoding to use reading the pofile. By default will be auto-detected.
```[pypi-link]: https://pypi.org/project/potojson
[pypi-version-badge-link]: https://img.shields.io/pypi/v/potojson
[pypi-pyversions-badge-link]: https://img.shields.io/pypi/pyversions/potojson
[license-image]: https://img.shields.io/pypi/l/potojson?color=light-green
[license-link]: https://github.com/mondeja/potojson/blob/master/LICENSE
[tests-image]: https://img.shields.io/github/actions/workflow/status/mondeja/potojson/ci.yml?branch=master&label=tests
[tests-link]: https://github.com/mondeja/potojson/actions?query=workflow%3ATest
[coverage-link]: https://coveralls.io/github/mondeja/potojson
[coverage-image]: https://img.shields.io/coveralls/github/mondeja/potojson[ordereddict]: https://docs.python.org/3/library/collections.html#collections.OrderedDict