Tool to list what remains to be translated in gettext .po files.
Go to file
Julien Palard 27f36b6a1b
ci/woodpecker/push/woodpecker Pipeline was successful Details
Less noise in badges.
2023-03-28 18:39:37 +02:00
media Base of the standard readme 2020-12-27 12:52:23 +01:00
potodo In case reservation is cached and it's no longer reserved: unreserve-it. 2023-03-13 16:15:51 +01:00
tests Saving two lines with suppress! 2023-03-13 15:50:45 +01:00
.gitignore WIP on cache 2020-09-16 08:58:41 +02:00
.pep8speaks.yml Added pep8speaks.yml config 2020-10-13 12:57:12 +02:00
.potodoignore Fixed potodoignre matching 2020-10-15 10:31:48 +02:00
.pre-commit-config.yaml regex: allows for a mix of words and periods between the FOLDER and the .po. I assume we use semver ? (#124) 2022-04-12 21:28:01 +02:00
.woodpecker.yml Hello Woodpecker 2023-03-28 16:09:43 +02:00
LICENSE Version 0.0.1 2018-12-13 23:57:35 +01:00
README.md Less noise in badges. 2023-03-28 18:39:37 +02:00
pyproject.toml Drop suuport for py36, add support for py311. 2023-03-11 17:02:00 +01:00
requirements-dev.txt Bump dev dependencies. (#123) 2022-04-12 21:28:29 +02:00
requirements.txt Bump urllib3 from 1.26.4 to 1.26.5 (#121) 2021-06-04 06:47:08 +02:00
tox.ini Hello isort. 2023-03-11 22:08:25 +01:00

README.md

What is it ?

Potodo, a (almost) flawless TODO/progress listing CLI tool for po files.

Potodo is part of poutils!

Poutils (.po utils) is is a metapackage to easily install usefull Python tools to use with po files and potodo is a part of it! Go check out Poutils to discover the other useful tools for po file related translation!

Installation

pip install potodo

Usage example

When ran in the french CPython documentation translation it shows:

$ potodo --exclude venv .venv whatsnew c-api/ distutils/

# python-docs-fr (95.31% done)

- bugs.po                         29 /  30 ( 96.0% translated).
- copyright.po                     6 /   7 ( 85.0% translated), 1 fuzzy.
- license.po                      87 /  91 ( 95.0% translated), 2 fuzzy.


# extending (56.81% done)

- building.po                     22 /  23 ( 95.0% translated), 1 fuzzy.
- extending.po                   120 / 158 ( 75.0% translated), 8 fuzzy.
- index.po                        11 /  12 ( 91.0% translated), 1 fuzzy.
- newtypes.po                     38 /  89 ( 42.0% translated), 3 fuzzy.
- newtypes_tutorial.po            31 / 123 ( 25.0% translated), 2 fuzzy.
- windows.po                      20 /  21 ( 95.0% translated), 1 fuzzy.

[...]

# TOTAL (50.01% done)

Handling reservations

To avoid having two translators work on the same file at the same time, one can tell other translations that a file is being translated using an issue or a draft pull request.

potodo can fetch those issues and display it. It currently work with Gitea and Github.

For example, in a clone of python-docs-fr you can run:

$ potodo --api-url 'https://git.afpy.org/api/v1/repos/AFPy/python-docs-fr/issues?state=open&type=issues' --exclude .venv
[...]
# extending (56.81% done)

- building.po                     22 /  23 ( 95.0% translated), 1 fuzzy, reserved by Starmania.
- extending.po                   120 / 158 ( 75.0% translated), 8 fuzzy.
- index.po                        11 /  12 ( 91.0% translated), 1 fuzzy.
- newtypes.po                     38 /  89 ( 42.0% translated), 3 fuzzy.
- newtypes_tutorial.po            31 / 123 ( 25.0% translated), 2 fuzzy.
- windows.po                      20 /  21 ( 95.0% translated), 1 fuzzy.


# faq (90.88% done)

- extending.po                    55 /  58 ( 94.0% translated), 3 fuzzy.
- general.po                      88 /  98 ( 89.0% translated).
- gui.po                          16 /  17 ( 94.0% translated), 1 fuzzy, reserved by Iucounu.
- library.po                     139 / 140 ( 99.0% translated).
- programming.po                 340 / 389 ( 87.0% translated), 40 fuzzy.
[...]

Notice the reserved by column.

For github it would look like --api-url 'https://api.github.com/repos/ORGANISATION/REPOSITORY/issues?state=open'.

It's a bit verbose, so maybe hide this in a Makefile or whatever, but this way you can tweak the parameters of the query, typically to filter on a label if needed.

The way potodo maps issues to files is simple: the path of the file just has to be present in the issue title, so any issues like:

  • I'm currently working on faq/extending.po
  • Je travaille sur extending/index.po
  • blah blah library/functions.po blah blah

will correctly match their file.

Development setup

Create a virtual environment

python3 -m venv venv

Activate it

source venv/bin/activate

Install the dev requirements

pip install -r requirements-dev.txt

Install the pre-commit hook

pre-commit install

Install potodo in a development version

pip install -e .

Release History

  • v0.21.2
    • FIX: Don't miss issues (reservations) to files containing multiple dots. Contributed by @eviau.
  • v0.21.0
    • A nice new README
  • v0.20.0
    • New exclude behavior with gitignore style matching !
  • v0.19.2
    • Dropped cache_args to simplify cache functionality
  • v0.19.1
    • Fixed a bug of division by 0
    • Replaced Travis-ci tests with github actions
  • v0.19.0
    • Fixed windows support
  • v0.17.3
    • Fixed a math error where the completion %age of a folder was wrong
    • Fixes on the .potodoignore file
  • v0.17.0
    • Added tests
    • Fixed bug where github would rate limit your IP address
    • Fixed argument errors
    • Added -l --matching-files Which will print the path of files matching your arguments
  • v0.16.0
    • Args passed to potodo are now cached as well ! This allows for a better control of what is cached !
    • The ignore file now works as the .gitignore does. Add a venv/ in your .potodoignore for example :)
  • v0.15.0
    • Potodo now supports .potodoignore files ! You can finally ignore the venv you made 🎉
  • v0.14.3
    • Added cache versioning to avoid errors when cache changes, for example if files are moved between potodo versions.
  • v0.14.2
    • Nothing new, just code moved around ! Thanks for sticking around 🎉
  • v0.14.1
    • Added --only-reserved option to display only reserved filed
    • Added --reserved-dates to display when a file was reserved
    • Added cache to cache pofiles to speedup the reading process
    • Added logging for verbosity
    • Added interactive option with --interactive
    • Added contributors in the readme
  • < v0.14.1
    • Base version

Contributing

  1. Fork it (https://git.afpy.org/repo/fork/100)
  2. Create your feature branch (git checkout -b feature/fooBar

/!\ Don't forget to bump the version in potodo/__init__.py when you're pushing your changes to your branch

  1. Commit your changes (git commit -am 'Add some fooBar')
  2. Push to the branch (git push origin feature/fooBar)
  3. Create a new Pull Request