Pracuję nad aplikacją, która używa tekstów z różnych języków, więc do przeglądania lub raportowania niektóre teksty (ciągi) muszą być posortowane w określonym języku.Sortowanie listy ciągów znaków z określonymi ustawieniami w pythonie
Obecnie mam obejście brudząc z globalnych ustawień regionalnych, co jest złe, i nie chcę, aby umieścić go w produkcji:
default_locale = locale.getlocale(locale.LC_COLLATE)
def sort_strings(strings, locale_=None):
if locale_ is None:
return sorted(strings)
locale.setlocale(locale.LC_COLLATE, locale_)
sorted_strings = sorted(strings, cmp=locale.strcoll)
locale.setlocale(locale.LC_COLLATE, default_locale)
return sorted_strings
Oficjalna dokumentacja locale pyton wyraźnie mówi, że zapisywanie i przywracanie jest to zły pomysł, ale nie daje żadnych sugestii: http://docs.python.org/library/locale.html#background-details-hints-tips-and-caveats