Настройки локали неверны. Как я могу их сбросить?
У меня проблема локали.
Последовательность сортировки в nautilus
и другие программы изменились.
Я получаю ошибки локали, появляющиеся в терминале при запуске приложения GUI.
Gtk-WARNING **: Locale not supported by C library.
Using the fallback 'C' locale.
Команда locale
создает сообщения об ошибках
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
LANG=en_AU
LANGUAGE=en_AU:en
LC_CTYPE="en_AU"
LC_NUMERIC="en_AU"
LC_TIME="en_AU"
LC_COLLATE=en_AU.UTF-8
LC_MONETARY="en_AU"
LC_MESSAGES=en_AU.UTF-8
LC_PAPER="en_AU"
LC_NAME="en_AU"
LC_ADDRESS="en_AU"
LC_TELEPHONE="en_AU"
LC_MEASUREMENT="en_AU"
LC_IDENTIFICATION="en_AU"
LC_ALL=
Как было предложено в вопросе askubuntu , я выполнил следующие команды, но без изменений.
sudo apt-get install language-pack-en-base
sudo dpkg-reconfigure locales
Я также попробовал предложение в вопросе askubuntu ... также никаких изменений.
apt-get install --reinstall locales
I think началось, когда я временно установил и удалил редактор методов ввода языка Urdu через IBus
. это, безусловно, произошло в тот же день.
Возможно, это связано с IBus, но перед этим у меня не было никаких проблем.
- OS 10.04
12 ответов
Мне удалось снова запустить «нормально».
После многократной переустановки пакетов и т. д., включая полное удаление IBus (все это никак не влияет), я начал думать, что это может быть вызвано настройкой конфигурации, которую переустановка не изменяется.
Я заметил, что вывод из locale
был довольно лишен, из назначений UTF-8, поэтому я проверил это в недавно установленной VM ... все записи LC_ * (кроме LC_ALL, который переопределяет все остальные) были установлены с помощью .UTF-8
.
поэтому я вручную устанавливаю значения LC_ *, как показано ниже.
Возможно, я бы просто использовал LC_ALL="en_AU.UTF-8"
, но, читая об этом, я обнаружил, как настроить системный формат даты и времени и LC_ALL
будет отменять мои настройки.
Я не знаю, использовал ли я самый подходящий метод, но он работает!
Измененный файл: /etc/default/locale
-
Это показывает содержимое перед модом:
LANG="en_AU.UTF-8" LANGUAGE="en_AU:en" LC_MESSAGES="en_AU.UTF-8"
-
Это показывает содержимое после мод:
LANG="en_AU.UTF-8" LANGUAGE="en_AU:en" LC_CTYPE="en_AU.UTF-8" LC_NUMERIC="en_AU.UTF-8" LC_TIME="en_AU.UTF-8" LC_COLLATE=en_AU.UTF-8 LC_MONETARY="en_AU.UTF-8" LC_MESSAGES=en_AU.UTF-8 LC_PAPER="en_AU.UTF-8" LC_NAME="en_AU.UTF-8" LC_ADDRESS="en_AU.UTF-8" LC_TELEPHONE="en_AU.UTF-8" LC_MEASUREMENT="en_AU.UTF-8" LC_IDENTIFICATION="en_AU.UTF-8"
Тот же файл в VM содержал только одну строку:
LANG="en_AU.UTF-8"
Переосмысление локалей и реконфигурация может быть достаточной для устранения проблемы:
sudo locale-gen en_AU.UTF-8
sudo dpkg-reconfigure locales
Когда вы запустите sudo dpkg-reconfigure locales
, вы можете выбрать нужный язык, нажав пробел и переместившись с ↑ и ↓ перед нажатием Enter .
Я также встретил эту проблему, как вы видите, ваш LC_ALL
пуст. Я сделал следующее, и это помогает:
$ sudo vim /etc/environment
и установите LC_ALL
на что-то вроде en_US.UTF-8
, мой:
LANG="en_US.UTF-8"
LC_MESSAGES="C"
LC_ALL="en_US.UTF-8"
затем перезагрузитесь и запустите locale
, и это должно быть что-то вроде:
LANG=zh_CN.utf8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=en_US.UTF-8
Если вы удаленно подключены к машине через ssh (например, с устройства macosx), вам необходимо установить эти переменные на машине, с которой вы подключаетесь из
добавьте следующее в ~ /.bash_profile
#fix for locale issues when connecting to ubuntu servers
export LANG="en_US.utf8"
export LANGUAGE="en_US.utf8"
export LC_ALL="en_US.utf8"
Я просто хочу добавить, что мне также нужно было отредактировать мой домашний профиль:
gedit ~/.profile
Итак, в вашем случае это будет выглядеть так:
...
LANG="en_AU.UTF-8"
LANGUAGE="en_AU:en"
Выход из системы + Вход. И все как ожидается.
У меня была такая же проблема в течение нескольких месяцев, многие программные средства предупреждали о нарушениях настроек локали, а некоторые даже отказывались работать. Я хочу использовать английский язык, но шведские денежные и числовые настройки.
Что в конечном итоге сработало для меня - это отредактировать /etc/default/locale
, где я удалил все в этом файле.
Затем я начал настройку языка Unity (Settings -> Language Support)
, настроил все (Ubuntu захотел установить некоторые недостающие компоненты) и нажал "Apply System-wide"
, когда я закончил.
Мой /etc/default/locale
теперь выглядит следующим образом.
LC_NUMERIC = "sv_SE.UTF-8" LC_TIME = "sv_SE.UTF-8" LC_MONETARY = "sv_SE.UTF-8" LC_PAPER = "sv_SE.UTF-8" LC_IDENTIFICATION = "sv_SE.UTF-8" Lc_name = "sv_SE.UTF-8" LC_ADDRESS = "sv_SE.UTF-8" LC_TELEPHONE = "sv_SE.UTF-8" LC_MEASUREMENT = "sv_SE.UTF-8" LANGUAGE = "EN" LANG = "en_US.UTF-8"
Большая разница между этим и моим исходным файлом - LANGUAGE="en"
.
Прошло некоторое время, так как это было опубликовано, но в последнее время у меня были проблемы с переменными «locale», и никакой ответ не дал мне никаких результатов. Может быть, мой собственный опыт может помочь кому-то другому.
Моя переменная LANG была пуста, и это давало мне проблемы.
$locale
Вывод:
LANG=
LANGUAGE=en_US
LC_CTYPE=POSIX
LC_NUMERIC=POSIX
LC_TIME=POSIX
LC_COLLATE=POSIX
LC_MONETARY=POSIX
LC_MESSAGES=POSIX
LC_PAPER=POSIX
LC_NAME=POSIX
LC_ADDRESS=POSIX
LC_TELEPHONE=POSIX
LC_MEASUREMENT=POSIX
LC_IDENTIFICATION=POSIX
LC_ALL=POSIX
Я пробовал некоторые команды вроде:
sudo locale-gen
sudo dpkg-reconfigure locales
Без успеха. Я попробовал отредактировать /etc /default /locale и узнать, что это уже O.K:
$cat /etc/default/locale
Вывод:
LANG=en_US.UTF-8
LC_NUMERIC="es_CO.UTF-8"
LC_TIME="es_CO.UTF-8"
LC_MONETARY="es_CO.UTF-8"
LC_PAPER="es_CO.UTF-8"
LC_NAME="es_CO.UTF-8"
LC_ADDRESS="es_CO.UTF-8"
LC_TELEPHONE="es_CO.UTF-8"
LC_MEASUREMENT="es_CO.UTF-8"
LC_IDENTIFICATION="es_CO.UTF-8"
Также мой файл .pam_environment выглядел правильным:
$cat .pam_environment
Вывод:
LANGUAGE=en_US:en
LANG=en_US.UTF-8
LC_NUMERIC=es_CO.UTF-8
LC_TIME=es_CO.UTF-8
LC_MONETARY=es_CO.UTF-8
LC_PAPER=es_CO.UTF-8
LC_NAME=es_CO.UTF-8
LC_ADDRESS=es_CO.UTF-8
LC_TELEPHONE=es_CO.UTF-8
LC_MEASUREMENT=es_CO.UTF-8
LC_IDENTIFICATION=es_CO.UTF-8
PAPERSIZE=letter
Я не хочу добавлять лишние вещи в файлы профиля или bash, главным образом потому, что, хотя он мог бы решить проблему, я бы не знал причину, и это меня раздражало.
Наконец, я подумал, что что-то уже переопределяет переменные «locale», и я выполнил следующую команду:
$cat .bashrc | grep LANG
Вывод:
unset LANG
Итак, я нашел две строки в файле .bashrc , где причина (я не вставляю весь файл):
unset LANG
export LC_ALL=POSIX
Я не знаю, как и когда эти строки попали в мой файл bash, но я абсолютно уверен, что я их не писал, возможно, мой .bashrc был заменен, когда я работал с некоторыми материалами для веб-разработки, Я действительно не знаю, но поскольку я знаю, что это было непреднамеренно, и есть люди, не знающие, что вызывает «неправильное поведение», возможно, это может им помочь. В любом случае комментируя эти строки и перезагрузку, я решил проблему. Здесь Я ответил на тот же вопрос, который был посвящен жалобам sublimeT3 о LANG .
Кажется, что обновленные жареные локали каким-то образом. Исправление, которое я обнаружил, это выйти из системы, изменить выбранный язык перед входом в систему и снова войти в систему.
Это может также помочь переустановить локали в синаптическом режиме, хотя я не могу подтвердить, что это то, что исправил его для меня, я думаю, что он выходил из системы или что-то в этом роде.
Я пробовал редактировать файл локали и выбирать разные языки при входе в систему.
Фильтрация для сломанных пакетов с помощью Synaptic и полное удаление 9 поврежденных пакетов для меня (libreoffice и python uno).
Но, я не могу установить LibreOffice без явно развращения менеджера пакетов. Однако он устанавливает.
Я на 11.04 i386. Отказ от ответственности: во время последней части моей установки произошел сбой питания, поскольку Ubuntu загружал обновления.
У меня была такая же проблема, но Система> Администрирование> Поддержка языков может решить вашу проблему, потому что она может спросить вы должны установить некоторые пакеты, а затем будет хорошо!! Это сработало для меня, поэтому я думаю он сделает то же самое с вами!
Run
export LC_ALL="zh_CN.utf8"
ibus-setup
и выберите один из вариантов метода ввода, как вы пожелаете.
У меня была аналогичная проблема (наиболее заметная в Thunderbird) для примера en_AU здесь, но я из en_NZ - и после некоторой пробной ошибки с Ubuntu 17.10 мое исправление должно было обновить ~ /.pam_environment, заменив все другие записи (в основном en_AU и en_US) с en_NZ, затем перезагрузка.
Позор, что вы не можете просто установить свой язык и заставить его делать то, что он утверждает, - большинство разочаровалось в том, что работающие локальные dpkg-configure на самом деле ничего не полезят.