1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
|
Languages
=========
Mailman is multilingual. A language manager handles the known set of
languages at run time, as well as enabling those languages for use in a
running Mailman instance.
>>> from zope.interface.verify import verifyObject
>>> from mailman.interfaces import ILanguageManager
>>> from mailman.languages import LanguageManager
>>> mgr = LanguageManager()
>>> verifyObject(ILanguageManager, mgr)
True
A language manager keeps track of the languages it knows about as well as the
languages which are enabled. By default, none are known or enabled.
>>> sorted(mgr.known_codes)
[]
>>> sorted(mgr.enabled_codes)
[]
The language manager also keeps track of information for each known language,
but you obviously can't get information for an unknown language.
>>> mgr.get_description('en')
Traceback (most recent call last):
...
KeyError: 'en'
>>> mgr.get_charset('en')
Traceback (most recent call last):
...
KeyError: 'en'
Adding languages
----------------
Adding a new language requires three pieces of information, the 2-character
language code, the English description of the language, and the character set
used by the language.
>>> mgr.add_language('en', 'English', 'us-ascii')
>>> mgr.add_language('it', 'Italian', 'iso-8859-1')
By default, added languages are also enabled.
>>> sorted(mgr.known_codes)
['en', 'it']
>>> sorted(mgr.enabled_codes)
['en', 'it']
And you can get information for all known languages.
>>> mgr.get_description('en')
'English'
>>> mgr.get_charset('en')
'us-ascii'
>>> mgr.get_description('it')
'Italian'
>>> mgr.get_charset('it')
'iso-8859-1'
You can also add a language without enabling it.
>>> mgr.add_language('pl', 'Polish', 'iso-8859-2', enable=False)
>>> sorted(mgr.known_codes)
['en', 'it', 'pl']
>>> sorted(mgr.enabled_codes)
['en', 'it']
You can get language data for disabled languages.
>>> mgr.get_description('pl')
'Polish'
>>> mgr.get_charset('pl')
'iso-8859-2'
And of course you can enable a known language.
>>> mgr.enable_language('pl')
>>> sorted(mgr.enabled_codes)
['en', 'it', 'pl']
But you cannot enable languages that the manager does not know about.
>>> mgr.enable_language('xx')
Traceback (most recent call last):
...
KeyError: 'xx'
Other iterations
----------------
You can iterate over the descriptions (names) of all enabled languages.
>>> sorted(mgr.enabled_names)
['English', 'Italian', 'Polish']
You can ask whether a particular language code is enabled.
>>> 'it' in mgr.enabled_codes
True
|