I've been looking at this.  The fix Kyle suggested does help, but as Tim
pointed out, doesn't solve the root problem.  You still won't be able to
print with such a printer (or at least, I couldn't).

The root problem is that the Python lower() method on strings is locale-
dependent.  When _expand_flags tries to assign attributes, it converts
uppercase strings to lowercase attributes.  In the Turkish locale, the
letter I (eye) is not lowercased, resulting in attributes like
'rejectIng'.  This causes problems all over the place.

Background on this can be seen in this thread:
http://mail.python.org/pipermail/python-list/2008-January/644769.html
and in the Unicode spec, section 5.18.

You can test that this crazy situation is true by the following
commands:

$ LANG=en_US.UTF-8 python -c "import locale; locale.setlocale(locale.LC_ALL, 
''); print 'TURKISH'.lower()"
turkish
$ LANG=tr_TR.UTF-8 python -c "import locale; locale.setlocale(locale.LC_ALL, 
''); print 'TURKISH'.lower()"
turkIsh

What is really wanted is a non-locale-dependent 'lower' function here,
which Python apparently does not provide.  It's simple to write, but I'm
surprised it's not already there.

I've made that change in the code and I *still* can't get it to print,
but at least I'm not seeing exceptions.  I'm still investigating, but it
may be more lower()/upper() goofiness.

-- 
can't add printer in Turkish locale (rejecting attr has no value)
https://bugs.launchpad.net/bugs/276884
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.

-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to