Hi Terry @tjreedy I have spent a few days exploring idlelib and gettext and I am very willing to pursue this and help you see it through. I compiled a list of technical difficulties to overcome from the posts you linked:
- Compatibility of translations for each Windows/Mac/Unix/etc
- Labels are scattered throughout codebase and other structural concerns
- Distributing and organizing translations / .po and .mo files / release updates
- Writing a bunch of tests and docs
- Boolean flag and shortcut keys (! and _)
Regarding 2, I highly suggest using gettext the standard way rather than translating within
idlelib.editor.EditorWindow.fill_menus. The latter would not be extensible for the translation of the rest of the IDLE. Also, gettext is already designed to minimize impact of i18n on program sources and makes it super easy for developers to add/remove translations. Furthermore, gettext translations would not make the code more messy, rather, it should make it easier to restructure the code, since it helps us explicitly keep track of all the labels. It is a very well established method for translating and deviating from it will probably introduce many more problems.
For 3 and 4, I have very limited experience in these but I am feeling enthusiastic to learn the processes. And regarding 1, I have access to each GNU/Linux, Windows and MacOS, so I can quickly have a feel for whether the changes I make has worked.
I have been playing around with 5 and currently working on a few solutions to consider. It doesn’t seem to be too huge of a problem.
After reading through all those links as well as many other idle-dev threads related to i18n and I really think this should be done once and for all. I was also reading some other really old posts and found it funny to see all the heated arguments about adding unicode idents, given that I grew up with a Python that had them from the start. I’m just really interested about the internationalization of software. I have made a pull request to cpython before, but have not really made a proper contribution and this seems like a perfect opportunity for me to learn. By the way, I am only halfway through the GNU gettext manual and I’m simply amazed at how they really thought everything through.