Översättning av dokumentation med Sphinx

Sphinx är ett verktyg för att skapa snygg dokumentation. Det använder enkel reStructuredText-syntax och kan generera utdata i många format. Om du letar efter ett exempel är den här dokumentationen också byggd med hjälp av det. Ett mycket användbart komplement till Sphinx är tjänsten Read the Docs, som bygger och publicerar din dokumentation gratis.

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 Komponentupptäckt add-on to automatically discover all others.

Komponentkonfiguration

Komponentnamn

Documentation

Filmask

docs/locales/*/LC_MESSAGES/index.po

Mall för nya översättningar

docs/locales/index.pot

Filformat

gettext PO-fil

Översättningsflaggor

rst-text

Konfiguration av komponentupptäckt

Reguljärt uttryck för att matcha översättningsfiler mot

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

Anpassa komponentnamnet

Documentation: {{ component|title }}

Definiera basfil för nya översättningar

docs/locales/{{ component }}.pot

Råd

Vill du att Sphinx bara ska generera en enda PO-fil? Sedan Sphinx 3.3.0 kan du göra detta med hjälp av:

gettext_compact = "docs"

Du kan hitta flera dokumentationsprojekt som översätts med hjälp av denna metod: