summaryrefslogtreecommitdiff
path: root/sphinx/util
diff options
context:
space:
mode:
authorkou <kou@cozmixng.org>2012-07-26 00:40:40 +0900
committerkou <kou@cozmixng.org>2012-07-26 00:40:40 +0900
commit01ee24b63c680a0f67b0a656fc8f11545388af6e (patch)
treee4a0b61cdcbc7cba7f3def78f5a924353f7e5e21 /sphinx/util
parentb5c6afa4ce5407ff5ece5de1207bc615cb6a0476 (diff)
downloadsphinx-01ee24b63c680a0f67b0a656fc8f11545388af6e.tar.gz
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.
Diffstat (limited to 'sphinx/util')
-rw-r--r--sphinx/util/nodes.py8
1 files changed, 8 insertions, 0 deletions
diff --git a/sphinx/util/nodes.py b/sphinx/util/nodes.py
index dbedb7f2..8b8dd2bc 100644
--- a/sphinx/util/nodes.py
+++ b/sphinx/util/nodes.py
@@ -43,6 +43,14 @@ IGNORED_NODES = (
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):