New submission from Serhiy Storchaka <storchaka+cpyt...@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 <rep...@bugs.python.org>
<https://bugs.python.org/issue33710>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to