]> git.ipfire.org Git - thirdparty/babel.git/commitdiff
Add dpgettext and dnpgettext support (#1235) master
authorGuillaume Gauvrit <guillaume@gauvr.it>
Mon, 29 Dec 2025 12:04:41 +0000 (13:04 +0100)
committerGitHub <noreply@github.com>
Mon, 29 Dec 2025 12:04:41 +0000 (14:04 +0200)
babel/messages/extract.py
tests/messages/frontend/test_frontend.py
tests/messages/test_extract_python.py

index a8f15469d84d6a52abf8d5bf345f01db7f755360..3c196f0e03f5a66acbb7e6341c9a27a2054e0840 100644 (file)
@@ -88,9 +88,11 @@ DEFAULT_KEYWORDS: dict[str, _Keyword] = {
     'ungettext': (1, 2),
     'dgettext': (2,),
     'dngettext': (2, 3),
+    'dpgettext': ((2, 'c'), 3),
     'N_': None,
     'pgettext': ((1, 'c'), 2),
     'npgettext': ((1, 'c'), 2, 3),
+    'dnpgettext': ((2, 'c'), 3, 4),
 }
 
 DEFAULT_MAPPING: list[tuple[str, str]] = [('**.py', 'python')]
index a77d5d679ce89dff7fedd587908796b4e1caf134..17a7dbbd85c25634ab92909f899f43845a1e5aea 100644 (file)
@@ -218,6 +218,7 @@ def test_extract_keyword_args_384(split, arg_name):
     )
     assert isinstance(cmdinst, ExtractMessages)
     assert set(cmdinst.keywords.keys()) == {'_', 'dgettext', 'dngettext',
+                                            'dnpgettext', 'dpgettext',
                                             'gettext', 'gettext_lazy',
                                             'gettext_noop', 'N_', 'ngettext',
                                             'ngettext_lazy', 'npgettext',
index aa13124fbe815799a93de92ffae4a97d0db0d952..86f15b1c63af2633ecfa0e88a81f93cc41c34e0d 100644 (file)
@@ -145,6 +145,27 @@ msg2 = ngettext('elvis',
     ]
 
 
+def test_dpgettext():
+    buf = BytesIO(b"""\
+msg1 = dpgettext('dev', 'Strings',
+             'pylon')
+msg2 = dpgettext('dev', 'Strings', 'elvis')
+""")
+    messages = list(extract.extract_python(buf, ('dpgettext',), [], {}))
+    assert messages == [
+        (1, 'dpgettext', ('dev', 'Strings', 'pylon'), []),
+        (3, 'dpgettext', ('dev', 'Strings', 'elvis'), []),
+    ]
+    buf = BytesIO(b"""\
+msg = dpgettext('dev', 'Strings', 'pylon',  # TRANSLATORS: shouldn't be
+            )                # TRANSLATORS: seeing this
+""")
+    messages = list(extract.extract_python(buf, ('dpgettext',),['TRANSLATORS:'], {}))
+    assert messages == [
+        (1, 'dpgettext', ('dev', 'Strings', 'pylon', None), []),
+    ]
+
+
 def test_npgettext():
     buf = BytesIO(b"""\
 msg1 = npgettext('Strings','pylon',
@@ -170,6 +191,30 @@ msg = npgettext('Strings', 'pylon',  # TRANSLATORS: shouldn't be
     ]
 
 
+def test_dnpgettext():
+    buf = BytesIO(b"""\
+msg1 = dnpgettext('dev', 'Strings','pylon',
+            'pylons', count)
+msg2 = dnpgettext('dev', 'Strings','elvis',
+            'elvises',
+             count)
+""")
+    messages = list(extract.extract_python(buf, ('dnpgettext',), [], {}))
+    assert messages == [
+        (1, 'dnpgettext', ('dev', 'Strings', 'pylon', 'pylons', None), []),
+        (3, 'dnpgettext', ('dev', 'Strings', 'elvis', 'elvises', None), []),
+    ]
+    buf = BytesIO(b"""\
+msg = dnpgettext('dev', 'Strings', 'pylon',  # TRANSLATORS: shouldn't be
+             'pylons', # TRANSLATORS: seeing this
+             count)
+""")
+    messages = list(extract.extract_python(buf, ('dnpgettext',),['TRANSLATORS:'], {}))
+    assert messages == [
+        (1, 'dnpgettext', ('dev', 'Strings', 'pylon', 'pylons', None), []),
+    ]
+
+
 def test_triple_quoted_strings():
     buf = BytesIO(b"""\
 msg1 = _('''pylons''')