1. Kouhei Sutou
  2. sphinx


k...@cozmixng.org  committed ecb7ed8

Use term in description list as translation message

Here is a .rst that reproduces the problem fixed by this changes:


"description-paragraph" is extracted as translation message by
"sphinx-build -b gettext" but "term-word" isn't.

It's because nodes.term node doesn't have source information.
Source information should be added by Docutils instead of Sphinx.

A patch that fix this problem in Doctuils had been submitted:

This changes are workarond to work with docutils-0.9.1 or earlier.

  • Participants
  • Parent commits 348224a
  • Branches i18n-term-translatable

Comments (0)

Files changed (1)

File sphinx/util/nodes.py

View file
  • Ignore whitespace
 def extract_messages(doctree):
     """Extract translatable messages from a document tree."""
     for node in doctree.traverse(nodes.TextElement):
+        # workaround: nodes.term doesn't have source, line and rawsource
+        # It should be fixed in Docutils. There is a patch for it in Docutils
+        # tracker: https://sourceforge.net/tracker/?func=detail&aid=3548418&group_id=38414&atid=422032
+        if isinstance(node, nodes.term) and not node.source:
+            definition_list_item = node.parent;
+            node.source = definition_list_item.source
+            node.line = definition_list_item.line - 1
+            node.rawsource = definition_list_item.rawsource.split("\n", 2)[0]
         if not node.source:
             continue # built-in message
         if isinstance(node, IGNORED_NODES):