mirror of
https://github.com/sphinx-doc/sphinx.git
synced 2025-02-25 18:55:22 -06:00
fix: reporting correct line number when translations have wrong reST syntax or else.
This commit is contained in:
@@ -189,6 +189,20 @@ class CitationReferences(Transform):
|
|||||||
citnode.parent.replace(citnode, refnode)
|
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):
|
class Locale(Transform):
|
||||||
"""
|
"""
|
||||||
Replace translatable nodes with their translated doctree.
|
Replace translatable nodes with their translated doctree.
|
||||||
@@ -229,6 +243,8 @@ class Locale(Transform):
|
|||||||
# dummy literal node will discard by 'patch = patch[0]'
|
# dummy literal node will discard by 'patch = patch[0]'
|
||||||
|
|
||||||
patch = new_document(source, settings)
|
patch = new_document(source, settings)
|
||||||
|
patch.reporter.get_source_and_line = CustomLocaleReporter(
|
||||||
|
node.source, node.line).get_source_and_line
|
||||||
parser.parse(msgstr, patch)
|
parser.parse(msgstr, patch)
|
||||||
patch = patch[0]
|
patch = patch[0]
|
||||||
# XXX doctest and other block markup
|
# XXX doctest and other block markup
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
|
|
||||||
subdir/contents
|
subdir/contents
|
||||||
bom
|
bom
|
||||||
|
warnings
|
||||||
footnote
|
footnote
|
||||||
external_links
|
external_links
|
||||||
refs_inconsistency
|
refs_inconsistency
|
||||||
|
|||||||
23
tests/roots/test-intl/warnings.po
Normal file
23
tests/roots/test-intl/warnings.po
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
# SOME DESCRIPTIVE TITLE.
|
||||||
|
# Copyright (C) 2010, Georg Brandl & Team
|
||||||
|
# This file is distributed under the same license as the Sphinx <Tests> package.
|
||||||
|
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||||
|
#
|
||||||
|
#, fuzzy
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Sphinx <Tests> 0.6\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2013-02-04 13:06\n"
|
||||||
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
|
||||||
|
msgid "i18n with reST warnings"
|
||||||
|
msgstr "I18N WITH REST WARNINGS"
|
||||||
|
|
||||||
|
msgid "line of ``literal`` markup."
|
||||||
|
msgstr "LINE OF ``BROKEN LITERAL MARKUP."
|
||||||
5
tests/roots/test-intl/warnings.txt
Normal file
5
tests/roots/test-intl/warnings.txt
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
i18n with reST warnings
|
||||||
|
========================
|
||||||
|
|
||||||
|
line of ``literal`` markup.
|
||||||
|
|
||||||
@@ -89,6 +89,23 @@ def test_subdir(app):
|
|||||||
assert result.startswith(u"\nsubdir contents\n***************\n")
|
assert result.startswith(u"\nsubdir contents\n***************\n")
|
||||||
|
|
||||||
|
|
||||||
|
@with_intl_app(buildername='text', warning=warnfile)
|
||||||
|
def test_i18n_warnings_in_translation(app):
|
||||||
|
app.builddir.rmtree(True)
|
||||||
|
app.builder.build(['warnings'])
|
||||||
|
result = (app.outdir / 'warnings.txt').text(encoding='utf-8')
|
||||||
|
expect = (u"\nI18N WITH REST WARNINGS"
|
||||||
|
u"\n***********************\n"
|
||||||
|
u"\nLINE OF >>``<<BROKEN LITERAL MARKUP.\n")
|
||||||
|
|
||||||
|
assert result == expect
|
||||||
|
|
||||||
|
warnings = warnfile.getvalue().replace(os.sep, '/')
|
||||||
|
warning_expr = u'.*/warnings.txt:4: ' \
|
||||||
|
u'WARNING: Inline literal start-string without end-string.\n'
|
||||||
|
assert re.search(warning_expr, warnings)
|
||||||
|
|
||||||
|
|
||||||
@with_intl_app(buildername='html', cleanenv=True)
|
@with_intl_app(buildername='html', cleanenv=True)
|
||||||
def test_i18n_footnote_break_refid(app):
|
def test_i18n_footnote_break_refid(app):
|
||||||
"""test for #955 cant-build-html-with-footnotes-when-using"""
|
"""test for #955 cant-build-html-with-footnotes-when-using"""
|
||||||
|
|||||||
Reference in New Issue
Block a user