Добавление и перевод нового контента

Добавление условного контента с помощью ifconfig

Условный контент публикуется, только если он соответствует заданным условиям. В нашем проекте этим условием является язык документа.

Чтобы Sphinx мог обрабатывать условный текст, ему необходимо расширение ifconfig. Добавьте ifconfig в список расширений в conf.py:

extensions = ['sphinx.ext.ifconfig']

Теперь мы добавим информацию о переводе текста в index.rst. Эта информация не нужна в оригинальном документе, поэтому мы исключим этот текст из английского языка.

Откройте index.rst и добавьте «Translation info» в конец файла, вот так:

Namespaces are one honking great idea -- let's do more of those!

.. ifconfig:: language != 'en'

        Translation info

Обратите внимание, что мы добавили текст в исходный файл .rst на английском языке, а не в файлы .po. Позже вы увидите, что этот текст не будет опубликован в документации на английском языке.

Вы можете загрузить обновленную версию conf.py и index.rst.

Обновление перевода

Вы уже знаете, как обращаться с файлами .pot и .po:

  1. Сгенерируйте файлы .pot:

    make gettext
    

    Эта команда обновляет index.pot в _build/gettext.

  2. Сгенерируйте файлы .po:

    sphinx-intl update -p _build/gettext -l ru -l pt_BR
    

    Эта команда обновляет index.po в locale/ru/LC_MESSAGES и locale/pt_BR/LC_MESSAGES.

  3. Переведите новые строки в обоих файлах index.po.

    Русский:

    #: ../../index.rst:po
    
    msgid "Translation info"
    
    msgstr "(Переведено authoress)"
    

    Португальский:

    #: ../../index.rst:52
    
    msgid "Translation info"
    
    msgstr "(Origem da tradução: `PythonBrasil "
    
    "<https://wiki.python.org.br/TheZenOfPython>`_)"
    

Вы можете загрузить оба обновленных файла index.po.

Сборка обновленной документации

Сборка документации на русском:

sphinx-build -b html -D language=ru -d _build/doctrees/ru/ . _build/html/ru/

Сборка документации на португальском:

sphinx-build -b html -D language=pt_BR  -d _build/doctrees/pt_BR/ . _build/html/pt_BR/

Теперь index.html на португальском и русском языках должен содержать вновь добавленную информацию о переводе. Если вы запустите сборку документации на английском языке, вы увидите, что в index.html не добавляется новый контент.