--- a/mercurial/i18n.py Wed Aug 05 16:32:57 2009 +0200
+++ b/mercurial/i18n.py Thu Aug 06 00:26:34 2009 +0200
@@ -36,9 +36,12 @@
if message is None:
return message
- # We cannot just run the text through encoding.tolocal since that
- # leads to infinite recursion when encoding._encoding is invalid.
try:
+ # encoding.tolocal cannot be used since it will first try to
+ # decode the Unicode string. Calling u.decode(enc) really
+ # means u.encode(sys.getdefaultencoding()).decode(enc). Since
+ # the Python encoding defaults to 'ascii', this fails if the
+ # translated string use non-ASCII characters.
u = t.ugettext(message)
return u.encode(encoding.encoding, "replace")
except LookupError: