babel icon indicating copy to clipboard operation
babel copied to clipboard

Update keywords for extraction of dpgettext and dnpgettext

Open mardiros opened this issue 4 months ago • 0 comments

At the moment, the localization methods dpgettext and dnpgettext are not properly handled by extract command.

It raises KeyError exception.

except if you pass explicitly --keyword dpgettext:2c,3 --keyword dnpgettext:2c,3,4

This MR fixed the issue by declaring the default position parameter of those methods.

Traceback raised:

$ uv run pybabel extract -F tests/functionals/i18n/babel.ini --input-dirs tests/functionals/ -o tests/functionals/i18n/mydomain.pot
extracting messages from tests/functionals/i18n/test_l10n.py (encoding="utf-8")
Traceback (most recent call last):
  File "/home/guillaume/workspace/git/xcomponent/.venv/bin/pybabel", line 8, in <module>
    sys.exit(main())
             ~~~~^^
  File "/home/guillaume/workspace/git/xcomponent/.venv/lib/python3.13/site-packages/babel/messages/frontend.py", line 998, in main
    return CommandLineInterface().run(sys.argv)
           ~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^
  File "/home/guillaume/workspace/git/xcomponent/.venv/lib/python3.13/site-packages/babel/messages/frontend.py", line 924, in run
    return cmdinst.run()
           ~~~~~~~~~~~^^
  File "/home/guillaume/workspace/git/xcomponent/.venv/lib/python3.13/site-packages/babel/messages/frontend.py", line 522, in run
    for filename, lineno, message, comments, context in extracted:
                                                        ^^^^^^^^^
  File "/home/guillaume/workspace/git/xcomponent/.venv/lib/python3.13/site-packages/babel/messages/extract.py", line 217, in extract_from_dir
    yield from check_and_call_extract_file(
    ...<8 lines>...
    )
  File "/home/guillaume/workspace/git/xcomponent/.venv/lib/python3.13/site-packages/babel/messages/extract.py", line 282, in check_and_call_extract_file
    for message_tuple in extract_from_file(
                         ~~~~~~~~~~~~~~~~~^
        method, filepath,
        ^^^^^^^^^^^^^^^^^
    ...<3 lines>...
        strip_comment_tags=strip_comment_tags,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    ):
    ^
  File "/home/guillaume/workspace/git/xcomponent/.venv/lib/python3.13/site-packages/babel/messages/extract.py", line 324, in extract_from_file
    return list(extract(method, fileobj, keywords, comment_tags,
                        options, strip_comment_tags))
  File "/home/guillaume/workspace/git/xcomponent/.venv/lib/python3.13/site-packages/babel/messages/extract.py", line 457, in extract
    specs = keywords[funcname] or None if funcname else None
            ~~~~~~~~^^^^^^^^^^
KeyError: 'dpgettext'

mardiros avatar Oct 17 '25 21:10 mardiros