Sortowanie listy łańcuchów z określonymi ustawieniami narodowymi w pythonie
Pracuję nad aplikacją, która używa tekstów z różnych języków, więc do celów przeglądania lub raportowania niektóre teksty (ciągi) muszą być sortowane w określonym języku.
Obecnie mam obejście powodujące problemy z globalnymi ustawieniami regionalnymi, które są złe, i nie chcę go wprowadzać do 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 ustawień regionalnych Pythona wyraźnie mówi, że zapisywanie i przywracanie jest złym pomysłem, ale nie daje żadnych sugestii:http://docs.python.org/library/locale.html#background-details-tints-tips-and-caveats