Fixed #18881 -- Made the context option in {% trans %} and {% blocktrans %} accept literals wrapped in single quotes. Thanks to lanyjie for the report.
This commit is contained in:
parent
751a7d0c32
commit
b8244c654c
|
@ -437,8 +437,8 @@ def blankout(src, char):
|
||||||
return dot_re.sub(char, src)
|
return dot_re.sub(char, src)
|
||||||
|
|
||||||
context_re = re.compile(r"""^\s+.*context\s+((?:"[^"]*?")|(?:'[^']*?'))\s*""")
|
context_re = re.compile(r"""^\s+.*context\s+((?:"[^"]*?")|(?:'[^']*?'))\s*""")
|
||||||
inline_re = re.compile(r"""^\s*trans\s+((?:"[^"]*?")|(?:'[^']*?'))(\s+.*context\s+(?:"[^"]*?")|(?:'[^']*?'))?\s*""")
|
inline_re = re.compile(r"""^\s*trans\s+((?:"[^"]*?")|(?:'[^']*?'))(\s+.*context\s+((?:"[^"]*?")|(?:'[^']*?')))?\s*""")
|
||||||
block_re = re.compile(r"""^\s*blocktrans(\s+.*context\s+(?:"[^"]*?")|(?:'[^']*?'))?(?:\s+|$)""")
|
block_re = re.compile(r"""^\s*blocktrans(\s+.*context\s+((?:"[^"]*?")|(?:'[^']*?')))?(?:\s+|$)""")
|
||||||
endblock_re = re.compile(r"""^\s*endblocktrans$""")
|
endblock_re = re.compile(r"""^\s*endblocktrans$""")
|
||||||
plural_re = re.compile(r"""^\s*plural$""")
|
plural_re = re.compile(r"""^\s*plural$""")
|
||||||
constant_re = re.compile(r"""_\(((?:".*?")|(?:'.*?'))\)""")
|
constant_re = re.compile(r"""_\(((?:".*?")|(?:'.*?'))\)""")
|
||||||
|
|
|
@ -156,6 +156,21 @@ class BasicExtractorTests(ExtractorTests):
|
||||||
self.assertTrue('msgctxt "Special blocktrans context #4"' in po_contents)
|
self.assertTrue('msgctxt "Special blocktrans context #4"' in po_contents)
|
||||||
self.assertTrue("Translatable literal #8d" in po_contents)
|
self.assertTrue("Translatable literal #8d" in po_contents)
|
||||||
|
|
||||||
|
def test_context_in_single_quotes(self):
|
||||||
|
os.chdir(self.test_dir)
|
||||||
|
management.call_command('makemessages', locale=LOCALE, verbosity=0)
|
||||||
|
self.assertTrue(os.path.exists(self.PO_FILE))
|
||||||
|
with open(self.PO_FILE, 'r') as fp:
|
||||||
|
po_contents = fp.read()
|
||||||
|
# {% trans %}
|
||||||
|
self.assertTrue('msgctxt "Context wrapped in double quotes"' in po_contents)
|
||||||
|
self.assertTrue('msgctxt "Context wrapped in single quotes"' in po_contents)
|
||||||
|
|
||||||
|
# {% blocktrans %}
|
||||||
|
self.assertTrue('msgctxt "Special blocktrans context wrapped in double quotes"' in po_contents)
|
||||||
|
self.assertTrue('msgctxt "Special blocktrans context wrapped in single quotes"' in po_contents)
|
||||||
|
|
||||||
|
|
||||||
class JavascriptExtractorTests(ExtractorTests):
|
class JavascriptExtractorTests(ExtractorTests):
|
||||||
|
|
||||||
PO_FILE='locale/%s/LC_MESSAGES/djangojs.po' % LOCALE
|
PO_FILE='locale/%s/LC_MESSAGES/djangojs.po' % LOCALE
|
||||||
|
|
|
@ -77,3 +77,8 @@ continued here.{% endcomment %}
|
||||||
{% trans "Shouldn't double escape this sequence %% either" context "ctx1" %}
|
{% trans "Shouldn't double escape this sequence %% either" context "ctx1" %}
|
||||||
{% trans "Looks like a str fmt spec %s but shouldn't be interpreted as such" %}
|
{% trans "Looks like a str fmt spec %s but shouldn't be interpreted as such" %}
|
||||||
{% trans "Looks like a str fmt spec % o but shouldn't be interpreted as such" %}
|
{% trans "Looks like a str fmt spec % o but shouldn't be interpreted as such" %}
|
||||||
|
|
||||||
|
{% trans "Translatable literal with context wrapped in single quotes" context 'Context wrapped in single quotes' as var %}
|
||||||
|
{% trans "Translatable literal with context wrapped in double quotes" context "Context wrapped in double quotes" as var %}
|
||||||
|
{% blocktrans context 'Special blocktrans context wrapped in single quotes' %}Translatable literal with context wrapped in single quotes{% endblocktrans %}
|
||||||
|
{% blocktrans context "Special blocktrans context wrapped in double quotes" %}Translatable literal with context wrapped in double quotes{% endblocktrans %}
|
Loading…
Reference in New Issue