changeset 298:03b4ed33d413 trunk

When using sys.stdout with a pipe or redirection the sys.stdout.encoding value will be set to None instead of what the environment first specified through any locale setting. As such, fall back to locale.getpreferredencoding() before the ultimate fallback to ASCII. OK: cmlenz closes: #76
author jruigrok
date Thu, 13 Dec 2007 11:51:36 +0000
parents 24418e7f9ee5
children f38cf2625c5b
files babel/messages/frontend.py
diffstat 1 files changed, 4 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/babel/messages/frontend.py
+++ b/babel/messages/frontend.py
@@ -19,6 +19,7 @@
 from distutils import log
 from distutils.cmd import Command
 from distutils.errors import DistutilsOptionError, DistutilsSetupError
+from locale import getpreferredencoding
 import logging
 from optparse import OptionParser
 import os
@@ -632,7 +633,9 @@
             for identifier in localedata.list():
                 locale = Locale.parse(identifier)
                 output = format % (identifier, locale.english_name)
-                print output.encode(sys.stdout.encoding or 'ascii', 'replace')
+                print output.encode(sys.stdout.encoding or
+                                    getpreferredencoding() or
+                                    'ascii', 'replace')
             return 0
 
         if not args:
Copyright (C) 2012-2017 Edgewall Software