1
<?xml version="1.0" encoding="ascii"?>
2
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
3
"DTD/xhtml1-transitional.dtd">
4
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
6
<title>babel.messages.catalog.Catalog</title>
7
<link rel="stylesheet" href="epydoc.css" type="text/css" />
8
<script type="text/javascript" src="epydoc.js"></script>
11
<body bgcolor="white" text="black" link="blue" vlink="#204080"
13
<!-- ==================== NAVIGATION BAR ==================== -->
14
<table class="navbar" border="0" width="100%" cellpadding="0"
15
bgcolor="#a0c0ff" cellspacing="0">
18
<th> <a
19
href="babel-module.html">Home</a> </th>
22
<th> <a
23
href="module-tree.html">Trees</a> </th>
26
<th> <a
27
href="identifier-index.html">Indices</a> </th>
30
<th> <a
31
href="help.html">Help</a> </th>
33
<!-- Project homepage -->
34
<th class="navbar" align="right" width="100%">
35
<table border="0" cellpadding="0" cellspacing="0">
36
<tr><th class="navbar" align="center"
37
><a class="navbar" target="_top" href="../index.html">Documentation Index</a></th>
41
<table width="100%" cellpadding="0" cellspacing="0">
44
<span class="breadcrumbs">
45
<a href="babel-module.html">Package babel</a> ::
46
<a href="babel.messages-module.html">Package messages</a> ::
47
<a href="babel.messages.catalog-module.html">Module catalog</a> ::
52
<table cellpadding="0" cellspacing="0">
53
<!-- hide/show private -->
58
<!-- ==================== CLASS DESCRIPTION ==================== -->
59
<h1 class="epydoc">Class Catalog</h1><p class="nomargin-top"></p>
60
<pre class="base-tree">
63
<strong class="uidshort">Catalog</strong>
67
Representation of a message catalog.
69
<!-- ==================== INSTANCE METHODS ==================== -->
70
<a name="section-InstanceMethods"></a>
71
<table class="summary" border="1" cellpadding="3"
72
cellspacing="0" width="100%" bgcolor="white">
73
<tr bgcolor="#70b0f0" class="table-header">
74
<td align="left" colspan="2" class="table-header">
75
<span class="table-header">Instance Methods</span></td>
78
<td width="15%" align="right" valign="top" class="summary">
79
<span class="summary-type"> </span>
80
</td><td class="summary">
81
<table width="100%" cellpadding="0" cellspacing="0" border="0">
83
<td><span class="summary-sig"><a href="babel.messages.catalog.Catalog-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
84
<span class="summary-sig-arg">locale</span>=<span class="summary-sig-default">None</span>,
85
<span class="summary-sig-arg">domain</span>=<span class="summary-sig-default">None</span>,
86
<span class="summary-sig-arg">header_comment</span>=<span class="summary-sig-default"><code class="variable-quote">u'</code><code class="variable-string"># Translations template for PROJE</code><code class="variable-ellipsis">...</code></span>,
87
<span class="summary-sig-arg">project</span>=<span class="summary-sig-default">None</span>,
88
<span class="summary-sig-arg">version</span>=<span class="summary-sig-default">None</span>,
89
<span class="summary-sig-arg">copyright_holder</span>=<span class="summary-sig-default">None</span>,
90
<span class="summary-sig-arg">msgid_bugs_address</span>=<span class="summary-sig-default">None</span>,
91
<span class="summary-sig-arg">creation_date</span>=<span class="summary-sig-default">None</span>,
92
<span class="summary-sig-arg">revision_date</span>=<span class="summary-sig-default">None</span>,
93
<span class="summary-sig-arg">last_translator</span>=<span class="summary-sig-default">None</span>,
94
<span class="summary-sig-arg">language_team</span>=<span class="summary-sig-default">None</span>,
95
<span class="summary-sig-arg">charset</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string">utf-8</code><code class="variable-quote">'</code></span>,
96
<span class="summary-sig-arg">fuzzy</span>=<span class="summary-sig-default">True</span>)</span><br />
97
Initialize the catalog object.</td>
98
<td align="right" valign="top">
108
<td width="15%" align="right" valign="top" class="summary">
109
<span class="summary-type"> </span>
110
</td><td class="summary">
111
<table width="100%" cellpadding="0" cellspacing="0" border="0">
113
<td><span class="summary-sig"><a name="__contains__"></a><span class="summary-sig-name">__contains__</span>(<span class="summary-sig-arg">self</span>,
114
<span class="summary-sig-arg">id</span>)</span><br />
115
Return whether the catalog has a message with the specified ID.</td>
116
<td align="right" valign="top">
126
<td width="15%" align="right" valign="top" class="summary">
127
<span class="summary-type"> </span>
128
</td><td class="summary">
129
<table width="100%" cellpadding="0" cellspacing="0" border="0">
131
<td><span class="summary-sig"><a href="babel.messages.catalog.Catalog-class.html#__len__" class="summary-sig-name">__len__</a>(<span class="summary-sig-arg">self</span>)</span><br />
132
The number of messages in the catalog.</td>
133
<td align="right" valign="top">
143
<td width="15%" align="right" valign="top" class="summary">
144
<span class="summary-type"><tt class="rst-docutils literal">iterator</tt></span>
145
</td><td class="summary">
146
<table width="100%" cellpadding="0" cellspacing="0" border="0">
148
<td><span class="summary-sig"><a name="__iter__"></a><span class="summary-sig-name">__iter__</span>(<span class="summary-sig-arg">self</span>)</span><br />
149
Iterates through all the entries in the catalog, in the order they
150
were added, yielding a <a href="babel.messages.catalog.Message-class.html" class="link">Message</a> object for every entry.</td>
151
<td align="right" valign="top">
161
<td width="15%" align="right" valign="top" class="summary">
162
<span class="summary-type"> </span>
163
</td><td class="summary">
164
<table width="100%" cellpadding="0" cellspacing="0" border="0">
166
<td><span class="summary-sig"><a href="babel.messages.catalog.Catalog-class.html#__repr__" class="summary-sig-name">__repr__</a>(<span class="summary-sig-arg">self</span>)</span><br />
168
<td align="right" valign="top">
178
<td width="15%" align="right" valign="top" class="summary">
179
<span class="summary-type"> </span>
180
</td><td class="summary">
181
<table width="100%" cellpadding="0" cellspacing="0" border="0">
183
<td><span class="summary-sig"><a name="__delitem__"></a><span class="summary-sig-name">__delitem__</span>(<span class="summary-sig-arg">self</span>,
184
<span class="summary-sig-arg">id</span>)</span><br />
185
Delete the message with the specified ID.</td>
186
<td align="right" valign="top">
196
<td width="15%" align="right" valign="top" class="summary">
197
<span class="summary-type"><a href="babel.messages.catalog.Message-class.html" class="link">Message</a></span>
198
</td><td class="summary">
199
<table width="100%" cellpadding="0" cellspacing="0" border="0">
201
<td><span class="summary-sig"><a href="babel.messages.catalog.Catalog-class.html#__getitem__" class="summary-sig-name">__getitem__</a>(<span class="summary-sig-arg">self</span>,
202
<span class="summary-sig-arg">id</span>)</span><br />
203
Return the message with the specified ID.</td>
204
<td align="right" valign="top">
214
<td width="15%" align="right" valign="top" class="summary">
215
<span class="summary-type"> </span>
216
</td><td class="summary">
217
<table width="100%" cellpadding="0" cellspacing="0" border="0">
219
<td><span class="summary-sig"><a href="babel.messages.catalog.Catalog-class.html#__setitem__" class="summary-sig-name">__setitem__</a>(<span class="summary-sig-arg">self</span>,
220
<span class="summary-sig-arg">id</span>,
221
<span class="summary-sig-arg">message</span>)</span><br />
222
Add or update the message with the specified ID.</td>
223
<td align="right" valign="top">
233
<td width="15%" align="right" valign="top" class="summary">
234
<span class="summary-type"> </span>
235
</td><td class="summary">
236
<table width="100%" cellpadding="0" cellspacing="0" border="0">
238
<td><span class="summary-sig"><a href="babel.messages.catalog.Catalog-class.html#add" class="summary-sig-name">add</a>(<span class="summary-sig-arg">self</span>,
239
<span class="summary-sig-arg">id</span>,
240
<span class="summary-sig-arg">string</span>=<span class="summary-sig-default">None</span>,
241
<span class="summary-sig-arg">locations</span>=<span class="summary-sig-default"><code class="variable-group">(</code><code class="variable-group">)</code></span>,
242
<span class="summary-sig-arg">flags</span>=<span class="summary-sig-default"><code class="variable-group">(</code><code class="variable-group">)</code></span>,
243
<span class="summary-sig-arg">auto_comments</span>=<span class="summary-sig-default"><code class="variable-group">(</code><code class="variable-group">)</code></span>,
244
<span class="summary-sig-arg">user_comments</span>=<span class="summary-sig-default"><code class="variable-group">(</code><code class="variable-group">)</code></span>,
245
<span class="summary-sig-arg">previous_id</span>=<span class="summary-sig-default"><code class="variable-group">(</code><code class="variable-group">)</code></span>,
246
<span class="summary-sig-arg">lineno</span>=<span class="summary-sig-default">None</span>)</span><br />
247
Add or update the message with the specified ID.</td>
248
<td align="right" valign="top">
258
<td width="15%" align="right" valign="top" class="summary">
259
<span class="summary-type"><tt class="rst-docutils literal">iterator</tt></span>
260
</td><td class="summary">
261
<table width="100%" cellpadding="0" cellspacing="0" border="0">
263
<td><span class="summary-sig"><a href="babel.messages.catalog.Catalog-class.html#check" class="summary-sig-name">check</a>(<span class="summary-sig-arg">self</span>)</span><br />
264
Run various validation checks on the translations in the catalog.</td>
265
<td align="right" valign="top">
275
<td width="15%" align="right" valign="top" class="summary">
276
<span class="summary-type"> </span>
277
</td><td class="summary">
278
<table width="100%" cellpadding="0" cellspacing="0" border="0">
280
<td><span class="summary-sig"><a href="babel.messages.catalog.Catalog-class.html#update" class="summary-sig-name">update</a>(<span class="summary-sig-arg">self</span>,
281
<span class="summary-sig-arg">template</span>,
282
<span class="summary-sig-arg">no_fuzzy_matching</span>=<span class="summary-sig-default">False</span>)</span><br />
283
Update the catalog based on the given template catalog.</td>
284
<td align="right" valign="top">
294
<td colspan="2" class="summary">
295
<p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
296
<code>__delattr__</code>,
297
<code>__format__</code>,
298
<code>__getattribute__</code>,
299
<code>__hash__</code>,
300
<code>__new__</code>,
301
<code>__reduce__</code>,
302
<code>__reduce_ex__</code>,
303
<code>__setattr__</code>,
304
<code>__sizeof__</code>,
305
<code>__str__</code>,
306
<code>__subclasshook__</code>
311
<!-- ==================== INSTANCE VARIABLES ==================== -->
312
<a name="section-InstanceVariables"></a>
313
<table class="summary" border="1" cellpadding="3"
314
cellspacing="0" width="100%" bgcolor="white">
315
<tr bgcolor="#70b0f0" class="table-header">
316
<td align="left" colspan="2" class="table-header">
317
<span class="table-header">Instance Variables</span></td>
320
<td width="15%" align="right" valign="top" class="summary">
321
<span class="summary-type"> </span>
322
</td><td class="summary">
323
<a name="domain"></a><span class="summary-name">domain</span><br />
328
<td width="15%" align="right" valign="top" class="summary">
329
<span class="summary-type"> </span>
330
</td><td class="summary">
331
<a name="locale"></a><span class="summary-name">locale</span><br />
332
The locale or <code class="link">None</code>
336
<td width="15%" align="right" valign="top" class="summary">
337
<span class="summary-type"> </span>
338
</td><td class="summary">
339
<a name="project"></a><span class="summary-name">project</span><br />
344
<td width="15%" align="right" valign="top" class="summary">
345
<span class="summary-type"> </span>
346
</td><td class="summary">
347
<a name="version"></a><span class="summary-name">version</span><br />
352
<td width="15%" align="right" valign="top" class="summary">
353
<span class="summary-type"> </span>
354
</td><td class="summary">
355
<a name="last_translator"></a><span class="summary-name">last_translator</span><br />
356
Name and email address of the last translator.
360
<td width="15%" align="right" valign="top" class="summary">
361
<span class="summary-type"> </span>
362
</td><td class="summary">
363
<a name="language_team"></a><span class="summary-name">language_team</span><br />
364
Name and email address of the language team.
368
<td width="15%" align="right" valign="top" class="summary">
369
<span class="summary-type"> </span>
370
</td><td class="summary">
371
<a name="creation_date"></a><span class="summary-name">creation_date</span><br />
372
Creation date of the template
376
<td width="15%" align="right" valign="top" class="summary">
377
<span class="summary-type"> </span>
378
</td><td class="summary">
379
<a name="revision_date"></a><span class="summary-name">revision_date</span><br />
380
Last revision date of the catalog
384
<td width="15%" align="right" valign="top" class="summary">
385
<span class="summary-type"> </span>
386
</td><td class="summary">
387
<a name="fuzzy"></a><span class="summary-name">fuzzy</span><br />
388
Catalog header fuzzy bit (<code class="link">True</code> or <code class="link">False</code>)
392
<td width="15%" align="right" valign="top" class="summary">
393
<span class="summary-type"> </span>
394
</td><td class="summary">
395
<a name="obsolete"></a><span class="summary-name">obsolete</span><br />
396
Dictionary of obsolete messages
400
<!-- ==================== PROPERTIES ==================== -->
401
<a name="section-Properties"></a>
402
<table class="summary" border="1" cellpadding="3"
403
cellspacing="0" width="100%" bgcolor="white">
404
<tr bgcolor="#70b0f0" class="table-header">
405
<td align="left" colspan="2" class="table-header">
406
<span class="table-header">Properties</span></td>
409
<td width="15%" align="right" valign="top" class="summary">
410
<span class="summary-type"><code class="link">unicode</code></span>
411
</td><td class="summary">
412
<a href="babel.messages.catalog.Catalog-class.html#header_comment" class="summary-name">header_comment</a><br />
413
The header comment for the catalog.
417
<td width="15%" align="right" valign="top" class="summary">
418
<span class="summary-type"><code class="link">list</code></span>
419
</td><td class="summary">
420
<a href="babel.messages.catalog.Catalog-class.html#mime_headers" class="summary-name">mime_headers</a><br />
421
The MIME headers of the catalog, used for the special <tt class="rst-docutils literal">msgid ""</tt> entry.
425
<td width="15%" align="right" valign="top" class="summary">
426
<span class="summary-type"><code class="link">int</code></span>
427
</td><td class="summary">
428
<a href="babel.messages.catalog.Catalog-class.html#num_plurals" class="summary-name">num_plurals</a><br />
429
The number of plurals used by the catalog or locale.
433
<td width="15%" align="right" valign="top" class="summary">
434
<span class="summary-type"><code class="link">basestring</code></span>
435
</td><td class="summary">
436
<a href="babel.messages.catalog.Catalog-class.html#plural_expr" class="summary-name">plural_expr</a><br />
437
The plural expression used by the catalog or locale.
441
<td width="15%" align="right" valign="top" class="summary">
442
<span class="summary-type"><code class="link">str</code></span>
443
</td><td class="summary">
444
<a href="babel.messages.catalog.Catalog-class.html#plural_forms" class="summary-name">plural_forms</a><br />
445
Return the plural forms declaration for the locale.
449
<td colspan="2" class="summary">
450
<p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
451
<code>__class__</code>
456
<!-- ==================== METHOD DETAILS ==================== -->
457
<a name="section-MethodDetails"></a>
458
<table class="details" border="1" cellpadding="3"
459
cellspacing="0" width="100%" bgcolor="white">
460
<tr bgcolor="#70b0f0" class="table-header">
461
<td align="left" colspan="2" class="table-header">
462
<span class="table-header">Method Details</span></td>
465
<a name="__init__"></a>
467
<table class="details" border="1" cellpadding="3"
468
cellspacing="0" width="100%" bgcolor="white">
470
<table width="100%" cellpadding="0" cellspacing="0" border="0">
471
<tr valign="top"><td>
472
<h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
473
<span class="sig-arg">locale</span>=<span class="sig-default">None</span>,
474
<span class="sig-arg">domain</span>=<span class="sig-default">None</span>,
475
<span class="sig-arg">header_comment</span>=<span class="sig-default"><code class="variable-quote">u'</code><code class="variable-string"># Translations template for PROJE</code><code class="variable-ellipsis">...</code></span>,
476
<span class="sig-arg">project</span>=<span class="sig-default">None</span>,
477
<span class="sig-arg">version</span>=<span class="sig-default">None</span>,
478
<span class="sig-arg">copyright_holder</span>=<span class="sig-default">None</span>,
479
<span class="sig-arg">msgid_bugs_address</span>=<span class="sig-default">None</span>,
480
<span class="sig-arg">creation_date</span>=<span class="sig-default">None</span>,
481
<span class="sig-arg">revision_date</span>=<span class="sig-default">None</span>,
482
<span class="sig-arg">last_translator</span>=<span class="sig-default">None</span>,
483
<span class="sig-arg">language_team</span>=<span class="sig-default">None</span>,
484
<span class="sig-arg">charset</span>=<span class="sig-default"><code class="variable-quote">'</code><code class="variable-string">utf-8</code><code class="variable-quote">'</code></span>,
485
<span class="sig-arg">fuzzy</span>=<span class="sig-default">True</span>)</span>
486
<br /><em class="fname">(Constructor)</em>
488
</td><td align="right" valign="top"
493
Initialize the catalog object.
496
<dd><ul class="nomargin-top">
497
<li><strong class="pname"><code>locale</code></strong> - the locale identifier or <a href="babel.core.Locale-class.html" class="link">Locale</a> object, or <code class="link">None</code>
498
if the catalog is not bound to a locale (which basically
499
means it's a template)</li>
500
<li><strong class="pname"><code>domain</code></strong> - the message domain</li>
501
<li><strong class="pname"><code>header_comment</code></strong> - the header comment as string, or <code class="link">None</code> for the
503
<li><strong class="pname"><code>project</code></strong> - the project's name</li>
504
<li><strong class="pname"><code>version</code></strong> - the project's version</li>
505
<li><strong class="pname"><code>copyright_holder</code></strong> - the copyright holder of the catalog</li>
506
<li><strong class="pname"><code>msgid_bugs_address</code></strong> - the email address or URL to submit bug
508
<li><strong class="pname"><code>creation_date</code></strong> - the date the catalog was created</li>
509
<li><strong class="pname"><code>revision_date</code></strong> - the date the catalog was revised</li>
510
<li><strong class="pname"><code>last_translator</code></strong> - the name and email of the last translator</li>
511
<li><strong class="pname"><code>language_team</code></strong> - the name and email of the language team</li>
512
<li><strong class="pname"><code>charset</code></strong> - the encoding to use in the output</li>
513
<li><strong class="pname"><code>fuzzy</code></strong> - the fuzzy bit on the catalog header</li>
521
<a name="__len__"></a>
523
<table class="details" border="1" cellpadding="3"
524
cellspacing="0" width="100%" bgcolor="white">
526
<table width="100%" cellpadding="0" cellspacing="0" border="0">
527
<tr valign="top"><td>
528
<h3 class="epydoc"><span class="sig"><span class="sig-name">__len__</span>(<span class="sig-arg">self</span>)</span>
529
<br /><em class="fname">(Length operator)</em>
531
</td><td align="right" valign="top"
536
<p>The number of messages in the catalog.</p>
537
<p>This does not include the special <tt class="rst-docutils literal">msgid ""</tt> entry.</p>
542
<a name="__repr__"></a>
544
<table class="details" border="1" cellpadding="3"
545
cellspacing="0" width="100%" bgcolor="white">
547
<table width="100%" cellpadding="0" cellspacing="0" border="0">
548
<tr valign="top"><td>
549
<h3 class="epydoc"><span class="sig"><span class="sig-name">__repr__</span>(<span class="sig-arg">self</span>)</span>
550
<br /><em class="fname">(Representation operator)</em>
552
</td><td align="right" valign="top"
561
<dd><em class="note">(inherited documentation)</em></dd>
566
<a name="__getitem__"></a>
568
<table class="details" border="1" cellpadding="3"
569
cellspacing="0" width="100%" bgcolor="white">
571
<table width="100%" cellpadding="0" cellspacing="0" border="0">
572
<tr valign="top"><td>
573
<h3 class="epydoc"><span class="sig"><span class="sig-name">__getitem__</span>(<span class="sig-arg">self</span>,
574
<span class="sig-arg">id</span>)</span>
575
<br /><em class="fname">(Indexing operator)</em>
577
</td><td align="right" valign="top"
582
Return the message with the specified ID.
585
<dd><ul class="nomargin-top">
586
<li><strong class="pname"><code>id</code></strong> - the message ID</li>
588
<dt>Returns: <a href="babel.messages.catalog.Message-class.html" class="link">Message</a></dt>
589
<dd>the message with the specified ID, or <code class="link">None</code> if no such message
590
is in the catalog</dd>
594
<a name="__setitem__"></a>
596
<table class="details" border="1" cellpadding="3"
597
cellspacing="0" width="100%" bgcolor="white">
599
<table width="100%" cellpadding="0" cellspacing="0" border="0">
600
<tr valign="top"><td>
601
<h3 class="epydoc"><span class="sig"><span class="sig-name">__setitem__</span>(<span class="sig-arg">self</span>,
602
<span class="sig-arg">id</span>,
603
<span class="sig-arg">message</span>)</span>
604
<br /><em class="fname">(Index assignment operator)</em>
606
</td><td align="right" valign="top"
611
<p>Add or update the message with the specified ID.</p>
612
<pre class="py-doctest">
613
<span class="py-prompt">>>> </span>catalog = Catalog()
614
<span class="py-prompt">>>> </span>catalog[u<span class="py-string">'foo'</span>] = Message(u<span class="py-string">'foo'</span>)
615
<span class="py-prompt">>>> </span>catalog[u<span class="py-string">'foo'</span>]
616
<span class="py-output"><Message u'foo' (flags: [])></span></pre>
617
<p>If a message with that ID is already in the catalog, it is updated
618
to include the locations and flags of the new message.</p>
619
<pre class="py-doctest">
620
<span class="py-prompt">>>> </span>catalog = Catalog()
621
<span class="py-prompt">>>> </span>catalog[u<span class="py-string">'foo'</span>] = Message(u<span class="py-string">'foo'</span>, locations=[(<span class="py-string">'main.py'</span>, 1)])
622
<span class="py-prompt">>>> </span>catalog[u<span class="py-string">'foo'</span>].locations
623
<span class="py-output">[('main.py', 1)]</span>
624
<span class="py-output"></span><span class="py-prompt">>>> </span>catalog[u<span class="py-string">'foo'</span>] = Message(u<span class="py-string">'foo'</span>, locations=[(<span class="py-string">'utils.py'</span>, 5)])
625
<span class="py-prompt">>>> </span>catalog[u<span class="py-string">'foo'</span>].locations
626
<span class="py-output">[('main.py', 1), ('utils.py', 5)]</span></pre>
629
<dd><ul class="nomargin-top">
630
<li><strong class="pname"><code>id</code></strong> - the message ID</li>
631
<li><strong class="pname"><code>message</code></strong> - the <a href="babel.messages.catalog.Message-class.html" class="link">Message</a> object</li>
638
<table class="details" border="1" cellpadding="3"
639
cellspacing="0" width="100%" bgcolor="white">
641
<table width="100%" cellpadding="0" cellspacing="0" border="0">
642
<tr valign="top"><td>
643
<h3 class="epydoc"><span class="sig"><span class="sig-name">add</span>(<span class="sig-arg">self</span>,
644
<span class="sig-arg">id</span>,
645
<span class="sig-arg">string</span>=<span class="sig-default">None</span>,
646
<span class="sig-arg">locations</span>=<span class="sig-default"><code class="variable-group">(</code><code class="variable-group">)</code></span>,
647
<span class="sig-arg">flags</span>=<span class="sig-default"><code class="variable-group">(</code><code class="variable-group">)</code></span>,
648
<span class="sig-arg">auto_comments</span>=<span class="sig-default"><code class="variable-group">(</code><code class="variable-group">)</code></span>,
649
<span class="sig-arg">user_comments</span>=<span class="sig-default"><code class="variable-group">(</code><code class="variable-group">)</code></span>,
650
<span class="sig-arg">previous_id</span>=<span class="sig-default"><code class="variable-group">(</code><code class="variable-group">)</code></span>,
651
<span class="sig-arg">lineno</span>=<span class="sig-default">None</span>)</span>
653
</td><td align="right" valign="top"
658
<p>Add or update the message with the specified ID.</p>
659
<pre class="py-doctest">
660
<span class="py-prompt">>>> </span>catalog = Catalog()
661
<span class="py-prompt">>>> </span>catalog.add(u<span class="py-string">'foo'</span>)
662
<span class="py-prompt">>>> </span>catalog[u<span class="py-string">'foo'</span>]
663
<span class="py-output"><Message u'foo' (flags: [])></span></pre>
664
<p>This method simply constructs a <a href="babel.messages.catalog.Message-class.html" class="link">Message</a> object with the given
665
arguments and invokes <a href="babel.messages.catalog.Catalog-class.html#__setitem__" class="link">__setitem__</a> with that object.</p>
668
<dd><ul class="nomargin-top">
669
<li><strong class="pname"><code>id</code></strong> - the message ID, or a <tt class="rst-docutils literal">(singular, plural)</tt> tuple for
670
pluralizable messages</li>
671
<li><strong class="pname"><code>string</code></strong> - the translated message string, or a
672
<tt class="rst-docutils literal">(singular, plural)</tt> tuple for pluralizable messages</li>
673
<li><strong class="pname"><code>locations</code></strong> - a sequence of <tt class="rst-docutils literal">(filenname, lineno)</tt> tuples</li>
674
<li><strong class="pname"><code>flags</code></strong> - a set or sequence of flags</li>
675
<li><strong class="pname"><code>auto_comments</code></strong> - a sequence of automatic comments</li>
676
<li><strong class="pname"><code>user_comments</code></strong> - a sequence of user comments</li>
677
<li><strong class="pname"><code>previous_id</code></strong> - the previous message ID, or a <tt class="rst-docutils literal">(singular, plural)</tt>
678
tuple for pluralizable messages</li>
679
<li><strong class="pname"><code>lineno</code></strong> - the line number on which the msgid line was found in the
687
<table class="details" border="1" cellpadding="3"
688
cellspacing="0" width="100%" bgcolor="white">
690
<table width="100%" cellpadding="0" cellspacing="0" border="0">
691
<tr valign="top"><td>
692
<h3 class="epydoc"><span class="sig"><span class="sig-name">check</span>(<span class="sig-arg">self</span>)</span>
694
</td><td align="right" valign="top"
699
<p>Run various validation checks on the translations in the catalog.</p>
700
<p>For every message which fails validation, this method yield a
701
<tt class="rst-docutils literal">(message, errors)</tt> tuple, where <tt class="rst-docutils literal">message</tt> is the <a href="babel.messages.catalog.Message-class.html" class="link">Message</a> object
702
and <tt class="rst-docutils literal">errors</tt> is a sequence of <a href="babel.messages.catalog.TranslationError-class.html" class="link">TranslationError</a> objects.</p>
704
<dt>Returns: <tt class="rst-rst-docutils literal rst-docutils literal">iterator</tt></dt>
708
<a name="update"></a>
710
<table class="details" border="1" cellpadding="3"
711
cellspacing="0" width="100%" bgcolor="white">
713
<table width="100%" cellpadding="0" cellspacing="0" border="0">
714
<tr valign="top"><td>
715
<h3 class="epydoc"><span class="sig"><span class="sig-name">update</span>(<span class="sig-arg">self</span>,
716
<span class="sig-arg">template</span>,
717
<span class="sig-arg">no_fuzzy_matching</span>=<span class="sig-default">False</span>)</span>
719
</td><td align="right" valign="top"
724
<p>Update the catalog based on the given template catalog.</p>
725
<pre class="py-doctest">
726
<span class="py-prompt">>>> </span><span class="py-keyword">from</span> babel.messages <span class="py-keyword">import</span> Catalog
727
<span class="py-prompt">>>> </span>template = Catalog()
728
<span class="py-prompt">>>> </span>template.add(<span class="py-string">'green'</span>, locations=[(<span class="py-string">'main.py'</span>, 99)])
729
<span class="py-prompt">>>> </span>template.add(<span class="py-string">'blue'</span>, locations=[(<span class="py-string">'main.py'</span>, 100)])
730
<span class="py-prompt">>>> </span>template.add((<span class="py-string">'salad'</span>, <span class="py-string">'salads'</span>), locations=[(<span class="py-string">'util.py'</span>, 42)])
731
<span class="py-prompt">>>> </span>catalog = Catalog(locale=<span class="py-string">'de_DE'</span>)
732
<span class="py-prompt">>>> </span>catalog.add(<span class="py-string">'blue'</span>, u<span class="py-string">'blau'</span>, locations=[(<span class="py-string">'main.py'</span>, 98)])
733
<span class="py-prompt">>>> </span>catalog.add(<span class="py-string">'head'</span>, u<span class="py-string">'Kopf'</span>, locations=[(<span class="py-string">'util.py'</span>, 33)])
734
<span class="py-prompt">>>> </span>catalog.add((<span class="py-string">'salad'</span>, <span class="py-string">'salads'</span>), (u<span class="py-string">'Salat'</span>, u<span class="py-string">'Salate'</span>),
735
<span class="py-more">... </span> locations=[(<span class="py-string">'util.py'</span>, 38)])</pre>
736
<pre class="py-doctest">
737
<span class="py-prompt">>>> </span>catalog.update(template)
738
<span class="py-prompt">>>> </span>len(catalog)
739
<span class="py-output">3</span></pre>
740
<pre class="py-doctest">
741
<span class="py-prompt">>>> </span>msg1 = catalog[<span class="py-string">'green'</span>]
742
<span class="py-prompt">>>> </span>msg1.string
743
<span class="py-prompt">>>> </span>msg1.locations
744
<span class="py-output">[('main.py', 99)]</span></pre>
745
<pre class="py-doctest">
746
<span class="py-prompt">>>> </span>msg2 = catalog[<span class="py-string">'blue'</span>]
747
<span class="py-prompt">>>> </span>msg2.string
748
<span class="py-output">u'blau'</span>
749
<span class="py-output"></span><span class="py-prompt">>>> </span>msg2.locations
750
<span class="py-output">[('main.py', 100)]</span></pre>
751
<pre class="py-doctest">
752
<span class="py-prompt">>>> </span>msg3 = catalog[<span class="py-string">'salad'</span>]
753
<span class="py-prompt">>>> </span>msg3.string
754
<span class="py-output">(u'Salat', u'Salate')</span>
755
<span class="py-output"></span><span class="py-prompt">>>> </span>msg3.locations
756
<span class="py-output">[('util.py', 42)]</span></pre>
757
<p>Messages that are in the catalog but not in the template are removed
758
from the main collection, but can still be accessed via the <a href="babel.messages.catalog.Catalog-class.html#obsolete" class="link">obsolete</a>
760
<pre class="py-doctest">
761
<span class="py-prompt">>>> </span><span class="py-string">'head'</span> <span class="py-keyword">in</span> catalog
762
<span class="py-output">False</span>
763
<span class="py-output"></span><span class="py-prompt">>>> </span>catalog.obsolete.values()
764
<span class="py-output">[<Message 'head' (flags: [])>]</span></pre>
767
<dd><ul class="nomargin-top">
768
<li><strong class="pname"><code>template</code></strong> - the reference catalog, usually read from a POT file</li>
769
<li><strong class="pname"><code>no_fuzzy_matching</code></strong> - whether to use fuzzy matching of message IDs</li>
775
<!-- ==================== PROPERTY DETAILS ==================== -->
776
<a name="section-PropertyDetails"></a>
777
<table class="details" border="1" cellpadding="3"
778
cellspacing="0" width="100%" bgcolor="white">
779
<tr bgcolor="#70b0f0" class="table-header">
780
<td align="left" colspan="2" class="table-header">
781
<span class="table-header">Property Details</span></td>
784
<a name="header_comment"></a>
786
<table class="details" border="1" cellpadding="3"
787
cellspacing="0" width="100%" bgcolor="white">
789
<h3 class="epydoc">header_comment</h3>
790
<p>The header comment for the catalog.</p>
791
<pre class="py-doctest">
792
<span class="py-prompt">>>> </span>catalog = Catalog(project=<span class="py-string">'Foobar'</span>, version=<span class="py-string">'1.0'</span>,
793
<span class="py-more">... </span> copyright_holder=<span class="py-string">'Foo Company'</span>)
794
<span class="py-prompt">>>> </span><span class="py-keyword">print</span> catalog.header_comment <span class="py-comment">#doctest: +ELLIPSIS</span>
795
<span class="py-output"># Translations template for Foobar.</span>
796
<span class="py-output"># Copyright (C) ... Foo Company</span>
797
<span class="py-output"># This file is distributed under the same license as the Foobar project.</span>
798
<span class="py-output"># FIRST AUTHOR <EMAIL@ADDRESS>, ....</span>
799
<span class="py-output">#</span></pre>
800
<p>The header can also be set from a string. Any known upper-case variables
801
will be replaced when the header is retrieved again:</p>
802
<pre class="py-doctest">
803
<span class="py-prompt">>>> </span>catalog = Catalog(project=<span class="py-string">'Foobar'</span>, version=<span class="py-string">'1.0'</span>,
804
<span class="py-more">... </span> copyright_holder=<span class="py-string">'Foo Company'</span>)
805
<span class="py-prompt">>>> </span>catalog.header_comment = <span class="py-string">'''\</span>
806
<span class="py-more">... </span><span class="py-string"># The POT for my really cool PROJECT project.</span>
807
<span class="py-more">... </span><span class="py-string"># Copyright (C) 1990-2003 ORGANIZATION</span>
808
<span class="py-more">... </span><span class="py-string"># This file is distributed under the same license as the PROJECT</span>
809
<span class="py-more">... </span><span class="py-string"># project.</span>
810
<span class="py-more">... </span><span class="py-string">#'''</span>
811
<span class="py-prompt">>>> </span><span class="py-keyword">print</span> catalog.header_comment
812
<span class="py-output"># The POT for my really cool Foobar project.</span>
813
<span class="py-output"># Copyright (C) 1990-2003 Foo Company</span>
814
<span class="py-output"># This file is distributed under the same license as the Foobar</span>
815
<span class="py-output"># project.</span>
816
<span class="py-output">#</span></pre>
819
<dd class="value"><span class="summary-sig"><a href="babel.messages.catalog.Catalog-class.html#_get_header_comment" class="summary-sig-name" onclick="show_private();">_get_header_comment</a>(<span class="summary-sig-arg">self</span>)</span>
822
<dd class="value"><span class="summary-sig"><a href="babel.messages.catalog.Catalog-class.html#_set_header_comment" class="summary-sig-name" onclick="show_private();">_set_header_comment</a>(<span class="summary-sig-arg">self</span>,
823
<span class="summary-sig-arg">string</span>)</span>
826
<dd><code class="link">unicode</code></dd>
830
<a name="mime_headers"></a>
832
<table class="details" border="1" cellpadding="3"
833
cellspacing="0" width="100%" bgcolor="white">
835
<h3 class="epydoc">mime_headers</h3>
836
<p>The MIME headers of the catalog, used for the special <tt class="rst-rst-docutils literal rst-docutils literal">msgid ""</tt> entry.</p>
837
<p>The behavior of this property changes slightly depending on whether a locale
838
is set or not, the latter indicating that the catalog is actually a template
839
for actual translations.</p>
840
<p>Here's an example of the output for such a catalog template:</p>
841
<pre class="py-doctest">
842
<span class="py-prompt">>>> </span>created = datetime(1990, 4, 1, 15, 30, tzinfo=UTC)
843
<span class="py-prompt">>>> </span>catalog = Catalog(project=<span class="py-string">'Foobar'</span>, version=<span class="py-string">'1.0'</span>,
844
<span class="py-more">... </span> creation_date=created)
845
<span class="py-prompt">>>> </span><span class="py-keyword">for</span> name, value <span class="py-keyword">in</span> catalog.mime_headers:
846
<span class="py-more">... </span> <span class="py-keyword">print</span> <span class="py-string">'%s: %s'</span> % (name, value)
847
<span class="py-output">Project-Id-Version: Foobar 1.0</span>
848
<span class="py-output">Report-Msgid-Bugs-To: EMAIL@ADDRESS</span>
849
<span class="py-output">POT-Creation-Date: 1990-04-01 15:30+0000</span>
850
<span class="py-output">PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE</span>
851
<span class="py-output">Last-Translator: FULL NAME <EMAIL@ADDRESS></span>
852
<span class="py-output">Language-Team: LANGUAGE <LL@li.org></span>
853
<span class="py-output">MIME-Version: 1.0</span>
854
<span class="py-output">Content-Type: text/plain; charset=utf-8</span>
855
<span class="py-output">Content-Transfer-Encoding: 8bit</span>
856
<span class="py-output">Generated-By: Babel ...</span></pre>
857
<p>And here's an example of the output when the locale is set:</p>
858
<pre class="py-doctest">
859
<span class="py-prompt">>>> </span>revised = datetime(1990, 8, 3, 12, 0, tzinfo=UTC)
860
<span class="py-prompt">>>> </span>catalog = Catalog(locale=<span class="py-string">'de_DE'</span>, project=<span class="py-string">'Foobar'</span>, version=<span class="py-string">'1.0'</span>,
861
<span class="py-more">... </span> creation_date=created, revision_date=revised,
862
<span class="py-more">... </span> last_translator=<span class="py-string">'John Doe <jd@example.com>'</span>,
863
<span class="py-more">... </span> language_team=<span class="py-string">'de_DE <de@example.com>'</span>)
864
<span class="py-prompt">>>> </span><span class="py-keyword">for</span> name, value <span class="py-keyword">in</span> catalog.mime_headers:
865
<span class="py-more">... </span> <span class="py-keyword">print</span> <span class="py-string">'%s: %s'</span> % (name, value)
866
<span class="py-output">Project-Id-Version: Foobar 1.0</span>
867
<span class="py-output">Report-Msgid-Bugs-To: EMAIL@ADDRESS</span>
868
<span class="py-output">POT-Creation-Date: 1990-04-01 15:30+0000</span>
869
<span class="py-output">PO-Revision-Date: 1990-08-03 12:00+0000</span>
870
<span class="py-output">Last-Translator: John Doe <jd@example.com></span>
871
<span class="py-output">Language-Team: de_DE <de@example.com></span>
872
<span class="py-output">Plural-Forms: nplurals=2; plural=(n != 1)</span>
873
<span class="py-output">MIME-Version: 1.0</span>
874
<span class="py-output">Content-Type: text/plain; charset=utf-8</span>
875
<span class="py-output">Content-Transfer-Encoding: 8bit</span>
876
<span class="py-output">Generated-By: Babel ...</span></pre>
879
<dd class="value"><span class="summary-sig"><a href="babel.messages.catalog.Catalog-class.html#_get_mime_headers" class="summary-sig-name" onclick="show_private();">_get_mime_headers</a>(<span class="summary-sig-arg">self</span>)</span>
882
<dd class="value"><span class="summary-sig"><a href="babel.messages.catalog.Catalog-class.html#_set_mime_headers" class="summary-sig-name" onclick="show_private();">_set_mime_headers</a>(<span class="summary-sig-arg">self</span>,
883
<span class="summary-sig-arg">headers</span>)</span>
886
<dd><code class="link">list</code></dd>
890
<a name="num_plurals"></a>
892
<table class="details" border="1" cellpadding="3"
893
cellspacing="0" width="100%" bgcolor="white">
895
<h3 class="epydoc">num_plurals</h3>
896
<p>The number of plurals used by the catalog or locale.</p>
897
<pre class="py-doctest">
898
<span class="py-prompt">>>> </span>Catalog(locale=<span class="py-string">'en'</span>).num_plurals
899
<span class="py-output">2</span>
900
<span class="py-output"></span><span class="py-prompt">>>> </span>Catalog(locale=<span class="py-string">'ga'</span>).num_plurals
901
<span class="py-output">3</span></pre>
904
<dd class="value"><span class="summary-sig"><i>unreachable</i>.num_plurals(<span class="summary-sig-arg">self</span>)</span>
907
<dd><code class="link">int</code></dd>
911
<a name="plural_expr"></a>
913
<table class="details" border="1" cellpadding="3"
914
cellspacing="0" width="100%" bgcolor="white">
916
<h3 class="epydoc">plural_expr</h3>
917
<p>The plural expression used by the catalog or locale.</p>
918
<pre class="py-doctest">
919
<span class="py-prompt">>>> </span>Catalog(locale=<span class="py-string">'en'</span>).plural_expr
920
<span class="py-output">'(n != 1)'</span>
921
<span class="py-output"></span><span class="py-prompt">>>> </span>Catalog(locale=<span class="py-string">'ga'</span>).plural_expr
922
<span class="py-output">'(n==1 ? 0 : n==2 ? 1 : 2)'</span></pre>
925
<dd class="value"><span class="summary-sig"><i>unreachable</i>.plural_expr(<span class="summary-sig-arg">self</span>)</span>
928
<dd><code class="link">basestring</code></dd>
932
<a name="plural_forms"></a>
934
<table class="details" border="1" cellpadding="3"
935
cellspacing="0" width="100%" bgcolor="white">
937
<h3 class="epydoc">plural_forms</h3>
938
<p>Return the plural forms declaration for the locale.</p>
939
<pre class="py-doctest">
940
<span class="py-prompt">>>> </span>Catalog(locale=<span class="py-string">'en'</span>).plural_forms
941
<span class="py-output">'nplurals=2; plural=(n != 1)'</span>
942
<span class="py-output"></span><span class="py-prompt">>>> </span>Catalog(locale=<span class="py-string">'pt_BR'</span>).plural_forms
943
<span class="py-output">'nplurals=2; plural=(n > 1)'</span></pre>
946
<dd class="value"><span class="summary-sig"><i>unreachable</i>.plural_forms(<span class="summary-sig-arg">self</span>)</span>
949
<dd><code class="link">str</code></dd>
954
<!-- ==================== NAVIGATION BAR ==================== -->
955
<table class="navbar" border="0" width="100%" cellpadding="0"
956
bgcolor="#a0c0ff" cellspacing="0">
959
<th> <a
960
href="babel-module.html">Home</a> </th>
963
<th> <a
964
href="module-tree.html">Trees</a> </th>
967
<th> <a
968
href="identifier-index.html">Indices</a> </th>
971
<th> <a
972
href="help.html">Help</a> </th>
974
<!-- Project homepage -->
975
<th class="navbar" align="right" width="100%">
976
<table border="0" cellpadding="0" cellspacing="0">
977
<tr><th class="navbar" align="center"
978
><a class="navbar" target="_top" href="../index.html">Documentation Index</a></th>
982
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
984
<td align="left" class="footer">
985
Generated by Epydoc 3.0.1 on Thu Mar 17 15:12:44 2011
987
<td align="right" class="footer">
988
<a target="mainFrame" href="http://epydoc.sourceforge.net"
989
>http://epydoc.sourceforge.net</a>
994
<script type="text/javascript">
996
// Private objects are initially displayed (because if
997
// javascript is turned off then we want them to be
998
// visible); but by default, we want to hide them. So hide
999
// them unless we have a cookie that says to show them.