Ö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.

Jag kommer inte att fokusera på att skriva dokumentation i sig, om du behöver hjälp med det följer du bara instruktionerna på Sphinx webbplatsen. När du har dokumentationen klar är det ganska enkelt att översätta den, eftersom Sphinx har stöd för detta och det beskrivs ganska bra i deras Internationalization. Det handlar om några få konfigurationsdirektiv och att anropa verktyget sphinx-intl.

Om du använder tjänsten Read the Docs kan du börja skapa översatt dokumentation på Read the Docs. Deras Localization and Internationalization täcker i stort sett allt du behöver – skapa ett nytt projekt, ange språket och länka det från huvudprojektet som en översättning.

Nu behöver du bara översätta dokumentationens innehåll. Sphinx genererar PO-filer för varje katalog eller toppnivåfil, vilket kan leda till att det blir ganska många filer att översätta (beroende på inställningarna för gettext_compact). Du kan importera index.po till Weblate som en initial komponent och sedan konfigurera Komponentupptäckt-tillägget för att automatiskt upptäcka alla andra.

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: