1
Mailman - The GNU Mailing List Management System
2
Copyright (C) 2001-2003 by the Free Software Foundation, Inc.
3
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
8
Mailman 2.1 is multilingual. By default it supports English, but
9
additional languages may also be available. If the language you
10
want to add is already supported by Mailman, then getting all your
11
lists to also support that language is fairly easy. You just need
12
to go to the administrative web pages, click on the "Languages"
13
category, and select the languages you want your list to support.
15
If the language you want to use has not been previously
16
translated, or you don't know where to find the language pack for
17
your language, read the section below or contact the Mailman
18
internationalization mailing list mailman-i18n@python.org.
21
ADDING NEW TRANSLATIONS
23
Suppose you want to add new translations for a previously
24
unsupported language, what steps would you need to take?
26
First, you should send a message to mailman-i18n@python.org to
27
make sure nobody has already created the translations for your
28
language. In the example below, we're going to create a
29
translation for the mythical language "Fredonia" which has the
30
official language code of "xx".
34
http://www.list.org/i18n.html
36
for more information on internationalizing Mailman. Also, Simone
37
Piunno -- who is the Italian translation champion -- has written
38
up some nice instructions, which are provided below.
40
In general you need to do two things to add translations for a
41
language in Mailman. You need to translate the message catalog
42
and you need to translate the templates.
44
To translate the message catalog, grab the file
45
messages/mailman.pot and make a copy called mailman.po in the
46
subdirectory messages/xx/LC_MESSAGES. Then you edit the file and
47
add the translations for each message identified in the catalog.
48
It will be very helpful to have a good tool, such as KDE's KBabel
49
tool, or po-mode for Emacs, for this part of the job.
51
Once you've added your translations, you can then run msgfmt over
52
your .po file to generate messages/xx/LC_MESSAGE/mailman.mo. Run
53
"make" in the messages subdirectory to do this.
55
Next, create the subdirectory templates/xx and translate each of
56
the files in templates/en/*.{html,txt}. These you should also
57
donate back to the Mailman project.
59
To make Mailman and your lists aware of the new language, follow
60
the directions in the section above.
65
Q: If your language uses non-ASCII characters, such as the cedilla in
66
French, how should you add these to the catalogs and templates?
68
A: For any message that is destined for the web interface, use an
69
HTML entity reference where appropriate. For messages destined
70
for email, you should use the non-ASCII characters explicitly.
71
This includes both for the message catalog and the templates.
74
RESYNCHRONIZING THE CATALOG
76
As Mailman development continues, new updated catalogs
77
(i.e. mailman.pot files) will be made available. As mailman.pot
78
changes, the individual language catalogs
79
(i.e. xx/LC_MESSAGES/mailman.po files) need to be updated as well.
81
In general, I as the Mailman maintainer will merge the new
82
catalogs with the individual language catalogs, and commit the
83
updates to CVS. Translators should grab the new mailman.po files
84
from CVS and update the translated messages. They should also
85
update the template translations.
87
For best results, you will probably want to keep current on
88
changes to Mailman 2.1 in the CVS. As Mailman 2.1 moves towards
89
final release, the catalogs and templates should start to
90
stabilize. Alternatively, occasionally I will make new English
91
language packs available on SourceForge, and you can use these to
92
create your translations.
95
DONATING YOUR TRANSLATION BACK TO MAILMAN
97
We'd really appreciate it if you donate your translations back to
98
the Mailman project, so that others can benefit from your effort.
99
You'll get credit of course, in the Mailman documentation. Here
100
are the steps to donate your translations, either the first time
101
or subsequent updates.
103
The best thing to do is to send me <barry@python.org> a "tarball",
104
i.e. a gzip'd tarfile, that can be unpacked in the top level
105
directory of the Mailman CVS tree. This would be the directory
106
containing this README-I18N.en file.
108
Your tarball should contain two directories, where your donated
114
In templates/xx there should be the translated templates, all the
115
.txt and .html files, for your language, mirroring those in the
116
English template directory (always the master copy).
118
In messages/xx you should have a single directory LC_MESSAGES, and
119
in that directory a file called mailman.po, which is the human
120
readable catalog for your language. Do not send me the mailman.mo
121
file, since I'll recreate it on my end, and that'll save on the
124
That's basically it. If you need to include a README, please call
125
it README.xx and put it in the messages/xx directory. README.xx
126
can be in your native language.
128
You can email the tarball to me, and if this is the first
129
installation of the language, please tell me what the
130
add_language() call in Defaults.py.in should be for your
134
CURRENT LIST OF LANGUAGE SUPPORTED OUT-OF-THE BOX
136
See http://www.list.org/i18n.html
141
Here is the recipe that Simone Piunno used for the Italian
144
"You can start without much technical knowledge, but if you want
145
to keep your translation up-to-date (while the development branch
146
evolves into the next stable release) you'd better learn how to
151
Basically, you'll start by copying templates/en/* to your sandbox dir
152
and then translating each file. Keep in mind that %(foo)s is a
153
variable reference (much like %s in C) and must be left untouched.
154
Also, you must be able to recognize a markup tag (eg, <foo>) because
155
they must be left untouched too, and you should know how to escape
156
non-ASCII characters, e.g. "�" -> "è", but only in html files.
157
Remember that if you need a literal % sign, it must be doubled: %%
159
Next, you copy messages/mailman.pot, renaming it to serbian.po.
160
You can open this file with kbabel (a tool included in KDE SDK) and
161
translate each string (original on the higher half of the window, your
162
translation on the bottom half).
164
If you are a masochist, you can even use emacs PO mode ;)
165
Keep attention to the same markers and escaping as above, with the added
166
complexity that here it's harder to say when a string is html (e.g. used
167
for web UI) or pure text (e.g used for email interface)
169
Then you try to compile you .po file:
171
msgfmt -v -o serbian.mo serbian.po
173
No error messages should appear.
175
Next, copy your files on an installed mailman tree, and run
176
bin/transcheck XX, where XX is your country code.
178
No warning should appear (but maybe some warning is ok, if you really
179
know what you're doing).
181
Now, try to run your translation (add an "add_language" line to
182
Mailman/Defaults.py) and check the many scattered pieces blend
183
together well. Sometimes you'll need some adjustment.
185
When you're satistied, pack up a tar.gz with the following structure:
187
messages/XX/LC_MESSAGES/mailman.po
188
templates/XX/admindbdetails.html
189
templates/XX/admindbpreamble.html
192
templates/XX/userpass.txt
193
templates/XX/verify.txt
195
(XX is your country code) and send it to Barry Warsaw. Do not
196
include the mailman.mo file if you can help it.
198
By that time, your translation could be somewhat obsolete, because
199
templates and mailman.pot could have been evolved meanwhile.
203
You'll need to check diffs to find what changed and how, so that
204
you can easily update your files.
206
Save everything everytime, you'll need it.
212
indent-tabs-mode: nil