summaryrefslogtreecommitdiff
path: root/sphinx
diff options
context:
space:
mode:
Diffstat (limited to 'sphinx')
-rw-r--r--sphinx/environment.py16
1 files changed, 16 insertions, 0 deletions
diff --git a/sphinx/environment.py b/sphinx/environment.py
index 2995cbbc..2e70569b 100644
--- a/sphinx/environment.py
+++ b/sphinx/environment.py
@@ -189,6 +189,20 @@ class CitationReferences(Transform):
citnode.parent.replace(citnode, refnode)
+class CustomLocaleReporter(object):
+ """
+ Replacer for document.reporter.get_source_and_line method.
+
+ reST text lines for translation not have original source line number.
+ This class provide correct line number at reporting.
+ """
+ def __init__(self, source, line):
+ self.source, self.line = source, line
+
+ def get_source_and_line(self, lineno=None):
+ return self.source, self.line
+
+
class Locale(Transform):
"""
Replace translatable nodes with their translated doctree.
@@ -229,6 +243,8 @@ class Locale(Transform):
# dummy literal node will discard by 'patch = patch[0]'
patch = new_document(source, settings)
+ patch.reporter.get_source_and_line = CustomLocaleReporter(
+ node.source, node.line).get_source_and_line
parser.parse(msgstr, patch)
patch = patch[0]
# XXX doctest and other block markup