From dachinetwanadoo.fr@wanadoo.fr Mon Nov 6 16:49:55 2000 From: dachinetwanadoo.fr@wanadoo.fr (Dominique) Date: Mon, 6 Nov 2000 17:49:55 +0100 Subject: [Mailman-i18n] please procure us one french translation! thanks Message-ID: <002801c0481a$691669c0$0a00000a@fti2p27t44fti> C'est un message de format MIME en plusieurs parties. ------=_NextPart_000_0017_01C04819.F8E7D8A0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable =20 hello manager for mailing list! LET US BETTER UNDERSTEEN IF YOU SEND US ONE PERSONALISED ANSWER IN THE = FRENCH TRANSLATION! THANKS DACHI CHAIRMAN H.C. 9.40 PM TAHITI-TIME ------=_NextPart_000_0017_01C04819.F8E7D8A0 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
 
 
 
          &nbs= p; =20
 
 
 
hello manager for mailing = list!
LET US BETTER UNDERSTEEN IF YOU SEND US = ONE=20 PERSONALISED ANSWER IN THE FRENCH TRANSLATION!
THANKS
DACHI
CHAIRMAN H.C.
9.40 PM=20 TAHITI-TIME
------=_NextPart_000_0017_01C04819.F8E7D8A0-- From diego@id-agora.com Wed Nov 8 15:08:12 2000 From: diego@id-agora.com (Diego Brouard) Date: Wed, 8 Nov 2000 15:08:12 +0000 Subject: [Mailman-i18n] =?iso-8859-1?Q?traducci=F3n_al_espa=F1ol?= Message-ID: <20001108150812.A20722@valhalla.id-agora.net> hi, we are begining to work with Mailman inside our server, and we are going to traduce the Mailman archives to spanish. If someone has do it now, or is working in the same way, please contact me, so we can work together. Thanks, Gracias Greetings, Saludos Diego Brouard From jcrey@uma.es Wed Nov 8 17:46:52 2000 From: jcrey@uma.es (Juan Carlos Rey Anaya) Date: Wed, 08 Nov 2000 18:46:52 +0100 Subject: [Mailman-i18n] =?iso-8859-1?Q?traducci=F3n?= al =?iso-8859-1?Q?espa=F1ol?= References: <20001108150812.A20722@valhalla.id-agora.net> Message-ID: <3A09918C.958025E6@uma.es> Diego Brouard wrote: > = > hi, we are begining to work with Mailman inside our server, and we are = going to traduce > the Mailman archives to spanish. If someone has do it now, or is workin= g in the same way, > please contact me, so we can work together. Where were you two weeks ago?. We are going (soon, very soon...) to start to internationalize mailman 2.0. I must suppose you are willing to help :-) I shall send you homework ;-) Seeing that you are going to translate templates, it must be noted that spanish templates are translated yet. I will send you translated templates so you can upgrade them. Cheers -- = ___ / F \ [[[]]]] ( O O ) #----------------0000--(_)--0000---------------# | Juan Carlos Rey Anaya (jcrey@uma.es) | | Servicio Central de inform=E1tica | | Universidad de M=E1laga - Espa=F1a | #----------------------------------------------# # Solo se que cada vez se menos :-| # #----------------------------------------------# From jcrey@uma.es Wed Nov 8 19:06:39 2000 From: jcrey@uma.es (Juan Carlos Rey Anaya) Date: Wed, 08 Nov 2000 20:06:39 +0100 Subject: [Mailman-i18n] Mailman i18n - First piece Message-ID: <3A09A43F.140555D2@uma.es> On Wed, 25 Oct 2000, Barry A. Warsaw wrote: > = > One piece is marking all the translatable text in the Mailman sources. > You should work on this last and don't spend much time on it. I'm > actually starting to do that myself, as I'm playing with the i18n > infrastructure. Hello everybody. I have been reading source files and determining which ones must be marked because they have translatable messages. I resolve to mark the following ones (I have skipped files not related with translation): I ask for mailman developers to confirm. notation: N - new file in version 2, it didn't exist in 1.2, it must be marked from scratch Z - created in internationalization of version 1.2 ? - I really don't know if it should be marked L - Already marked in internationalized 1.2 version - Needs to be upgraded. |-- Mailman | |-- Archiver | | |-- Archiver.py (L) | | |-- HyperArch.py (N?) | | |-- HyperDatabase.py (N?) | | `-L pipermail.py (L) | |-- Autoresponder.py (N) | |-- Bouncer.py (L) | |-- Bouncers | | |-- SimpleMatch.py (N?) | |-- Cgi | | |-- Auth.py (N) | | |-- admin.py (L) | | |-- admindb.py (L) | | |-- edithtml.py (L) | | |-- handle_opts.py (L) | | |-- listinfo.py (L) | | |-- options.py (L) | | |-- private.py (L) | | |-- roster.py (L) | | `-- subscribe.py (L) | |-- Defaults.py (L) | |-- Deliverer.py (L) | |-- Digester.py (L) | |-- GatewayManager.py (L) | |-- HTMLFormatter.py (L) | |-- Handlers | | |-- Acknowledge.py (L) | | |-- CookHeaders.py (L) | | |-- HandlerAPI.py (L) | | |-- Hold.py (L) | | |-- ToDigest.py (L) | | |-- ToUsenet.py (L) | |-- ListAdmin.py (L) | |-- MailCommandHandler.py (L) | |-- MailList.py (L) | |-- Utils.py (L) | |-- htmlformat.py (L) # jcrey # this ones only must be translated/upgraded not marked `-- templates |-- admindbpreamble.html (L) |-- adminsubscribeack.txt (L) |-- adminunsubscribeack.txt (L) |-- admlogin.txt (L) |-- approve.txt (L) |-- bounce.txt (L) |-- checkdbs.txt (L) |-- convert.txt (L) |-- cronpass.txt (L) |-- handle_opts.html (L) |-- headfoot.html (N) |-- help.txt (L) |-- listinfo.html (L) |-- masthead.txt (L) |-- newlist.txt (L) |-- nopass.txt (L) |-- options.html (L) |-- postack.txt (L) |-- postauth.txt (L) |-- postheld.txt (L) |-- reenable.txt (L) |-- refuse.txt (L) |-- roster.html (L) |-- subauth.txt (L) |-- subscribe.html (L) |-- subscribeack.txt (L) |-- userpass.txt (L) |-- verify.txt (L) |-- msgdecorationote.txt (Z) |-- private.txt (Z) I think the process should be like this: I will mark New files (marked as N), and volunteers will upgrade files marked yet in i18n version (marked as L). Volunteers will mark files to be updated (marked as L). I will send to this list, i18n file and file to be marked in order to get the final process easier. Changes should be sent to either my e-mail or to this list. Subsequent changes are subordinated to CVS updates :-( Some informational status... Templates to be updated: ------------------------ - Spanish - Italian (Pioppo Where are you? :-) templates to be translated from scratch --------------------------------------- Remaining languages... Catalog to be updated: ---------------------- - German (last translation done by Peter Muessig-Trapp and company) - Danish (last translation done by Mads Kiilerich) - Italian (last translation done by Pioppo) - Spanish (last translation performed by Eduardo Fernandez Corrales and me) Catalog to be translated from scratch: -------------------------------------- Remaining languages... -------------------------- Work to actual volunteers: -------------------------- 1) F=E9lix S=E1nchez: Archiver.py, pipermail.py and Bouncer.py 2) Omar Walid Llorente: Deliverer.py, Digester.py and GatewayManager.py 3) Eric de Hont: HTMLFormatter.py, Acknowledge.py and CookHeaders.py 4) Diego Brouard: upgrade templates in spanish and translate new file (headfoot.html) 5) Juan C Rey: HyperArch.py, Autoresponder.py and Auth.py More volunteers? Cheers -- = ___ / F \ [[[]]]] ( O O ) #----------------0000--(_)--0000---------------# | Juan Carlos Rey Anaya (jcrey@uma.es) | | Servicio Central de inform=E1tica | | Universidad de M=E1laga - Espa=F1a | #----------------------------------------------# # Solo se que cada vez se menos :-| # #----------------------------------------------# From pioppo@ferrara.linux.it Wed Nov 8 20:44:28 2000 From: pioppo@ferrara.linux.it (Simone Piunno) Date: Wed, 8 Nov 2000 21:44:28 +0100 Subject: [Mailman-i18n] Mailman i18n - First piece In-Reply-To: <3A09A43F.140555D2@uma.es>; from jcrey@uma.es on Wed, Nov 08, 2000 at 08:06:39PM +0100 References: <3A09A43F.140555D2@uma.es> Message-ID: <20001108214428.G652@abulafia.ferrara.linux.it> mercoledì, 08 novembre 2000 alle 20:06:39, Juan Carlos Rey Anaya ha scritto: > Templates to be updated: > ------------------------ > - Italian (Pioppo Where are you? :-) > Catalog to be updated: > ---------------------- > - Italian (last translation done by Pioppo) here I am! :) I can update my previous work and I'm waiting instructions. For templates I can start from the standard MM 2.0 tar.gz but for the catalog I have to wait your work. Is this correct? -- If the human brain were so simple that we could understand it, we would be so simple we couldn't. From barry@wooz.org Thu Nov 9 01:32:05 2000 From: barry@wooz.org (Barry A. Warsaw) Date: Wed, 8 Nov 2000 20:32:05 -0500 (EST) Subject: [Mailman-i18n] Mailman i18n - First piece References: <3A09A43F.140555D2@uma.es> Message-ID: <14857.65173.887119.11002@anthem.concentric.net> [Aside: I've created a Wiki page on the i18n effort. Please see http://www.zope.org/Members/bwarsaw/MailmanDesignNotes/InternationalizedMailman for details, and remember! Anybody can edit these pages.] >>>>> "JCRA" == Juan Carlos Rey Anaya writes: JCRA> I have been reading source files and determining which ones JCRA> must be marked because they have translatable messages. JCRA> I resolve to mark the following ones (I have skipped files JCRA> not related with translation): I ask for mailman developers JCRA> to confirm. Cool. I notice that you left all the bin scripts out. I wanted to get some personal experience marking and i18n'ing Mailman so I actually started with those and the cron scripts. As you know I'm also planning to require Python 2.0 for Mailman 2.1, so I've been rewriting some of these scripts to use the friendlier Python 2.0 features. I have spent a little time trying to mark files inside the Mailman dir, but not much really. Fortunately, I think our efforts overlap nicely. I think the way to proceed is to get the marking diffs into my tree asap, so that I can continue with my Python-2.0-ification. I need to integrate your markings first because otherwise I won't be able to apply your patches to my tree. So one question is whether you can split the marking changes from the other changes you've made to support i18n? One suggestion then would be for you to /not/ mark any files outside of the Mailman dir. I'll take care of those, and then we can fix any mistakes I make later. Second, don't mark any files inside Mailman that you haven't already marked (i.e. any that you labeled `N' as new for version 2). Similarly for the files you labeled `?'. I will do these. Third, any file that you labeled `L', that you've already marked for 1.2, you should go ahead and update those for Mailman 2.0. I will not touch those until I've integrated your patches. For the templates that just need translating, yes, please go ahead and do those. I think realistically, revamping the UI will likely be a 2.2 project. JCRA> I think the process should be like this: I will mark New JCRA> files (marked as N), and volunteers will upgrade files JCRA> marked yet in i18n version (marked as L). See above. Don't mark `N' or `?' files, but do update `L' files. | Templates to be updated | templates to be translated from scratch | Catalog to be updated: | Catalog to be translated from scratch: Okay, looks good. -Barry From barry@wooz.org Thu Nov 9 01:39:34 2000 From: barry@wooz.org (Barry A. Warsaw) Date: Wed, 8 Nov 2000 20:39:34 -0500 (EST) Subject: [Mailman-i18n] Internationalized Mailman References: <14838.25283.257870.198447@anthem.concentric.net> Message-ID: <14858.86.607212.192998@anthem.concentric.net> BAW> One piece is marking all the translatable text in the BAW> Mailman sources. You should work on this last and don't BAW> spend much time on it. I'm actually starting to do that BAW> myself, as I'm playing with the i18n infrastructure. VG> This is the cornerstone of the I18N effort. The problem is VG> that it can block the testing of the other pieces. Not necessarily. We don't have to have absolutely all of the code marked to start integrating the pieces and making sure the infrastructure works as intended. VG> This part has, also, been done with 1.2, which we have VG> successfully put into production due to managerial decisions VG> in our University. It works like charm, except some glitches VG> that Juan C. has patched. Cool! VG> To get this functionallity we have VG> done the following changes and additions: | + To the list object: | - Added 'preferred_language' attribute, for the list default | language | - Added 'language' dictionary with the users' preferred language, | the user mailaddress is the key to get the language she | has set for the list. | - Added the neccesary methods for setting and getting these. | - Added a method for listing the available languages for the list. Looks good. | + Created functions in Utilites for: | - Getting the server available languages. | - Getting the language descriptions. | - Getting the language charset. Looks good. | + HTML formatting. | - Add the necesary code for generating selects. Cool. | + Default.py | - Some Barry Warsaw, decided to put the common code for language | initialization at the bottom of this module. :) | + Showering all over the code. | - Added the necesary changes for language selection. Okay, I'd definitely like to see this part. | + Storage. | - Creating directories for holding language specific files in | every list. | - Creating directory hierarchy for catalogs and templates. And this. | + Support scripts. | - newlang, to add languages to a list. | - rmlang, opposite of above. Good. | + gettext.py | - Modify to addapt to our requirements. (Changes sent to author). Okay. Here we want to use Python 2.0's gettext module. If there are problems with that, then we want to fix it (and if necessary, ship the fixed version in pythonlib for a while). Mailman is going to be one of the first Python applications I can think of that will be internationalized, so it's a guinea pig for Python's i18n support too! VG> As you can see this is a surgeon's task. This part must be VG> carefully done by a very reduced team ( = JCR+VG :) Completely agree! And I'm going to have to spend some serious time integrating and proofing it all too. I have to understand how it all works. That's where breaking it down into the smallest cohesive chunks possible will really help. VG> We have a good team of volunteers for some languages, which VG> have already done translations of the .po files for 1.2 into VG> danish, english, german, italian, spanish and mostly VG> czec. Some others have shown interest in languages as VG> gallician, basque, japanesse, brazilian/portuguesse and VG> dutch. We think this could proceed in parallel with the second VG> piece, of course, it cannot start before we have done the VG> first piece. Awesome. -Barry From jcrey@uma.es Thu Nov 9 13:38:29 2000 From: jcrey@uma.es (Juan Carlos Rey Anaya) Date: Thu, 09 Nov 2000 14:38:29 +0100 Subject: [Mailman-i18n] Mailman i18n - First piece References: <3A09A43F.140555D2@uma.es> <20001108214428.G652@abulafia.ferrara.linux.it> Message-ID: <3A0AA8D4.79086CA8@uma.es> Simone Piunno wrote: > = > here I am! :) Hello again ;-) > I can update my previous work and I'm waiting instructions. Well, because you already have italian templates, you can start to upgrade templates. You had i18n stuff inside v1.2 templates, so (I suppose) you have to correct minor changes. > For templates I can start from the standard MM 2.0 tar.gz I will send you the ones I have here. I'm updating CVS every morning. > but for the catalog I have to wait your work. > Is this correct? Correct Cheers -- = ___ / F \ [[[]]]] ( O O ) #----------------0000--(_)--0000---------------# | Juan Carlos Rey Anaya (jcrey@uma.es) | | Servicio Central de inform=E1tica | | Universidad de M=E1laga - Espa=F1a | #----------------------------------------------# # Solo se que cada vez se menos :-| # #----------------------------------------------# From jcrey@uma.es Thu Nov 9 13:43:54 2000 From: jcrey@uma.es (Juan Carlos Rey Anaya) Date: Thu, 09 Nov 2000 14:43:54 +0100 Subject: [Mailman-i18n] Mailman i18n - First piece References: Message-ID: <3A0AAA1A.C5692DBF@uma.es> Dan Ohnesorg wrote: > = > On Wed, 8 Nov 2000, Juan Carlos Rey Anaya wrote: > = > > templates to be translated from scratch > > --------------------------------------- > > Remaining languages... > = > Czech will be ready soon, but the templates chnged betwwen 1.x and 2.x = is > there some internationalized templates in 2.x format? No > > More volunteers? > = > Yes, I Ok. I will send you v1.2 English templates. Your work consist in upgrading to v2.0 templates and inserting i18n stuff inside templates (and of course translate :-D) Catalog will be forward. Cheers -- = ___ / F \ [[[]]]] ( O O ) #----------------0000--(_)--0000---------------# | Juan Carlos Rey Anaya (jcrey@uma.es) | | Servicio Central de inform=E1tica | | Universidad de M=E1laga - Espa=F1a | #----------------------------------------------# # Solo se que cada vez se menos :-| # #----------------------------------------------# From jcrey@uma.es Thu Nov 9 14:07:39 2000 From: jcrey@uma.es (Juan Carlos Rey Anaya) Date: Thu, 09 Nov 2000 15:07:39 +0100 Subject: [Mailman-i18n] =?iso-8859-1?Q?traducci=F3n?= al =?iso-8859-1?Q?espa=F1ol?= References: <20001108150812.A20722@valhalla.id-agora.net> <3A09918C.958025E6@uma.es> <00110816371901.04526@lmauro.home.usb.ve> Message-ID: <3A0AAFAB.BDB26C2A@uma.es> Leo Mauro wrote: > = > Would you mind keeping me on the loop? Welcome! Your work consists marking: HandlerAPI.py, Hold.py and ToDigest.py I shall send to your private e-mail both v1.2 i18n files and v2.0 ones. Cheers -- = ___ / F \ [[[]]]] ( O O ) #----------------0000--(_)--0000---------------# | Juan Carlos Rey Anaya (jcrey@uma.es) | | Servicio Central de inform=E1tica | | Universidad de M=E1laga - Espa=F1a | #----------------------------------------------# # Solo se que cada vez se menos :-| # #----------------------------------------------# From jcrey@uma.es Thu Nov 9 14:24:34 2000 From: jcrey@uma.es (Juan Carlos Rey Anaya) Date: Thu, 09 Nov 2000 15:24:34 +0100 Subject: [Mailman-i18n] =?iso-8859-1?Q?traducci=F3n?= al =?iso-8859-1?Q?espa=F1ol?= References: <20001108150812.A20722@valhalla.id-agora.net> Message-ID: <3A0AB3A2.BC793850@uma.es> "Jose A. Accino" wrote: > = > >2.0. I must suppose you are willing to help :-) > = > Hi, me too :-) Ok. You work consists to mark: ToUsenet.py, ListAdmin.py and mailCommandHandler.py Cheers -- = ___ / F \ [[[]]]] ( O O ) #----------------0000--(_)--0000---------------# | Juan Carlos Rey Anaya (jcrey@uma.es) | | Servicio Central de inform=E1tica | | Universidad de M=E1laga - Espa=F1a | #----------------------------------------------# # Solo se que cada vez se menos :-| # #----------------------------------------------# From yua@nycap.rr.com Thu Nov 9 14:47:21 2000 From: yua@nycap.rr.com (Alex Yu) Date: Thu, 9 Nov 2000 09:47:21 -0500 Subject: [Mailman-i18n] Hi, and Traditional Chinese (big5) Message-ID: Hello, I just subscribed to the list, and I would like to help to make mailman available in Traditional Chinese (big5). Please fulfill me information ;) Best, Alex From jcrey@uma.es Thu Nov 9 15:57:49 2000 From: jcrey@uma.es (Juan Carlos Rey Anaya) Date: Thu, 09 Nov 2000 16:57:49 +0100 Subject: [Mailman-i18n] Mailman i18n - First piece References: <3A09A43F.140555D2@uma.es> <012101c049dc$2186f7a0$0200a8c0@in.nederland.net> Message-ID: <3A0AC97D.A7B441F5@uma.es> Sander Steffann wrote: > = > Hi, > I can do some of the work for a Dutch translation... > Sander Steffann. Ok. I will send you v1.2 English templates. Besides translation templates into Dutch, your work consist in upgrading to v2.0 templates and inserting i18n stuff inside templates Cheers -- = ___ / F \ [[[]]]] ( O O ) #----------------0000--(_)--0000---------------# | Juan Carlos Rey Anaya (jcrey@uma.es) | | Servicio Central de inform=E1tica | | Universidad de M=E1laga - Espa=F1a | #----------------------------------------------# # Solo se que cada vez se menos :-| # #----------------------------------------------# From jcrey@uma.es Thu Nov 9 19:21:22 2000 From: jcrey@uma.es (Juan Carlos Rey Anaya) Date: Thu, 09 Nov 2000 20:21:22 +0100 Subject: [Mailman-i18n] Re: Portuguese translation References: <3A09A43F.140555D2@uma.es> <3A09E11F.30296D3C@bewnet.com.br> Message-ID: <3A0AF932.D1B6A336@uma.es> Paulo Schreiner wrote: > = > I'm a volunteer to do the brazilian portuguese (pt_BR) translation as s= oon > as the templates are ready. > = > Sincerly, > Paulo Schreiner Welcome! I will send you v1.2 spanish templates. Besides translation templates into Portuguese, your work consist in upgrading to v2.0 templates and inserting i18n stuff inside templates. PD: i18n stuff is already contained in v1.2 templates. Cheers -- = ___ / F \ [[[]]]] ( O O ) #----------------0000--(_)--0000---------------# | Juan Carlos Rey Anaya (jcrey@uma.es) | | Servicio Central de inform=E1tica | | Universidad de M=E1laga - Espa=F1a | #----------------------------------------------# # Solo se que cada vez se menos :-| # #----------------------------------------------# From jcrey@uma.es Thu Nov 9 20:39:44 2000 From: jcrey@uma.es (Juan Carlos Rey Anaya) Date: Thu, 09 Nov 2000 21:39:44 +0100 Subject: [Mailman-i18n] Mailman i18n - First piece References: <3A09A43F.140555D2@uma.es> <14857.65173.887119.11002@anthem.concentric.net> Message-ID: <3A0B0B90.252BC900@uma.es> "Barry A. Warsaw" wrote: > = > I notice that you left all the bin scripts out. I wanted to get some > personal experience marking and i18n'ing Mailman so I actually started > with those and the cron scripts. Of course, feel like your own home :-) > = > Fortunately, I think our efforts overlap nicely. I think the way to > proceed is to get the marking diffs into my tree asap, so that I can > continue with my Python-2.0-ification. I need to integrate your > markings first because otherwise I won't be able to apply your patches > to my tree. So one question is whether you can split the marking > changes from the other changes you've made to support i18n? Well, I have said to contributors ONLY to mark. Other stuff like template selection or language selections shouldn't be done. That stuff will be added in a latter stage. Don't worry. I will send patches as soon as I have marked files. = So the answer is Yes :-) > = > One suggestion then would be for you to /not/ mark any files outside > of the Mailman dir. I'll take care of those, and then we can fix any > mistakes I make later. All right. > = > Second, don't mark any files inside Mailman that you haven't already > marked (i.e. any that you labeled `N' as new for version 2). > Similarly for the files you labeled `?'. I will do these. Ok. -------------------------- Work to actual volunteers: -------------------------- 5) Juan C Rey: admin.py, admindb.py and edithtml.py > = > Third, any file that you labeled `L', that you've already marked for > 1.2, you should go ahead and update those for Mailman 2.0. I will not > touch those until I've integrated your patches. > = > For the templates that just need translating, yes, please go ahead and > do those. I think realistically, revamping the UI will likely be a > 2.2 project. Ok. We will try to be faster than we can, won't be guys? :-) Cheers -- = ___ / F \ [[[]]]] ( O O ) #----------------0000--(_)--0000---------------# | Juan Carlos Rey Anaya (jcrey@uma.es) | | Servicio Central de inform=E1tica | | Universidad de M=E1laga - Espa=F1a | #----------------------------------------------# # Solo se que cada vez se menos :-| # #----------------------------------------------# From barry@wooz.org Thu Nov 9 20:44:23 2000 From: barry@wooz.org (Barry A. Warsaw) Date: Thu, 9 Nov 2000 15:44:23 -0500 (EST) Subject: [Mailman-i18n] Mailman i18n - First piece References: <3A09A43F.140555D2@uma.es> <14857.65173.887119.11002@anthem.concentric.net> <3A0B0B90.252BC900@uma.es> Message-ID: <14859.3239.912254.91732@anthem.concentric.net> Excellent all around! I look forward to the patches and will continue to work in the background on the files outside the Mailman/ dir. Thanks! -Barry From tkikuchi@is.kochi-u.ac.jp Thu Nov 9 23:08:01 2000 From: tkikuchi@is.kochi-u.ac.jp (Tokio Kikuchi) Date: Fri, 10 Nov 2000 08:08:01 +0900 Subject: [Mailman-i18n] I18N-Japanese Message-ID: <3A0B2E51.A32C6988@is.kochi-u.ac.jp> Hi all, Hi, Juan. Thanks for invitation to i18n team work. Currently, I am on another work to start up a mailing list for Apache User Group in Japan and that will be the first major implementation of Mailman in Japan. So, I am sorry but I will not be able to contribute marking up *.py files but I will be ready to submit japanese translations when i18n Mailman is making its shape. Regards, Tokio From jcrey@uma.es Fri Nov 10 08:19:15 2000 From: jcrey@uma.es (Juan Carlos Rey Anaya) Date: Fri, 10 Nov 2000 09:19:15 +0100 Subject: [Mailman-i18n] Hi, and Traditional Chinese (big5) References: Message-ID: <3A0BAF83.F8279FC3@uma.es> Alex Yu wrote: > = > Hello, > = > I just subscribed to the list, and I would like to help to make mailman= > available in Traditional Chinese (big5). Please fulfill me information= ;) Yes, I can send you chinesse templates so, you can start translation. But the problem is that I have no dealt ever with Chinesse or similar translations and I don't know if some 'wizad' must be done. I have request help to Tokio Kikuchi , he has done japanese translation, he will send me some files in order I can know how get it work. Any help about this subject will be VERY appreciated. There is another volunteer interested in Chinesse translation. . Cheers -- = ___ / F \ [[[]]]] ( O O ) #----------------0000--(_)--0000---------------# | Juan Carlos Rey Anaya (jcrey@uma.es) | | Servicio Central de inform=E1tica | | Universidad de M=E1laga - Espa=F1a | #----------------------------------------------# # Solo se que cada vez se menos :-| # #----------------------------------------------# From yua@nycap.rr.com Fri Nov 10 16:33:17 2000 From: yua@nycap.rr.com (Alex Yu) Date: Fri, 10 Nov 2000 11:33:17 -0500 Subject: [Mailman-i18n] Hi, and Traditional Chinese (big5) In-Reply-To: <3A0BAF83.F8279FC3@uma.es> Message-ID: > Yes, I can send you chinesse templates so, you can start translation. > But the problem is that I have no dealt ever with Chinesse or similar Dear Juan, How does i18n work? Does user have to specify in configure script? Like --enable-language-big5? The only thing I think that have to implement is charset on every page in configure and Makefile? Like to support big5. Best, Alex From jcrey@uma.es Fri Nov 10 19:59:20 2000 From: jcrey@uma.es (Juan Carlos Rey Anaya) Date: Fri, 10 Nov 2000 20:59:20 +0100 Subject: [Mailman-i18n] Example marking file Message-ID: <3A0C5398.F3952C33@uma.es> This is a multi-part message in MIME format. --------------BFB93F3D3F601EC069B326B6 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: quoted-printable I send you a piece of file with marking already done, in order contributors can note how to do markings. I have tried (where possible) to take apart HTML code. Cheers PD: There may be errors, I have done it in a hurry. -- = ___ / F \ [[[]]]] ( O O ) #----------------0000--(_)--0000---------------# | Juan Carlos Rey Anaya (jcrey@uma.es) | | Servicio Central de inform=E1tica | | Universidad de M=E1laga - Espa=F1a | #----------------------------------------------# # Solo se que cada vez se menos :-| # #----------------------------------------------# --------------BFB93F3D3F601EC069B326B6 Content-Type: text/plain; charset=iso-8859-1; name="admin.py" Content-Transfer-Encoding: quoted-printable Content-Disposition: inline; filename="admin.py" if category not in map(lambda x: x[0], CATEGORIES): category =3D 'general' # is the request for variable details? varhelp =3D None if cgidata.has_key('VARHELP'): varhelp =3D cgidata['VARHELP'].value elif cgidata.has_key('request_login') and \ os.environ.get('QUERY_STRING'): # POST methods, even if their actions have a query string, do= n't # get put into FieldStorage's keys :-( qs =3D cgi.parse_qs(os.environ['QUERY_STRING']).get('VARHELP'= ) if qs and type(qs) =3D=3D types.ListType: varhelp =3D qs[0] if varhelp: FormatOptionHelp(doc, varhelp, mlist) print doc.Format(bgcolor=3D"#ffffff") return if cgidata.has_key('bounce_matching_headers'): pairs =3D mlist.parse_matching_header_opt() if len(cgidata.keys()): ChangeOptions(mlist, category, cgidata, doc) mlist.CheckValues() # Sanity checks if not mlist.digestable and not mlist.nondigestable: AddErrorMessage(doc, _('''You have turned off delivery of both digest and non-digest messages. This is an incompatible= state of affairs. You must turn on either digest delivery or= non-digest delivery or your mailing list will basically be unusable.''')) if not mlist.digestable and len(mlist.GetDigestMembers()): AddErrorMessage(doc, _('''You have digest members, but digests are turned off. Those people will not receive mail.''')) if not mlist.nondigestable and len(mlist.GetMembers()): AddErrorMessage(doc, _('''You have regular list members but non-digestified mail is turned off. They will receive ma= il until you fix this problem.''')) FormatConfiguration(doc, mlist, category, category_suffix, cgidata) print doc.Format(bgcolor=3D"#ffffff") finally: mlist.Save() mlist.Unlock() =0C # Form Production: def FormatAdminOverview(error=3DNone): "Present a general welcome and itemize the (public) lists." doc =3D Document() legend =3D _("%s mailing lists - Admin Links") % mm_cfg.DEFAULT_HOST_= NAME doc.SetTitle(legend) table =3D Table(border=3D0, width=3D"100%") table.AddRow([Center(Header(2, legend))]) table.AddCellInfo(max(table.GetCurrentRowIndex(), 0), 0, colspan=3D2, bgcolor=3D"#99ccff") advertised =3D [] names =3D Utils.list_names() names.sort() for n in names: l =3D MailList.MailList(n, lock=3D0) if l.advertised: advertised.append(l) if error: greeting =3D FontAttr(error, color=3D"ff5060", size=3D"+1") else: greeting =3D _("Welcome!") if not advertised: welcome_items =3D (greeting, _("

" " There currently are no publicly-advertised "), Link(mm_cfg.MAILMAN_URL, "mailman"), _(" mailing lists on %s.") % mm_cfg.DEFAULT_HOST_NAME, ) else: welcome_items =3D ( greeting, _("

" " Below is the collection of publicly-advertised "), Link(mm_cfg.MAILMAN_URL, "mailman"), _(" mailing lists on %s.") % mm_cfg.DEFAULT_HOST_NAME, (_(' Click on a list name to visit the configuration pages' ' for that list.') ) ) welcome_items =3D (welcome_items + (_(" To visit the administrators configuration page = for" " an unadvertised list, open a URL similar to thi= s") + (_(" one, but with a '/' and the %slist name append= ed.

") % ((error and _("right ")) or "")) + _(" General list information can be found at "), Link(Utils.ScriptURL('listinfo'), _('the mailing list overview page')), "." _("

(Send questions and comments to "), Link("mailto:%s" % mm_cfg.MAILMAN_OWNER, mm_cfg.MAILMAN_OWNER), ".)

" ) ) table.AddRow([apply(Container, welcome_items)]) table.AddCellInfo(max(table.GetCurrentRowIndex(), 0), 0, colspan=3D2)= if advertised: table.AddRow([' ', ' ']) table.AddRow([Bold(_("List")), Bold(_("Description"))]) for l in advertised: table.AddRow( [Link(l.GetScriptURL('admin'), Bold(l.real_name)), l.description or Italic(_('[no description available]'))= , ]) doc.AddItem(table) doc.AddItem('


') doc.AddItem(MailmanLogo()) print doc.Format(bgcolor=3D"#ffffff") =0C def FormatConfiguration(doc, mlist, category, category_suffix, cgi_data):= """Produce the overall doc, *except* any processing error messages.""= " for k, v in CATEGORIES: if k =3D=3D category: label =3D v doc.SetTitle('%s Administration (%s)' % (mlist.real_name, label)) doc.AddItem(Center(Header(2, _('%s mailing list administration
%s = Section') % (mlist.real_name, label)))) doc.AddItem('
') linktable =3D Table(valign=3D"top") linktable.AddRow([Center(Bold(_("Configuration Categories"))), Center(Bold(_("Other Administrative Activities")))]= ) adminurl =3D mlist.GetScriptURL('admin') otherlinks =3D UnorderedList() otherlinks.AddItem(Link(mlist.GetScriptURL('admindb'), = _('Tend to pending administrative requests'))= ) otherlinks.AddItem(Link(mlist.GetScriptURL('listinfo'), _('Go to the general list information page'))= ) otherlinks.AddItem(Link(mlist.GetScriptURL('edithtml'), _('Edit the HTML for the public list pages'))= ) otherlinks.AddItem(Link(mlist.GetBaseArchiveURL(), 'Go to list archiv= es')) otherlinks.AddItem(Link('%s/logout' % adminurl, # TBD: What I really want is a blank line :/ 'Logout')) categorylinks =3D UnorderedList() for k, v in CATEGORIES: if k =3D=3D category: categorylinks.AddItem("%s" % v) else: categorylinks.AddItem(Link("%s/%s" % (adminurl, k), v)) linktable.AddRow([categorylinks, otherlinks]) linktable.AddRowInfo(max(linktable.GetCurrentRowIndex(), 0), valign=3D"top") doc.AddItem(linktable) doc.AddItem('
') if category_suffix: encoding =3D None if category_suffix =3D=3D 'autoreply': # these have file uploads encoding =3D 'multipart/form-data' form =3D Form('%s/%s' % (adminurl, category_suffix), encoding=3De= ncoding) else: form =3D Form(adminurl) doc.AddItem(form) if category =3D=3D 'general': andpassmsg =3D _(" (You can change your password there, too.)") else: andpassmsg =3D "" form.AddItem(_("Make your changes below, and then submit them" " using the button at the bottom.%s

") % andpassmsg) form.AddItem(FormatOptionsSection(category, mlist, cgi_data)) if category =3D=3D 'general': form.AddItem(Center(FormatPasswordStuff())) form.AddItem("

") form.AddItem(Center(FormatSubmit())) form.AddItem(mlist.GetMailmanFooter()) =0C def FormatOptionsSection(category, mlist, cgi_data): """Produce the category-specific options table.""" if category =3D=3D 'members': # Special case for members section. return FormatMembershipOptions(mlist, cgi_data) options =3D GetConfigOptions(mlist, category) big_table =3D Table(cellspacing=3D3, cellpadding=3D4) # Get and portray the text label for the category. for k, v in CATEGORIES: if k =3D=3D category: label =3D v big_table.AddRow([Center(Header(2, label))]) big_table.AddCellInfo(max(big_table.GetCurrentRowIndex(), 0), 0, colspan=3D2, bgcolor=3D"#99ccff") def ColHeader(big_table =3D big_table): big_table.AddRow([Center(Bold(_('Description'))), Center(Bold(_('= Value')))]) big_table.AddCellInfo(max(big_table.GetCurrentRowIndex(), 0), 0, width=3D"15%") big_table.AddCellInfo(max(big_table.GetCurrentRowIndex(), 0), 1, width=3D"85%") did_col_header =3D 0 for item in options: if type(item) =3D=3D types.StringType: # The very first banner option (string in an options list) is # treated as a general description, while any others are # treated as section headers - centered and italicized... if did_col_header: item =3D "

" + item + "
" big_table.AddRow([item]) big_table.AddCellInfo(max(big_table.GetCurrentRowIndex(), 0), 0, colspan=3D2) if not did_col_header: # Do col header after very first string descr, if any... ColHeader() did_col_header =3D 1 else: if not did_col_header: # ... but do col header before anything else. ColHeader() did_col_header =3D 1 AddOptionsTableItem(big_table, item, category, mlist) big_table.AddRow(['
']) big_table.AddCellInfo(big_table.GetCurrentRowIndex(), 0, colspan=3D2)= return big_table =0C def AddOptionsTableItem(table, item, category, mlist, detailsp=3D1): """Add a row to an options table with the item description and value.= """ try: got =3D GetItemCharacteristics(item) varname, kind, params, dependancies, descr, elaboration =3D got except ValueError, msg: syslog('error', 'admin: %s' % msg) return Italic(_("")) descr =3D GetItemGuiDescr(mlist, category, varname, descr, detailsp) val =3D GetItemGuiValue(mlist, kind, varname, params) table.AddRow([descr, val]) table.AddCellInfo(max(table.GetCurrentRowIndex(), 0), 1, bgcolor=3D"#cccccc") table.AddCellInfo(max(table.GetCurrentRowIndex(), 0), 0, bgcolor=3D"#cccccc") =0C def FormatOptionHelp(doc, varref, mlist): item =3D None reflist =3D string.split(varref, '/') if len(reflist) =3D=3D 2: category, varname =3D reflist options =3D GetConfigOptions(mlist, category) for i in options: if i and i[0] =3D=3D varname: item =3D i break if not item: bad =3D _('Option %s/%s not found: %s') % ( category, varname, os.environ.get('PATH_INFO')) AddErrorMessage(doc, bad) return got =3D GetItemCharacteristics(item) try: varname, kind, params, dependancies, descr, elaboration =3D got if elaboration is None: elaboration =3D '' except ValueError, msg: varname, kind, params, dependancies, descr =3D got elaboration =3D descr header =3D Table(width=3D"100%") legend =3D (_('%s Mailing list Configuration Help
%s Opti= on') % (mlist.real_name, varname)) header.AddRow([Center(Header(3, legend))]) header.AddCellInfo(max(header.GetCurrentRowIndex(), 0), 0, colspan=3D2, bgcolor=3D"#99ccff") doc.SetTitle(_("Mailman %s List Option Help") % varname) doc.AddItem(header) doc.AddItem("%s (%s): %s

" % (varname, category, descr)) doc.AddItem("%s

" % elaboration) form =3D Form("%s/%s" % (mlist.GetScriptURL('admin'), category)) valtab =3D Table(cellspacing=3D3, cellpadding=3D4) AddOptionsTableItem(valtab, item, category, mlist, detailsp=3D0) form.AddItem(valtab) form.AddItem('

') form.AddItem(Center(FormatSubmit())) doc.AddItem(Center(form)) doc.AddItem(_("""Warning: changing this option h= ere could cause other screens to be out-of-sync. Be sure to reload any o= ther pages that are displaying this option for this mailing list. You can= also """)) doc.AddItem(Link('%s/%s' % (mlist.GetScriptURL('admin'), category), _('return to the %s options page.') % category )) doc.AddItem('') doc.AddItem(mlist.GetMailmanFooter()) =0C def GetItemCharacteristics(table_entry): """Break out the components of an item description from its table ent= ry: 0 option-var name 1 type 2 entry size 3 ?dependancies? 4 Brief description 5 Optional description elaboration""" = if len(table_entry) =3D=3D 5: elaboration =3D None varname, kind, params, dependancies, descr =3D table_entry elif len(table_entry) =3D=3D 6: varname, kind, params, dependancies, descr, elaboration =3D table= _entry else: raise ValueError, (_("Badly formed options entry:\n %s") % table_entry) return (varname, kind, params, dependancies, descr, elaboration) =0C def GetItemGuiValue(mlist, kind, varname, params): """Return a representation of an item's settings.""" if kind =3D=3D mm_cfg.Radio or kind =3D=3D mm_cfg.Toggle: # # if we are sending returning the option for subscribe # policy and this site doesn't allow open subscribes, # then we have to alter the value of mlist.subscribe_policy # as passed to RadioButtonArray in order to compensate # for the fact that there is one fewer option. correspondingly, # we alter the value back in the change options function -scott # # TBD: this is an ugly ugly hack. if varname[0] =3D=3D '_': checked =3D 0 else: checked =3D getattr(mlist, varname) if varname =3D=3D 'subscribe_policy' and not mm_cfg.ALLOW_OPEN_SU= BSCRIBE: checked =3D checked - 1 return RadioButtonArray(varname, params, checked) elif (kind =3D=3D mm_cfg.String or kind =3D=3D mm_cfg.Email or kind =3D=3D mm_cfg.Host or kind =3D=3D mm_cfg.Number): return TextBox(varname, getattr(mlist, varname), params) elif kind =3D=3D mm_cfg.Text: if params: r, c =3D params else: r, c =3D None, None val =3D getattr(mlist, varname) if not val: val =3D '' return TextArea(varname, val, r, c) elif kind =3D=3D mm_cfg.EmailList: if params: r, c =3D params else: r, c =3D None, None res =3D string.join(getattr(mlist, varname), '\n') return TextArea(varname, res, r, c, wrap=3D'off') elif kind =3D=3D mm_cfg.FileUpload: # like a text area, but also with uploading if params: r, c =3D params else: r, c =3D None, None val =3D getattr(mlist, varname) if not val: val =3D '' container =3D Container() container.AddItem(_('Enter the text below, or...
')) container.AddItem(TextArea(varname, val, r, c)) container.AddItem(_('
...specify a file to upload
= ')) container.AddItem(FileUpload(varname+'_upload', r, c)) return container =0C def GetItemGuiDescr(mlist, category, varname, descr, detailsp): """Return the item's description, with link to details. Details are not included if this is a VARHELP page, because that /is/= the details page! """ if detailsp: text =3D Container('

' + descr + ' ', Link(mlist.GetScriptURL('admin') + '/?VARHELP=3D' + category + '/' + varname= , '(Details)'), '
').Format() else: text =3D '
' + descr + '
' if varname[0] =3D=3D '_': text =3D text + _('''

Note: setting this value performs an immediate action but does not modi= fy permanent state.
''') return text =0C def FormatMembershipOptions(mlist, cgi_data): container =3D Container() header =3D Table(width=3D"100%") header.AddRow([Center(Header(2, _("Membership Management")))]) header.AddCellInfo(max(header.GetCurrentRowIndex(), 0), 0, colspan=3D2, bgcolor=3D"#99ccff") container.AddItem(header) user_table =3D Table(width=3D"90%", border=3D'2') user_table.AddRow([Center(Header(4, _("Membership List")))]) user_table.AddCellInfo(user_table.GetCurrentRowIndex(), user_table.GetCurrentCellIndex(), bgcolor=3D"#cccccc", colspan=3D8) user_table.AddRow( [Center(Italic(_("(%s members total, max. %s at a time displayed)= ") % (len(mlist.members) + len(mlist.digest_members), mlist.admin_member_chunksize)))]) user_table.AddCellInfo(user_table.GetCurrentRowIndex(), user_table.GetCurrentCellIndex(), bgcolor=3D"#cccccc", colspan=3D8) user_table.AddRow(map(Center, [_('member address'), _('subscr'), _('hide'), _('nomail'), _('ack'), _('n= ot metoo'), _('digest'), _('plain')])) rowindex =3D user_table.GetCurrentRowIndex() for i in range(8): user_table.AddCellInfo(rowindex, i, bgcolor=3D'#cccccc') all =3D mlist.GetMembers() + mlist.GetDigestMembers() if len(all) > mlist.admin_member_chunksize: chunks =3D Utils.chunkify(all, mlist.admin_member_chunksize) if not cgi_data.has_key("chunk"): chunk =3D 0 else: chunk =3D string.atoi(cgi_data["chunk"].value) all =3D chunks[chunk] footer =3D (_("

To View other sections, " "click on the appropriate range listed below")) chunk_indices =3D range(len(chunks)) chunk_indices.remove(chunk) buttons =3D [] for ci in chunk_indices: start, end =3D chunks[ci][0], chunks[ci][-1] url =3D mlist.GetScriptURL('admin') buttons.append("" + _("from %= s to %s") + "" % (url, ci, start, end)) buttons =3D apply(UnorderedList, tuple(buttons)) footer =3D footer + buttons.Format() + "

" else: all.sort() footer =3D "

" for member in all: mtext =3D '%s' % ( mlist.GetOptionsURL(member, obscure=3D1), mlist.GetUserSubscribedAddress(member)) cells =3D [mtext + ""= % (member), Center(CheckBox(member + "_subscribed", "on", 1).Format(= ))] for opt in ("hide", "nomail", "ack", "notmetoo"): if mlist.GetUserOption(member,MailCommandHandler.option_info[= opt]): value =3D "on" checked =3D 1 else: value =3D "off" checked =3D 0 box =3D CheckBox("%s_%s" % (member, opt), value, checked) cells.append(Center(box.Format())) if mlist.members.has_key(member): cells.append(Center(CheckBox(member + "_digest", "off", 0).Format())) else: cells.append(Center(CheckBox(member + "_digest", "on", 1).Format())) if mlist.GetUserOption(member,MailCommandHandler.option_info['pla= in']): value =3D 'on' checked =3D 1 else: value =3D 'off' checked =3D 0 cells.append(Center(CheckBox('%s_plain' % member, value, checked)= )) user_table.AddRow(cells) container.AddItem(Center(user_table)) legend =3D UnorderedList() legend.AddItem(_('subscr -- Is the member subscribed?')) legend.AddItem(_("hide -- Is the member's address " "concealed on the list of subscribers?")) legend.AddItem(_('nomail -- Is delivery to the member disabled= ?')) legend.AddItem(_('ack -- ' 'Does the member get acknowledgements of their posts= ?')) legend.AddItem(_('not metoo -- ' 'Does the member avoid copies of their own posts?'))= legend.AddItem(_('digest -- ' 'Does the member get messages in digests? ' '(otherwise, individual messages)')) legend.AddItem( _('plain -- ' 'If getting digests, does the member get plain text digests? ' '(otherwise, MIME)')) container.AddItem(legend.Format()) container.AddItem(footer) t =3D Table(width=3D"90%") t.AddRow([Center(Header(4, _("Mass Subscribe Members")))]) t.AddCellInfo(t.GetCurrentRowIndex(), t.GetCurrentCellIndex(), bgcolor=3D"#cccccc", colspan=3D8) if mlist.send_welcome_msg: nochecked =3D 0 yeschecked =3D 1 else: nochecked =3D 1 yeschecked =3D 0 t.AddRow([("1." + _("Send Welcome message to this batch? ") + RadioButton("send_welcome_msg_to_this_batch", 0, nochecked).Format() + _(" no ") + RadioButton("send_welcome_msg_to_this_batch", 1, yeschecked).Format() + _(" yes "))]) t.AddRow(["2." + _("Enter one address per line:") + "

"]) container.AddItem(Center(t)) container.AddItem(Center(TextArea(name=3D'subscribees', rows=3D10,cols=3D60,wrap=3DNone))) return container =0C def FormatPasswordStuff(): change_pw_table =3D Table(bgcolor=3D"#99cccc", border=3D0, cellspacing=3D0, cellpadding=3D2, valign=3D"top") change_pw_table.AddRow( [Bold(Center(_('To Change The Administrator Password')))]) change_pw_table.AddCellInfo(0, 0, align=3D"left", colspan=3D2) old =3D Table(bgcolor=3D"#99cccc", border=3D1, cellspacing=3D0, cellpadding=3D2, valign=3D"top") old.AddRow(['

' + _(" Enter current password:") += '
', PasswordBox('adminpw')]) new =3D Table(bgcolor=3D"#99cccc", border=3D1, cellspacing=3D0, cellpadding=3D2, valign=3D"top") new.AddRow(['
' + _(" Enter new password:") + '', PasswordBox('newpw')]) new.AddRow(['
' + _("Confirm new password:") + '<= /div>', PasswordBox('confirmpw')]) change_pw_table.AddRow([old, new]) change_pw_table.AddCellInfo(1, 0, align=3D"left", valign=3D"top") #change_pw_table.AddCellInfo(1, 1, align=3D"left", valign=3D"top") return change_pw_table =0C def FormatSubmit(): submit =3D Table(bgcolor=3D"#99ccff", border=3D0, cellspacing=3D0, cellpadding=3D2) submit.AddRow([Bold(SubmitButton('submit', _('Submit Your Changes')))= ]) submit.AddCellInfo(submit.GetCurrentRowIndex(), 0, align=3D"middle") return submit =0C # XXX klm - looks like turn_on_moderation is orphaned. #turn_on_moderation =3D 0 # Options processing def GetValidValue(mlist, prop, my_type, val, dependant): if my_type =3D=3D mm_cfg.Radio or my_type =3D=3D mm_cfg.Toggle: if type(val) <> types.IntType: try: val =3D int(val) except ValueError: pass # Don't know what to do here... return val elif my_type =3D=3D mm_cfg.String or my_type =3D=3D mm_cfg.Text: return val elif my_type =3D=3D mm_cfg.Email: try: Utils.ValidateEmail(val) return val except Errors.EmailAddressError: # TBD: should have a way of displaying the results of the # operation. pass # Revert to the old value. return getattr(mlist, prop) elif my_type =3D=3D mm_cfg.EmailList: def SafeValidAddr(addr): try: Utils.ValidateEmail(addr) return 1 except Errors.EmailAddressError: return 0 val =3D filter(SafeValidAddr, map(string.strip, string.split(val, '\n'))) ## if dependant and len(val): ## # Wait till we've set everything to turn it on, ## # as we don't want to clobber our special case. ## # XXX klm - looks like turn_on_moderation is orphaned? ## turn_on_moderation =3D 1 return val elif my_type =3D=3D mm_cfg.Host: return val ## ## This code is sendmail dependant, so we'll just live w/o = ## the error checking for now. ## ## # Shouldn't have to read in the whole file. ## file =3D open('/etc/sendmail.cf', 'r') ## lines =3D string.split(file.read(), '\n') ## file.close() ## def ConfirmCWEntry(item): ## return item[0:2] =3D=3D 'Cw' ## lines =3D filter(ConfirmCWEntry, lines) ## if not len(lines): ## # Revert to the old value. ## return getattr(list, prop) ## for line in lines: ## if string.lower(string.strip(line[2:])) =3D=3D string.lower(val):= ## return val ## return getattr(list, prop) elif my_type =3D=3D mm_cfg.Number: num =3D -1 try: num =3D int(val) except ValueError: # TBD: a float??? try: num =3D float(val) except ValueError: pass if num < 0: return getattr(mlist, prop) return num else: # Should never get here... return val =0C def ChangeOptions(mlist, category, cgi_info, document): confirmed =3D 0 if cgi_info.has_key('newpw'): if cgi_info.has_key('confirmpw'): if cgi_info.has_key('adminpw') and cgi_info['adminpw'].value:= try: mlist.ConfirmAdminPassword(cgi_info['adminpw'].value)= confirmed =3D 1 except Errors.MMBadPasswordError: AddErrorMessage(document, _('Incorrect administrator password')= , tag=3D'Error: ') if confirmed: new =3D string.strip(cgi_info['newpw'].value) confirm =3D string.strip(cgi_info['confirmpw'].value) if new =3D=3D '' and confirm =3D=3D '': AddErrorMessage(document, _('Empty admin passwords are not allo= wed'), tag=3D'Error: ') elif new =3D=3D confirm: mlist.password =3D crypt(new, Utils.GetRandomSeed()) # Re-authenticate (to set new cookie) mlist.WebAuthenticate(password=3Dnew, cookie=3D'admin= ') else: AddErrorMessage(document, _('Passwords did not match'= ), tag=3D'Error: ') else: AddErrorMessage(document, _('You must type in your new password twice')= , tag=3D'Error: ') # # for some reason, the login page mangles important values for the li= st # such as .real_name so we only process these changes if the category= # is not "members" and the request is not from the login page # -scott 19980515 # if category !=3D 'members' and \ not cgi_info.has_key("request_login") and \ len(cgi_info.keys()) > 1: # then if cgi_info.has_key("subscribe_policy"): if not mm_cfg.ALLOW_OPEN_SUBSCRIBE: # # we have to add one to the value because the # page didn't present an open list as an option # page_setting =3D string.atoi(cgi_info["subscribe_policy"]= =2Evalue) cgi_info["subscribe_policy"].value =3D str(page_setting += 1) opt_list =3D GetConfigOptions(mlist, category) for item in opt_list: if type(item) <> types.TupleType or len(item) < 5: continue property, kind, args, deps, desc =3D item[0:5] if cgi_info.has_key(property+'_upload') and \ cgi_info[property+'_upload'].value: val =3D cgi_info[property+'_upload'].value elif not cgi_info.has_key(property): continue else: val =3D cgi_info[property].value value =3D GetValidValue(mlist, property, kind, val, deps) # # This is an ugly, ugly hack if property[0] =3D=3D '_': # TBD: When turning on usenet->mail gating we want to # automatically catch up the newsgroup otherwise the mail= ing # list will suddently get flooded. There should be a muc= h # better way to do this (or for the admin to specify they= want # this). if property =3D=3D '_mass_catchup' and value: mlist.usenet_watermark =3D None elif getattr(mlist, property) <> value: # TBD: Ensure that mlist.real_name differs only in letter= # case. Otherwise a security hole can potentially be ope= ned # when using an external archiver. This seems ad-hoc and= # could use a more general security policy. if property =3D=3D 'real_name' and \ string.lower(value) <> string.lower(mlist._internal_na= me): # then don't install this value. document.AddItem(_("""

real_name attribute n= ot changed! It must differ from the list's name by case= only.

""")) continue setattr(mlist, property, value) # # mass subscription processing for members category # if cgi_info.has_key('subscribees'): name_text =3D cgi_info['subscribees'].value name_text =3D string.replace(name_text, '\r', '') names =3D filter(None, map(string.strip, string.split(name_text, '\n')))= send_welcome_msg =3D string.atoi( cgi_info["send_welcome_msg_to_this_batch"].value) digest =3D 0 if not mlist.digestable: digest =3D 0 if not mlist.nondigestable: digest =3D 1 subscribe_errors =3D [] subscribe_success =3D [] result =3D mlist.ApprovedAddMembers(names, None, digest, send_welcome_msg) for name in result.keys(): if result[name] is None: subscribe_success.append(name) else: # `name' was not subscribed, find out why. On failures, # result[name] is set from sys.exc_info()[:2] e, v =3D result[name] if e is Errors.MMAlreadyAMember: subscribe_errors.append((name, _('Already a member'))= ) elif e is Errors.MMBadEmailError: if name =3D=3D '': name =3D '<blank line>' subscribe_errors.append( (name, _("Bad/Invalid email address"))) elif e is Errors.MMHostileAddress: subscribe_errors.append( (name, _("Hostile Address (illegal characters)"))= ) if subscribe_success: document.AddItem(Header(5, _("Successfully Subscribed:"))) document.AddItem(apply(UnorderedList, tuple((subscribe_succes= s)))) document.AddItem("

") # ApprovedAddMembers will already have saved the list for us.= if subscribe_errors: document.AddItem(Header(5, _("Error Subscribing:"))) items =3D map(lambda x: "%s -- %s" % (x[0], x[1]), subscribe_= errors) document.AddItem(apply(UnorderedList, tuple((items)))) document.AddItem("

") # # do the user options for members category # if cgi_info.has_key('user'): user =3D cgi_info["user"] if type(user) is type([]): users =3D [] for ui in range(len(user)): users.append(user[ui].value) else: users =3D [user.value] errors =3D [] for user in users: if not cgi_info.has_key('%s_subscribed' % (user)): try: mlist.DeleteMember(user) except Errors.MMNoSuchUserError: errors.append((user, _('Not subscribed'))) continue value =3D cgi_info.has_key('%s_digest' % user) try: mlist.SetUserDigest(user, value, force=3D1) except (Errors.MMNotAMemberError, Errors.MMAlreadyDigested, Errors.MMAlreadyUndigested): pass for opt in ("hide", "nomail", "ack", "notmetoo", "plain"): opt_code =3D MailCommandHandler.option_info[opt] if cgi_info.has_key("%s_%s" % (user, opt)): mlist.SetUserOption(user, opt_code, 1, save_list=3D0)= else: mlist.SetUserOption(user, opt_code, 0, save_list=3D0)= if errors: document.AddItem(Header(5, _("Error Unsubscribing:"))) items =3D map(lambda x: "%s -- %s" % (x[0], x[1]), errors) document.AddItem(apply(UnorderedList, tuple((items)))) document.AddItem("

") =0C def AddErrorMessage(doc, errmsg, tag=3D'Warning: ', *args): doc.AddItem(Header(3, Bold(FontAttr( tag, color=3D"#ff0000", size=3D"+2")).Format() + Italic(errmsg % args).Format())) =0C def GetConfigOptions(mlist, category): return mlist.GetConfigInfo()[category] --------------BFB93F3D3F601EC069B326B6-- From tkikuchi@is.kochi-u.ac.jp Sat Nov 11 03:55:18 2000 From: tkikuchi@is.kochi-u.ac.jp (Tokio Kikuchi) Date: Sat, 11 Nov 2000 12:55:18 +0900 Subject: [Mailman-i18n] Hi, and Traditional Chinese (big5) References: Message-ID: <3A0CC326.7601E682@is.kochi-u.ac.jp> Hi, Alex. I am currently doing on Japanese-only Mailman and treating the charset problem with a quick and dirty tric. ;-) In httpd.conf of Apache 1.3.14, I write ... AddDefaultCharset EUC-JP > The only thing I think that have to implement is charset on every page in > configure and Makefile? Like > > > > to support big5. > Tokio From vizisz@freemail.hu Mon Nov 13 08:54:01 2000 From: vizisz@freemail.hu (Vizi Szilard) Date: Mon, 13 Nov 2000 09:54:01 +0100 Subject: [Mailman-i18n] Volunteer 4 Hungarian Translation Message-ID: <3A0FAC29.D5F5E1EF@freemail.hu> Hello! Juan Carlos Rey Anaya wrote that he needs more volunteers. I have translated templates for Mailman into Hungarian, and changed a few files to give hungarian outputs at the web interfaces. (eg. HTMLFormatter.py, Admin.py, Listinfo.py). I will gladly help you to carry out an i18n mailman. The current Hungarian translation can be found here: http://lme.linux.hu/forditas/mailman-hun-20001016.tar.gz So what should I do now? Szilard Vizi From jcrey@uma.es Mon Nov 13 09:31:06 2000 From: jcrey@uma.es (Juan Carlos Rey Anaya) Date: Mon, 13 Nov 2000 10:31:06 +0100 Subject: [Mailman-i18n] Volunteer 4 Hungarian Translation References: <3A0FAC29.D5F5E1EF@freemail.hu> Message-ID: <3A0FB4DA.7E47DA87@uma.es> Vizi Szilard wrote: > = > Hello! > = > Juan Carlos Rey Anaya wrote that he needs more volunteers. > I have translated templates for Mailman into Hungarian, and changed > a few files to give hungarian outputs at the web interfaces. > (eg. HTMLFormatter.py, Admin.py, Listinfo.py). > = > I will gladly help you to carry out an i18n mailman. > The current Hungarian translation can be found here: > http://lme.linux.hu/forditas/mailman-hun-20001016.tar.gz > = > So what should I do now? > = You need to insert into templates some i18n stuff. I will send to your private e-mail i18n-templates-v.1.2 so that you can compare and insert acordingly. Forward you need to translate hungarian catalog. If you want, once you finish inserting i18n stuff inside templates, you can mark messages inside source code. Cheers and wellcome. -- = ___ / F \ [[[]]]] ( O O ) #----------------0000--(_)--0000---------------# | Juan Carlos Rey Anaya (jcrey@uma.es) | | Servicio Central de inform=E1tica | | Universidad de M=E1laga - Espa=F1a | #----------------------------------------------# # Solo se que cada vez se menos :-| # #----------------------------------------------# From jcrey@uma.es Mon Nov 13 10:36:56 2000 From: jcrey@uma.es (Juan Carlos Rey Anaya) Date: Mon, 13 Nov 2000 11:36:56 +0100 Subject: [Mailman-i18n] Mailman i18n - First piece References: Message-ID: <3A0FC448.DC908747@uma.es> more work to actual volunteers: ------------------------------- 11) Jose A Accino: MailList.py and htmlformat.py Cheers -- = ___ / F \ [[[]]]] ( O O ) #----------------0000--(_)--0000---------------# | Juan Carlos Rey Anaya (jcrey@uma.es) | | Servicio Central de inform=E1tica | | Universidad de M=E1laga - Espa=F1a | #----------------------------------------------# # Solo se que cada vez se menos :-| # #----------------------------------------------# From jcrey@uma.es Mon Nov 13 12:06:23 2000 From: jcrey@uma.es (Juan Carlos Rey Anaya) Date: Mon, 13 Nov 2000 13:06:23 +0100 Subject: [Mailman-i18n] One tip Message-ID: <3A0FD93F.8C0258F@uma.es> When marking source files. There should take into account to try taking apart HTML code when possible: eample) original code: msg =3D "Don't change the option here.Use the main options page instead." marked code: msg =3D "" + _("Don't change the option here.") + ""= + _(Use the main options page instead." + "" Greetings -- = ___ / F \ [[[]]]] ( O O ) #----------------0000--(_)--0000---------------# | Juan Carlos Rey Anaya (jcrey@uma.es) | | Servicio Central de inform=E1tica | | Universidad de M=E1laga - Espa=F1a | #----------------------------------------------# # Solo se que cada vez se menos :-| # #----------------------------------------------# From james@daa.com.au Mon Nov 13 13:26:38 2000 From: james@daa.com.au (James Henstridge) Date: Mon, 13 Nov 2000 21:26:38 +0800 (WST) Subject: [Mailman-i18n] One tip In-Reply-To: <3A0FD93F.8C0258F@uma.es> Message-ID: On Mon, 13 Nov 2000, Juan Carlos Rey Anaya wrote: > When marking source files. There should take into account to try taking > apart HTML code when possible: > eample) > original code: > msg = "Don't change the option here.Use the main > options page instead." > marked code: > msg = "" + _("Don't change the option here.") + "" > + _(Use the main options page instead." + "" This limits the positioning of the bold text for translations (ie. it must always go before). I don't know if that is a problem in this case. This is similar to the reasons why printf style output is easier to internationalise than c++ streams. James. From jcrey@uma.es Mon Nov 13 14:10:08 2000 From: jcrey@uma.es (Juan Carlos Rey Anaya) Date: Mon, 13 Nov 2000 15:10:08 +0100 Subject: [Mailman-i18n] One tip References: Message-ID: <3A0FF640.50706ED4@uma.es> James Henstridge wrote: > = > This limits the positioning of the bold text for translations (ie. it > must always go before). I don't know if that is a problem in this > case. At first sight I see one inconvenient: If we let all to be in one string to translate, we also give a chance translators to mispell at translation time. example) msgid "Hello Word" msgstr "Hola Mundo>/strong>" When we later look for this message in catalog, this error can make the browser not to display the proper page. Time will say :-) Cheers -- = ___ / F \ [[[]]]] ( O O ) #----------------0000--(_)--0000---------------# | Juan Carlos Rey Anaya (jcrey@uma.es) | | Servicio Central de inform=E1tica | | Universidad de M=E1laga - Espa=F1a | #----------------------------------------------# # Solo se que cada vez se menos :-| # #----------------------------------------------# From james@daa.com.au Mon Nov 13 14:31:51 2000 From: james@daa.com.au (James Henstridge) Date: Mon, 13 Nov 2000 22:31:51 +0800 (WST) Subject: [Mailman-i18n] One tip In-Reply-To: <3A0FF640.50706ED4@uma.es> Message-ID: On Mon, 13 Nov 2000, Juan Carlos Rey Anaya wrote: > James Henstridge wrote: > > > > This limits the positioning of the bold text for translations (ie. it > > must always go before). I don't know if that is a problem in this > > case. > > At first sight I see one inconvenient: > If we let all to be in one string to translate, we also give a chance > translators to mispell at translation time. > > example) > msgid "Hello Word" > msgstr "Hola Mundo>/strong>" This is not the only occasion when the translated string has some requirements on it. The most obvious is format strings (I suppose with named substitutions like %(name)s, mistyping may be more common). Also, the translator should probably be escaping entities in these strings (unless mailman does that), so pretending the string is not an HTML fragment may not be the best idea. > > When we later look for this message in catalog, this error can make the > browser not to display the proper page. invalid translations can cause all sorts of problems. This is not the only case. James. From jcrey@uma.es Tue Nov 14 08:03:12 2000 From: jcrey@uma.es (Juan Carlos Rey Anaya) Date: Tue, 14 Nov 2000 09:03:12 +0100 Subject: [Mailman-i18n] One tip References: Message-ID: <3A10F1C0.588C06CA@uma.es> James Henstridge wrote: > = > This is not the only occasion when the translated string has some > requirements on it. The most obvious is format strings (I suppose with= > named substitutions like %(name)s, mistyping may be more common). Well, I am agree that stuff like %(name)s is unavoided. But to the other side, I think we should to abstract as much as we can, so error can be minor. > = > Also, the translator should probably be escaping entities in these > strings (unless mailman does that), so pretending the string is not an > HTML fragment may not be the best idea. I can not find a convincing reason to leave "Hello". - 'strong>' and ' <3A0CC326.7601E682@is.kochi-u.ac.jp> <3A0FB0E5.FC40F447@uma.es> <3A0FE514.720C0BED@xlinux.com> <3A0FE9E3.7672CD33@uma.es> <3A108C4E.B514F621@xlinux.com> Message-ID: <3A10FF87.392359C8@uma.es> =A4=E8=ABT=B4=BC wrote: > = > > > > Juan C. Rey Anaya wrote: > > Hello =A4=E8=ABT=B4=BC: > > have you inserted i18n stuff inside templates? > > > Where should I insert it ? --------------------------------------------- In templates/listinfo.html we must to insert: --------------------------------------------- <MM-List-Name> Info Page =

= + = + + = + + [snip] --------------- In options.html --------------- [snip] + +
--

 

About + + +

To see the collection of prior postings to the list, visit the Archives. [snip]

Reenter password to confirm:  
Which language do you prefer to display your messages?  
Would you like to receive list mail batched in a daily digest?
Conceal yourself from subscriber list?
No Yes

+ What language do you prefer? +
Password:

-------------- In roster.html -------------- <MM-List-Name> Subscribers =

Subscribers
+

+

=

Click on your address to visit your subscription options page.
(Parenthesized entries have list delivery = disabled.)

Non-digested Members of :
Digested Members of : =

----------------------------------------------------------- I did not give importance to appearance. Appearance ideas will be welcome. Cheers -- = ___ / F \ [[[]]]] ( O O ) #----------------0000--(_)--0000---------------# | Juan Carlos Rey Anaya (jcrey@uma.es) | | Servicio Central de inform=E1tica | | Universidad de M=E1laga - Espa=F1a | #----------------------------------------------# # Solo se que cada vez se menos :-| # #----------------------------------------------# From jcrey@uma.es Tue Nov 14 16:02:58 2000 From: jcrey@uma.es (Juan Carlos Rey Anaya) Date: Tue, 14 Nov 2000 17:02:58 +0100 Subject: [Mailman-i18n] Mailman i18n - First piece References: <3A09A43F.140555D2@uma.es> <14857.65173.887119.11002@anthem.concentric.net> Message-ID: <3A116232.C3119770@uma.es> -------------------------- Work to actual volunteers: -------------------------- 2) Omar Walid Llorente: handle_opts.py, listinfo.py and options.py 12) Vizi Szilard: private.py, roster.py and subscribe.py There are no more files to assign for marking :-) I would like to send patches to Barry this weekend... cheers -- = ___ / F \ [[[]]]] ( O O ) #----------------0000--(_)--0000---------------# | Juan Carlos Rey Anaya (jcrey@uma.es) | | Servicio Central de inform=E1tica | | Universidad de M=E1laga - Espa=F1a | #----------------------------------------------# # Solo se que cada vez se menos :-| # #----------------------------------------------# From barry@digicool.com Thu Nov 16 04:51:15 2000 From: barry@digicool.com (Barry A. Warsaw) Date: Wed, 15 Nov 2000 23:51:15 -0500 (EST) Subject: [Mailman-i18n] One tip References: <3A10F1C0.588C06CA@uma.es> Message-ID: <14867.26563.507071.23775@anthem.concentric.net> >>>>> "JCRA" == Juan Carlos Rey Anaya writes: JCRA> I can not find a convincing reason to leave JCRA> "Hello". - 'strong>' and ' not translatable and only may induce to errors. - Al last JCRA> catalog can be fully of untranslatable text and can make JCRA> translation heavier than it really is. Writing 20 or 30 JCRA> string with this stuff can be normal but translating almost JCRA> all the catalog is a daunting task. I'd like to eventually fix all that, but let's not worry about it in the first go 'round. Let's worry about getting markups for what's there now and try to fix the templating problems in subsequent revisions. Otherwise I fear it'll delay getting something out too long (waiting for the Quixotic "perfect solution"). -Barry From raghavan@media.osaka-cu.ac.jp Thu Nov 16 09:39:34 2000 From: raghavan@media.osaka-cu.ac.jp (Venkatesh Raghavan) Date: Thu, 16 Nov 2000 18:39:34 +0900 Subject: [Mailman-i18n] Japanese characters in Mailman archive Message-ID: <3A13AB56.9B5EEE6@media.osaka-cu.ac.jp> Hi all, I am new to this list and trying to use Mailman to administer a Japanese language ML. I have recently installed Mailman. Mailman no trouble with handling Japanese e-mail messages but archive files (html) do not display Japanese characters properly. The problem seems to do with the html conversion by Mailman. When Mailman encouters '>' it gets replaced with '>'. In the case of Japanese (multibyte) messages, this '>' is generally one byte of double-byte character (Japanese) and as a result the characters get messed up in html files. Archive files in the text format does not have this problem. I am not sure how this problem can be sorted out. Is there a way wherein the replacement of '>' by '>' can be avoided. Or is there a way to generate text files instead of html files. Thanks in advance. Venkatesh Raghavan Osaka City University Japan From tkikuchi@is.kochi-u.ac.jp Thu Nov 16 09:58:25 2000 From: tkikuchi@is.kochi-u.ac.jp (Tokio Kikuchi) Date: Thu, 16 Nov 2000 18:58:25 +0900 Subject: [Mailman-i18n] Japanese characters in Mailman archive References: <3A13AB56.9B5EEE6@media.osaka-cu.ac.jp> Message-ID: <3A13AFC1.5AA6661A@is.kochi-u.ac.jp> Venkatesh Raghavan wrote: > > Hi all, > > I am new to this list and trying to use Mailman > to administer a Japanese language ML. > Hi, (snip) > I am not sure how this problem can be sorted out. > Is there a way wherein the replacement of '>' by '>' > can be avoided. Or is there a way to generate text files > instead of html files. Yes. You must first convert the message into EUC-JP in which all the double-byte characters are msb set. Please visit Japanized Mailman Page at http://mm.tkikuchi.net/ You must also check the mail archive to check patches. http://mm.tkikuchi.net/pipermail/mmjp-users/ -- Tokio Kikuchi From matthias@accelance.fr Fri Nov 17 10:26:20 2000 From: matthias@accelance.fr (Matthias Saou) Date: Fri, 17 Nov 2000 11:26:20 +0100 Subject: [Mailman-i18n] French translation Message-ID: <3A1507CC.E9DA02D7@accelance.fr> Hello, I really like Mailman, and I would love to have at last a french version! I'm french, but since I'm also Canadian (thanks mom! ;-), I can help translate from english to french if you still need someone. Let me know, Matthias -- Matthias Saou matthias@accelance.fr From jcrey@uma.es Fri Nov 17 10:45:11 2000 From: jcrey@uma.es (Juan Carlos Rey Anaya) Date: Fri, 17 Nov 2000 11:45:11 +0100 Subject: [Mailman-i18n] French translation References: <3A1507CC.E9DA02D7@accelance.fr> Message-ID: <3A150C37.FBC8BD4A@uma.es> Matthias Saou wrote: > = > Hello, > = > I really like Mailman, and I would love to have at last a french > version! I'm french, but since I'm also Canadian (thanks mom! ;-), I ca= n > help translate from english to french if you still need someone. By chance there is nobody working (as I know) in French translation. So welcome! I will send you templates. I suppose you have been reading i18n mailing list discussions so I have not to tell you what to do :-) Cheers -- = ___ / F \ [[[]]]] ( O O ) #----------------0000--(_)--0000---------------# | Juan Carlos Rey Anaya (jcrey@uma.es) | | Servicio Central de inform=E1tica | | Universidad de M=E1laga - Espa=F1a | #----------------------------------------------# # Solo se que cada vez se menos :-| # #----------------------------------------------# From fil@bok.net Fri Nov 17 11:16:08 2000 From: fil@bok.net (Fil) Date: Fri, 17 Nov 2000 12:16:08 +0100 Subject: [Mailman-i18n] French translation In-Reply-To: <3A150C37.FBC8BD4A@uma.es>; from jcrey@uma.es on Fri, Nov 17, 2000 at 11:45:11AM +0100 References: <3A1507CC.E9DA02D7@accelance.fr> <3A150C37.FBC8BD4A@uma.es> Message-ID: <20001117121608.C14139@orwell.bok.net> In fact a bunch of french-speaking guys is working on a translation, but slowwwly. You can however join (and lead) the group at http://atlas.bok.net/mailman/listinfo/mailman-fr * Juan Carlos Rey Anaya (jcrey@uma.es) écrivait : > Matthias Saou wrote: > > > > Hello, > > > > I really like Mailman, and I would love to have at last a french > > version! I'm french, but since I'm also Canadian (thanks mom! ;-), I can > > help translate from english to french if you still need someone. > > By chance there is nobody working (as I know) in French translation. So > welcome! > I will send you templates. I suppose you have been reading i18n mailing > list discussions so I have not to tell you what to do :-) > > Cheers > -- > ___ > / F \ > [[[]]]] > ( O O ) > #----------------0000--(_)--0000---------------# > | Juan Carlos Rey Anaya (jcrey@uma.es) | > | Servicio Central de informática | > | Universidad de Málaga - España | > #----------------------------------------------# > # Solo se que cada vez se menos :-| # > #----------------------------------------------# > > _______________________________________________ > Mailman-i18n mailing list > Mailman-i18n@python.org > http://www.python.org/mailman/listinfo/mailman-i18n From Antti.Siiskonen@tut.fi Fri Nov 17 16:43:30 2000 From: Antti.Siiskonen@tut.fi (Antti Siiskonen) Date: 17 Nov 2000 18:43:30 +0200 Subject: [Mailman-i18n] a Finnish translation? Message-ID: Greetings. I have interest in developing a Finnish version of Mailman is such version does not yet exist. I'm of course willing to contribute the translation to the Mailman project if I decide to do the translation. It seems to me that the templates have to be translated first .. is there much more to it? I've read the design notes at www.zope.org but I still have no idea of the size of the actual operation. Can Mailman do qp-decoding in 2.x versions when archiving messages? The 1.x versions couldn't and I remember writing a short patch to fix the code that generates the summary pages (the pages with scandinavian characters looked terrible). If the bulk 2.x versions can't do it are there any patches ready for 2.x versions? Please cc any replies directly to me as I'm not on this list .. at least for now. -- //Antti From lgras@pie.xtec.es Sat Nov 18 21:51:30 2000 From: lgras@pie.xtec.es (=?iso-8859-1?Q?LLu=EDs?=) Date: Sat, 18 Nov 2000 22:51:30 +0100 Subject: [Mailman-i18n] Interested in Catalan Translation Message-ID: <3A16F9E2.CD7E5CC9@pie.xtec.es> Hi !!! Just finishing to setting up a mailman in my home-linux-server i decided to translate it to my mother language. How can i do it ... From jcrey@uma.es Mon Nov 20 07:32:21 2000 From: jcrey@uma.es (Juan Carlos Rey Anaya) Date: Mon, 20 Nov 2000 08:32:21 +0100 Subject: [Mailman-i18n] a Finnish translation? References: Message-ID: <3A18D385.50ECFCCD@uma.es> Antti Siiskonen wrote: > I have interest in developing a Finnish version of Mailman... Welcome, I will send you English templates so you can start translating. Cheers -- = ___ / F \ [[[]]]] ( O O ) #----------------0000--(_)--0000---------------# | Juan Carlos Rey Anaya (jcrey@uma.es) | | Servicio Central de inform=E1tica | | Universidad de M=E1laga - Espa=F1a | #----------------------------------------------# # Solo se que cada vez se menos :-| # #----------------------------------------------# From Armin@exklusiv.de Tue Nov 21 14:26:20 2000 From: Armin@exklusiv.de (=?iso-8859-1?Q?A=2E_K=F6nigsdorfer?=) Date: Tue, 21 Nov 2000 15:26:20 +0100 Subject: [Mailman-i18n] i18n version of mailman? Message-ID: <11A7A25F86EFD3118035006097B4D1C70D4D1B@fax.exklusiv.de> This message is in MIME format. Since your mail reader does not understand this format, some or all of this message may not be legible. ------ =_NextPart_001_01C053C7.0770DEB0 Content-Type: text/plain Hi folks! I think there are efforts to build an internationalized version of mailman (just because this mailinglist exists). How far is this port? Does Python not have any i18n mechanism? The strings in the sourcecode are not marked for translation, will at least this be done? Currently I'm working on a german translation. The templates were easy but to translate all the strings in the source is terrible slow and error prone. And with the next version of mailman I will have to throw away most of my work. This is a great piece of software. With support for i18n it would be perfect. ;o) BTW: I have to do the work anyway, so if I could help... Next week I will start to teach myself Python. Kind regards, Armin ------ =_NextPart_001_01C053C7.0770DEB0 Content-Type: text/html i18n version of mailman?

Hi folks!

I think there are efforts to build an internationalized version
of mailman (just because this mailinglist exists).

How far is this port? Does Python not have any i18n mechanism?
The strings in the sourcecode are not marked for translation, will
at least this be done?

Currently I'm working on a german translation. The templates were
easy but to translate all the strings in the source is terrible
slow and error prone. And with the next version of mailman I
will have to throw away most of my work.

This is a great piece of software. With support for i18n it
would be perfect.  ;o)

BTW: I have to do the work anyway, so if I could help... Next week
I will start to teach myself Python.


Kind regards,
Armin

------ =_NextPart_001_01C053C7.0770DEB0-- From barry@digicool.com Wed Nov 22 05:02:26 2000 From: barry@digicool.com (Barry A. Warsaw) Date: Wed, 22 Nov 2000 00:02:26 -0500 Subject: [Mailman-i18n] Towards 2.1 Message-ID: <14875.21346.357211.669599@anthem.concentric.net> There have been lots of great discussion on mailman-developers about the directions Mailman should be taking. This is all very cool stuff (and I want it to continue), but I view it as being more for Mailman 3.0, for which I have no time frame at the moment. Now that 2.0 final is imminent[*], I'd also like to open up some discussion about what we want to see in 2.1. My hard commitment, long overdue, is to integrate Juan Carlos's and Victoriano's I18N work. Juan Carlos has sent me patches, which I intend to start unpacking and looking at, probably after the US Thanksgiving holiday weekend. I'd also like to start using some of the nicer Python 2.0 features to clean up the code in places. Other than that, I'd like to get people's feedback on the really crucial stuff that needs to get fixed for 2.1. I want to keep to a bare minimum anything that requires re-architecting, pushing that into 3.0 after more discussions. I'd like to try to get a 2.1 beta out by the end of the year, with 2.1 final some time in January. I don't know if that's realistic or not. From the TODO list, things I can imagine tackling for 2.1 include: - Plain text digests should conform to RFC 1153. - If a message has MIME parts and the header/footer is going to be added, the message should be transformed into a mulitpart/mixed with the header and footer added as text/plain parts. (note that this will require improving Python's standard MIME message handling. b.bum astutely observes that it basically sucks right now and fixing this dovetails with work i want to do for Python 2.1 as well). - Allow "urgent" postings to all members by the list admin which bypasses normal digest delivery. - A button that will bundled and deliver a digest Right Now. - Allow the list-admin to require approvals for unsubs - Allow the user to be excluded from postings if they're getting them in the to: or cc: headers. Be smarter about filtering out duplicate deliveries. - Allow users to subscribe without selecting a password and have Mailman create a password for them. - Allow the site admin to define list styles or themes, and list admins to choose one of the canned styles to apply to their list. - Full creation, deletion, renaming, etc. of lists through the web (and email?), including fixing aliases file updates. - add_members should have a switch to disable admin notifications - Allow individuals to turn off password reminders - Don't use the first public mailing list as the `originator' of password reminders. - Provide an email interface to all administrative commands - Add -join and -remove addresses for easy subscription, unsubscription - For email subscribes, keep an audit of where requests are coming from, and send the original request headers in the confirmation message. Helps track down subscribe bombs. - Support the `which' command. - archive link should do *something* reasonable before the first message has been posted to the list. We should also do /something/ about qrunner, but again, I want to keep radical changes to a minimum. Stability is crucial, but performance counts too. Maybe Chuq's idea of splitting the queue into 3 parts can be done without much disruption. I don't think /everything/ can be done for 2.1, and maybe other people have different priorities. I'm going to keep this list up-to-date on the Mailman2.1 Wiki: http://www.zope.org/Members/bwarsaw/MailmanDesignNotes/MailmanTwoDotOne Feel free to contribute. -Barry [*] The astute observer will notice the tarball on SourceForge already. I'm waiting for the mirror sites to update, but will announce tomorrow even if they don't. From darrell@grumblesmurf.net Wed Nov 22 23:04:26 2000 From: darrell@grumblesmurf.net (Darrell Fuhriman) Date: 22 Nov 2000 15:04:26 -0800 Subject: [Mailman-i18n] Re: [Mailman-Developers] Towards 2.1 In-Reply-To: barry@digicool.com's message of "Wed, 22 Nov 2000 00:02:26 -0500" References: <14875.21346.357211.669599@anthem.concentric.net> Message-ID: barry@digicool.com (Barry A. Warsaw) writes: > >From the TODO list, things I can imagine tackling for 2.1 include: I would like to see a couple things added. 1) the patch I wrote to sort the list and break it up in chunks when passed to the mailer -- FWIW, I've been using it since I wrote it without problems, surely others have, too. Like I said earlier, at worst, it's an innocuous feature, but in general it does benefit delivery performance. 2) In pipermail, I'd like to be able to define HTML tags that can be wrapped around non-important parts of the particular message. Specifically, this is to enable you to exclude certain parts of the message from indexing, such as navigation information. (I'm thinking specifically of the tags. That is, of course, a rather obscure feature. :) Darrell From Dan Mick Thu Nov 23 02:46:56 2000 From: Dan Mick (Dan Mick) Date: Wed, 22 Nov 2000 18:46:56 -0800 (PST) Subject: [Mailman-i18n] Re: [Mailman-Developers] Towards 2.1 Message-ID: <200011230245.SAA09389@utopia.west.sun.com> > barry@digicool.com (Barry A. Warsaw) writes: > > > >From the TODO list, things I can imagine tackling for 2.1 include: > > I would like to see a couple things added. > > 1) the patch I wrote to sort the list and break it up in chunks > when passed to the mailer -- FWIW, I've been using it since I > wrote it without problems, surely others have, too. Like I said > earlier, at worst, it's an innocuous feature, but in general it > does benefit delivery performance. I've been using it, and I think I love it. I think it ought to be optionally added, too. A pleasant side-effect of the domain sorting is when Hotmail gets screwed up (once or twice a week), all the hotmail mail bounces at the same time. :-} From Nigel.Metheringham@VData.co.uk Thu Nov 23 09:45:12 2000 From: Nigel.Metheringham@VData.co.uk (Nigel Metheringham) Date: Thu, 23 Nov 2000 09:45:12 +0000 Subject: [Mailman-i18n] Re: [Mailman-Developers] Towards 2.1 In-Reply-To: Message from Darrell Fuhriman of "22 Nov 2000 15:04:26 PST." Message-ID: darrell@grumblesmurf.net said: > 2) In pipermail, I'd like to be able to define HTML tags that can be > wrapped around non-important parts of the particular message. > Specifically, this is to enable you to exclude certain parts of the > message from indexing, such as navigation information. (I'm thinking > specifically of the tags. > That is, of course, a rather obscure feature. :) There is already a patch to do this - its marked as being for htdig, but all it actually does is inject definable indexer on/off statements into the generated HTML. It does assume that your indexer parses are utilises the indexer tags that already appear in pipermail HTML. See https://sourceforge.net/patch/?func=detailpatch&patch_id=102422&group_ id=103 or if that doesn't work, Patch 102422 Nigel. -- [ - Opinions expressed are personal and may not be shared by VData - ] [ Nigel Metheringham Nigel.Metheringham@VData.co.uk ] [ Phone: +44 1423 850000 Fax +44 1423 858866 ] From matthias@accelance.fr Thu Nov 23 14:11:24 2000 From: matthias@accelance.fr (Matthias Saou) Date: Thu, 23 Nov 2000 15:11:24 +0100 Subject: [Mailman-i18n] French "templates" for Mailman 2.0 Message-ID: <3A1D258C.7875B47D@accelance.fr> This is a multi-part message in MIME format. --------------E2B9B092D34256F1260C0BBF Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit Bonjour à tous, Je suis parti du contenu du dossier "templates" de la version 2.0 (finale) de Mailman, et en m'appuyant sur la traduction de Matthieu Camus, j'ai refait tout le contenu de ce dossier en français. Il est donc parfaitement adapté à Mailman 2.0, j'attends vos remarques, critiques etc dessus si vous en avez. -- Hi all, I started off with the "templates" folder from the 2.0 (final) version of Mailman, and using some work already done by Matthieu Camus, I re-did the folder's entire content in french. It should work fine with Mailman 2.0, but I'd appreciate feedback, critics etc if you have any. Cheers / Cordialement :-) Matthias PS: http://www.python.org/mailman/listinfo : 403 Forbidden :-( -- Matthias Saou matthias@accelance.fr --------------E2B9B092D34256F1260C0BBF Content-Type: application/x-gzip; name="templates-v2.0-fr.tar.gz" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="templates-v2.0-fr.tar.gz" H4sIAN8hHToAA+w8XXPbRpJ51fyKCW2FZI6kSH2eZYormqIcbVEfR9Hey+2lXCAwFCcBAWQG oCVXfqzfzszDvd/bdfcMPijSUbbi0t7uCZVYBDDT093T093T3YNYzCLfiYWuz7cbzfpEbX31 xa9mc7d5sLcHf+m6/9f8PtiG/+D/5v5Xzdb2/l7zK7735VFZvRIdO4rzr1QYxr/V7qH3/6BX vDL/jjeTgTeOlHBmY180pvHM/2NjNFvN5v7u7ufmf7eVzn9rb2//YBva7+/v7n3Fm1+GxN++ /p/Pf0/EseCRcyO4GwaxFEHM/bIItMDJ557QXImfk2+EK5X7EuSEk3xIHSsnlnOhmQi4AzCC GFvzeRgrwZ0oUuEYGoQBj8JEcd/hPvShJp6cTBKNr9pi1tms4IvAmYmqZu0teNLgb8NE81iF yVwo8YF7ZWccKq8IRMP/MyegH/g2CMQMUc+RYRVdlj6/o0fVGteJnEvT9RvhuEksXs6hXSJ8 zWdCa+CAhrbz8G4BLZwb5czFy2zIh6hsMNaOOldIqjt1fk5Eit8SejV4GUottQaqkPihAE4I RWTzMGH4rEvNlWUFv5YwWoKzgE0/wOQU4dGrCBn1ISPrxvHpLfMIEE8CwZUjNTDccwKNNH0I A6IjFrc4+yrjCCCe0e4K4OdkIuJV4izDAClgSZKSBdNcTgLDY8dFtiBuWkuQJPjlqJlk7cTv sLYvO+0xUA+Ya6J/3OF1nt4jhl6KkitJVDKsIh9lw1Feg72JJUwOUO4KwuCWa8ssHSZTR8bw SovEcINPHAlzhmIAf/ychjCBOwbCD4iAvPHKPARKaJixo6t8BqwD5DX2AaEHqMrKdFkGoDwC 4I8lqIsCgUJrCcrui+MJs8BA0OC5LqyNRs6XH4GvOVfobglEYCQVxqbZDcJYTqRr1lvKKQaj 3EYLy0YP8E4UyNMgB+OVQyVvJAAQOs7Ex5ewvtObDKc+Pc6Q+tugcA1yx1KavWWEAadeOn8I IYFZFZbDIDY6cmYa0NhCwUE5vM6GyEQEwQS0NsKIeAAI99IJJYxXBKMw4Qlw85bMIAqIndqC lgO+cS8BEDBFiKsr7+HJEM9MhzhjUG4TjUv392F6WhBMls4eYl1DWVGImdEYiJUSuEDCbxK7 HJakepXKzwl9tpxgNfs/J7Bs4ZfkQRkpQ2FfFkzk+78loM8MfAfVDchkYYpBB/gSgH0wPQUf h0lsVfx1mMzAzAB1yKgT4EDaS2ij+kCgp04S41qEn7DsUEhgeLRLRj4suLmDxFloMTwTmqQk VTc6Y/k9nucjoiLieVdmzJthxxr7lkkicgqHyjkQKdAMsP7YPWVV0NqwKnJdhHxNNYgrVOzA okFKV3CoAe1mymMEgqMa+sEMOJ4M8wH1Z0Qse08y5JKRXx6EUBPKYWa2QVPJWcYky/4JSjgY MGP4gKy3BXPjgKqW7O/tvzxdf+z6jP+vk7F2lRyDQPzUiG//mOf7gP8PL/et/7+/A74/tIdd YOvJ/3+Ma7MyA09fqCroNL6IF5y8ywX/yIuOOeo7F7SE634CW8yeVv0/zfWZ9Z98SQ3w4PrH 2JBd/y2K/xzsbm8/rf/HuFbWv7fQVgWAD1DUAY2nZf9PeK1d/34I+7k/bPaz64H1v32wd5Cu /929Fjxv7W23dp7W/2NcbQzvdlh7KhyvwzhvxzL2RaebxFPw+fOowuq2GJ/eUxHtLdMbdusG Xnscend8fOOGfqiOSs8mdJXgxenl8Jyf90ffXZ4cXV1ej3i3Nzq7vDgqbVYiJ55WNTRC3UTb 1apGzEbdV4M+/8vZyei7oxKI1OZmib+6HJ70h0elZon3+oPB9VW3d3bx+qi0a+6vuicndL9X QuIQyND8wJ8nvHeJXWDU7dJ9wK/h3SVAfvbiRa93elri3cHZa2jZ61+M+kMAt9F+1QEyLkY8 bWnEucSvz/6jf1T6l1ZpPRvt+OZ6mKU4RKe99SrDe2t0YonZSqlpx6pAVoe3PTlPER7Km2lc 6vDzMEbgsN3TtKlbGTbd7h8CYOjfKYyUgj27uHoz4qPvr/pHCOc9RmUvuuf9I4IWvTek7zQ7 RSRT3IpIxh4HmdCRExxtc8eXN8HRTHoeyM7SINdvXp2fjTiy4qiE+1eh43eknUpsgy4CN3f8 BBr8WfC5SG45cFwJ1Wg0SjnPYm8ZHUAQxSlrEHXawIswuOlgxOJsFoUKQ3uHFJ9ob9l3vIvR g1gqYKB0pY2/eoL2wxg3tOBwx+6G4U/Shibm2X7chGBN/Dhw5vKG4ks12E3DE4pTOombBBaO O3WCG/MYt+tlJ4ooyqIcsMYZ5oPCaB7u6jWFTHUYmCiV1PeGx8hlLNTEcYWFsk4ezh3pzxy7 9DHqayIaZefOxjKyIBK+sICcTOLTSF8yF05SiCqbCHIYpTgpGwUcCEuEhSRuIwnT6CDIcAaN oBtxAlSJztD5OZFxTFmCVZ6GiQVVjJL7gk9C5QJ2GUp2JAw9URALw6o2iuVLkc4FysVJFmXB MN4t4J3FrzzgOglDmYL4OJ16hcqMS8sxJgOkkhE1FwopcjAwb3C0Yac0DaPECruzWGu2Vcv6 VjF8igq3s+rBrbH/GLSeiy9n/h/0//d3tlP7v9c8OED73zzYfbL/j3G9pVWTJqtw12/VrON5 uCk45Kmi2ay4Mw+eMGY2Csoky7ATRmqF0rgmKIysy6HrJpEoWpUGdOyZ8DImzcY2KwPq1BWZ 4KO5R+3i2XuT6lLsI6U5TPKvPBFqthBlBPjWZMZcMVekkxSokEQp1D0LX7iotFFtUEJpYTNJ nmAr4X1YzqARAlz48yWGFLN3OOAI48acGISwQLHp5EcRU8orUjJwZWSU8I1tQRxgNm0Zypj/ SplDiuMT74oMJqws4x9ps7W6/s+dnwQGfhsy+EJjPLD+d3YOsvjfwV5zD9rvHuw87f8f5XrG e2F0p9BH5JVelbdevPjXGvzzorYNU8PHdxwMDD9VQvDrcBK/d0B6T8Mk8Mie1fhZ4DbYM/aM j6aYJlUh2JwZh58T7KJtl5f8Lky4C86EEh4uOznGdQTLAVbZVqig/yz05OQOHwFwWL84LKaY wIhO6Ob1xRv+WoA2cHx+lYx96fKBdLFSAXqDNxLhMz0V3kNIg8GX8F6hmSWNsA0A7CAWIvgO ilecGNFW3KTqqoDrHce1kvUEyvka0nMKPS4DgjsNQRvGU4AIBL6Xvs/HgidaTBK/BhCgLew/ YDMEjm/34nv+l+5w2L0Yff8S2sZT0DkcXEwDSWI6EAADUQr01R1gDgDO+8Ped9Cj++pscDb6 HtE/PRtd9K+vORh+cFuvusPRWe/NoDvkV2+GsOPqY5ZKIFLIv88zF70lmBzSiTF4hNoS/T1M qAbUfI9PwcsgLQy+jMcd0KbR3e+bNR+caiIR2uY8fMnlBFPENf5eSRCTOFwzn9D9vhzW+N4L PkKFJviVD84tr/PrBCHs7DRr/FWoY2x63uXN7VarVW/tNA9q/M11F5zpZ/zictQ/5AXth1MJ hgHm2kwkoJG+TUUMXk/kTYIpVlfJKAYwdsLBFqF588CxdONQ3QG3LwO32GMKMqsSwCdfGq4S IF4ABCEUx4J2gQRW/QjayoJogN6KE02ov3WUdKjIQoMtgvbZKGAir7qwrd3YONbKBWyOmfl7 xPMnYxnYJ+bXMYsUDH17BEZp49j8PmbiVrjv7IuN48LdMRj2Ho7Q6x2z3nfnsKPHfvTrmJ1d XI+6gwF0sb+O2Wj4po/t8S90PumfXpuh8NcxEtQDOsOZ/IBE0eIAaVhD2+XVCOHAHxj4dNB9 fQ23zytwX+XPKwitykb986tBd9Q/ORsChc8rBufqVmb4GLv+ro8IbmwB+Vt6yrI+AO5bqn/j 36I7jJidh2jqcU2kU0t7vMDDGgJwwM00mInMNBHVifg+dAcJd8HygzSciImT+DEK940Kk6iO sk70FgED7dALa4TqYeDf5Y0Qg8KIDQb0Ab+BrwcHe6z/7317s7fHTs8G9g6McDof766Gl6+H 3fOj5xX7pMrrM+Ca7VplSO0wwQw5A9wPGbNUHLINHHyCkv68krGq+pL/J9vwQvwXvZnZnNcn hQaAX3Xr+fN1jxowJ3P+yy/4CkTCQEIY93FLKYHZXQFkhw9ALCbo2k0BY9cXTgB/USHb3xt1 NcuW1lNAe43/Nwat6n7J7d+D+7+DvdT/O2g2dzH/s4tloE/+3yNcvbwm6PzsvI+xLKxQMdsU 8Kewdg/DGxgMoyCQKRnU6IbQnq5e36yMyRCrO9od9sIAy0Xq8V0kDqn5FpZWBRT6UaDEjxJd d7QrJbTNiqnuV7F56FHA1sujSEy2+0t3SwNzY/dNhQpSfEAVlIvDbFOF+ynzgopjzItuXjS6 WQnEDUViqnqz4kkPk13YZkhVk6b9kLCBLeotKnA50VisNHFAI9rGwIYkhoEYbqFFgGoZ7gZl Zy5pRwgbUF8E7tSMmdOH5P8YgnvBXVm3USSw6idCZ/tM/SeOXHXc2FaBratNS+N1sFnOC8U2 K+F7dL6IB401+m51/QOG7k/eWD9a/qe5s7+Trf8dzAW39lr7T+v/Ua5BWlONUuv478wyOq5M wVl+lxZ/YOwHlnhc9aiI7NdYVHS1WGudlURnUZaiEOKi3bDRjZNXpCRGypTEuagAqJKMKyeS Hq0NVDNp3TBV/8E20S4iOzxWajM7eI0XCr1tRB4L22wxN0ADveJJkUZxnox+8Vqz/s2W5/Hi vzutg1a6/re3sR3Gf5/yv49yDdYezFiq/ZpLa7Aw6eH8Ny7zJIBNC2x6WJ6ggoXa931TBD5z ML9E4dSbhVrQbhj7pMkgzOC5UvgUi8XRtQ0bO1GERba8ZG1ZCaB2MZ8BnSOREBIwoguL3hW+ w9xQKXmDi30McEFHRZTiVOHY/zSzUDELZuPVeMJFLTRlkFbiwNbrMLWyad1zH+uiQ0mjGdVi Q8WiHtel/ydQZa2qSV3ZuLOHJpsK6PLjKlnc16qkj4eWw9YuA5TtKj/zbdDb1OHFFENaIOmz Yur2ZhEAT+9nxWqM0nSwmn91MbYFlAOm5iCKzVLawh54+dFqa6zzBA7bgVlRa1KeMAlMXjKn Ti9gKhe1PB1oCqFFEteRQOYtfvwInP4vBHthm0hAQy7SAui0Rj3EYJA5u1Ekr8ZgUEVyAI4p 4Cf8VZX+2UA/zNhONSu+JtwcrFnEQP17MV4+L2MyDgFCnktkChaFs1lo8hLIzXt8y8+5eCbe RSdFlor/wSzNQnhb8iRmAEo1lBcN+3xhGjrKnVJVeSEzgok/iViEeGZH6ghooSiCE6lPKMPG vKFXTkugMFwkwO+mQyDgQmKkMgFTnNxWserbbfBBZoKBeEOSEe8s/YvL9dAmIIxIymASvkuU T2Z6N2dmUDZT7ejfYCkeF3LjxBI7+xUQZWG0sMnP35g3UB50OuQDibvdkHxk97NRlNv0jcSU psKPSryiKaMNA90k0sesUgy+iUlzC5udoSM+MLKKNHrLFr49Z0YTiRlk5pBeoONSiwiPhxQX mRWX2yjNEMP0zXA6MYljDliA9NEhqXg5SQSjpxqpmGgyM0Eq0TcHkCisZeOZImdHxrGCT3XI lrJFlFzLd3JWgwDydastkPNpPn+zYsPX2I8QxsNOzCvj1KuZnas0AZ6qats7F2hKpdPGg6Qp EDErFA0U/b9pHEeHW1vv379voIQ1QnWz9eSF/d+41vh/sCZRFT/a/q+1n+//YCu4T/V/e0/n fx/lKkRgrNmtpVYWFeEklEZtz+BHbTlPrlmeG0dzcMutL0clbLiBtIXD5GFkp4uxI0B0Zp+o RGb5+O46tZqfBTTepmKgUe+7NF45ixFlhQHWKJkSKKGKZU8Fg2hgWo+IkiqxGYAIX4dmjWMW YkbHv+67COx3uAicXASK+i/MkTcwTeg7aaoVE6kFUYBolPqlWf8KToc5sJid+EOGokYWeELO RQdZWx+AXFg6zIoexzIDlm03piYWHpkZF/HFfKyNxhH8z1nuzILwJQtSNGEss+gFq1CuW9te XnaGCuSBkRO30KoKFt0N0y1FEuSlYMYVKKMrUE6NPrtv6GvpCWpbJ5La+Zwi66d6xrSzNaYd ZGrJrfSK4bmarf+w2w5zCxKCOOIBTG3momaPwH6oo0B8TINzuELOhXLl1zDIeRjr3NcnCd2s YP7HGHoMpXzR9b+q/2E9eL54F0ax/gLffsDrwfhf6yDT/wf7uP/fb+4ePOn/x7jaX9fr/PlQ zClsd8hbjV3+nNfrWBJuKsNNSXf7/LyOQff6Bej0Dsfby0gYb7XDh1mBKXiGTlwoBMcCcITV +pshQBeGjYYCH2lzY93L+inMhlBYaG4H2DLY/r3Z+Q93rVn/oEu/ZPbvwfWPZV/2+z/QEmtB W7s7u82n9f8YV1d64rc+0VKMBB7yQsYODDl2TS2d+RbLkpuQQk3LrAr7TgbG2VZIBvSFAk+k zmMx9HfvOzB5fgxrKuEn1dwY/6iIBYZTjGcjFH4qgMKX5XAMP8gx02xlp4veXtGbxZLOsvHU TCm7T9Xc6TdN7Dcfcn/XpcP0c/OJjZ4pcU8RMoyg+B8sNXeBYQXzvQu2EqZIH6zEKhgbOOhl oaNnBlziu0jwYzZmkEX6ARgM1IRULkYzw+77vybsZBm8HF1gnwkIFf3qIIwdcnFyD/t+dCmP otGHKLJPgBhneymsmcYkU/fQOtwL9LwGS8Qq4dtPMxTLgiu6nIXpkLA7lFLjdzWqzAtlziBb uKyX3NFvU3d0yRsVQebl1VjR8V5eMuWZEdpyLeXFh+xZCve40WhQ0XIXPcUo1PYzRpkUa143 J0dm6APSIRZeandK5iAHvlj4CyOe7PLV4Ox1d3R5NuxfY27ek+SOwgSk51946a8/2K5eoSs7 7fbeDEbd0dnpdYNfgES4fmLjejgEDQiCSL2tNBaY37g/Gegeg8uMv2ioPHyZpuqzg8T8r0AY rOA6TfgP/K84D7Ju9kFwa2fiqG1/dH7ITkpdl/PQdV5Qzt+uihFOYLDAFD0JXApgXTgXycx3 f9nyBrhv7M6XbWSn4dNRa+tkNw9Qmy30Ih93oWTopfsVAF0uEl0upAbyTydhBDcDMIe1nChg ZjkITUy5jHiX098m/JmHPr+u0tdH2Ma97yAVy+lNGBWHS4XfRPkBS7bhUgIG1OX/pAFys4sz Szud+KWtI9swWyeAXMJtCoDMJnFps9hJw7WmOnL6SQudUYrhykSZbartTB8vWSHQiFXhhDpv FwWrk0lSQX7EUqygeCphjQxlk5L1B6aASllOengkGTaVtPRZrvz7L2zj/omGpSxMdpasOBdo exeKvjTGNkjT44RYq2c+QmNAUR7cCGjNbl5xa+mYZcs2fEqWzSKesrNsD429n4YZZW8xPpF9 ZcZA00vJq4I30LBLGk1CBuHS2lXoMVaf5oIvG+alhJrtjzd6GYX06zqZrrO2lfKHxkbnNjaN MjcYJyjosmbg8ji4JRfrRttmccO2Iwx+CSeTzn2Zybp3TQhmqxCN8Qq2f/lAyCB/U1yx0rOU 5Ic7QL7dn7ASYsMUE9nIEGbYXDfRdNpeLdJ4z8/5t5YKiQDbuRBMcZb5ipdRDGtHSjtmFRH/ 297VLbdtJOtzKzwFllWOpDqiJJKmtKXQzJFt+dhVtqS1ZVedKwciYQlZCmQIwF7nafbRfLfF fYO92+mfmekZAKSUyPRJFpNyOSZBzH9PT/fXX6ujFAVRxGNubExju/RxvozwA+dtQo7YausW OGrR2btrm4Twr3KLJky4p44uEodoG5P4sh2lY6SIS3OasyUsQFlCRiBcpthz+IMzt9hWbdhI p3AOm9qfwEaot86B8EdeL+2mVEc10K/94jQAfcxxOibFFRReWKra8iZ6nk7no4+mbl5aBHrB E0lt+/PjNzVDqcUN/VivA+cAPIVzKmVWMe1edcfDabgdG9HIa9DjzfhE6D52dTEj5JQyn2SF WuBZZPRulhn+AAnyMPhE759g49UU1ROk0qLDDZrE2x/FpKtpC2nA7zKhxwM13moZt92tPGCY gfuxlQ+OwVcKfn69mliIn2i3hUjBUdD8fwzgk2rQVmFXDfZOIBz0W3hi1d0ojH5CA68f2ao2 z4dkdM2hs1lylUY5hAq05UHEOITFR+ARUzI3oeBT1ey0SCDW01fR6nRf37laim6TjktUlfEq hfOOJ5aJ+Ztdf87QRwonZyDrUb/Td4lvENzWlJWlbP/Rd757Mv7+10r7z8HD3oG2/3T7h4j/ 7B029t+1lLL9t7uvDcDPL169RK6E5yfHms3h4sXFyxPflntOPKCwarLBHj2iHkeaBf3bweOz p/8naDUMFQi9V73wjdbn28+m85v2GzUvOdd6bmkokAQEeDsetTp34//YQPKPjaXMH7ci/sCG rCb/8AZJnScb5qOnVkceSoqPDc3vsUHkHhtImkE1Cs4M1Wr+FAkgvksvs9n3/BhSXWxoposN 5t2g727X8WfPnu0/3Rc11PR1KCwZodtbr0+mV5q0hHs0t3WUerehZt289IVaWupt5/SK2ZC8 jh+dy4tFRanDXDBeWF1kR9cGq50QLBk2/JhgWcNjAc9yO6R/qZ8Y7Imf7ZpekL8inyejPB7T z19Rs7jzM5rap4LNRTDS4IzffZJqJ+htBlGDS6amtik4NVVLDgde2/HEpcKwabiXSTkP8HN7 ldAK7biwJuNY0Jjq2H3DZwwdPQ6fvz559qgFOn0+PYKenU/hvLpqHyvVYki7zvlosHc8hIsA rhtpv2SnL2xE5MgV9jyl+RjLLyp0NMECqUAqq7WQZTEz0KruXEZKU92wnDOSBOdrzLK1jplJ uNcpH5zz8qeYmV/axEVSXVeI10riLKZ7JcQq3hTIrqz3CVsNcd+Yn7P8R6HYfpVdUd1A+6x3 Fwn/Opnf9WR+FziCeFwPYVifn7z43+cXj8JWp8MSBqeCTwQ76GMsZk76/Qet4TvnQhTD+jti mca/56d7vQe0CO1x9nj6NzPuG+LRTlc9SrIbv1whC3otnn88YtodWsxEPkSURz5WmAZuzFHH Y1De1d0tN+TeRGadImJ6VKAFEBX7DxFYcFlaGlGqnrC/JVp0HS1mtnmU3kzVltJX1hkT1uCd Mt1MkFaJOELGsdxijveFxengcni6aczpcLn1odCJpmlCju+R0uOSCe9UJU8+wvWI0LNsDE1y Zi0xvUCTPhoIkPxHrVFdOUpyyIQRz6s2TRiWJqq0gIaScuvIzj8uj9P4U/ucL7K4QsT3S9ZE WFfXE5hi9mn5dfF3pr5yXWG5Mi0OgL6bjMhtC6MpGSuk0wSEIo2imjCy1VgRb4xPP7CSMuZq oKFvUzJatF8DzXX7cZHnYLQ7naZ2Vp5WPRGeFYk/S5JurCTaeizaRmBonfsblt4K+sZgj5/Q jGuWNQx+g5rqSWrIxUBaWS3MbcftuOeqpf8gYhI0Y/SeZy1r06jX0PwzuP5kGOxFt6eYq239 kJTc1+oEjueOIi8/PyPN106qHUc6p+np6hsBfnUyTvCIpzdlKM1L81FN/IYR83VwErilwN90 9/nWt7OvX8r3/5soy4G9cX3xn4fdh/r+3+s9RP6v7n7D/72WosMu4Ai2FyjHue1EhoZfIJTz apq/hy/f49kJQc/nxsG6NV5k21ohhfN1wmBTEzgg32DRBcG02LHnsRMBYeIawG/pgj0JKREI 6ARhKUwzNWukaam8Aow4qroq44c40AROQL8WkZv2pSZLDwSOjONfdpS2oyOcZpTOQruaTRMt uiOIPiQpqyqopSCcNpstRko/gtMTPLOt1/FRyMH1SIrkzgsdnEB6eSepVd7/afwJozTWFv/Z PTjQ+d86nYc6/vOg2f/rKNXxnz9K2NemjgDdRMv+aL5YCGTPblCP0qLkMnEWOngrcFVnszjN mLKomAeej7jCJy+C1xiZkxnvKlAGk2ILW/FJFTjDhYXw2zSRkPYF6YEIhMP7HQcJRgX0zUKr LmO1UZkbVed0mYi0ZIFH8cmijdFDkUgMJeSudR9RzjEIpZ2OwQPuxzTUtl1M4hceLw3qcj0x BtL1ktLs2IgIaBJdu1ASZjbhWcXIL0WIQQCg9hJFGiGWYXUZ1jeOZ0WS6Uw/UJEbB+dCNSCM BMZE3UDIubVwo5LVwILaFgbcDQKd7QbBC4yfFLMHl1yLUvMQi373t+I8AD/0xE0OBN9te2Pz Pb0iQy5gHQEQTPQtdl55qqWxCG5AtkpawT/iQbcT4GtWQwR3wi8Gt+c79vB0FtATuJfZLv79 SFu/cBY29ZxuOuyVMr8TBq3kcycnlUO4iYgYUYXuBB+TixwOxkmR7IYvv4TTf6l7u0awkD0B pAXPFeStU8MRmAhhXXUFEGvsneK7MmNRQDwTBqxY8XsnIgiT1s0XCMYZcaImSJYA4UA2AMjZ wIxj2CHCUQKQ6GgYDMapig/lAeTr9ZdQ4wZRxfgfN5Lq3m8kFef/9H6j/24R/2H0/w4wACP/ 535z/q+l6HjdCIy20fznYmEEzC5891btFG022tqGRatl/1u7u484RklwMDFB04MtCg62emoQ pJuR1okd9EX4LkaUH4axkcYQzyW3cKD2iVKviSTPhhq72LA/NeCCu5Ty/tcw2Htz/6/Y/539 g35P7/+euvnj/b/b+P/XUsr+/86hFwDGqTxsHNi52ocQ2aj2YRvkwzB84ihteIr6dkYOCLOp QerwABvlRB/1fv79Oj+/dLNU+/WHA/SG1Tvx/5sD0IRvq6afpQEBU7QwrGrTurUfG1sl2zQh wWYQnORR7oOJ0WZ7WT3umCQ0cPHvuQeeq0687HRrF5vzJMpiqkLJ0TH3IyCLO17Vxu3TaZ6M Yt1abZNGJPbd5q1/i2nrV9vCq+3cajkNAeRtTN0C6+2vxMeuF+7O9bwDbxXld5AhQxkvhudK XTOuVl4ExrdiAR3g8pBms1LTl+m5kNPTquOBSbeq7khbTpiyzQltcjxXvG9HnazomWMdVFzh beCEvk8Z5z/SAoD9i/LDBo63KyR3jloZ7fNP6N8KGaVivnCdLQH6H8zAnNT2HVsUQXoLzmws /d42HgippeIUk2mQlk7XzvGmsz8QrVDyP9b05wxowx0/dWZ6V/uA+tdNolbEDGdfygJ2RNyj xNNeme4qj9Ky1V094pW7SKzvgBa4Wt6IgL9KH7Uuzs7hnflYbrWhkRtz417VXjh11vSGJ8vX 6g/qAOlBbfo3T8S9dGQSBXPSGtf56/p+HYxzwMB+4xuH+cKlChe+ySQyws82FtxQsAHarz6r ZSDbRG6n2p7TDXP2yet5PTKZ+vwrURChxEAgcq5bRhlo9IK7XLRz+Rhx1k6Tjsp4BqgAD6qz yVjvi9VYp3Jtp0wTV1Od4z5fWUmtwxxSmDM84UZaBOHWscyBXlOj2c6hLfhTnFT+JYs6x5Xs HqZT48/82mrQ7Q66qriX2wkEX8rhhkpMmi0ROqPGfXQtEnRjDBAF32Qm9dZgL0EZin/utgV6 Zgv8mbahOoK9NTGC/8QObY1J54GPdO6vp/aE5kAOpVwZUVVF1WLzhg0uQVIxNUzrrEha5WTt IYdw1AAsCkj3ELBJPYR7W7aLrx3c3KjjegIt+twm4uH2pUBOON9zv8wDqinob8fTF8UWOcqX jZFJhqaHgQNOCJnhdVqrI8SLQ3nsnQAVn53F6TUHKJmRD2JAlKi7fjHZcQmKgP/OiU+ykUg2 HfvYm8JVbQFLHc6oFRQFTPE8xRgNcrnRJCxHr9QCV9T40+/vNvROEBXVim4K5PBG62x4gYFU bzCQ6oeaSTFUNhjnoROGAXMmM+2VXr4jJjJwucDNOLxKbmLurZF5FMWFtxiIBit9fSFexQvy 1w9IKYTKmN2NoqjvRXZkzF7iTCZgf23j8S72Cm0mJZ/qnzqF+9WdOzAsxwQaRQWC1Xwxoy3V 0EPtSHDVm3JXw3JfsSvR6K/t2RRmwxcb5W+svLjT9JySaItmQKn1XaKz2LGt0d5RfdSwPz2w fjCLjIsW9bfa82QcVz9xt/aXrwC8iR2tnz8Tir59u4UbGeUw0KqlBSt9O26bsv0P5vu35/yW ZZX9v9s9MPa/g33y//cb/M9aCl/3WIIkaZ7kxWSh/Yjqlv5TPMrRbA+eVww2VFv4Y5wWdUHi btJwcD7a6CDGADjgmqMKL/K3HpX/nFKz/4v8en34v/6+2f8P9xv+z7WWE5PapQoAJxlPIFh5 rgO/PZoVzg6O0fwCkqDjPNgGp/NLuylcpLhwvN341NNY53HJYjAW8cdvAA1x5IgoJ2MLYuMy pJoK/mLJFIhIg65bApDoQWPGlwbNQsZGg9ZRmvU8Bj4AvPsx1ucreOXXV6r3/3U8WSP+t7/f Nfu/e9gl/1/j/19LofNfUIxv0n58r7F/YyJkYfwREEr4ugGpBjYbDGQpVOIE4GcWzjReVOBq AfyVxQGCmTRLvt1xl5QYHBFqc9zXlk7mJsliUaUAPuld/wYMvhOr2sj8AZLOCQ3D9taPEMYi jQOAI42ktmITCBeiP7/3dDLl/a+TV61v/3f7HbP/ewcHlP+p2f9rKRKuOV+0jWUTtqok5k71 FuXUBxqvqfNcB2PPHepmIROQ0z3A0IE+EOehYVikSNFiDukiyCbMNS6UBIF0hL/zbfb/tlTt f3WPW2v+x4eQ8432f7/f7RD+r8n/tpbyzkl3f5srvYcxRjU54gxLSkXgbE+1hz6QpsmvooCJ 9MwhryklNeaf3mt1dH3GVxIWCdZ1Qa5IgmjBQklec4KaOJ+jCtqiP6IMqtj/GKJ5j/C/lfE/ vb6J/znYp/N/v7n/r6eU8X/9O9P/uEHGv5IA6FzXUPZ6/yq2Hx9m8NsIf+5M9xNsbPjDchsO jtXNrWQjYpYOCYVxGfyWgqYEwwnrdZuVdJfgghm8GG69jImeWLjsEapmXoHkrtqbmIGjn5RG 68XS/4PV8O8856x5+/Zg7wVz/ywZN3eU3vEw5dNZq4QzYeSDi80RZADLGZ4IflLctF/HV4iS zIgD5BWHhpQQh8RgS37UoxLZk6lT4GnuvankobpFU9HtW25qWNnW6nnwh17TURGbkxq0YhLN zcAJAgjxFHvU3Id0dYZPoYnk/+2lfP5nxeX9mv9vEf9j8P8H3T7a//YPmvwPaynvqm37oNwn +twgYnK6IcgDgXVkwDBzKvbaOCD+ssbSHzpGeqhz7trnbf5obZtn07wJvbXW+Gar36VU7n9C Zt/bFWDl/jf8n52DHuZ/6ve7Tf7ntZTV+Z8wXKc6C5SftMmPXdFRPybmpzYb1Oo3NemgvkpZ sv/vDQS06v7/sKfPf/UHsACdg/1+c/6vpTxO4hTQPB4BpsMtw2c1/+tPwYOtT/FkNMUzHgOY FmUKTct08NFBGBFHwYMtZM5hsxrylTsUIZi1OKLMM17CZGofQsR9c52PI7K0PF4eFDcHjEND qC++kIYyMHQd5ZwQGuxAEf87XhpRilwINF9BPtrdlomT6SG+agsvS7lD3BzqjlKuOBhF/UM6 biyxhUniqYOzwI+CM8Fpwv15ENNsEhU50w3WXZF1+0eXfWlZfu3q1Ny1yTgdkqdxTNSs+bwg XtXdSlaYSloXP3lpuGXYGgKP4MF926RI2kBZso3M9xUZg3Zr2sBjaVloRLZQzQJVEXUHgH8m oVXa9iInrigaoMAMkEnMq0ZIrYSYA5rAag5zagLYbmTm0CDDxKFiHnfCSA0oJbFhI/mShEiB m/6WuFeAQ4U5NFIdZ2VNTZpEJnCWtJeLzeTBmcfx32aLcVIZ7hQQu+5uULPKiV6lKi4S37nQ ycQCkd/ISbTg8c7cUFqDFHwXwLx1rZ7/D7lHlM9/uMCtN/9359Dgfw77vQ7h/xr//1rKExE+ ILOAs8uuMhW3JzaC6jxqHH9uQAAtsg1sZ63AUTWWYIdrErwFvshHQp2sLPnhDWcXr0/CV2cX 4dMTyLXz5iQ4P3v72qkoPHlzcVRFJYbKjUsELjAOItffyOchgoOPRJDh1qqwnJjzXesrtz3U 21U8UjX0T+753YLzu3Wr8xuzr7ln0YSPZXEq/0Unwfa8r9kP4YmX7Vq4Un/XmMk/UinLf6Xd Jh8+rxH/0ekeGvzH4f7+IeI/Og3/y1qKIwfbbR0CzcBHqcmpL40RGC6Io+n0rwldEE4plhCE wDz+RyENxiCMlNxBhlKP1cSNv5f0cTvhgG+I29lwZwUqhQUKCWsTwS0swkqhjgvmlSqlrfgS +Gx5kHISgCMAOGmHV9F8zGGi/zQsfFsQgkqhisjK2lKfz2aUYZVOJTgFtnfgBXDBhIvrL9SJ qzS2AJc2VqYaR2NS8UBQx/YHrePOirkIgq1jFPYyV3BmspFlIjp5nsRIU6fzx4Ut5K7N4lag Wf2z4oN6v3oMlOWfi01MPZka3n7OGUtjsm1vPKkA2eMzTu7RL/IevxOq/k7VyRKMbNbGUB8c PlHeFzPj6hyBKf/Wm+cPUKryv0fjD0rYrS3/VxfAvij/O4co+CH/18PG/r+W8iTmjJuzuMhD zAY956zuagenQGJwORyMpuN4qBS4PJ8nlwVI88EefgYMVAHmEQeDHOZ9iUYCF0JQwAxw+vDD zEUCUjIhvHID667+nZKhE7BXoMyGqz7QMlzP4w+PWtd5Pjva2/v06dPu7HN+PU13p/OrvfF0 tDcCp2Ga702Sy7388wzOlJ/bkIkpvSIuu9bwHH+xmQX0cUgGR0gjEM6VDM6AAwEvHUpYWu5i 3WlihY0zpWUPTJqHSTI042NMaWJslIh/GYc//jSdJJthOr0Bean7/z3lro0uE8p+SWdAjI9F LMVRaIYjkZ3SqfK9w65YqhfeRDMAvTEVU5ZLJtJNwfZr0hi9ff1Sjfz0u8LGjo+Mpc2kW6ls i7E1VTZjvHn93ZTCvtH+pM5OYEDnBL2U1RevhdRUrC5VW3NiMkLhUcNP6ti0rKoh6rL1Hm5d cKny2rKp+gc/voy0b9tmElblBA443AjM90CxMam6TupWGEAXGSodWmdqSnzD7dDG6L0HW+89 FkzTLPUwtWNMp+MkCgQKCxPqVSRTdbor0i17vY04Na2fkZkrqcjvXPF6aEPpvfKFOJka7EUv XFIBpUj51lKvKU1pSlOa0pSmNKUpTWlKU5rSlKY0pSlNaUpTmtKUpjSlKU1pSlOa0pSmNKUp TfljlH8DyG09XgDwAAA= --------------E2B9B092D34256F1260C0BBF-- From fmaior@etica.net Tue Nov 28 16:33:01 2000 From: fmaior@etica.net (Fernando Maior) Date: Tue, 28 Nov 2000 14:33:01 -0200 Subject: [Mailman-i18n] How to begin with localization for Mailman Message-ID: <3A23DE3D.5050500@etica.net> Is there a faq for working with i18n for Mailman? That is the first time I am offering to help in a job in the Net, so I do not know how to begin. May be someone can help me with some guidance... Thanks! -- Bye, Fernando Maior Etica Tecnologia Linux Training From vizisz@freemail.hu Thu Nov 30 09:45:30 2000 From: vizisz@freemail.hu (Vizi Szilard) Date: Thu, 30 Nov 2000 10:45:30 +0100 (CET) Subject: [Mailman-i18n] Marking the code Message-ID: Hello! My task is to mark the texts in the following files: private.py, roster.py and subscribe.py I've had problems marking texts in these files. The biggest question for me is that in my files there are messages to the syslog, like this LogStdErr("error", "private") Must I mark these texts like the other translatable text? And the other problem is connected with the form.has.key("something"), something=UserOptions or Digest or Membership Management, etc. The problem here is that the "something string" must be marked and then translated in other files. So I think I should mark it, but in the other way, it is a variable (it tells something to form.has.key), and we must not change any variable. Opinion, suggestion? Szilard Vizi ------------- mailto:vizisz@freemail.hu UIN:10676592 From jcrey@uma.es Thu Nov 30 10:00:41 2000 From: jcrey@uma.es (Juan Carlos Rey Anaya) Date: Thu, 30 Nov 2000 11:00:41 +0100 Subject: [Mailman-i18n] Marking the code References: Message-ID: <3A262549.C917CC88@uma.es> Vizi Szilard wrote: > = > Hello! > = > My task is to mark the texts in the following files: private.py, > roster.py and subscribe.py Uf! I did a mistake sending this message to other person telling: "Please, stop marking your files. I have done it yet. I want to give patches to Barry tonight. Cheers" Sorry by this mistake :-( > = > I've had problems marking texts in these files. > The biggest question for me is that in my files there are messages > to the syslog, like this > LogStdErr("error", "private") > Must I mark these texts like the other translatable text? I don not mark strings intented to Mailing list manager. > = > And the other problem is connected with the form.has.key("something"), > something=3DUserOptions or Digest or Membership Management, etc. > The problem here is that the "something string" must be marked > and then translated in other files. > So I think I should mark it, but in the other way, it > is a variable (it tells something to form.has.key), and we must not > change any variable. > = "something" should not be marked. BTW: I have discovered a bug in template patches. I told to insert i18n stuff inside them. Well, in listinfo must be under i18n stuff, like: Cheers -- = ___ / F \ [[[]]]] ( O O ) #----------------0000--(_)--0000---------------# | Juan Carlos Rey Anaya (jcrey@uma.es) | | Servicio Central de inform=E1tica | | Universidad de M=E1laga - Espa=F1a | #----------------------------------------------# # Solo se que cada vez se menos :-| # #----------------------------------------------# From james@daa.com.au Thu Nov 30 11:10:08 2000 From: james@daa.com.au (James Henstridge) Date: Thu, 30 Nov 2000 19:10:08 +0800 (WST) Subject: [Mailman-i18n] Marking the code In-Reply-To: Message-ID: On Thu, 30 Nov 2000, Vizi Szilard wrote: > Hello! > > My task is to mark the texts in the following files: private.py, > roster.py and subscribe.py > > I've had problems marking texts in these files. > The biggest question for me is that in my files there are messages > to the syslog, like this > LogStdErr("error", "private") You should only be marking user visible error messages. Text for critical/fatal error messages is best left untranslated. When people send in bug reports about these sort of problems, we want the developer to be able to understand them. If these types of error messages are in a language the developer can't understand, then they are much less useful. > Must I mark these texts like the other translatable text? > > And the other problem is connected with the form.has.key("something"), > something=UserOptions or Digest or Membership Management, etc. > The problem here is that the "something string" must be marked > and then translated in other files. It should only be marked where it needs to be translated for display to the user. If the actual string is set somewhere else, then we might need something similar to the gettext_noop() dummy function/macro used in C. > So I think I should mark it, but in the other way, it > is a variable (it tells something to form.has.key), and we must not > change any variable. James.