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

У меня проблема локали.
Последовательность сортировки в 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
41 голос | спросил Peter.O 1 PMpFri, 01 Apr 2011 22:29:18 +040029Friday 2011, 22:29:18

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 2 AMpSat, 02 Apr 2011 07:23:18 +040023Saturday 2011, 07:23:18
17

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

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

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

ответил Guillaume Vincent 9 Jpm1000000pmWed, 09 Jan 2013 14:52:48 +040013 2013, 14:52:48
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 PM00000050000000731 2012, 17:20:07
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 PM00000030000005231 2012, 15:22:52
2

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

gedit ~/.profile

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

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

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

ответил Aas 26 MarpmMon, 26 Mar 2012 13:28:51 +04002012-03-26T13:28:51+04:0001 2012, 13:28:51
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 15 52013vEurope/Moscow11bEurope/MoscowFri, 15 Nov 2013 01:24:58 +0400 2013, 01:24:58
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 AM00000050000000031 2015, 05:52:00
1

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

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

ответил RolandiXor 1 PMpFri, 01 Apr 2011 23:14:59 +040014Friday 2011, 23:14:59
1

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

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

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

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

ответил marajit 30 +04002011-10-30T20:53:48+04:00312011bEurope/MoscowSun, 30 Oct 2011 20:53:48 +0400 2011, 20:53:48
1

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

ответил Nickolas Pylarinos 16 52012vEurope/Moscow11bEurope/MoscowFri, 16 Nov 2012 17:57:02 +0400 2012, 17:57:02
0

Run

export LC_ALL="zh_CN.utf8"
ibus-setup

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

ответил mobeyond 24 Jam1000000amThu, 24 Jan 2013 08:27:51 +040013 2013, 08:27:51
0

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

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

ответил BlakJak 10 52017vEurope/Moscow11bEurope/MoscowFri, 10 Nov 2017 09:23:00 +0300 2017, 09:23:00

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132