Skip to content

Commit 6ef6337

Browse files
committed
Extract parametrized gettext from javascript files
1 parent fb1c19c commit 6ef6337

2 files changed

Lines changed: 13 additions & 1 deletion

File tree

babel/messages/extract.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -835,10 +835,12 @@ def parse_template_string(
835835
if level:
836836
expression_contents += character
837837
if not inside_str:
838-
if character == '{' and prev_character == '$':
838+
# start of new template string or object definition
839+
if character == '{':
839840
level += 1
840841
elif level and character == '}':
841842
level -= 1
843+
# end of template string
842844
if level == 0 and expression_contents:
843845
expression_contents = expression_contents[0:-1]
844846
fake_file_obj = io.BytesIO(expression_contents.encode())

tests/messages/test_js_extract.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -191,3 +191,13 @@ def test_inside_nested_template_string():
191191
)
192192

193193
assert messages == [(1, 'Greetings!', [], None), (1, 'This is a lovely evening.', [], None), (1, 'The day is really nice!', [], None)]
194+
195+
196+
def test_template_string_with_parameters() -> None:
197+
buf = BytesIO(
198+
b'`${gettext("text %(param)s", { param: myVar })}`;',
199+
)
200+
messages = list(extract.extract("javascript", buf, {"gettext": None}, [], {"parse_template_string": True}))
201+
assert messages == [
202+
(1, "text %(param)s", [], None),
203+
]

0 commit comments

Comments
 (0)