Issue 32087: deprecated-removed directive generates overlapping msgids in .pot files (original) (raw)
When gettext builder is invoked, deprecated-removed directive which is defined in Doc/tools/extensions/pyspecific.py generates overlapping msgids in .pot files.
For example, the following .rst source (taken from Doc/library/dmb.rst L354)::
.. deprecated-removed:: 3.6 3.8
Creating database in 'r'
and 'w'
modes. Modifying database in
'r'
mode.
results to following .pot file entries::
#: ../../library/dbm.rst:357 msgid "Deprecated since version 3.6, will be removed in version 3.8: Creating database in 'r' and 'w' modes. Modifying database in 'r' mode." msgstr ""
#: ../../library/dbm.rst:357
msgid "Creating database in 'r'
and 'w'
modes. Modifying database in 'r'
mode."
msgstr ""
using the command::
sphinx-build -E -b gettext -D gettext_compact=0 -w warnings.txt -d build/.doctrees . locale/pot
The root cause is deprecated-removed directive constructs inappropriate sub-doctree for translation. First, above .rst source is compiled into following tree structure::
Deprecated since version 3.6, will be removed in version 3.8: Creating database in...and gettext builder picks up paragraph node and the second inline node as translation targets.
Expected result is that two inline nodes are picked up as translation targets and the paragraph node is not, and expected .pot file entries are such as following::
#: ../../library/dbm.rst:357 msgid "Deprecated since version 3.6, will be removed in version 3.8:" msgstr ""
#: ../../library/dbm.rst:357
msgid "Creating database in 'r'
and 'w'
modes. Modifying database in 'r'
mode."
msgstr ""