Mengapa saya mendapatkan kesalahan berikut saat melakukan ini dengan python:
>>> import locale
>>> print str( locale.getlocale() )
(None, None)
>>> locale.setlocale(locale.LC_ALL, 'de_DE')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/locale.py", line 531, in setlocale
return _setlocale(category, locale)
locale.Error: unsupported locale setting
Ini berfungsi dengan lokal lain seperti fr atau nl juga. Saya menggunakan Ubuntu 11.04.
Pembaruan: Melakukan hal berikut ini tidak menghasilkan apa-apa:
dpkg-reconfigure locales
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LC_CTYPE = "UTF-8",
LANG = (unset)
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
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
python
locale
ubuntu-11.04
toom
sumber
sumber
de_DE
daftarlocale -a
? Jika tidak, Anda harus menginstalnya .locale.setlocale(locale.LC_ALL, 'de_DE')
salah. Kamu butuhlocale.setlocale(locale.LC_ALL, 'de_DE.utf8')
.locale.setlocale(locale.LC_ALL, locale.locale_aliases['de_DE'])
.Jawaban:
Jalankan perintah berikut
Ini akan menyelesaikan ini.
Pastikan untuk mencocokkan
.UTF-8
bagian dengan sintaks aktual yang ditemukan dalam outputlocale -a
misalnya.utf8
pada beberapa sistem.sumber
export LC_ALL="en_US.UTF-8"
gagal dengan-bash: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8)
Apa yang berhasil lakukan ini:export LC_ALL=C
Menurut tautan ini , itu diselesaikan dengan memasukkan perintah ini:
sumber
LC_ALL
ke nilai'C'
- tapi mengapa bisa ini bekerja?Anda mungkin tidak memiliki
de_DE
lokal yang tersedia.Anda dapat melihat daftar lokal yang tersedia dengan
locale -a
perintah. Misalnya, di komputer saya:Perhatikan bahwa jika Anda ingin mengatur lokal ke
it_IT
Anda juga harus menentukan.utf8
:Untuk menginstal penggunaan lokal baru:
di mana
id
kode bahasa (diambil dari sini )Setelah Anda menginstal lokal, Anda harus mengikuti saran Julien Palard dan mengkonfigurasi ulang lokal dengan:
sumber
Salah satu jawaban di atas memberikan solusinya:
Masalah dengan solusi di atas adalah bahwa hal itu harus dilakukan pada shell linux. Namun, jika Anda menyediakan kode untuk bekerja pada mesin klien maka ini merupakan pendekatan yang buruk. Saya juga mencoba menjalankan perintah di atas menggunakan os.system (), tetapi tetap saja tidak berhasil.
Solusi yang berhasil bagi saya adalah
sumber
Solusi yang lebih permanen adalah dengan mengisi nilai-nilai yang hilang, dalam output yang ditunjukkan oleh perintah:
locale
Output dari
locale
adalah:Untuk Mengisi nilai yang hilang, edit ~ / .bashrc:
Tambahkan baris berikut setelah perintah di atas (misalkan Anda ingin en_US.UTF-8 menjadi bahasa Anda):
Jika file ini ReadOnly, Anda harus mengikuti langkah-langkah yang disebutkan oleh The GeekyBoy . Jawaban yang diberikan oleh Dr Beco di Superuser memiliki detail terkait dengan menyimpan file yang hanya bisa dibaca.
Setelah menyimpan file lakukan:
Sekarang Anda tidak akan menghadapi masalah yang sama lagi.
sumber
Jika Anda menggunakan Debian (atau garpu Debian), Anda dapat menambahkan lokal menggunakan:
sumber
dpkg-reconfigure locales
membawakan Anda menu pilihan lokal seperti ini: vpser.net/uploads/2013/01/dpkg-reconfigure-locales-1.jpg ?Di Arch Linux saya bisa memperbaiki ini dengan menjalankan
sudo locale-gen
sumber
Sebagai catatan, saya memiliki masalah yang sama, tetapi tidak ada solusi yang berhasil. Saya telah memutakhirkan komputer saya dan memigrasikan PC saya. Saya memiliki campuran bahasa Inggris dan Spanyol:
Tetapi, pada instalasi Debian baru saya, saya baru saja memilih bahasa Inggris sebagai lokal. Yang akhirnya berhasil adalah mengkonfigurasi ulang paket locales untuk menambah dan menghasilkan spanyol juga.
sumber
Cukup buka file .bashrc dan tambahkan ini
dan kemudian ketikkan source .bashrc di terminal.
sumber
Anda kesalahan jelas mengatakan, Anda mencoba menggunakan lokal sesuatu tidak ada di sana.
locale.Error: pengaturan lokal yang tidak didukung
Untuk memeriksa pengaturan yang tersedia, gunakan
locale -a
sehingga Anda dapat menggunakan satu di antara,
untuk
de_DE
File ini dapat disesuaikan secara manual atau diperbarui menggunakan alat, perbarui-lokal.
sumber
locale
untuk mendapatkan lokal apa yang digunakan. Seperti:/etc/locale-gen
file. Batalkan komentar untuk yang digunakanlocale-gen
untuk menghasilkan lokal yang baru ditambahkansumber
Menurut pendapat saya, cara termudah untuk mengatur lokal lokal di python {, 3} adalah:
Kemudian, hal-hal yang disadari lokal hanya berfungsi, jika Anda menggunakan distro linux yang layak, dan harus bekerja pada distribusi biner dari OS lain juga (atau itu bug IMHO).
sumber
Tempatkan di
Dockerfile
atasENV
.sumber
locale
terminal Anda mendapatkan `LANG = en_US.UTF-8 dan lokal lainnya? stackoverflow.com/questions/36394101/…Kesalahan ini dapat terjadi, jika Anda baru saja menambahkan lokal baru. Anda harus memulai ulang shell interaktif python (
quit(
) danpython
) untuk mendapatkan akses ke sana.sumber
Jika saya jadi Anda, saya akan menggunakan BABEL: http://babel.pocoo.org/en/latest/index.html
Saya mendapat masalah yang sama di sini menggunakan Docker, saya sudah mencoba setiap langkah dan tidak bekerja dengan baik, selalu mendapatkan kesalahan lokal, jadi saya memutuskan untuk menggunakan BABEL, dan semuanya bekerja dengan baik.
sumber
Dalam mencoba mendapatkan python untuk memuntahkan nama-nama di lokal tertentu saya mendarat di sini dengan masalah yang sama.
Dalam mengejar jawaban, saya mendapat hal-hal mistis.
Saya menemukan kode python itu.
Dan memang
locale.setlocale(locale.LC_TIME, 'en_DK.UTF-8')
berhasilMenggunakan tips di sini saya diuji lebih lanjut untuk melihat apa yang tersedia menggunakan kode python
yang menghasilkan
Yang hanya berfungsi di atas! Tetapi
en_DK.UTF-8
tidak ada dalam daftar ini, meskipun berfungsi!?!? Apa?? Dan daftar lokal yang dihasilkan python memang mengandung banyak kombo da dan DK, yang saya cari, tapi sekali lagi tidak ada UTF-8 untuk da / DK ...Saya berada di distro Point Linux (berbasis Debian), dan di sini
locale
mengatakan antara lainLC_TIME="en_DK.UTF-8"
, yang saya tahu berfungsi, tetapi bukan lokal yang saya butuhkan.locale -a
kataJadi pasti perlu menginstal lokal lain , yang saya lakukan dengan mengedit
/etc/locale.gen
, batalkan komentar yang diperlukan barisda_DK.UTF-8 UTF-8
dan jalankan perintahlocale-gen
Sekarang
locale.setlocale(locale.LC_TIME, 'da_DK.UTF-8')
berfungsi juga, dan saya bisa mendapatkan nama hari dan bulan yang dilokalkan.Kesimpulan saya:
Python: locale.locale_alias sama sekali tidak membantu dalam menemukan lokal yang tersedia !!!
Linux: Sangat mudah untuk mendapatkan daftar lokal dan menginstal lokal baru. Banyak bantuan yang tersedia.
Windows: Saya telah menyelidiki sedikit, tetapi tidak ada yang meyakinkan. Meskipun ada posting yang mengarah ke jawaban, tapi saya belum merasakan keinginan untuk mengejarnya.
sumber
jika saya mengerti dengan benar, sumber kesalahan utama di sini adalah sintaks yang tepat dari nama lokal. Terutama karena tampaknya berbeda di antara distribusi. Saya telah melihat yang disebutkan di sini dalam berbagai jawaban / komentar:
Meskipun ini jelas sama untuk manusia, hal yang sama tidak berlaku untuk algoritma deterministik standar Anda.
Jadi, Anda mungkin akan melakukan sesuatu seperti:
sumber
python mencari .UFT-8, tetapi Anda mungkin sudah .utf8 mencoba menginstal paket .UFT-8 dengan sudo dpkg-reconfigure locales
sumber
pertama, pastikan Anda telah menginstal paket bahasa dengan melakukan:
sumber