X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=python%2Flilylib.py;h=cfa5e67d0a7b0de58428f76b3ea96efac1cecdc1;hb=55da0f10f9f7877e575567b61d01522aa4c03ae0;hp=43722345932a551150674a65027ae6cc266dcd59;hpb=5842c0a15dc9683fc74996c6703ea33d4dd43ad0;p=lilypond.git diff --git a/python/lilylib.py b/python/lilylib.py index 4372234593..cfa5e67d0a 100644 --- a/python/lilylib.py +++ b/python/lilylib.py @@ -38,19 +38,36 @@ if os.environ.has_key ('LILYPOND_DATADIR') : sys.path.insert (0, os.path.join (datadir, 'python')) - +# Python 2.5 only accepts strings with proper Python internal encoding +# (i.e. ASCII or Unicode) when writing to stdout/stderr, so we must +# use ugettext iso gettext, and encode the string when writing to +# stdout/stderr localedir = '@localedir@' try: import gettext - gettext.bindtextdomain ('lilypond', localedir) - gettext.textdomain ('lilypond') - _ = gettext.gettext + t = gettext.translation ('lilypond', localedir) + _ = t.ugettext except: def _ (s): return s underscore = _ -progress = sys.stderr.write + +# Urg, Python 2.4 does not define stderr/stdout encoding +# Maybe guess encoding from LANG/LC_ALL/LC_CTYPE? + +def encoded_write(f, s): + f.write (s.encode (f.encoding or 'utf_8')) + +# ugh, Python 2.5 optparse requires Unicode strings in some argument +# functions, and refuse them in some other places +def display_encode (s): + return s.encode (sys.stderr.encoding or 'utf_8') + +def stderr_write (s): + encoded_write (sys.stderr, s) + +progress = stderr_write # Modified version of the commands.mkarg(x), which always uses # double quotes (since Windows can't handle the single quotes: