@@ -48,9 +48,10 @@ class-based API instead.
48
48
49
49
.. function :: bind_textdomain_codeset(domain, codeset=None)
50
50
51
- Bind the *domain * to *codeset *, changing the encoding of strings returned by the
52
- :func: `gettext ` family of functions. If *codeset * is omitted, then the current
53
- binding is returned.
51
+ Bind the *domain * to *codeset *, changing the encoding of byte strings
52
+ returned by the :func: `lgettext `, :func: `ldgettext `, :func: `lngettext `
53
+ and :func: `ldngettext ` functions.
54
+ If *codeset * is omitted, then the current binding is returned.
54
55
55
56
56
57
.. function :: textdomain(domain=None)
@@ -67,28 +68,14 @@ class-based API instead.
67
68
:func: `_ ` in the local namespace (see examples below).
68
69
69
70
70
- .. function :: lgettext(message)
71
-
72
- Equivalent to :func: `gettext `, but the translation is returned in the
73
- preferred system encoding, if no other encoding was explicitly set with
74
- :func: `bind_textdomain_codeset `.
75
-
76
-
77
71
.. function :: dgettext(domain, message)
78
72
79
- Like :func: `gettext `, but look the message up in the specified *domain *.
80
-
81
-
82
- .. function :: ldgettext(domain, message)
83
-
84
- Equivalent to :func: `dgettext `, but the translation is returned in the
85
- preferred system encoding, if no other encoding was explicitly set with
86
- :func: `bind_textdomain_codeset `.
73
+ Like :func: `.gettext `, but look the message up in the specified *domain *.
87
74
88
75
89
76
.. function :: ngettext(singular, plural, n)
90
77
91
- Like :func: `gettext `, but consider plural forms. If a translation is found,
78
+ Like :func: `. gettext `, but consider plural forms. If a translation is found,
92
79
apply the plural formula to *n *, and return the resulting message (some
93
80
languages have more than two plural forms). If no translation is found, return
94
81
*singular * if *n * is 1; return *plural * otherwise.
@@ -101,24 +88,33 @@ class-based API instead.
101
88
formulas for a variety of languages.
102
89
103
90
104
- .. function :: lngettext(singular, plural, n)
105
-
106
- Equivalent to :func: `ngettext `, but the translation is returned in the
107
- preferred system encoding, if no other encoding was explicitly set with
108
- :func: `bind_textdomain_codeset `.
109
-
110
-
111
91
.. function :: dngettext(domain, singular, plural, n)
112
92
113
93
Like :func: `ngettext `, but look the message up in the specified *domain *.
114
94
115
95
96
+ .. function :: lgettext(message)
97
+ .. function :: ldgettext(domain, message)
98
+ .. function :: lngettext(singular, plural, n)
116
99
.. function :: ldngettext(domain, singular, plural, n)
117
100
118
- Equivalent to :func: `dngettext `, but the translation is returned in the
119
- preferred system encoding, if no other encoding was explicitly set with
101
+ Equivalent to the corresponding functions without the ``l `` prefix
102
+ (:func: `.gettext `, :func: `dgettext `, :func: `ngettext ` and :func: `dngettext `),
103
+ but the translation is returned as a byte string encoded in the preferred
104
+ system encoding if no other encoding was explicitly set with
120
105
:func: `bind_textdomain_codeset `.
121
106
107
+ .. warning ::
108
+
109
+ These functions should be avoided in Python 3, because they return
110
+ encoded bytes. It's much better to use alternatives which return
111
+ Unicode strings instead, since most Python applications will want to
112
+ manipulate human readable text as strings instead of bytes. Further,
113
+ it's possible that you may get unexpected Unicode-related exceptions
114
+ if there are encoding problems with the translated strings. It is
115
+ possible that the ``l*() `` functions will be deprecated in future Python
116
+ versions due to their inherent problems and limitations.
117
+
122
118
123
119
Note that GNU :program: `gettext ` also defines a :func: `dcgettext ` method, but
124
120
this was deemed not useful and so it is currently unimplemented.
@@ -179,8 +175,9 @@ class can also install themselves in the built-in namespace as the function
179
175
names are cached. The actual class instantiated is either *class_ * if
180
176
provided, otherwise :class: `GNUTranslations `. The class's constructor must
181
177
take a single :term: `file object ` argument. If provided, *codeset * will change
182
- the charset used to encode translated strings in the :meth: `lgettext ` and
183
- :meth: `lngettext ` methods.
178
+ the charset used to encode translated strings in the
179
+ :meth: `~NullTranslations.lgettext ` and :meth: `~NullTranslations.lngettext `
180
+ methods.
184
181
185
182
If multiple files are found, later files are used as fallbacks for earlier ones.
186
183
To allow setting the fallback, :func: `copy.copy ` is used to clone each
@@ -250,26 +247,29 @@ are the methods of :class:`NullTranslations`:
250
247
251
248
.. method :: gettext(message)
252
249
253
- If a fallback has been set, forward :meth: `gettext ` to the fallback.
254
- Otherwise, return the translated message. Overridden in derived classes.
255
-
256
-
257
- .. method :: lgettext(message)
258
-
259
- If a fallback has been set, forward :meth: `lgettext ` to the fallback.
260
- Otherwise, return the translated message. Overridden in derived classes.
250
+ If a fallback has been set, forward :meth: `.gettext ` to the fallback.
251
+ Otherwise, return *message *. Overridden in derived classes.
261
252
262
253
263
254
.. method :: ngettext(singular, plural, n)
264
255
265
256
If a fallback has been set, forward :meth: `ngettext ` to the fallback.
266
- Otherwise, return the translated message. Overridden in derived classes.
257
+ Otherwise, return *singular * if *n * is 1; return *plural * otherwise.
258
+ Overridden in derived classes.
267
259
268
260
261
+ .. method :: lgettext(message)
269
262
.. method :: lngettext(singular, plural, n)
270
263
271
- If a fallback has been set, forward :meth: `lngettext ` to the fallback.
272
- Otherwise, return the translated message. Overridden in derived classes.
264
+ Equivalent to :meth: `.gettext ` and :meth: `ngettext `, but the translation
265
+ is returned as a byte string encoded in the preferred system encoding
266
+ if no encoding was explicitly set with :meth: `set_output_charset `.
267
+ Overridden in derived classes.
268
+
269
+ .. warning ::
270
+
271
+ These methods should be avoided in Python 3. See the warning for the
272
+ :func: `lgettext ` function.
273
273
274
274
275
275
.. method :: info()
@@ -279,32 +279,28 @@ are the methods of :class:`NullTranslations`:
279
279
280
280
.. method :: charset()
281
281
282
- Return the "protected" :attr: `_charset ` variable, which is the encoding of
283
- the message catalog file.
282
+ Return the encoding of the message catalog file.
284
283
285
284
286
285
.. method :: output_charset()
287
286
288
- Return the "protected" :attr: `_output_charset ` variable, which defines the
289
- encoding used to return translated messages in :meth: `lgettext ` and
290
- :meth: `lngettext `.
287
+ Return the encoding used to return translated messages in :meth: `.lgettext `
288
+ and :meth: `.lngettext `.
291
289
292
290
293
291
.. method :: set_output_charset(charset)
294
292
295
- Change the "protected" :attr: `_output_charset ` variable, which defines the
296
- encoding used to return translated messages.
293
+ Change the encoding used to return translated messages.
297
294
298
295
299
296
.. method :: install(names=None)
300
297
301
- This method installs :meth: `self .gettext ` into the built-in namespace,
298
+ This method installs :meth: `.gettext ` into the built-in namespace,
302
299
binding it to ``_ ``.
303
300
304
301
If the *names * parameter is given, it must be a sequence containing the
305
302
names of functions you want to install in the builtins namespace in
306
- addition to :func: `_ `. Supported names are ``'gettext' `` (bound to
307
- :meth: `self.gettext `), ``'ngettext' `` (bound to :meth: `self.ngettext `),
303
+ addition to :func: `_ `. Supported names are ``'gettext' ``, ``'ngettext' ``,
308
304
``'lgettext' `` and ``'lngettext' ``.
309
305
310
306
Note that this is only one way, albeit the most convenient way, to make
@@ -349,49 +345,52 @@ If the :file:`.mo` file's magic number is invalid, the major version number is
349
345
unexpected, or if other problems occur while reading the file, instantiating a
350
346
:class: `GNUTranslations ` class can raise :exc: `OSError `.
351
347
352
- The following methods are overridden from the base class implementation:
353
-
348
+ .. class :: GNUTranslations
354
349
355
- .. method :: GNUTranslations.gettext(message)
350
+ The following methods are overridden from the base class implementation:
356
351
357
- Look up the *message * id in the catalog and return the corresponding message
358
- string, as a Unicode string. If there is no entry in the catalog for the
359
- *message * id, and a fallback has been set, the look up is forwarded to the
360
- fallback's :meth: `gettext ` method. Otherwise, the *message * id is returned.
352
+ .. method :: gettext(message)
361
353
354
+ Look up the *message * id in the catalog and return the corresponding message
355
+ string, as a Unicode string. If there is no entry in the catalog for the
356
+ *message * id, and a fallback has been set, the look up is forwarded to the
357
+ fallback's :meth: `~NullTranslations.gettext ` method. Otherwise, the
358
+ *message * id is returned.
362
359
363
- .. method :: GNUTranslations.lgettext(message)
364
360
365
- Equivalent to :meth: `gettext `, but the translation is returned as a
366
- bytestring encoded in the selected output charset, or in the preferred system
367
- encoding if no encoding was explicitly set with :meth: `set_output_charset `.
361
+ .. method :: ngettext(singular, plural, n)
368
362
363
+ Do a plural-forms lookup of a message id. *singular * is used as the message id
364
+ for purposes of lookup in the catalog, while *n * is used to determine which
365
+ plural form to use. The returned message string is a Unicode string.
369
366
370
- .. method :: GNUTranslations.ngettext(singular, plural, n)
367
+ If the message id is not found in the catalog, and a fallback is specified,
368
+ the request is forwarded to the fallback's :meth: `~NullTranslations.ngettext `
369
+ method. Otherwise, when *n * is 1 *singular * is returned, and *plural * is
370
+ returned in all other cases.
371
371
372
- Do a plural-forms lookup of a message id. *singular * is used as the message id
373
- for purposes of lookup in the catalog, while *n * is used to determine which
374
- plural form to use. The returned message string is a Unicode string.
372
+ Here is an example::
375
373
376
- If the message id is not found in the catalog, and a fallback is specified, the
377
- request is forwarded to the fallback's :meth: `ngettext ` method. Otherwise, when
378
- *n * is 1 *singular * is returned, and *plural * is returned in all other cases.
374
+ n = len(os.listdir('.'))
375
+ cat = GNUTranslations(somefile)
376
+ message = cat.ngettext(
377
+ 'There is %(num)d file in this directory',
378
+ 'There are %(num)d files in this directory',
379
+ n) % {'num': n}
379
380
380
- Here is an example::
381
381
382
- n = len(os.listdir('.'))
383
- cat = GNUTranslations(somefile)
384
- message = cat.ngettext(
385
- 'There is %(num)d file in this directory',
386
- 'There are %(num)d files in this directory',
387
- n) % {'num': n}
382
+ .. method :: lgettext(message)
383
+ .. method :: lngettext(singular, plural, n)
388
384
385
+ Equivalent to :meth: `.gettext ` and :meth: `.ngettext `, but the translation
386
+ is returned as a byte string encoded in the preferred system encoding
387
+ if no encoding was explicitly set with
388
+ :meth: `~NullTranslations.set_output_charset `.
389
389
390
- .. method :: GNUTranslations.lngettext(singular, plural, n)
390
+ .. warning ::
391
391
392
- Equivalent to :meth: `gettext `, but the translation is returned as a
393
- bytestring encoded in the selected output charset, or in the preferred system
394
- encoding if no encoding was explicitly set with :meth: `set_output_charset `.
392
+ These methods should be avoided in Python 3. See the warning for the
393
+ :func: `lgettext ` function.
395
394
396
395
397
396
Solaris message catalog support
@@ -509,7 +508,7 @@ module::
509
508
510
509
import gettext
511
510
t = gettext.translation('spam', '/usr/share/locale')
512
- _ = t.lgettext
511
+ _ = t.gettext
513
512
514
513
515
514
Localizing your application
0 commit comments