Неправильные настройки локали. Как я могу их сбросить?

41

У меня проблема локали.
Последовательность сортировки в 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
задан Peter.O 01.04.2011 в 20:29
источник

12 ответов

27

Мне удалось снова запустить «нормально».

После многократной переустановки пакетов и т. д., включая полное удаление 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" 
ответ дан Peter.O 02.04.2011 в 05:23
источник
17

Переосмысление локалей и реконфигурация может быть достаточной для устранения проблемы:

sudo locale-gen en_AU.UTF-8
sudo dpkg-reconfigure locales

Когда вы запустите sudo dpkg-reconfigure locales , вы можете выбрать нужный язык, нажав пробел и переместившись с помощью и , прежде чем нажать < KBD> Enter .

    
ответ дан Guillaume Vincent 09.01.2013 в 11:52
14

Я также встретил эту проблему, как вы видите, ваш 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
    
ответ дан McKelvin 10.08.2012 в 15:20
4

Если вы удаленно подключены к машине через 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"
    
ответ дан Somatik 28.08.2012 в 13:22
2

Я просто хочу добавить, что мне также нужно было отредактировать мой домашний профиль:

gedit ~/.profile

Итак, в вашем случае это будет выглядеть так:

...
LANG="en_AU.UTF-8"
LANGUAGE="en_AU:en"

Выход из системы + Вход. И все как ожидается.

    
ответ дан Aas 26.03.2012 в 11:28
2

У меня была такая же проблема в течение нескольких месяцев, многие программные средства предупреждали о нарушениях настроек локали, а некоторые даже отказывались работать. Я хочу использовать английский язык, но шведские денежные и числовые настройки.

Что, наконец, помогло мне в редактировании /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" .

    
ответ дан David A 14.11.2013 в 22:24
2

Прошло некоторое время, так как это было опубликовано, но в последнее время у меня были проблемы с переменными "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 .

    
ответ дан smajtkst 15.08.2015 в 04:52
1

Кажется, что обновленные жареные локали каким-то образом. Исправление, которое я обнаружил, это выйти из системы, изменить выбранный язык перед входом в систему и снова войти в систему.

Это может также помочь переустановить локали в синаптическом режиме, хотя я не могу подтвердить, что это то, что исправил его для меня, я думаю, что он выходил из системы или что-то в этом роде.

    
ответ дан RolandiXor 01.04.2011 в 21:14
1

Я пробовал редактировать файл локали и выбирать разные языки при входе в систему.

Фильтрация для сломанных пакетов с помощью Synaptic и полное удаление 9 поврежденных пакетов для меня (libreoffice и python uno).

Но, я не могу установить LibreOffice без явно развращения менеджера пакетов. Однако он устанавливает.

Я на 11.04 i386. Отказ от ответственности: во время последней части моей установки произошел сбой питания, поскольку Ubuntu загружал обновления.

    
ответ дан marajit 30.10.2011 в 17:53
1

У меня была такая же проблема, но Система > Администрирование > Поддержка языков может решить вашу проблему, потому что она может спросить вы должны установить некоторые пакеты, а затем будет хорошо!! Это сработало для меня, поэтому я думаю он сделает то же самое с вами!     

ответ дан Nickolas Pylarinos 16.11.2012 в 14:57
0

Run

export LC_ALL="zh_CN.utf8"
ibus-setup

и выберите один из вариантов метода ввода, как вы пожелаете.

    
ответ дан mobeyond 24.01.2013 в 05:27
0

У меня была аналогичная проблема (наиболее заметная в Thunderbird) для примера en_AU здесь, но я из en_NZ - и после некоторой пробной ошибки с Ubuntu 17.10 мое исправление должно было обновить ~ / .pam_environment, заменив все другие записи (в основном en_AU и en_US) с en_NZ, затем перезагрузка.

Позор, что вы не можете просто установить свой язык и заставить его делать то, что он утверждает, - большинство разочаровалось в том, что работающие локальные dpkg-configure на самом деле ничего не полезят.

    
ответ дан BlakJak 10.11.2017 в 07:23