Почему я получаю следующую ошибку при выполнении этого в python:
>>> import locale
>>> print str( locale.getlocale() )
(None, None)
>>> locale.setlocale(locale.LC_ALL, 'de_DE')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/locale.py", line 531, in setlocale
return _setlocale(category, locale)
locale.Error: unsupported locale setting
Это работает и с другими локалями, такими как fr или nl. Я использую Ubuntu 11.04.
Обновление: выполнение следующих действий ничего не дало:
dpkg-reconfigure locales
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LC_CTYPE = "UTF-8",
LANG = (unset)
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
python
locale
ubuntu-11.04
Тоом
источник
источник
de_DE
спискеlocale -a
? Если нет, вы должны установить его.locale.setlocale(locale.LC_ALL, 'de_DE')
неправильно. Вам нужноlocale.setlocale(locale.LC_ALL, 'de_DE.utf8')
.locale.setlocale(locale.LC_ALL, locale.locale_aliases['de_DE'])
.Ответы:
Запустите следующие команды
Это решит это.
Убедитесь, что
.UTF-8
часть соответствует фактическому синтаксису, найденному в выходных данных,locale -a
например,.utf8
в некоторых системах.источник
export LC_ALL="en_US.UTF-8"
не удалось с тем,-bash: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8)
что работал, делал это:export LC_ALL=C
По этой ссылке это решается введением этой команды:
источник
LC_ALL
для значения'C'
- но почему это должно работать?У вас, вероятно, нет
de_DE
доступных локалей.Вы можете просмотреть список доступных локалей с помощью
locale -a
команды. Например, на моей машине:Обратите внимание, что если вы хотите установить локаль,
it_IT
вы должны также указать.utf8
:Для установки новой локали используйте:
где
id
код языка (взят отсюда )После того, как вы установили локаль, вы должны следовать совету Жюльена Палара и перенастроить локали с помощью
источник
Один из приведенных выше ответов дает решение:
Проблема с вышеупомянутым решением состоит в том, что это должно быть сделано на оболочке linux. Однако, если вы предоставляете свой код для работы на клиентском компьютере, это плохой подход. Я также попытался выполнить вышеупомянутые команды, используя os.system (), но все равно это не работает.
Решение, которое сработало для меня
источник
Более постоянным решением было бы заполнить пропущенные значения в выводе, показанном командой:
locale
Выход из
locale
:Чтобы заполнить пропущенные значения, отредактируйте ~ / .bashrc:
Добавьте следующие строки после вышеприведенной команды (предположим, вы хотите, чтобы en_US.UTF-8 был вашим языком):
Если этот файл доступен только для чтения, вам нужно будет выполнить шаги, упомянутые GeekyBoy . Ответ, данный доктором Беко в Superuser, содержит подробности, касающиеся сохранения файлов только для чтения.
После сохранения файла выполните:
Теперь вы больше не столкнетесь с той же проблемой.
источник
Если вы используете Debian (или разветвление Debian), вы можете добавить локали, используя:
источник
dpkg-reconfigure locales
Приносит ли вам локальное меню выбора, подобное этому: vpser.net/uploads/2013/01/dpkg-reconfigure-locales-1.jpg ?В Arch Linux я смог это исправить, запустив
sudo locale-gen
источник
Кстати, у меня была такая же проблема, но ни одно из решений не сработало. Я обновил свой компьютер и перенес свой компьютер. У меня был смешанный язык английский и испанский:
Но в моей новой установке Debian я просто выбрал английский в качестве локали. Что в итоге сработало, так это перенастроить пакет locales для добавления и генерации испанского.
источник
Просто откройте файл .bashrc и добавьте это
а затем введите источник .bashrc в терминале.
источник
Ваша ошибка ясно говорит, что вы пытаетесь использовать локаль, чего-то там не было.
locale.Error: неподдерживаемая настройка локали
Чтобы проверить доступные настройки, используйте
locale -a
так что вы можете использовать один из них,
для
de_DE
Этот файл можно настроить вручную или обновить с помощью инструмента update-locale.
источник
locale
чтобы узнать, какая локаль используется. Такие как:/etc/locale-gen
файле. Раскомментировать использованныеlocale-gen
для генерации новых добавленных локалейисточник
На мой взгляд, самый простой способ установить локальную локаль в python {, 3}:
Затем, материал, работающий с языком, просто работает, если вы находитесь в приличном дистрибутиве Linux, и должен работать на бинарных дистрибутивах других ОС (или это ошибка IMHO).
источник
Поместите это в
Dockerfile
вышеENV
.источник
locale
в терминале, вы получаете `LANG = en_US.UTF-8 и другие локали? stackoverflow.com/questions/36394101/…Эта ошибка может возникнуть, если вы только что добавили новую локаль. Вам нужно перезапустить интерактивную оболочку python (
quit(
) иpython
), чтобы получить к ней доступ.источник
На вашем месте я бы использовал BABEL: http://babel.pocoo.org/en/latest/index.html
У меня возникла та же проблема с использованием Docker, я пробовал каждый шаг и не работал должным образом, всегда получал ошибку локали, поэтому я решил использовать BABEL, и все работало хорошо.
источник
В попытке заставить Python выплевывать имена в определенной локали я попал сюда с той же проблемой.
В поисках ответа все стало немного мистическим.
Я нашел этот код Python.
И действительно
locale.setlocale(locale.LC_TIME, 'en_DK.UTF-8')
работаетИспользуя советы здесь, я протестировал дальше, чтобы увидеть, что доступно с использованием кода Python
что дает
Из которых только выше работает! Но
en_DK.UTF-8
нет в этом списке, хотя это работает!?!? Какой?? И сгенерированный Python список локалей содержит много комбинаций da и DK, которые я ищу, но опять же нет UTF-8 для da / DK ...Я нахожусь в дистрибутиве Point Linux (на основе Debian) и здесь,
locale
среди прочегоLC_TIME="en_DK.UTF-8"
, сказано , что я знаю, работает, но не тот язык, который мне нужен.locale -a
говоритТак что определенно нужно установить другую локаль , которую я сделал, отредактировав
/etc/locale.gen
, раскомментировать нужную строкуda_DK.UTF-8 UTF-8
и запустить командуlocale-gen
Сейчас
locale.setlocale(locale.LC_TIME, 'da_DK.UTF-8')
тоже работает, и я могу получить свои локализованные названия дня и месяца.Мой вывод:
Python: locale.locale_alias совсем не помогает в поиске доступных локалей !!!
Linux: довольно просто получить список локалей и установить новую локаль. Много помощи доступно.
Windows: Я немного расследовал, но ничего убедительного. Хотя есть сообщения, приводящие к ответам, но я не чувствовал побуждения преследовать это.
источник
если я правильно понимаю, основным источником ошибки здесь является точный синтаксис locale-name. Тем более, что между дистрибутивами они различаются. Я видел упомянутое здесь в разных ответах / комментариях:
Хотя это очевидно то же самое для человека, то же самое не относится к вашему стандартному детерминистическому алгоритму.
Так что вы, вероятно, будете делать что-то вроде:
источник
python ищет .UFT-8, но у вас, вероятно, есть .utf8, попробуйте установить пакеты .UFT-8 с помощью sudo dpkg -configure locales
источник
во-первых, убедитесь, что у вас установлен языковой пакет, выполнив:
источник