# Introduction: i18n and django
# This is a nasty issue: on Python 2.3 gettext expects either ascii
# or unicode. While on Python 2.4 gettext can deal with utf-8 encoded
# strings too.

# One is encouraged to use unicode on strings all the time but this
# breaks django (0.95.1) in many places where it expects objects to
# to work with ``str''. This leaves your code quite inconsitant, as
# your strings are sometimes marked as unicode and sometimes not --
# everywhere wehre django would want to call ``str'' on your object.

# Helper
def d(o,encoding='utf-8'):
    try:
	return o.decode(encoding)
    except:
	return o

def e(o,encoding='utf-8'):
    try:
	return o.encode(encoding)
    except:
	return o

# Stupid quickfix: Let gettext handle utf-8 strings. on fail
# convert them to unicode. (this lets you use non unicode all over
# the place if you use the _() function for translation.
trans = _
def _(o,encoding='utf-8'):
    try:
	return trans(o)
    except UnicodeDecodeError:
	return trans(d(o,encoding))

# probably better: change all strings into utf-8 for djangos internal handling.
# this though requires the _() handle on every! string. But you could (once
# django is true unicode, just drop this wrapper and be happy :))
#def _(o,encoding='utf-8'):
#    return e(trans(o),encoding)
