Как правильно установить языковой стандарт Python в Windows?
Я пытаюсь отсортировать список строк в соответствии с языковым стандартом. Я использовал библиотеку Babel для других задач, связанных с i18n, но она не поддерживает сортировку. Питона locale
модуль обеспечивает strcoll
функция, но требует, чтобы локаль процесса была установлена на тот, с которым я хочу работать. Немного больно, но я могу жить с этим.
проблема в том, что я не могу показаться, чтобы настроить локаль. Элемент документация на locale
модуль дает пример:
import locale
locale.setlocale(locale.LC_ALL, 'de_DE')
когда я запускаю это, я получаю это:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:Python26Liblocale.py", line 494, in setlocale
locale.Error: unsupported locale setting
что я делаю не так?
6 ответов:
Кажется, вы используете Windows. Строки локали там разные. Взгляните более точно на документ:
locale.setlocale(locale.LC_ALL, 'de_DE') # use German locale; name might vary with platform
на Windows, я думаю, что это будет что-то вроде:
locale.setlocale(locale.LC_ALL, 'deu_deu')
MSDN имеет список языковые строки и страна/регион строк
вы должны не передавать явную локаль для setlocale это неправильно. Пусть он узнает из окружающей среды. Вы должны передать ему пустую строку
import locale locale.setlocale(locale.LC_ALL, '')
Это единственный способ сделать это в Windows (например, для немецкого языка):
import locale locale.setlocale(category=locale.LC_ALL, locale="German") # Not locale="de_DE"
Ubuntu
на Ubuntu у вас может быть эта проблема, потому что у вас нет этого локального установленного в вашей системе.
из оболочки попробуйте a:
$> locale -a
и проверьте, если вы найдете языковой стандарт, который вас интересует. В противном случае вы должны установить его:
$> sudo apt-get install language-pack-XXX
где XXX - ваш язык (в моем случае "xxx = it", итальянский язык) Затем запустить
dpkg-reconfigure
:$> sudo dpkg-reconfigure locales
после этого повторите попытку в вашем python оболочка:
>>> import locale >>> locale.setlocale(locale.LC_ALL,'it_IT.UTF-8')
(это для итальянского языка, который был мне нужен)
от локали.setlocale docs:
locale.setlocale(category, locale=None): """ Set the locale for the given category. The locale can be a string, an iterable of two strings (language code and encoding), or None. """"
под Linux (особенно Ubuntu) вы можете использовать
locale.setlocale(locale.LC_ALL, 'de_DE.UTF-8')
или
locale.setlocale(locale.LC_ALL, ('de', 'utf-8'))
вы получите ту же ошибку, если локаль не установлено о системе. Итак, убедитесь, что у вас язык установлен о системе:
$ locale -a # to list the currently installed locales $ (sudo) locale-gen de_DE.UTF-8 # to install new locale
Я знаю, что это было задано много лет назад, но я думал, что попробую добавить то, что я узнал, используя Python 3.6 на Windows:
import locale for x in locale.windows_locale.values(): print(x.replace('_','-'))
я попробовал некоторые, и это также, кажется, способ узнать, что доступно на Windows.
и тогда вы просто установите локаль:
locale.setlocale(locale.LC_ALL, any_item_of_the_printed_strings)