[New-bugs-announce] [issue33710] Deprecate gettext.lgettext()

Serhiy Storchaka report at bugs.python.org
Thu May 31 07:00:56 EDT 2018


New submission from Serhiy Storchaka <storchaka+cpython at gmail.com>:

Using gettext.lgettext() is the one of two right ways of doing translation in Python 2. In Python 2, gettext.gettext() returns a raw 8-bit string as it was written in the translation file. Since different translation files can use different encodings, and the locale encoding can be different from them, gettext.gettext() usually is not appropriate. gettext.lgettext() re-encodes all translated messages from file encodings to the specified one (or to the locale encoding by default). It works properly for str-based messages. Other right way is using gettext.ugettext() which returns a Unicode string.

In Python 3 gettext.gettext() was removed, and gettext.ugettext() was renamed to gettext.gettext(). This is the single right way. gettext.lgettext() still returns messages encoded to bytes, but since virtually all messages are Unicode strings in Python 3, it is virtually useless. At least I don't know any proper use case for it. In addition, gettext.lgettext() was half-broken up to recent times (see issue29755).

Seems gettext.lgettext() was not removed in Python 3.0 just due to an oversight. I suggest to deprecate it in 3.8 and remove it in future versions.

----------
components: Library (Lib)
messages: 318283
nosy: barry, serhiy.storchaka
priority: normal
severity: normal
status: open
title: Deprecate gettext.lgettext()
versions: Python 3.8

_______________________________________
Python tracker <report at bugs.python.org>
<https://bugs.python.org/issue33710>
_______________________________________


More information about the New-bugs-announce mailing list