Translating documentation using Sphinx

Sphinx is a tool for creating beautiful documentation. It uses simple reStructuredText syntax and can generate output in many formats. If you’re looking for an example, this documentation is also built using it. The very useful companion for using Sphinx is the Read the Docs service, which will build and publish your documentation for free.

I will not focus on writing documentation itself, if you need guidance with that, just follow instructions on the Sphinx website. Once you have documentation ready, translating it is quite easy as Sphinx comes with support for this and it is quite nicely covered in their Internationalization. It’s matter of a few configuration directives and invoking the sphinx-intl tool.

If you are using Read the Docs service, you can start building translated documentation on Read the Docs. Their Localization and Internationalization covers pretty much everything you need - creating another project, setting its language, and linking it from the main project as a translation.

Now all you need is translating the documentation content. Sphinx generates PO file for each directory or top-level file, which can lead to quite a lot of files to translate (depending on gettext_compact settings). You can import the index.po into Weblate as an initial component and then configure Otkrivanje komponenti add-on to automatically discover all others.

Konfiguracija komponente

Ime komponente

Documentation

Maska datoteke

docs/locales/*/LC_MESSAGES/index.po

Predložak za nove prijevode

docs/locales/index.pot

Format datoteke

gettext PO datoteka

Prevodilačke oznake

rst-text

Konfiguracija za otkrivanje komponenti

Regularni izraz za usporedbu s prevodilačkim datotekama

docs/locales/(?P<language>[^/.]*)/LC_MESSAGES/(?P<component>[^/]*)\.po

Prilagodi ime komponente

Documentation: {{ component|title }}

Odredi osnovnu datoteku za nove prijevode

docs/locales/{{ component }}.pot

Savjet

Želiš li radije da Sphinx generira samo jednu PO datoteku? Od Sphinx verzije 3.3.0 to možeš postići pomoću:

gettext_compact = "docs"

Postoje nekoliko projekata dokumentacije koji se prevode koristeći ovaj pristup: