我正在开发一个应用程序,使用来自不同语言的文本,因此,为了查看或报告目的,某些文本(字符串)需要按照特定语言进行排序。
目前,我的解决方法是对全局区域设置进行操作,这是不好的,我不想在生产环境中采用这种方法:
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