Open ankitd33 opened 8 months ago
I've been looking into this issue. It appears that it only occurs when multiple keywords have the same function name and the functions aren't differentiated by using a 't' argument. For instance, say that your input data is:
msg1 = translate("bunny", "bunnies", len(bunnies))
msg2 = translate('follow')
You will get the desired results if you run pybabel extract with
--keywords=translate:1,1t --keywords=translate:1,2,3t
instead of
--keywords=translate:1 --keywords=translate:1,2
The keywords data structure isn't currently set up to allow multiple keywords with the same function name unless they are differentiated with a 't' argument. It could probably be extended to allow for this. Or would it be better to detect duplicate keywords like this and give an error/warning prompting the user to add 't' arguments?
FWIW xgettext
allows it without raising any warnings:
xgettext -o - --keyword=translate:1 --keyword=translate:1,2 test.py
Based on that, I think we should support it as well
Overview Description
When running pybabel extract
pybabel extract -F CONFIG_FILEPATH -o POT_FILEPATH REPO_T_CHECK --keywords=translate:1 --keywords=translate:1,2 -c TRANSLATORS --no-wrap --no-default-keywords
it only extracts strings in the first input in translate and not both the first input and ones where it has two inputs to treat them as plurals
Both the other commands (below) work perfectly and ideally when I run the above command I want a superset of the two with the second keywords overwriting the first if the same msgid shows up in that one
pybabel extract -F CONFIG_FILEPATH -o POT_FILEPATH REPO_T_CHECK --keywords=translate:1,2 -c TRANSLATORS --no-wrap --no-default-keywords
pybabel extract -F CONFIG_FILEPATH -o POT_FILEPATH REPO_T_CHECK --keywords=translate:1 -c TRANSLATORS --no-wrap --no-default-keywords
Steps to Reproduce
Run pybabel extract with two keywords, one to extract normal strings and one to extract strings and plurals
Actual Results
Essentially
pybabel extract -F CONFIG_FILEPATH -o POT_FILEPATH REPO_T_CHECK --keywords=translate:1 --keywords=translate:1,2 -c TRANSLATORS --no-wrap --no-default-keywords
does the same as running
pybabel extract -F CONFIG_FILEPATH -o POT_FILEPATH REPO_T_CHECK --keywords=translate:1 -c TRANSLATORS --no-wrap --no-default-keywords
Expected Results
Reproducibility
always
Additional Information