[Python-Dev] Small issues in gettext support (original) (raw)

"Martin v. Löwis" martin at v.loewis.de
Tue Apr 27 17:07:27 EDT 2004


Gustavo Niemeyer wrote:

# Encode the Unicode tmsg back to an 8-bit string, if possible if self.charset: return tmsg.encode(self.charset)

to use the system encoding (sys.getdefaultencoding()) instead of self.charset.

That shouldn't be sys.getdefaultencoding(), but locale.getpreferredencoding().

However, I agree with Barry that the current behaviour should not be changed. People may already rely on gettext returning byte strings as-is.

- Change the default codeset used by gettext.py in functions returning an encoded string to match the system encoding.

No. Explicit is better that implicit; users desiring that feature should write

_charset = locale.getpreferredencoding() def _(msg): return dgettext("domain", msg).encode(_charset)

I advocate never to use gettext.install, in which case you have a custom _ implementation anyway, which would then also include the textual domain. It should not be too much effort for that function to transcode if desired.

- Introduce bindtextdomaincodeset() in locale. - Introduce bindtextdomaincodeset() in gettext.py implementing an equivalent functionality.

That is ok. You could also try to provide that feature consistently, e.g. inside .install.

Regards, Martin



More information about the Python-Dev mailing list