Python Documentation Translation

Posted on Mon 29 May 2017 in blog

This is an overview of what is done, what we're doing, and what's needs work about the translation of Python documentation.

Historical context

The first step to ensure every other steps are worth it was to officialize the translations. This is now done with the PEP 545.

PEP 545: TL;DR

The PEP 545 may be long to read, so here are the interesting points:

  • Each translation is assigned an appropriate lowercased language tag, with an optional region subtag (if needed), glued with a dash, like pt-br or fr.

  • Translations files are hosted on{LANGUAGE_TAG}

  • Translations are hosted on{LANGUAGE_TAG}/{VERSION_TAG}/.

Bootstrap a new translation

To bootstrap a new translation you'll need a clone of cpython in the 3.7 (or newer) branch:

git clone
git -C cpython checkout 3.7

And a directory for your repo, initialized for example with my Makefile:

mkdir python-docs-whatever
cd python-docs-whatever
git init
git checkout -b 3.7
wget -q
git add Makefile
git commit -m "Initial commit."
make merge
git add *.po */*.po
git commit -m "Adding po files."

Current status

Language Contact Links
Arabic (ar) Abdur-Rahmaan Janhangeer github
Bengali as spoken in Bangladesh (bn_BD) tweet
Bengali as spoken in India (bn_IN) Kushal Das github
French (fr) Julien Palard (mdk) github
Hindi as spoken in India (hi_IN) github
Hungarian (hu) Tamás Bajusz (gbtami) github doc list
Italian (it) mail
Japanese (ja) Inada Naoki (methane) github
Korean (ko) github
Polish (pl) mail
Portuguese (pt) Gustavo Toffo
Portuguese as spoken in Brasil (pt-br) Marco Rougeth github wiki telgram article
Russian (ru) mail
Simplified Chinese (zh-cn) Shengjing Zhu transifex github
Spanish (es) Raul Cumplido github old repo
Traditional Chinese (zh-tw) 廖偉涵 Adrian Liaw github transifex
Turkish (tr) github


I want to translate, where do I start?

Step one may be to subscribe to the Doc-SIG mailing list, and maybe join the #python-doc channel on Libera.Chat.

You should present yourself on the doc-sig mailing list explain what you have and from here we'll help you through the steps of the PEP.

How a coordinator is elected?

There is no election per se, but some basic rules:

  • Coordinator requests are to be public on doc-sig mailing list.
  • If the given language have a native core dev, the core dev have its word on the choice.
  • If one want to become coordinator for its native language, and shows motivation by translating and building a community, it will be named coordinator.
  • In case of concurrency between two persons, no one will sort this out for you, it's open to you to organize a local election or whatever needed to sort this out.
  • In case a coordinator become inactive or unreachable for a long period of time, someone else can ask for a takeover on doc-sig.

The entry for my translation is missing/not up to date on this page

Tell me, I'm mdk on #python-doc and I'm Julien Palard on the mailing lists.

I have a translation, but not on git, what should I do?

Just ask for help on the doc-sig mailing list and our python-fu, git-fu and bash-fu combined will help you create an appropriate repository. If you use a tool like transifex don't worry keeping them in sync is not that hard.

My git hierarchy does not match yours, can I keep it?

No, inside the organization we'll all have the exact same hierarchy so bots will be able to build all of our translations. So you may have to convert from one hierarchy to another. Ask for help on the doc-sig mailing list if you're not sure on how to do it.

What hierarchy should I use in my github repository?

As for every projects we have a branch per version, we store po files in the root of the repository using the gettext_compact=0 style.