Skip to content

Commit 321bf59

Browse files
authored
gh-130453: pygettext: Allow overriding default keywords when using --keyword (GH-130709)
1 parent b3c18bf commit 321bf59

File tree

5 files changed

+21
-7
lines changed

5 files changed

+21
-7
lines changed

Lib/test/test_tools/i18n_data/custom_keywords.pot

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,31 +15,37 @@ msgstr ""
1515
"Generated-By: pygettext.py 1.5\n"
1616

1717

18-
#: custom_keywords.py:9 custom_keywords.py:10
18+
#: custom_keywords.py:10 custom_keywords.py:11
1919
msgid "bar"
2020
msgstr ""
2121

22-
#: custom_keywords.py:12
22+
#: custom_keywords.py:13
2323
msgid "cat"
2424
msgid_plural "cats"
2525
msgstr[0] ""
2626
msgstr[1] ""
2727

28-
#: custom_keywords.py:13
28+
#: custom_keywords.py:14
2929
msgid "dog"
3030
msgid_plural "dogs"
3131
msgstr[0] ""
3232
msgstr[1] ""
3333

34-
#: custom_keywords.py:15
34+
#: custom_keywords.py:16
3535
msgctxt "context"
3636
msgid "bar"
3737
msgstr ""
3838

39-
#: custom_keywords.py:17
39+
#: custom_keywords.py:18
4040
msgctxt "context"
4141
msgid "cat"
4242
msgid_plural "cats"
4343
msgstr[0] ""
4444
msgstr[1] ""
4545

46+
#: custom_keywords.py:34
47+
msgid "overridden"
48+
msgid_plural "default"
49+
msgstr[0] ""
50+
msgstr[1] ""
51+

Lib/test/test_tools/i18n_data/custom_keywords.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
pgettext as pfoo,
55
npgettext as npfoo,
66
gettext as bar,
7+
gettext as _,
78
)
89

910
foo('bar')
@@ -28,3 +29,6 @@
2829
# 'npfoo' requires at least 3 arguments
2930
npfoo('context')
3031
npfoo('context', 'cat')
32+
33+
# --keyword should override the default keyword
34+
_('overridden', 'default')

Lib/test/test_tools/test_i18n.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -525,7 +525,7 @@ def extract_from_snapshots():
525525
'comments.py': ('--add-comments=i18n:',),
526526
'custom_keywords.py': ('--keyword=foo', '--keyword=nfoo:1,2',
527527
'--keyword=pfoo:1c,2',
528-
'--keyword=npfoo:1c,2,3'),
528+
'--keyword=npfoo:1c,2,3', '--keyword=_:1,2'),
529529
}
530530

531531
for filename, args in snapshots.items():
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Make it possible to override default keywords in :program:`pygettext`.

Tools/i18n/pygettext.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -729,12 +729,15 @@ class Options:
729729

730730
# calculate all keywords
731731
try:
732-
options.keywords = dict(parse_spec(spec) for spec in options.keywords)
732+
custom_keywords = dict(parse_spec(spec) for spec in options.keywords)
733733
except ValueError as e:
734734
print(e, file=sys.stderr)
735735
sys.exit(1)
736+
options.keywords = {}
736737
if not no_default_keywords:
737738
options.keywords |= DEFAULTKEYWORDS
739+
# custom keywords override default keywords
740+
options.keywords |= custom_keywords
738741

739742
# initialize list of strings to exclude
740743
if options.excludefilename:

0 commit comments

Comments
 (0)