diff options
author | shimizukawa <shimizukawa@gmail.com> | 2012-12-16 22:56:38 +0900 |
---|---|---|
committer | shimizukawa <shimizukawa@gmail.com> | 2012-12-16 22:56:38 +0900 |
commit | c4e8dfd718af805a9cff0e68cd6ef5d1cee965d2 (patch) | |
tree | 719bda85249bb00f118604894ea29c561672b103 | |
parent | 657d4a741bfa2ee335d38759d92885c2636d0e71 (diff) | |
download | sphinx-c4e8dfd718af805a9cff0e68cd6ef5d1cee965d2.tar.gz |
Avoid unusable warning in using i18n translation. Closes #1057.
And there is related information at pull request #86
-rw-r--r-- | sphinx/environment.py | 8 | ||||
-rw-r--r-- | tests/root/i18n/index.txt | 1 | ||||
-rw-r--r-- | tests/root/i18n/literalblock.po | 30 | ||||
-rw-r--r-- | tests/root/i18n/literalblock.txt | 13 | ||||
-rw-r--r-- | tests/test_build_html.py | 1 | ||||
-rw-r--r-- | tests/test_intl.py | 22 |
6 files changed, 75 insertions, 0 deletions
diff --git a/sphinx/environment.py b/sphinx/environment.py index cada082d..0b9e5bcc 100644 --- a/sphinx/environment.py +++ b/sphinx/environment.py @@ -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] diff --git a/tests/root/i18n/index.txt b/tests/root/i18n/index.txt index f35e2766..ee2d1c5f 100644 --- a/tests/root/i18n/index.txt +++ b/tests/root/i18n/index.txt @@ -5,3 +5,4 @@ footnote external_links refs_inconsistency + literalblock diff --git a/tests/root/i18n/literalblock.po b/tests/root/i18n/literalblock.po new file mode 100644 index 00000000..8ea83b3b --- /dev/null +++ b/tests/root/i18n/literalblock.po @@ -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." + diff --git a/tests/root/i18n/literalblock.txt b/tests/root/i18n/literalblock.txt new file mode 100644 index 00000000..c9c71099 --- /dev/null +++ b/tests/root/i18n/literalblock.txt @@ -0,0 +1,13 @@ +:tocdepth: 2 + +i18n with literal block +========================= + +Correct literal block:: + + this is + literal block + +Missing literal block:: + +That's all. diff --git a/tests/test_build_html.py b/tests/test_build_html.py index a693e6c0..69111d4e 100644 --- a/tests/test_build_html.py +++ b/tests/test_build_html.py @@ -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 diff --git a/tests/test_intl.py b/tests/test_intl.py index 30854478..67507ed1 100644 --- a/tests/test_intl.py +++ b/tests/test_intl.py @@ -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) |