gh-130453: pygettext: Allow overriding default keywords when using --keyword (GH-130709)

This commit is contained in:
Tomas R. 2025-03-03 17:57:01 +01:00 committed by GitHub
parent b3c18bfd82
commit 321bf59512
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 21 additions and 7 deletions

View 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] ""

View file

@ -4,6 +4,7 @@
pgettext as pfoo,
npgettext as npfoo,
gettext as bar,
gettext as _,
)
foo('bar')
@ -28,3 +29,6 @@
# 'npfoo' requires at least 3 arguments
npfoo('context')
npfoo('context', 'cat')
# --keyword should override the default keyword
_('overridden', 'default')

View 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():

View file

@ -0,0 +1 @@
Make it possible to override default keywords in :program:`pygettext`.

View file

@ -729,12 +729,15 @@ class Options:
# 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: