1. Yuya Unno
  2. sphinx

Commits

Nozomu Kaneko  committed fc66da2

make versionmodified translatable

  • Participants
  • Parent commits 8bf04a6
  • Branches default

Comments (0)

Files changed (5)

File sphinx/directives/other.py

View file
         if len(self.arguments) == 2:
             inodes, messages = self.state.inline_text(self.arguments[1],
                                                       self.lineno+1)
-            node.append(nodes.paragraph('', '', *inodes))
+            para = nodes.paragraph(self.arguments[1], '', *inodes)
+            set_source_info(self, para)
+            node.append(para)
         else:
             messages = []
         if self.content:
             self.state.nested_parse(self.content, self.content_offset, node)
         if len(node):
+            if isinstance(node[0], nodes.paragraph) and node[0].rawsource:
+                content = nodes.inline(node[0].rawsource, translatable=True)
+                content.source = node[0].source
+                content.line = node[0].line
+                content += node[0].children
+                node[0].replace_self(nodes.paragraph('', '', content))
             node[0].insert(0, nodes.inline('', '%s: ' % text))
         else:
             para = nodes.paragraph('', '', nodes.inline('', '%s.' % text))

File tests/roots/test-intl/contents.txt

View file
    role_xref
    glossary_terms
    glossary_terms_inconsistency
+   versionchange
    docfields

File tests/roots/test-intl/versionchange.po

View file
+# 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 1.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2012-12-15 03:17\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 versionchange"
+msgstr "I18N WITH VERSIONCHANGE"
+
+msgid "This is the *first* paragraph of deprecated."
+msgstr "THIS IS THE *FIRST* PARAGRAPH OF DEPRECATED."
+
+msgid "This is the *second* paragraph of deprecated."
+msgstr "THIS IS THE *SECOND* PARAGRAPH OF DEPRECATED."
+
+msgid "This is the *first* paragraph of versionadded."
+msgstr "THIS IS THE *FIRST* PARAGRAPH OF VERSIONADDED."
+
+msgid "This is the *first* paragraph of versionchanged."
+msgstr "THIS IS THE *FIRST* PARAGRAPH OF VERSIONCHANGED."
+

File tests/roots/test-intl/versionchange.txt

View file
+:tocdepth: 2
+
+i18n with versionchange
+============================
+
+.. deprecated:: 1.0
+   This is the *first* paragraph of deprecated.
+
+   This is the *second* paragraph of deprecated.
+
+.. versionadded:: 1.0
+   This is the *first* paragraph of versionadded.
+
+.. versionchanged:: 1.0
+
+   This is the *first* paragraph of versionchanged.

File tests/test_intl.py

View file
         assert re.search(expr, result, re.M)
 
 
+@with_intl_app(buildername='html', cleanenv=True)
+def test_versionchange(app):
+    app.builder.build(['versionchange'])
+    result = (app.outdir / 'versionchange.html').text(encoding='utf-8')
+
+    def get_content(result, name):
+        matched = re.search(r'<div class="%s">\n*(.*?)</div>' % name,
+                            result, re.DOTALL)
+        if matched:
+            return matched.group(1)
+        else:
+            return ''
+
+    expect1 = (
+        u"""<p><span>Deprecated since version 1.0: </span>"""
+        u"""THIS IS THE <em>FIRST</em> PARAGRAPH OF DEPRECATED.</p>\n"""
+        u"""<p>THIS IS THE <em>SECOND</em> PARAGRAPH OF DEPRECATED.</p>\n""")
+    matched_content = get_content(result, "deprecated")
+    assert expect1 == matched_content
+
+    expect2 = (
+        u"""<p><span>New in version 1.0: </span>"""
+        u"""THIS IS THE <em>FIRST</em> PARAGRAPH OF VERSIONADDED.</p>\n""")
+    matched_content = get_content(result, "versionadded")
+    assert expect2 == matched_content
+
+    expect3 = (
+        u"""<p><span>Changed in version 1.0: </span>"""
+        u"""THIS IS THE <em>FIRST</em> PARAGRAPH OF VERSIONCHANGED.</p>\n""")
+    matched_content = get_content(result, "versionchanged")
+    assert expect3 == matched_content
+
+
 @with_intl_app(buildername='text', cleanenv=True)
 def test_i18n_docfields(app):
     app.builder.build(['docfields'])