[Python-3000] setup.py fails in the py3k-struni branch
Guido van Rossum
guido at python.org
Fri Jun 8 01:54:40 CEST 2007
On 6/7/07, Ron Adam <rrr at ronadam.com> wrote:
> Martin v. Löwis wrote:
>
> > FWIW, for me the build error goes away when I unset
> > LANG, so that the error occurs during build definitely
> > *is* a locale issue.
>
> Yes, and to pin it down a bit further...
>
> This avoids the problem by setting the language to the default "C" which is
> a unicode string and has a .split method that accepts 0 args.
>
> Also LANG is 4th on the list of possible language setting sources, so if
> one of the other 3 environment variables is set, setting or unsetting LANG
> will have no effect.
>
>
> --- From gettext.py ---
>
> # Locate a .mo file using the gettext strategy
> def find(domain, localedir=None, languages=None, all=0):
> # Get some reasonable defaults for arguments that were not supplied
> if localedir is None:
> localedir = _default_localedir
> if languages is None:
> languages = []
> for envar in ('LANGUAGE', 'LC_ALL', 'LC_MESSAGES', 'LANG'):
> # ^^^ first one is accepted.
> val = os.environ.get(envar) #<<< should return unicode?
> if val:
> languages = val.split(':')
> break
> if 'C' not in languages:
> languages.append('C') # <<< unicode 'C'
> # now normalize and expand the languages
> nelangs = []
> for lang in languages:
> for nelang in _expand_lang(lang): #<<< error in this call
> # when it's normalized.
> if nelang not in nelangs:
> nelangs.append(nelang)
>
> ------
>
> Guido's patch avoids this, but that fix was also needed as unicode
> translate works differently than str.translate.
>
> The os.environ.get() method probably should return a unicode string. (?)
Indeed -- care to contribute a patch?
--
--Guido van Rossum (home page: http://www.python.org/~guido/)
More information about the Python-3000
mailing list