Я работаю над приложением, которое использует тексты с разных языков, поэтому для просмотра или создания отчетов некоторые тексты (строки) нужно сортировать на определенном языке.
В настоящее время у меня есть обходное взаимодействие с глобальными настройками локали, что плохо, и я не хочу его выпускать:
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
Официальная документация на языке python явно говорит о том, что сохранение и восстановление - плохая идея, но не дает никаких предложений: http://docs.python.org/library/locale.html#background-details-hints-tips-and-caveats