Можно ли сбросить локаль на переносимую локаль? - PullRequest
1 голос
/ 29 ноября 2010

Согласно документации Python:

"программа, которая не вызывала setlocale(LC_ALL, ''), запускается с использованием переносимой локали 'C'.

После установки языкового стандарта с помощью setlocale(LC_ALL, '') возможно ли вернуть языковой стандарт в «переносимое» состояние? Я работаю над библиотекой, которая включает в себя некоторые некорректно работающие компоненты, которые пытаются глобально сбросить языковой стандарт для конкретного региона - мне нужно найти способ вернуть языковой стандарт обратно в переносимое состояние.

import locale
loc = locale.getlocale(locale.LC_ALL) # get current locale
assert loc == (None, None)
# Locale is unset, therefore in the "portable" state.
locale.setlocale(locale.LC_ALL, '') # use user's preferred locale
# Loc is not set to regional default
???? DO SOMETHING HERE
assert loc == locale.getlocale(locale.LC_ALL) # I want to make this true!

Требуется для работы на Python 2.4.4 в Windows XP 32bit

Ответы [ 2 ]

3 голосов
/ 29 ноября 2010

Вы можете попробовать: locale.setlocale(locale.LC_ALL, loc).

>>> locale.getlocale(locale.LC_ALL)
(None, None)
>>> locale.setlocale(locale.LC_ALL, "")                                        
'en_US.utf8'
>>> locale.getlocale(locale.LC_ALL)
('en_US', 'UTF8')
>>> locale.setlocale(locale.LC_ALL, "C")                                   
'C'
>>> locale.getlocale(locale.LC_ALL)
(None, None)
>>> locale.setlocale(locale.LC_ALL, (None,None))
'C'
>>> locale.getlocale(locale.LC_ALL)
(None, None)
2 голосов
/ 29 ноября 2010
locale.setlocale(locale.getdefaultlocale())

Вернет его к стандартному языку

...