On 6 ruj, 15:13, Vlastimil Brom <vlastimil.b...@gmail.com> wrote: > There may be some differences btween OSes end the versions, but using > python 2.7 and 3.2 on Win XP and Win7 (Czech) > I get the following results for setlocale: > > >>> locale.setlocale(locale.LC_ALL,'Croatian') > > 'Croatian_Croatia.1250'>>> locale.getlocale() > > ('Croatian_Croatia', '1250') > > >>> locale.getpreferredencoding(do_setlocale=False) > 'cp1250' > > However, "hr" is not recognised on this systems: > > >>> locale.setlocale(locale.LC_ALL, "hr") > > Traceback (most recent call last): > File "<input>", line 1, in <module> > File "locale.pyc", line 531, in setlocale > Error: unsupported locale setting
Thanks for your feedback! So this works only on Linux (in concordance with the documentation): locale.setlocale(locale.LC_ALL, ('croatian', locale.getpreferredencoding())) And this works only on Windows (incomplete locale spec probably filled in by Windows API): locale.setlocale(locale.LC_ALL, 'croatian') Obviously, there is a misunderstanding between Python which uses standard (IANA) language codes and Windows which, as usual, have their own ways :-( One possible solution would be to change locale.locale_alias on Windows so that it honors the custom Windows conventions: 'hr' -> 'Croatian_Croatia.1250' instead of 'hr' -> 'hr_HR.ISO8859-2' In addition, locale.getpreferredencoding() should probably be changed in order to return valid Windows encodings ('1250' instead of 'cp1250'). Cheers, Sinisa -- http://mail.python.org/mailman/listinfo/python-list