Pengaturan lokal tidak benar. Bagaimana saya bisa meresetnya?

43

Saya punya masalah lokal.
Urutan penyusun dalam nautilusdan program lain telah berubah.
Saya mendapatkan kesalahan lokal yang muncul di terminal ketika saya meluncurkan aplikasi GUI ..

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

The localeperintah menghasilkan pesan kesalahan

    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=

Seperti yang disarankan dalam pertanyaan askubuntu , saya sudah menjalankan perintah berikut, tetapi tidak ada perubahan.

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

Saya juga mencoba saran di pertanyaan askubuntu ... juga tidak ada perubahan.

    apt-get install --reinstall locales

Saya pikir itu dimulai ketika saya menginstal sementara dan menghapus Editor Metode Input bahasa Urdu via IBus.. itu pasti terjadi pada hari yang sama.

Mungkin ini terkait IBus, tapi saya tidak punya masalah dengannya sebelum ini.

  • OS adalah 10,04
Peter.O
sumber

Jawaban:

27

Saya sudah berhasil membuat semuanya berjalan "normal" lagi.

Setelah mencoba banyak paket menginstal ulang dll, termasuk sepenuhnya menghapus IBus (semua tidak berpengaruh), saya mulai berpikir bahwa itu mungkin disebabkan oleh pengaturan konfigurasi yang menginstal ulang tidak mengubah.

Saya telah memperhatikan bahwa output dari localeagak kehilangan, dari tugas UTF-8, jadi saya memeriksa ini di VM yang baru diinstal ... semua entri LC_ * (kecuali LC_ALL, yang menimpa semua yang lain) ditetapkan dengan .UTF-8akhiran. jadi saya secara manual mengatur nilai LC_ * seperti yang ditunjukkan di bawah ini.

Saya mungkin bisa saja menggunakan LC_ALL="en_AU.UTF-8", tetapi dalam membaca tentang ini, saya telah menemukan cara menyesuaikan format tanggal dan waktu sistem , dan LC_ALLakan menimpa pengaturan kustom saya.

Saya tidak tahu apakah saya sudah menggunakan metode yang paling tepat, tetapi berhasil!

File yang dimodifikasi adalah: /etc/default/locale

  • Ini menunjukkan konten sebelum mod:

    LANG="en_AU.UTF-8"
    LANGUAGE="en_AU:en"
    LC_MESSAGES="en_AU.UTF-8"
    
  • Ini menunjukkan konten setelah mod:

    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"
    

File yang sama di VM hanya berisi satu baris ini:

    LANG="en_AU.UTF-8" 

Peter.O
sumber
terima kasih untuk posting kamu. Sebagai catatan, saya harus me-restart sistem saya agar perbaikannya berfungsi. (mungkin bisa menggunakan emacs eval-buffer?)
David LeBauer
19

Mendefinisikan ulang lokal dan mengkonfigurasi ulang mungkin cukup untuk memperbaiki masalah:

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

Ketika Anda menjalankan sudo dpkg-reconfigure localesAnda dapat memilih lokal yang Anda inginkan dengan mengklik spacebardan bergerak dengan dan sebelum memukul Enter.

Guillaume Vincent
sumber
Mungkin perlu disebutkan bahwa Anda memilih bahasa yang Anda inginkan dengan bilah spasi.
Daniel Kmak
@Aniel Saya tidak mengerti: bilah spasi?
Guillaume Vincent
1
Saat menjalankan dpkg-reconfigureAnda mendapatkan daftar dengan kotak centang dan untuk memilih bahasa Anda harus menggunakan bilah spasi. Tidak ada informasi seperti itu di program konsol jadi saya pikir akan membantu untuk menuliskannya di bawah jawaban. Saya tidak tahu bagaimana memilih bahasa ini.
Daniel Kmak
1
@Daniel selesai :)
Guillaume Vincent
15

Saya juga menemui masalah ini, seperti yang Anda lihat, Anda LC_ALLkosong. Saya melakukan sebagai berikut dan ini membantu:

$ sudo vim /etc/environment

dan atur LC_ALLsesuatu seperti en_US.UTF-8, milikku adalah:

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

kemudian reboot, dan jalankan locale, dan itu harus seperti:

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
sumber
Solusi ini bekerja dengan baik pada Ubuntu 12.04 LTS tepat
speciousfool
Pengaturan LC_ALLtidak disarankan. "Menggunakan LC_ALL sangat tidak disarankan karena menimpa segalanya. Silakan gunakan hanya saat pengujian dan tidak pernah mengaturnya dalam file startup." wiki.debian.org/Locale
gertvdijk
4

Jika Anda terhubung dari jarak jauh ke mesin melalui ssh (misalnya dari perangkat macosx), Anda perlu mengatur variabel-variabel ini pada mesin yang Anda hubungkan dari

tambahkan berikut ini ke ~ / .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
sumber
1
Apakah ini kesalahan yang diketahui saat menghubungkan dari OS X?
MindTooth
tidak tahu apakah ini karena desain atau kesalahan / bug
Somatik
2

Saya hanya ingin menambahkan, bahwa saya perlu mengedit profil beranda saya juga:

gedit ~/.profile

Jadi dalam kasus Anda akan terlihat seperti:

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

Logout + Log in. Dan semuanya seperti yang diharapkan.

Aas
sumber
Saya perlu exportdi awal setiap baris, dan saya masukkan ~/.bashrc.
Sparhawk
2

Saya memiliki masalah yang sama selama beberapa bulan, banyak perangkat lunak memperingatkan tentang pengaturan lokal yang rusak, dan beberapa bahkan menolak untuk berjalan. Saya ingin menggunakan bahasa Inggris, tetapi pengaturan moneter dan angka Swedia.

Yang akhirnya berhasil bagi saya adalah mengedit di /etc/default/localemana saya menghapus semua yang ada di file itu. Saya kemudian memulai pengaturan bahasa Unity (Settings -> Language Support), mengatur semuanya (Ubuntu ingin menginstal beberapa komponen yang hilang) dan menekan "Apply System-wide"ketika saya selesai.

/etc/default/localeSekarang saya terlihat seperti ini.

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"

Perbedaan besar antara ini dan file asli saya adalah LANGUAGE="en".

David A
sumber
Penghemat hidup saya ...
John Joe
2

Sudah lama sejak ini diposting tetapi baru-baru ini saya punya masalah dengan variabel "lokal" dan tidak ada jawaban yang memberi saya hasil apa pun. Mungkin pengalaman saya sendiri bisa membantu orang lain.

Variabel LANG saya kosong, dan ini memberi saya masalah.

$locale

Keluaran:

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

Saya mencoba beberapa perintah seperti:

sudo locale-gen
sudo dpkg-reconfigure locales

Tanpa keberhasilan. Saya mencoba mengedit / etc / default / locale dan ternyata sudah OK:

$cat /etc/default/locale

Keluaran:

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"

Juga file .pam_environment saya sepertinya benar:

$cat .pam_environment

Keluaran:

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

Saya tidak ingin menambahkan hal-hal tambahan ke file profil atau bash, terutama karena meskipun itu bisa menyelesaikan masalah saya tidak tahu penyebabnya, dan itu mengganggu saya.

Akhirnya saya bertanya-tanya apakah ada sesuatu yang sudah menimpa variabel "lokal" dan saya menjalankan perintah berikutnya:

$cat .bashrc | grep LANG

Keluaran:

unset LANG

Jadi saya menemukan dua baris pada file .bashrc saya yang menjadi penyebabnya (saya tidak menempelkan seluruh file):

unset LANG
export LC_ALL=POSIX

Saya tidak tahu bagaimana atau kapan baris-baris itu berakhir di file bash saya, tetapi saya benar-benar yakin saya tidak menulisnya, mungkin .bashrc saya diganti ketika saya sedang bekerja dengan beberapa hal pengembangan web, saya benar-benar tidak tahu, tetapi karena saya tahu ini tidak disengaja dan ada orang di luar sana yang tidak tahu tentang apa yang menyebabkan perilaku "lokal", mungkin ini bisa membantu mereka. Ngomong-ngomong, mengomentari baris-baris itu dan mem-boot ulang memecahkan masalah untuk saya. Di sini saya menjawab pertanyaan yang sama yang berfokus pada keluhan sublimeT3 tentang variabel LANG .

smajtkst
sumber
1

Tampaknya pembaruan goreng lokal entah bagaimana. Perbaikan yang saya temukan adalah untuk keluar, mengubah bahasa yang dipilih sebelum masuk, dan masuk lagi.

Mungkin juga membantu untuk menginstal ulang lokal di sinaptik, meskipun saya tidak dapat mengkonfirmasi bahwa ini adalah apa yang diperbaiki untuk saya, saya pikir itu keluar atau sesuatu.

RolandiXor
sumber
Masuk kembali dan ubah bahasa. Saya tidak melihat cara sebenarnya untuk mengubah bahasa saat masuk .. Saya melihat teks yang menyebutkan perubahan bahasa, tetapi tidak ada opsi (tombol atau sejenisnya) .. mungkin itu karena saya hanya mengaktifkan Bahasa Inggris Australia .... dan saya telah menjalankan semua perintah di atas .. jadi masih menjadi misteri saat ini ...
Peter.O
@ red.bear: Coba instal language-pack-endan language-support-en, kemudian ulangi proses di atas.
RolandiXor
1

Saya mencoba mengedit file lokal dan memilih bahasa yang berbeda saat login.

Memfilter paket yang rusak dengan Synaptic dan sepenuhnya menghapus 9 paket yang menyinggung berhasil bagi saya (libreoffice dan python uno).

Tapi, saya tidak dapat menginstal LibreOffice tanpa merusak pengelola paket. Namun, itu menginstal.

Saya pada 11,04 i386. Penafian: Ada kegagalan daya selama bagian terakhir instalasi saya karena Ubuntu sedang mengunduh pembaruan.

marajit
sumber
1

Saya memiliki masalah yang sama tetapi pergi ke Sistem> Administrasi> Dukungan Bahasa dapat menyelesaikan masalah Anda karena mungkin meminta Anda untuk menginstal beberapa paket dan kemudian akan baik-baik saja !! Itu bekerja untuk saya, jadi saya kira itu akan melakukan hal yang sama untuk Anda !!

Nickolas Pylarinos
sumber
0

Lari

export LC_ALL="zh_CN.utf8"
ibus-setup

dan pilih salah satu opsi untuk metode input seperti yang Anda inginkan.

mobeyond
sumber
0

Saya punya masalah yang sama (paling terlihat di Thunderbird) dengan contoh en_AU di sini - tapi saya dari en_NZ - dan setelah beberapa trial-and-error dengan Ubuntu 17.10 perbaikan saya adalah untuk memperbarui ~ / .pam_environment, mengganti semua entri lainnya ( kebanyakan en_AU dan en_US) dengan en_NZ, lalu me-reboot.

Sayang sekali Anda tidak bisa begitu saja menetapkan lokal dan membuatnya melakukan apa yang diklaimnya lakukan - paling kecewa bahwa menjalankan lokal dpkg-configure tampaknya tidak melakukan apa pun yang bermanfaat.

BlakJak
sumber