Ustawienia regionalne są nieprawidłowe. Jak mogę je zresetować?

43

Mam problem z lokalizacją.
Kolejność zestawiania w nautilusi innych programach uległa zmianie.
Podczas uruchamiania aplikacji GUI pojawiają się błędy ustawień regionalnych.

    Gtk-WARNING **: Locale not supported by C library.
        Using the fallback 'C' locale.

localePolecenie tworzy komunikaty o błędach

    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=

Jak zasugerowano w pytaniu askubuntu , uruchomiłem następujące polecenia, ale nic się nie zmieniło.

    sudo apt-get install language-pack-en-base
    sudo dpkg-reconfigure locales

Próbowałem też sugestii w pytaniu askubuntu ... również bez zmian.

    apt-get install --reinstall locales

Myślę , że zaczęło się, gdy tymczasowo zainstalowałem i odinstalowałem edytor Input Method Editor w języku urdu przez IBus... z pewnością wydarzyło się tego samego dnia.

Może jest to związane z IBusem, ale wcześniej nie miałem z tym żadnych problemów.

  • System operacyjny to 10.04
Peter.O
źródło

Odpowiedzi:

27

Udało mi się sprawić, że wszystko znów działa „normalnie”.

Po wypróbowaniu wielu ponownych instalacji pakietów itp., W tym całkowitego usunięcia IBusa (wszystko bez skutku), zacząłem myśleć, że może to być spowodowane ustawieniem konfiguracji, którego ponowna instalacja nie zmienia.

Zauważyłem, że dane wyjściowe localebyły raczej pozbawione przypisań UTF-8, więc sprawdziłem to w niedawno zainstalowanej maszynie wirtualnej ... wszystkie wpisy LC_ * (oprócz LC_ALL, która zastępuje wszystkie pozostałe) zostały ustawione z .UTF-8przyrostkiem. więc ręcznie ustawiam wartości LC_ *, jak pokazano poniżej.

Prawdopodobnie mogłem po prostu użyć LC_ALL="en_AU.UTF-8", ale czytając o tym, odkryłem, jak dostosować systemowy format daty i godziny , i LC_ALLzastąpiłem moje niestandardowe ustawienie.

Nie wiem, czy użyłem najbardziej odpowiedniej metody, ale działa!

Zmodyfikowany plik to: /etc/default/locale

  • To pokazuje zawartość przed modem:

    LANG="en_AU.UTF-8"
    LANGUAGE="en_AU:en"
    LC_MESSAGES="en_AU.UTF-8"
    
  • To pokazuje zawartość po modyfikacji:

    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"
    

Ten sam plik na maszynie wirtualnej zawierał tylko ten jeden wiersz:

    LANG="en_AU.UTF-8" 

Peter.O
źródło
dzięki za twój post. Dla przypomnienia musiałem zrestartować system, aby poprawka zadziałała. (być może mógł użyć bufora
ewaluacyjnego
19

Przedefiniowanie ustawień regionalnych i rekonfiguracja może wystarczyć do rozwiązania problemu:

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

Po uruchomieniu sudo dpkg-reconfigure localesmożesz wybrać lokalizację, którą chcesz, klikając spacebari przesuwając się z oraz przed uderzeniem Enter.

Guillaume Vincent
źródło
Może warto wspomnieć, że za pomocą spacji wybierasz języki.
Daniel Kmak
@Daniel Nie rozumiem: spacja?
Guillaume Vincent
1
Po uruchomieniu dpkg-reconfigurepojawi się lista z polami wyboru i aby wybrać język, musisz użyć spacji. W konsoli nie ma takich informacji, więc pomyślałem, że to pomoże napisać je pod odpowiedzią. Nie wiedziałem, jak wybrać te języki.
Daniel Kmak
1
@Daniel zrobione :)
Guillaume Vincent
15

Spotkałem również ten problem, jak widzisz, twój LC_ALLjest pusty. Zrobiłem w następujący sposób i to pomaga:

$ sudo vim /etc/environment

i ustaw na LC_ALLcoś takiego en_US.UTF-8, moje to:

LANG="en_US.UTF-8"
LC_MESSAGES="C"
LC_ALL="en_US.UTF-8"

następnie uruchom ponownie i uruchom locale, i powinno to być coś takiego:

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
źródło
To rozwiązanie działa dobrze na Ubuntu 12.04 LTS precyzyjnie
speciousfool
Ustawienie LC_ALLjest odradzane. „Korzystanie z LC_ALL jest zdecydowanie odradzane, ponieważ zastępuje wszystko. Proszę używać go tylko podczas testowania i nigdy nie ustawiać go w pliku startowym.” wiki.debian.org/Locale
gertvdijk
4

Jeśli jesteś zdalnie połączony z maszyną przez ssh (np. Z urządzenia Macosx), musisz ustawić te zmienne na maszynie, z której się łączysz

dodaj następujące do ~ / .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
źródło
1
Czy to znany błąd podczas łączenia z OS X?
MindTooth
nie mam pojęcia, czy jest to
zgodne
2

Chcę tylko dodać, że musiałem również edytować mój profil domowy:

gedit ~/.profile

W twoim przypadku wyglądałoby to tak:

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

Wyloguj się + Zaloguj się. I wszystko zgodnie z oczekiwaniami.

Aa
źródło
Potrzebowałem exportna początku każdej linii i wstawiłem ją ~/.bashrc.
Sparhawk
2

Przez kilka miesięcy miałem ten sam problem, wiele narzędzi programowych ostrzegało przed zepsutymi ustawieniami narodowymi, a niektóre nawet odmawiały uruchomienia. Chcę używać języka angielskiego, ale szwedzkich ustawień monetarnych i liczbowych.

To, co w końcu zadziałało, to edycja, w /etc/default/localektórej usunąłem wszystko z tego pliku. Następnie rozpocząłem konfigurację języka Unity (Settings -> Language Support), wszystko skonfigurowałem (Ubuntu chciał zainstalować brakujące komponenty) i nacisnąłem, "Apply System-wide"kiedy skończyłem.

Mój /etc/default/localeteraz wygląda tak.

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"
JĘZYK = "en"
LANG = "en_US.UTF-8"

Duża różnica między tym a moim oryginalnym plikiem to LANGUAGE="en".

David A.
źródło
Oszczędź mi życie ...
John Joe,
2

Minęło trochę czasu, odkąd to zostało opublikowane, ale ostatnio miałem problemy ze zmiennymi „locale” i żadna odpowiedź nie dała mi żadnych wyników. Może moje własne doświadczenie może pomóc komuś innemu.

Moja zmienna LANG była pusta, co przysparzało mi problemów.

$locale

Wynik:

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

Próbowałem niektóre z poleceń, takich jak:

sudo locale-gen
sudo dpkg-reconfigure locales

Bez powodzenia. Próbowałem edytować / etc / default / locale i okazało się, że już było OK:

$cat /etc/default/locale

Wynik:

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"

Również mój plik .pam_environment wydawał się mieć rację:

$cat .pam_environment

Wynik:

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

Nie chcę dodawać dodatkowych rzeczy do plików profilu lub bash, głównie dlatego, że chociaż może to rozwiązać problem, nie znam przyczyny, a to mnie zirytowało.

W końcu zastanawiałem się, czy coś już przesłania zmienne „locale” i uruchomiłem następną komendę:

$cat .bashrc | grep LANG

Wynik:

unset LANG

Znalazłem więc dwa wiersze w moim pliku .bashrc , które były przyczyną (nie wklejam całego pliku):

unset LANG
export LC_ALL=POSIX

Nie wiem, jak i kiedy te wiersze pojawiły się w moim pliku bash, ale jestem całkowicie pewien, że ich nie napisałem, być może mój plik .bashrc został zastąpiony, gdy pracowałem z niektórymi rzeczami związanymi z tworzeniem stron internetowych, naprawdę nie nie wiem, ale skoro wiem, że było to niezamierzone i są ludzie, którzy nie mają pojęcia o przyczynach niewłaściwego zachowania na poziomie lokalnym, więc może to im pomóc. W każdym razie komentowanie tych wierszy i ponowne uruchomienie rozwiązało dla mnie problem. Tutaj odpowiedziałem na to samo pytanie dotyczące skarg na wysublimowane T3 dotyczące zmiennej LANG .

smajtkst
źródło
1

Wygląda na to, że aktualizacja jakoś usmażona. Znalezioną przeze mnie poprawką było wylogowanie, zmiana języka wybranego przed zalogowaniem i ponowne zalogowanie.

Może to również pomóc w ponownym zainstalowaniu ustawień regionalnych w synaptic, chociaż nie mogę potwierdzić, że to właśnie mnie naprawiło, myślę, że to się wylogowywało czy coś.

RolandiXor
źródło
Zaloguj się ponownie i zmień język. Nie widzę żadnego sposobu zmiany języka przy logowaniu. Widzę tekst, który wspomina o zmianie języka, ale nie ma opcji (przyciski itp.) .. być może dlatego, że mam włączoną tylko australijski angielski .... i uruchomiłem wszystkie powyższe polecenia ... więc w tej chwili
pozostaje
@ red.bear: Spróbuj zainstalować language-pack-eni language-support-en, a następnie powtórzyć proces powyżej.
RolandiXor
1

Próbowałem edytować plik ustawień regionalnych i wybierać różne języki podczas logowania.

Filtrowanie uszkodzonych pakietów za pomocą Synaptic i całkowite usunięcie 9 obrażających pakietów zadziałało dla mnie (libreoffice i python uno).

Ale nie mogę zainstalować LibreOffice bez widocznego uszkodzenia menedżera pakietów. Jednak instaluje się.

Mam 11.04 i386. Uwaga: Podczas ostatniej części mojej instalacji wystąpiła awaria zasilania, ponieważ Ubuntu pobierał aktualizacje.

marajit
źródło
1

Miałem ten sam problem, ale przejście do System> Administracja> Obsługa języków może rozwiązać Twój problem, ponieważ może poprosić Cię o zainstalowanie niektórych pakietów, a wtedy będzie dobrze !! To działało dla mnie, więc myślę, że zrobi to samo dla ciebie !!

Nickolas Pylarinos
źródło
0

Biegać

export LC_ALL="zh_CN.utf8"
ibus-setup

i wybierz jedną z opcji metody wprowadzania według własnego uznania.

mobeyond
źródło
0

Miałem podobny problem (najbardziej zauważalny w Thunderbird) do przykładu en_AU tutaj - ale jestem z en_NZ - i po kilku próbach i błędach w Ubuntu 17.10 moją poprawką była aktualizacja ~ / .pam_environment, zastępująca wszystkie inne wpisy ( głównie en_AU i en_US) z en_NZ, a następnie restartem.

Szkoda, że ​​nie możesz po prostu ustawić swoich ustawień regionalnych i pozwolić, aby robiła to, co twierdzi - najbardziej rozczarowana, że ​​uruchamianie ustawień regionalnych dpkg-configure w rzeczywistości nie wydaje się przydatne.

BlakJak
źródło