By the time being, we have made important progress for internationalizing mailman.
Juan Carlos Rey has prepared a functional demo version of our proposed way to do it. This demos has the new ideas, with messages in english and spanish for the pages.
All proposed ideas in our message dated Fri, 21 May 1999 14:57:39 +0200 with the subject: Re: [Mailman-Developers] features suggestion: languages
have been implemented and work as described there.
We have not translated, yet, the hardcoded message strings, but the code need to change their values depending on language is ready to be used.
Now we are trying to reconciliate our chages with a CVS tree we have downloaded this morning. (Yes, we didn't know how to use CVS when we started).
You can test the web interface at: http://joker.sci.uma.es/mailman/listinfo/test The list main language is spanish (español) The admin password is "ejemplo" (be gentle, please :) We have concentrated on function, not on aspect, so it is a bit crude.
The use of a message catalog in different languages will have a big impact on main Mailman development, so we would need your input on such an issue. We have found two ways for doing this: Using GNU gettext (which does not work completely in python and has some other implications, see attached conversation) our KISS approach: python modules with the messages in them. Like this: --- BEGIN es.py --- ErrorInvalidPasswd = 'Error: clave incorrecta' ListNotFound = 'la lista no se encuentra: %s' DEFAULT_MSG_FOOTER = """_______________________________________________ lista de distribucion %(real_name)s - %(real_name)s@%(host_name)s %(web_page_url)slistinfo/%(_internal_name)s """ --- END es.py ---
To use the message catalog: import Catalog Msg = Catalog.MsgLang('es') print Msg.get('ErrorInvalidPasswd')
Attached conversation with Dan Ohnesorg, who is interested in working in the project. ------ START --------
Acording with the article, there are many parts to consider:
- Character Sets
- Message Output
- Character Input and display
I think the areas we should consider are:
- Messages output to end user
- Character set
Sure. I agree.
- Easy to mantain, once parsed with 'xgettext', and compiled to .mo file, with 'tupdate' is easy to update the catalog
- new version of software can run with old catalogs and only some part of meesages is not translated - for developper of software is gettext clean to undestand a simple to include
- A little complicated to generate. It must be, parsed, and installed. It also must be updated 'at hand' if catalog changes.
- At the moment, it is not fully operational for python
It is the biggest problem.
- Take into account locales, mailman will be executed on the server, language s a parameter in a form.
Your software can switch locales indepently of server. For
example in midnight commander are locales switched before parsing any output of sub processes
Catalog in lang.py
- More difficult to mantain up to date.
- More works for mailman developers
- It's very easy to create messages we need (multilines)
- No need to be generated, once modified source files, it is ready for use. Changes are in effect once saved the file.
- We can abstract inside lang.py operations we need for some languages, whenever it gives the apropiate value to messages.
I have given a glimpse to 'wstring' and 'intl' modules. I really don't know how to use 'wstring' for our purpose. Please, if you know how to use it, let me know too.
I dont know how to use unicode in mail. I think it is not that what we now need. Unicode is fine in databses, printing etc, but mail with unicode charset is probably unredable by any client.
intl module is probaly good. I will look on it and i will say more later.
Your modules are working, but I am not sure, If they are acceptable for mailman developers.
[[]]] ( O O ) #----------------0000--(_)--0000---------------# | Juan Carlos Rey Anaya (email@example.com) | | Servicio Central de informática | | Universidad de Málaga - España | #----------------------------------------------# # Solo se que cada vez se menos :-| # #----------------------------------------------#