Добавление и перевод нового контента¶
Добавление условного контента с помощью 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. Позже вы увидите, что этот текст не будет опубликован в документации на английском языке.
Обновление перевода¶
Вы уже знаете, как обращаться с файлами .pot и .po:
Сгенерируйте файлы .pot:
make gettext
Эта команда обновляет index.pot в _build/gettext.
Сгенерируйте файлы .po:
sphinx-intl update -p _build/gettext -l ru -l pt_BR
Эта команда обновляет index.po в locale/ru/LC_MESSAGES и locale/pt_BR/LC_MESSAGES.
Переведите новые строки в обоих файлах 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 не добавляется новый контент.