I18n issue with optik

Thorsten Kampe thorsten at thorstenkampe.de
Sun Apr 1 14:45:59 EDT 2007


* Steven Bethard (Sun, 01 Apr 2007 10:26:54 -0600)
> Thorsten Kampe wrote:
> > I guess the culprit is this snippet from optparse.py:
> > 
> > # used by test suite
> > def _get_encoding(self, file):
> >     encoding = getattr(file, "encoding", None)
> >     if not encoding:
> >         encoding = sys.getdefaultencoding()
> >     return encoding
> > 
> > def print_help(self, file=None):
> >     """print_help(file : file = stdout)
> > 
> >     Print an extended help message, listing all options and any
> >     help text provided with them, to 'file' (default stdout).
> >     """
> >     if file is None:
> >         file = sys.stdout
> >     encoding = self._get_encoding(file)
> >     file.write(self.format_help().encode(encoding, "replace"))
> > 
> > So this means: when the encoding of sys.stdout is US-ASCII, Optparse 
> > sets the encoding to of the help text to ASCII, too. But that's 
> > nonsense because the Encoding is declared in the Po (localisation) 
> > file.
> > 
> > How can I set the encoding of sys.stdout to another encoding? Of 
> > course this would be a terrible hack if the encoding of the 
> > localisation changes or different translators use different 
> > encodings...
> 
> If print_help() is what's wrong, you should probably hack print_help() 
> instead of sys.stdout.  You could try something like::
> 
>      def print_help(self, file=None):
>          """print_help(file : file = stdout)
> 
>          Print an extended help message, listing all options and any
>          help text provided with them, to 'file' (default stdout).
>          """
>          if file is None:
>              file = sys.stdout
>          file.write(self.format_help())
> 
>      optparse.OptionParser.print_help = print_help
> 
>      cmdlineparser = optparse.OptionParser(description=...)
>      ...
> 
> That is, you could monkey-patch print_help() before you create an 
> OptionParser.

Yes, I could do that but I'd rather know first if my code is wrong or 
the optparse code.

Thorsten



More information about the Python-list mailing list