Issue 8502: support plurals in pygettext (original) (raw)

Created on 2010-04-23 01:09 by jhg, last changed 2022-04-11 14:57 by admin. This issue is now closed.

Files
File name Uploaded Description Edit
gettext.txt.patch jhg,2010-04-23 01:09
pygettext.py.patch jhg,2010-06-12 04:26
helloworld.py jhg,2010-06-12 04:32
patch-8502.txt akuchling,2013-11-11 22:13 review
Messages (10)
msg103988 - (view) Author: jhg (jhg) Date: 2010-04-23 01:09
Wanting to figure out how to support multiple languages in my applications I read the gettext documentation and got to the part saying one should use pygettext.py to create .po files. After copying that program from the python SVN repository I later found out that it cannot cope with plurals, i.e. ngettext(). xgettext can do that just fine. Since pygettext.py was not modified in 5 years I propose changing the documentation of gettext to encourage xgettext rather than pygettext.py. My proposed changes are attached (edited as text file; I do not know how to convert it to a webpage and hence did not test that). I used the 2.7b1 documentation, but the patch appears to apply just as well to the 3.1.2 documentation.
msg107559 - (view) Author: Éric Araujo (eric.araujo) * (Python committer) Date: 2010-06-11 16:36
Does the fixing of #5464 solve your problem?
msg107597 - (view) Author: jhg (jhg) Date: 2010-06-11 22:55
It looks like msgfmt.py now parses 'msgid_plural' but pygettext.py does not produce these. It is still oblivious to plurals as produced by ngettext(). My originally proposed change to the documentation was to point people to the GNU xgettext/msgfmt tools rather than the pygettext.py/msgfmt.py pair because of this limitation. This has not changed.
msg107599 - (view) Author: Éric Araujo (eric.araujo) * (Python committer) Date: 2010-06-11 22:57
What about the more ambitious approach, fixing pygettext?
msg107625 - (view) Author: jhg (jhg) Date: 2010-06-12 04:26
Since the GNU tools work fine I had no reason to look into pygettext.py. Now I did it anyway... I added ngettext to the default keywords. Any function that is keyworded and supplied more than 2 keywords is treated like ngettext. Also simple constructs like _("foo" + 10*"bar") are now possible. Patch attached.
msg107626 - (view) Author: jhg (jhg) Date: 2010-06-12 04:32
A simple test case for the earlier changes. run pygettext.py and msgfmt.py and move the .mo file to ./locale/de/LC_MESSAGES/helloworld.mo to see that it prints the localized strings.
msg151387 - (view) Author: Éric Araujo (eric.araujo) * (Python committer) Date: 2012-01-16 16:36
Thank you for making a patch. I’ve been busy and could not find time to look at it, but after I add a testing machinery for scripts like pygettext I will look into this.
msg202653 - (view) Author: A.M. Kuchling (akuchling) * (Python committer) Date: 2013-11-11 22:13
Here's an updated version of the documentation patch, that doesn't encourage using pygettext so much. It also updates Barry Warsaw's e-mail address and makes some other small edits.
msg203397 - (view) Author: A.M. Kuchling (akuchling) * (Python committer) Date: 2013-11-19 16:12
Applied my documentation patch. New changeset 4fe87b5df2d0 by Andrew Kuchling in branch '3.3': #1098749: re-word gettext docs to not encourage using pygettext so much. http://hg.python.org/cpython/rev/4fe87b5df2d0
msg221023 - (view) Author: Mark Lawrence (BreamoreBoy) * Date: 2014-06-19 21:22
Patch has been applied so this can be closed.
History
Date User Action Args
2022-04-11 14:57:00 admin set github: 52748
2020-05-31 13:46:51 serhiy.storchaka set status: open -> closedresolution: fixedstage: needs patch -> resolved
2019-04-26 17:24:29 BreamoreBoy set nosy: - BreamoreBoy
2014-12-31 16:22:09 akuchling set nosy: - akuchling
2014-06-19 21:22:05 BreamoreBoy set nosy: + BreamoreBoymessages: +
2013-11-19 16:12:41 akuchling set messages: +
2013-11-11 22:13:04 akuchling set files: + patch-8502.txtnosy: + akuchlingmessages: +
2012-01-16 16:36:44 eric.araujo set assignee: docs@python -> dependencies: + Add tests for some scripts in Tools/scriptstitle: proposal: encourage xgettext rather than pygettext.py in gettext docs -> support plurals in pygettextnosy: - georg.brandlmessages: + stage: needs patch
2010-10-29 10:07:21 admin set assignee: georg.brandl -> docs@python
2010-06-12 04:32:47 jhg set files: + helloworld.pymessages: +
2010-06-12 04:26:50 jhg set files: + pygettext.py.patchmessages: +
2010-06-11 22:57:49 eric.araujo set messages: +
2010-06-11 22:55:26 jhg set messages: +
2010-06-11 16:36:41 eric.araujo set nosy: + eric.araujomessages: +
2010-04-23 01:10:05 jhg create