diff --git a/django/utils/translation/trans_real.py b/django/utils/translation/trans_real.py
index 9fd33a7..6911c2c 100644
a
|
b
|
def blankout(src, char):
|
437 | 437 | return dot_re.sub(char, src) |
438 | 438 | |
439 | 439 | context_re = re.compile(r"""^\s+.*context\s+((?:"[^"]*?")|(?:'[^']*?'))\s*""") |
440 | | inline_re = re.compile(r"""^\s*trans\s+((?:"[^"]*?")|(?:'[^']*?'))(\s+.*context\s+(?:"[^"]*?")|(?:'[^']*?'))?\s*""") |
441 | | block_re = re.compile(r"""^\s*blocktrans(\s+.*context\s+(?:"[^"]*?")|(?:'[^']*?'))?(?:\s+|$)""") |
| 440 | inline_re = re.compile(r"""^\s*trans\s+((?:"[^"]*?")|(?:'[^']*?'))(\s+.*context\s+((?:"[^"]*?")|(?:'[^']*?')))?\s*""") |
| 441 | block_re = re.compile(r"""^\s*blocktrans(\s+.*context\s+((?:"[^"]*?")|(?:'[^']*?')))?(?:\s+|$)""") |
442 | 442 | endblock_re = re.compile(r"""^\s*endblocktrans$""") |
443 | 443 | plural_re = re.compile(r"""^\s*plural$""") |
444 | 444 | constant_re = re.compile(r"""_\(((?:".*?")|(?:'.*?'))\)""") |
diff --git a/tests/regressiontests/i18n/commands/extraction.py b/tests/regressiontests/i18n/commands/extraction.py
index 29d9e27..ca2c3cc 100644
a
|
b
|
class BasicExtractorTests(ExtractorTests):
|
156 | 156 | self.assertTrue('msgctxt "Special blocktrans context #4"' in po_contents) |
157 | 157 | self.assertTrue("Translatable literal #8d" in po_contents) |
158 | 158 | |
| 159 | def test_context_in_single_quotes(self): |
| 160 | os.chdir(self.test_dir) |
| 161 | management.call_command('makemessages', locale=LOCALE, verbosity=0) |
| 162 | self.assertTrue(os.path.exists(self.PO_FILE)) |
| 163 | with open(self.PO_FILE, 'r') as fp: |
| 164 | po_contents = fp.read() |
| 165 | # {% trans %} |
| 166 | self.assertTrue('msgctxt "Context wrapped in double quotes"' in po_contents) |
| 167 | self.assertTrue('msgctxt "Context wrapped in single quotes"' in po_contents) |
| 168 | |
| 169 | # {% blocktrans %} |
| 170 | self.assertTrue('msgctxt "Special blocktrans context wrapped in double quotes"' in po_contents) |
| 171 | self.assertTrue('msgctxt "Special blocktrans context wrapped in single quotes"' in po_contents) |
| 172 | |
| 173 | |
159 | 174 | class JavascriptExtractorTests(ExtractorTests): |
160 | 175 | |
161 | 176 | PO_FILE='locale/%s/LC_MESSAGES/djangojs.po' % LOCALE |
diff --git a/tests/regressiontests/i18n/commands/templates/test.html b/tests/regressiontests/i18n/commands/templates/test.html
index 5789346..e7d7f3c 100644
a
|
b
|
continued here.{% endcomment %}
|
77 | 77 | {% trans "Shouldn't double escape this sequence %% either" context "ctx1" %} |
78 | 78 | {% trans "Looks like a str fmt spec %s but shouldn't be interpreted as such" %} |
79 | 79 | {% trans "Looks like a str fmt spec % o but shouldn't be interpreted as such" %} |
| 80 | |
| 81 | {% trans "Translatable literal with context wrapped in single quotes" context 'Context wrapped in single quotes' as var %} |
| 82 | {% trans "Translatable literal with context wrapped in double quotes" context "Context wrapped in double quotes" as var %} |
| 83 | {% blocktrans context 'Special blocktrans context wrapped in single quotes' %}Translatable literal with context wrapped in single quotes{% endblocktrans %} |
| 84 | {% blocktrans context "Special blocktrans context wrapped in double quotes" %}Translatable literal with context wrapped in double quotes{% endblocktrans %} |
| 85 | No newline at end of file |