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

43

У меня проблема с локалью.
Последовательность сортировки в nautilusдругих программах изменилась.
При запуске приложения с графическим интерфейсом в терминале появляются ошибки локали.

    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

Я думаю, что это началось, когда я временно установил и удалил редактор метода ввода на языке урду через IBus... это, безусловно, произошло в тот же день.

Может быть, это связано с IBus, но у меня не было проблем с этим до этого.

  • ОС 10.04
Peter.O
источник

Ответы:

27

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

Попробовав много переустановок пакетов и т. Д., Включая полное удаление IBus (все безрезультатно), я начал думать, что это может быть вызвано настройкой конфигурации, которую переустановка не меняет.

Я заметил, что вывод от localeUTF-8 был довольно утрачен, поэтому я проверил это на недавно установленной ВМ ... все записи 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"
    

Этот же файл в виртуальной машине содержал только одну строку:

    LANG="en_AU.UTF-8" 

Peter.O
источник
спасибо за ваш пост. Для записи мне пришлось перезапустить мою систему, чтобы исправление заработало. (возможно, мог бы использовать emacs eval-buffer?)
Дэвид Лебауэр
19

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

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

При запуске sudo dpkg-reconfigure localesвы можете выбрать желаемую локаль, нажимая spacebarи перемещаясь до и после нажатия Enter.

Гийом Винсент
источник
Может быть, стоит упомянуть, что вы выбираете языки, которые вы хотите с помощью пробела.
Даниэль Кмак
@ Даниил, я не понимаю: пробел?
Гийом Винсент
1
При запуске dpkg-reconfigureвы получаете список с флажками и для выбора языка вы должны использовать пробел. В консольной программе такой информации нет, поэтому я подумал, что это поможет написать ее под ответом. Я не знал, как выбрать эти языки.
Даниэль Кмак
1
@Daniel сделано :)
Гийом Винсент
15

Я тоже встречал эту проблему, как видите, ваша 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
источник
Это решение хорошо работает на Ubuntu 12.04 LTS точно
speciousfool
Установка LC_ALLне рекомендуется. «Использование LC_ALL настоятельно не рекомендуется, поскольку оно отменяет все. Пожалуйста, используйте его только при тестировании и никогда не устанавливайте его в файле запуска». wiki.debian.org/Locale
gertvdijk
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
источник
1
Это известная ошибка при подключении из OS X?
MindTooth
Понятия
2

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

gedit ~/.profile

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

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

Выйти + Войти. И все как положено.

Aas
источник
Мне нужно было exportв начале каждой строки, и я вставил его ~/.bashrc.
Sparhawk
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".

Дэвид А
источник
Моя жизнь спасет ...
Джон Джо
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 и выяснить, что все в порядке:

$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
источник
1

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

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

RolandiXor
источник
Повторно авторизуйтесь и смените язык. Я не вижу никакого способа изменить язык при входе в систему ... Я вижу текст, в котором упоминается изменение языка, но нет никакой опции (кнопки или тому подобное) .. возможно, это потому, что у меня включен только австралийский английский .... и я запустил все вышеперечисленные команды .. так что на данный момент это загадка ...
Peter.O
@ red.bear: попробуйте установить language-pack-enи language-support-enповторите процедуру, описанную выше.
RolandiXor
1

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

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

Но я не могу установить LibreOffice, не повредив менеджер пакетов. Это, однако, установить.

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

marajit
источник
1

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

Николай Пиларинос
источник
0

Бег

export LC_ALL="zh_CN.utf8"
ibus-setup

и выберите один из вариантов метода ввода по своему желанию.

mobeyond
источник
0

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

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

BlakJak
источник