Skip to content

Commit 1b73683

Browse files
gh-101845: pyspecific: Fix i18n for availability directive (GH-101846)
pyspecific: Fix i18n for availability directive If the directive has content, the previous code would nest paragraph nodes from that content inside a general paragraph node, which confuses Sphinx and leads it to drop the content when translating. Instead, use a container node for the body. Also use set_source_info so that any warnings have location info. (cherry picked from commit 6ef6915) Co-authored-by: Jean Abou-Samra <jean@abou-samra.fr>
1 parent cec99ed commit 1b73683

File tree

1 file changed

+11
-9
lines changed

1 file changed

+11
-9
lines changed

Doc/tools/extensions/pyspecific.py

+11-9
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
from sphinx.environment import NoUri
2929
from sphinx.locale import _ as sphinx_gettext
3030
from sphinx.util import status_iterator, logging
31+
from sphinx.util.docutils import SphinxDirective
3132
from sphinx.util.nodes import split_explicit_title
3233
from sphinx.writers.text import TextWriter, TextTranslator
3334
from sphinx.writers.latex import LaTeXTranslator
@@ -124,7 +125,7 @@ def run(self):
124125

125126
# Support for documenting platform availability
126127

127-
class Availability(Directive):
128+
class Availability(SphinxDirective):
128129

129130
has_content = True
130131
required_arguments = 1
@@ -144,18 +145,19 @@ class Availability(Directive):
144145

145146
def run(self):
146147
availability_ref = ':ref:`Availability <availability>`: '
148+
avail_nodes, avail_msgs = self.state.inline_text(
149+
availability_ref + self.arguments[0],
150+
self.lineno)
147151
pnode = nodes.paragraph(availability_ref + self.arguments[0],
148-
classes=["availability"],)
149-
n, m = self.state.inline_text(availability_ref, self.lineno)
150-
pnode.extend(n + m)
151-
n, m = self.state.inline_text(self.arguments[0], self.lineno)
152-
pnode.extend(n + m)
152+
'', *avail_nodes, *avail_msgs)
153+
self.set_source_info(pnode)
154+
cnode = nodes.container("", pnode, classes=["availability"])
155+
self.set_source_info(cnode)
153156
if self.content:
154-
self.state.nested_parse(self.content, self.content_offset, pnode)
155-
157+
self.state.nested_parse(self.content, self.content_offset, cnode)
156158
self.parse_platforms()
157159

158-
return [pnode]
160+
return [cnode]
159161

160162
def parse_platforms(self):
161163
"""Parse platform information from arguments

0 commit comments

Comments
 (0)