]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-130453: pygettext: Allow overriding default keywords when using `--keyword` (GH...
authorTomas R. <tomas.roun8@gmail.com>
Mon, 3 Mar 2025 16:57:01 +0000 (17:57 +0100)
committerGitHub <noreply@github.com>
Mon, 3 Mar 2025 16:57:01 +0000 (18:57 +0200)
Lib/test/test_tools/i18n_data/custom_keywords.pot
Lib/test/test_tools/i18n_data/custom_keywords.py
Lib/test/test_tools/test_i18n.py
Misc/NEWS.d/next/Tools-Demos/2025-02-28-23-24-03.gh-issue-130453.EK0Vk_.rst [new file with mode: 0644]
Tools/i18n/pygettext.py

index 48df2e7f579cc7fb999f127265850172af012f4e..03a9cba3a20b16b72e8cac06e06b67e278d09f4a 100644 (file)
@@ -15,31 +15,37 @@ msgstr ""
 "Generated-By: pygettext.py 1.5\n"
 
 
-#: custom_keywords.py:9 custom_keywords.py:10
+#: custom_keywords.py:10 custom_keywords.py:11
 msgid "bar"
 msgstr ""
 
-#: custom_keywords.py:12
+#: custom_keywords.py:13
 msgid "cat"
 msgid_plural "cats"
 msgstr[0] ""
 msgstr[1] ""
 
-#: custom_keywords.py:13
+#: custom_keywords.py:14
 msgid "dog"
 msgid_plural "dogs"
 msgstr[0] ""
 msgstr[1] ""
 
-#: custom_keywords.py:15
+#: custom_keywords.py:16
 msgctxt "context"
 msgid "bar"
 msgstr ""
 
-#: custom_keywords.py:17
+#: custom_keywords.py:18
 msgctxt "context"
 msgid "cat"
 msgid_plural "cats"
 msgstr[0] ""
 msgstr[1] ""
 
+#: custom_keywords.py:34
+msgid "overridden"
+msgid_plural "default"
+msgstr[0] ""
+msgstr[1] ""
+
index 01ea56c348cb557e90904919c42fe69568396fcf..ba0ffe77180478e857d3a0a781f2feb8c55c047f 100644 (file)
@@ -4,6 +4,7 @@ from gettext import (
     pgettext as pfoo,
     npgettext as npfoo,
     gettext as bar,
+    gettext as _,
 )
 
 foo('bar')
@@ -28,3 +29,6 @@ pfoo('context')
 # 'npfoo' requires at least 3 arguments
 npfoo('context')
 npfoo('context', 'cat')
+
+# --keyword should override the default keyword
+_('overridden', 'default')
index d73fcff4c9cb11e848953cd0e7d386a961c2c993..2ba086109d30abf3805e031a2e745b02b2f267f5 100644 (file)
@@ -525,7 +525,7 @@ def extract_from_snapshots():
         'comments.py': ('--add-comments=i18n:',),
         'custom_keywords.py': ('--keyword=foo', '--keyword=nfoo:1,2',
                                '--keyword=pfoo:1c,2',
-                               '--keyword=npfoo:1c,2,3'),
+                               '--keyword=npfoo:1c,2,3', '--keyword=_:1,2'),
     }
 
     for filename, args in snapshots.items():
diff --git a/Misc/NEWS.d/next/Tools-Demos/2025-02-28-23-24-03.gh-issue-130453.EK0Vk_.rst b/Misc/NEWS.d/next/Tools-Demos/2025-02-28-23-24-03.gh-issue-130453.EK0Vk_.rst
new file mode 100644 (file)
index 0000000..684fd9a
--- /dev/null
@@ -0,0 +1 @@
+Make it possible to override default keywords in :program:`pygettext`.
index 0f5f32c7d6c18fda29eb9927bd470d7d0bd1c0da..0ec257020918b13ac70635753b57034e9e285b97 100755 (executable)
@@ -729,12 +729,15 @@ def main():
 
     # calculate all keywords
     try:
-        options.keywords = dict(parse_spec(spec) for spec in options.keywords)
+        custom_keywords = dict(parse_spec(spec) for spec in options.keywords)
     except ValueError as e:
         print(e, file=sys.stderr)
         sys.exit(1)
+    options.keywords = {}
     if not no_default_keywords:
         options.keywords |= DEFAULTKEYWORDS
+    # custom keywords override default keywords
+    options.keywords |= custom_keywords
 
     # initialize list of strings to exclude
     if options.excludefilename: