mirror of
https://github.com/sphinx-doc/sphinx.git
synced 2025-02-25 18:55:22 -06:00
Avoid unusable warning in using i18n translation. Closes #1057.
And there is related information at pull request #86
This commit is contained in:
@@ -220,6 +220,14 @@ class Locale(Transform):
|
||||
if not msgstr or msgstr == msg: # as-of-yet untranslated
|
||||
continue
|
||||
|
||||
# Avoid "Literal block expected; none found." warnings.
|
||||
# If msgstr ends with '::' then it cause warning message at
|
||||
# parser.parse() processing.
|
||||
# literal-block-warning is only appear in avobe case.
|
||||
if msgstr.strip().endswith('::'):
|
||||
msgstr += '\n\n dummy literal'
|
||||
# dummy literal node will discard by 'patch = patch[0]'
|
||||
|
||||
patch = new_document(source, settings)
|
||||
parser.parse(msgstr, patch)
|
||||
patch = patch[0]
|
||||
|
||||
@@ -5,3 +5,4 @@
|
||||
footnote
|
||||
external_links
|
||||
refs_inconsistency
|
||||
literalblock
|
||||
|
||||
30
tests/root/i18n/literalblock.po
Normal file
30
tests/root/i18n/literalblock.po
Normal file
@@ -0,0 +1,30 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) 2012, foof
|
||||
# This file is distributed under the same license as the foo package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: sphinx 1.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2012-11-22 08:28\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 literal block"
|
||||
msgstr "I18N WITH LITERAL BLOCK"
|
||||
|
||||
msgid "Correct literal block::"
|
||||
msgstr "CORRECT LITERAL BLOCK::"
|
||||
|
||||
msgid "Missing literal block::"
|
||||
msgstr "MISSING LITERAL BLOCK::"
|
||||
|
||||
msgid "That's all."
|
||||
msgstr "THAT'S ALL."
|
||||
|
||||
13
tests/root/i18n/literalblock.txt
Normal file
13
tests/root/i18n/literalblock.txt
Normal file
@@ -0,0 +1,13 @@
|
||||
:tocdepth: 2
|
||||
|
||||
i18n with literal block
|
||||
=========================
|
||||
|
||||
Correct literal block::
|
||||
|
||||
this is
|
||||
literal block
|
||||
|
||||
Missing literal block::
|
||||
|
||||
That's all.
|
||||
@@ -35,6 +35,7 @@ ENV_WARNINGS = """\
|
||||
%(root)s/autodoc_fodder.py:docstring of autodoc_fodder\\.MarkupError:2: \
|
||||
WARNING: Explicit markup ends without a blank line; unexpected \
|
||||
unindent\\.\\n?
|
||||
%(root)s/i18n/literalblock.txt:13: WARNING: Literal block expected; none found.
|
||||
%(root)s/images.txt:9: WARNING: image file not readable: foo.png
|
||||
%(root)s/images.txt:23: WARNING: nonlocal image URI found: \
|
||||
http://www.python.org/logo.png
|
||||
|
||||
@@ -184,3 +184,25 @@ def test_i18n_keep_external_links(app):
|
||||
if matched:
|
||||
matched_line = matched.group()
|
||||
assert expect_line == matched_line
|
||||
|
||||
|
||||
@with_app(buildername='text', warning=warnfile, cleanenv=True,
|
||||
confoverrides={'language': 'xx', 'locale_dirs': ['.'],
|
||||
'gettext_compact': False})
|
||||
def test_i18n_literalblock_warning(app):
|
||||
app.builddir.rmtree(True) #for warnings acceleration
|
||||
app.builder.build(['i18n/literalblock'])
|
||||
result = (app.outdir / 'i18n' / 'literalblock.txt').text(encoding='utf-8')
|
||||
expect = (u"\nI18N WITH LITERAL BLOCK"
|
||||
u"\n***********************\n"
|
||||
u"\nCORRECT LITERAL BLOCK:\n"
|
||||
u"\n this is"
|
||||
u"\n literal block\n"
|
||||
u"\nMISSING LITERAL BLOCK:\n"
|
||||
u"\n<SYSTEM MESSAGE: ")
|
||||
assert result.startswith(expect)
|
||||
|
||||
warnings = warnfile.getvalue().replace(os.sep, '/')
|
||||
expected_warning_expr = u'.*/i18n/literalblock.txt:\\d+: ' \
|
||||
u'WARNING: Literal block expected; none found.'
|
||||
assert re.search(expected_warning_expr, warnings)
|
||||
|
||||
Reference in New Issue
Block a user