Pertanyaan ini didorong dengan mengajukan pertanyaan
Browser Chromium tidak mengizinkan pengaturan ukuran kertas default untuk "Cetak ke File", dan juga oleh percakapan dengan @Gilles di obrolan. Seperti yang ditunjukkan oleh @don_crissti, dan sebagaimana diverifikasi oleh saya, mengubah lokal (setidaknya LC_PAPER
) membuat perbedaan dalam ukuran kertas yang dipilih.
Saya tidak pernah terlalu memikirkan apa yang harus dipilih, dan selalu menggunakan en_US.UTF-8
karena sepertinya pilihan default yang masuk akal.
Namun, per @Gilles pada obrolan (lihat percakapan yang dimulai di http://chat.stackexchange.com/transcript/message/17017095#17017095). Ekstrak:
Gilles:LC_PAPER default ke $LANG
Gilles:Anda harus memiliki LANG=en_US.UTF-8. Itu ide yang buruk:itu menyetel
LC_COLLATE dan itu hampir selalu merupakan hal yang burukGilles:LC_COLLATE tidak menjelaskan susunan yang benar, terlalu
membatasi (berjalan karakter demi karakter) menghapus LANG dan sebagai gantinya
mengatur LC_CTYPE dan LC_PAPERGilles:plus LC_MESSAGES jika Anda ingin pesan dalam bahasa selain
Inggris
Jelas, ada masalah di sini yang tidak saya sadari, dan saya yakin banyak yang lain juga. Jadi, masalah apa yang harus Anda pertimbangkan saat menyetel lokal, dan bagaimana Anda harus menyetelnya? Saya selalu menjalankan dpkg-reconfigure locales
di Debian, dan tidak berpikir dua kali tentangnya.
Pertanyaan khusus:Haruskah saya menyetel lokal saya ke en_IN.UTF-8? Apakah ada kerugian dari melakukannya?
Jawaban yang Diterima:
Setelan lokal adalah preferensi pengguna yang terkait dengan budaya Anda.
Nama lokal
Pada semua varian unix saat ini yang saya ketahui (tetapi tidak pada beberapa barang antik), nama lokal mengikuti pola yang sama:
- Kode bahasa dua huruf kecil ISO 639-1, atau kode bahasa tiga huruf ISO 639-2 jika bahasa tidak memiliki kode dua huruf. Misalnya,
en
untuk bahasa Inggris,de
untuk bahasa Jerman,ja
untuk bahasa Jepang,uk
untuk bahasa Ukraina,ber
untuk Berber, … - Untuk banyak tetapi tidak semua bahasa, garis bawah
_
diikuti dengan kode negara dua huruf besar ISO 3166. Jadi:en_US
untuk bahasa Inggris AS,en_UK
untuk bahasa Inggris Britania,fr_CA
Kanada (Québec) Prancis,de_DE
untuk bahasa Jerman di Jerman,de_AT
untuk bahasa Jerman dari Austria,ja_JP
untuk bahasa Jepang (Jepang), dll. - Opsional, sebuah titik
.
diikuti dengan nama pengkodean karakter sepertiUTF-8
,ISO-8859-1
,KOI8-U
,GB2312
,Big5
, dll. Dengan GNU libc setidaknya (saya tidak tahu seberapa luas ini), huruf besar dan tanda baca diabaikan dalam nama penyandian. Misalnya,zh_CN.UTF-8
adalah bahasa Mandarin (sederhana) Cina yang dikodekan dalam UTF-8, sedangkanzh_CN
apakah bahasa Mandarin Mandarin dikodekan dalam GB2312, danzh_TW
adalah bahasa Tionghoa Taiwan (tradisional) yang dikodekan dalam Big5. - Opsional, tanda
@
diikuti dengan nama varian. Arti dari varian adalah tergantung lokal. Misalnya, banyak negara Eropa memiliki@euro
varian lokal di mana tanda mata uang adalah € dan di mana pengkodean adalah salah satu yang menyertakan karakter ini (ISO 8859-15 atau ISO 8859-16), yang bertentangan dengan varian tanpa hiasan dengan tanda mata uang yang lebih lama. Misalnya,en_IE
(Bahasa Inggris, Irlandia) menggunakan enkode latin1 (ISO 8859-1) dan £ sebagai simbol mata uang saat[email protected]
menggunakan pengkodean latin9 (ISO 8859-15) dan € sebagai simbol mata uang.
Selain itu, ada dua nama lokal yang ada di semua sistem mirip unix:C
dan POSIX
. Nama-nama ini sinonim dan berarti komputer, yaitu pengaturan default yang sesuai untuk data yang diuraikan oleh program komputer.
Setelan lokal
Kategori lokal berikut ditentukan oleh POSIX:
LC_CTYPE
:kumpulan karakter yang digunakan oleh aplikasi terminal:data klasifikasi (karakter mana yang berupa huruf, tanda baca, spasi, tidak valid, dll.) dan konversi huruf. Utilitas teks biasanya memperhatikanLC_CTYPE
untuk menentukan batas karakter.LC_COLLATE
:susunan (yaitu menyortir). Pengaturan ini sangat terbatas penggunaannya karena beberapa alasan:- Sebagian besar bahasa memiliki aturan rumit yang bergantung pada apa yang sedang diurutkan (misalnya kata kamus dan nama diri mungkin tidak menggunakan urutan yang sama) dan tidak dapat dinyatakan dengan
LC_COLLATE
. - Ada beberapa aplikasi di mana urutan pengurutan yang tepat penting dilakukan oleh perangkat lunak yang menggunakan pengaturan lokal. Misalnya, pengolah kata menyimpan bahasa dan penyandian file dalam file itu sendiri (jika tidak, file tidak akan diproses dengan benar pada sistem dengan pengaturan lokal yang berbeda) dan tidak peduli dengan pengaturan lokal yang ditentukan oleh lingkungan.
LC_COLLATE
dapat memiliki efek samping yang buruk, khususnya karena menyebabkan urutan pengurutan A [A-Z] memecahkan beberapa aplikasi.
- Sebagian besar bahasa memiliki aturan rumit yang bergantung pada apa yang sedang diurutkan (misalnya kata kamus dan nama diri mungkin tidak menggunakan urutan yang sama) dan tidak dapat dinyatakan dengan
LC_MESSAGES
:bahasa informasi dan pesan kesalahan.LC_NUMERIC
:pemformatan angka:pemisah desimal dan ribuan.
Banyak aplikasi hard-code.
sebagai pemisah desimal. Ini membuatLC_NUMERIC
tidak terlalu berguna dan berpotensi berbahaya:- Bahkan jika Anda menyetelnya, Anda masih akan sering melihat format default.
- Anda mungkin mengalami situasi di mana satu aplikasi menghasilkan keluaran yang bergantung pada lokal dan aplikasi lain mengharapkan
.
menjadi titik desimal, atau,
menjadi pemisah bidang.
LC_MONETARY
:sepertiLC_NUMERIC
, tetapi untuk sejumlah mata uang lokal.
Sangat sedikit aplikasi yang menggunakan ini.LC_TIME
:format tanggal dan waktu:nama hari kerja dan bulan, jam 12 atau 24 jam, urutan bagian tanggal, tanda baca, dll.
GNU libc, yang akan Anda temukan di Linux non-embedded, mendefinisikan kategori lokal tambahan:
LC_PAPER
:ukuran kertas default (ditentukan oleh tinggi dan lebar).LC_NAME
,LC_ADDRESS
,LC_TELEPHONE
,LC_MEASUREMENT
,LC_IDENTIFICATION
:Saya tidak tahu aplikasi apa pun yang menggunakan ini.
Variabel lingkungan
Aplikasi yang menggunakan pengaturan lokal menentukannya dari variabel lingkungan.
- Kemudian nilai
LANG
variabel lingkungan digunakan kecuali diganti oleh pengaturan lain. JikaLANG
tidak disetel, lokal default adalahC
. LC_xxx
nama dapat digunakan sebagai variabel lingkungan.- Jika
LC_ALL
diatur, maka semua nilai lainnya diabaikan; ini terutama berguna untuk mengaturLC_ALL=C
menjalankan aplikasi yang perlu menghasilkan keluaran yang sama di mana pun aplikasi itu dijalankan. - Selain itu, GNU libc menggunakan
LANGUAGE
untuk menentukan fallback untukLC_MESSAGES
(mis.LANGUAGE=fr_BE:fr_FR:en
untuk memilih bahasa Prancis Belgia, atau jika tidak tersedia Prancis Prancis, atau jika tidak tersedia bahasa Inggris).
Menginstal lokal
Data lokal bisa berukuran besar, sehingga beberapa distribusi tidak mengirimkannya dalam bentuk yang dapat digunakan dan sebaliknya memerlukan langkah penginstalan tambahan.
- Di Debian, untuk menginstal lokal, jalankan
dpkg-reconfigure locales
dan pilih dari daftar di kotak dialog, atau edit/etc/locale.gen
lalu jalankanlocale-gen
. - Di Ubuntu, untuk menginstal lokal, jalankan
locale-gen
dengan nama-nama lokal sebagai argumen.
Anda dapat menentukan lokal Anda sendiri.
Rekomendasi
Pengaturan yang berguna adalah:
- Setel
LC_CTYPE
ke bahasa dan penyandian tempat Anda menyandikan file teks. Pastikan terminal Anda menggunakan penyandian itu.
Untuk sebagian besar bahasa, hanya penyandian yang penting. Ada beberapa pengecualian; misalnya, huruf besari
adalahI
dalam sebagian besar bahasa tetapiİ
dalam bahasa Turki (tr_TR
). - Setel
LC_MESSAGES
ke bahasa yang Anda inginkan untuk melihat pesan. - Setel
LC_PAPER
keen_US
jika Anda ingin US Letter menjadi ukuran kertas default dan hampir semua hal lainnya (mis.en_GB
) jika Anda ingin A4. - Opsional, setel
LC_TIME
ke format waktu favorit Anda.
Seperti dijelaskan di atas, hindari pengaturan LC_COLLATE
dan LC_NUMERIC
. Jika Anda menggunakan LANG
, timpa dua kategori ini secara eksplisit dengan menyetelnya ke C
.