Anonymous avatar Anonymous committed ecb7ed8

Use term in description list as translation message

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

term-word
description-paragraph

"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:
https://sourceforge.net/tracker/?func=detail&aid=3548418&group_id=38414&atid=422032

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

Comments (0)

Files changed (1)

sphinx/util/nodes.py

 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):
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.