Bab 8. I18N dan L10N

Daftar Isi

8.1. Lokal
8.1.1. Alasan untuk lokal UTF-8
8.1.2. Konfigurasi ulang lokal
8.1.3. Pengodean nama berkas
8.1.4. Pesan terlokalkan dan dokumentasi yang diterjemahkan
8.1.5. Efek dari lokal
8.2. Masukan papan ketik
8.2.1. Masukan papan ketik untuk konsol Linux dan X Window
8.2.2. Masukan papan ketik untuk Wayland
8.2.3. Dukungan metode masukan dengan IBus
8.2.4. Contoh untuk bahasa Jepang
8.3. Keluaran tampilan
8.4. Karakter Lebar Karakter Ambigu Asia Timur

Multilingualisasi (M17N) atau Dukungan Bahasa Asli untuk perangkat lunak aplikasi dilakukan dalam 2 langkah.

[Tip] Tip

Ada 17, 18, atau 10 huruf antara "m" dan "n", "i" dan "n", atau "l" dan "n" dalam multilingualization (multibahasa), internationalization (internasionalisasi), dan localization (pelokalan) yang sesuai dengan M17N, I18N, dan L10N. Lihat Pengantar i18n untuk detailnya.

Perilaku program yang mendukung internasionalisasi dikonfigurasi oleh variabel lingkungan "$LANG" untuk mendukung pelokalan. Dukungan aktual dari fitur dependen lokal oleh pustaka libc memerlukan pemasangan paket locales atau locales-all. Paket locales harus diinisialisasi dengan benar.

Jika paket locales dan locales-all tidak terpasang, dukungan fitur lokal hilang dan sistem menggunakan pesan bahasa Inggris AS dan menangani data sebagai ASCII. Perilaku ini adalah cara yang sama seperti "$LANG" diatur oleh "LANG=", "LANG=C", atau "LANG=POSIX".

Perangkat lunak modern seperti GNOME dan KDE telah menjadi multibahasa. Mereka diinternasionalisasi dengan membuat mereka menangani data UTF-8 dan dilokalkan dengan menyediakan pesan terjemahan mereka melalui infrastruktur gettext(1). Pesan yang diterjemahkan dapat disediakan sebagai paket pelokalan terpisah.

Sistem GUI desktop Debian saat ini biasanya menetapkan lokal di bawah lingkungan GUI sebagai "LANG=xx_YY.UTF-8". Di sini, "xx" adalah kode bahasa ISO 639 dan "YY" adalah kode negara ISO 3166. Nilai-nilai ini diatur oleh dialog GUI konfigurasi desktop dan mengubah perilaku program. Lihat Bagian 1.5.2, “Variabel "$LANG"”

Representasi paling sederhana dari data teks adalah ASCII yang cukup untuk bahasa Inggris dan menggunakan kurang dari 127 karakter (diwakili dengan 7 bit).

Bahkan teks bahasa Inggris polos mungkin berisi karakter non-ASCII, misalnya tanda kutip kiri dan kanan yang sedikit keriting tidak tersedia dalam ASCII.

“double quoted text” is not "double quoted ASCII"
‘single quoted text’ is not 'single quoted ASCII'

Untuk mendukung lebih banyak karakter, banyak set karakter dan sistem pengodean telah digunakan untuk mendukung banyak bahasa (lihat Tabel 11.2, “Daftar nilai pengodean dan penggunaannya”).

Kumpulan karakter Unicode dapat mewakili hampir semua karakter yang dikenal manusia dengan rentang titik kode 21 bit (yaitu, 0 hingga 10FFFF dalam notasi heksadesimal).

Sistem pengodean teks UTF-8 mempaskan titik kode Unicode ke dalam aliran data 8 bit yang masuk akal yang sebagian besar kompatibel dengan sistem pemrosesan data ASCII. Hal ini membuat UTF-8 pilihan modern yang disukai. UTF adalah singkatan dari Unicode Transformation Format. Ketika data teks polos ASCII dikonversi ke UTF-8, ia memiliki konten dan ukuran yang persis sama dengan yang asli ASCII. Jadi Anda tidak kehilangan apa pun dengan menggelar lokal UTF-8.

Di bawah lokal UTF-8 dengan program aplikasi yang kompatibel, Anda dapat menampilkan dan menyunting data teks bahasa asing selama fonta yang diperlukan dan metode masukan dipasang dan diaktifkan. Misalnya di bawah lokal "LANG=fr_FR.UTF-8", gedit(1) (penyunting teks untuk Desktop GNOME) dapat menampilkan dan menyunting data teks karakter Cina sambil menyajikan menu dalam bahasa Prancis.

[Tip] Tip

Lokal standar baru "en_US.UTF-8" dan lokal standar lama "C"/"POSIX" menggunakan pesan bahasa Inggris standar AS, mereka memiliki perbedaan halus dalam urutan penyortiran dll. Jika Anda ingin menangani tidak hanya karakter ASCII tetapi juga menangani semua karakter yang dikodekan UTF-8 dengan anggun sambil mempertahankan perilaku lokal "C" lama, gunakan lokal "C.UTF-8" non-standar pada Debian.

[Catatan] Catatan

Beberapa program mengkonsumsi lebih banyak memori setelah mendukung I18N. Ini karena mereka dikodekan untuk menggunakan UTF-32(UCS4) secara internal untuk mendukung Unicode bagi optimasi kecepatan dan mengkonsumsi 4 byte per setiap data karakter ASCII independen dari lokal yang dipilih. Sekali lagi, Anda tidak kehilangan apa pun dengan menggelar lokal UTF-8.

Agar sistem dapat mengakses lokal tertentu, data lokal harus dikompilasi dari basis data lokal.

Paket locales tidak dilengkapi dengan data lokal yang telah dikompilasi sebelumnya. Anda harus mengkonfigurasinya sebagai:

# dpkg-reconfigure locales

Proses ini melibatkan 2 langkah.

Nilai lokal baku seluruh sistem yang diatur dalam "/etc/default/locale" dapat ditimpa oleh konfigurasi GUI bagi aplikasi GUI.

[Catatan] Catatan

Sistem pengodean tradisional sebenarnya dapat diidentifikasi dengan "/usr/share/i18n/SUPPORTED". Jadi, "LANG=en_US" adalah "LANG=en_US.ISO-8859-1".

Paket locales-all dilengkapi dengan semua data lokal yang telah dikompilasi sebelumnya tetapi tidak membuat "/etc/default/locale".

Untuk pertukaran data lintas platform (lihat Bagian 10.1.7, “Perangkat penyimpanan lepasan”), Anda mungkin perlu mengait beberapa sistem berkas dengan pengodean tertentu. Misalnya, mount(8) untuk sistem berkas vfat mengasumsikan CP437 jika digunakan tanpa opsi. Anda perlu memberikan opsi mount eksplisit untuk menggunakan UTF-8 atau CP932 untuk nama berkas.

[Catatan] Catatan

Saat mengait otomatis memory stick USB hot-pluggable di bawah lingkungan desktop modern seperti GNOME, Anda dapat memberikan opsi mount tersebut dengan mengklik kanan ikon pada desktop, klik tab "Drive", klik untuk memperluas "Pengaturan", dan memasukkan "utf8" ke "Opsi mount:". Saat berikutnya memory stick ini dipasang, mount dengan UTF-8 diaktifkan.

[Catatan] Catatan

Jika Anda memutakhirkan sistem atau memindahkan disk drive dari sistem non-UTF-8 yang lebih lama, nama berkas dengan karakter non-ASCII dapat dikodekan dalam pengodean bersejarah dan usang seperti ISO-8859-1 atau eucJP. Silakan cari bantuan alat konversi teks untuk mengubahnya menjadi UTF-8. Lihat Bagian 11.1, “Alat konversi data teks”.

Samba menggunakan Unicode untuk klien yang lebih baru (Windows NT, 200x, XP) tetapi menggunakan CP850 untuk klien yang lebih lama (DOS dan Windows 9x/Me) sebagai baku. Baku untuk klien yang lebih tua ini dapat diubah menggunakan "dos charset" dalam berkas "/etc/samba/smb.conf", misalnya, menjadi CP932 untuk bahasa Jepang.

Terjemahan ada untuk banyak pesan teks dan dokumen yang ditampilkan dalam sistem Debian, seperti pesan kesalahan, keluaran program standar, menu, dan halaman manual. rantai alat perintah GNU gettext (1) digunakan sebagai alat backend untuk sebagian besar kegiatan terjemahan.

Di bawah "Tugas" → "Pelokalan" aptitude(8) menyediakan daftar panjang paket biner yang berguna yang menambahkan pesan terlokalkan ke aplikasi dan menyediakan dokumentasi yang diterjemahkan.

Misalnya, Anda dapat memperoleh pesan lokal untuk manpage dengan memasang paket manpages-LANG. Untuk membaca manpage berbahasa Italia bagi nama program dari "/usr/share/man/it/", jalankan sebagai berikut.

LANG=it_IT.UTF-8 man programname

GNU gettext dapat mengakomodasi daftar prioritas bahasa terjemahan dengan variabel lingkungan $LANGUAGE. Misalnya:

 $ export LANGUAGE="pt:pt_BR:es:it:fr"

Untuk informasi selengkapnya, lihat info gettext dan baca bagian "Variabel LANGUAGE".

Urutan karakter dengan sort(1) dipengaruhi oleh pilihan bahasa lokal. Lokal Spanyol dan Inggris menyortir secara berbeda.

Format tanggal ls(1) dipengaruhi oleh lokal. Format tanggal "LANG=C ls -l" dan "LANG=en_US.UTF-8" berbeda (lihat Bagian 9.3.4, “Tampilan waktu dan tanggal yang disesuaikan”).

Tanda baca angka berbeda untuk lokal. Misalnya, di lokal Inggris, seribu satu titik satu ditampilkan sebagai "1.000,1" sementara di lokal Jerman, ditampilkan sebagai "1.000,1". Anda mungkin melihat perbedaan ini dalam program lembar kerja.

Setiap fitur detail variabel lingkungan "$LANG" dapat ditimpa dengan menetapkan variabel "$LC_*". Variabel lingkungan ini dapat ditimpa lagi dengan menetapkan variabel "$LC_ALL". Lihat manpage locale(7) untuk rinciannya. Kecuali Anda memiliki alasan kuat untuk membuat konfigurasi yang rumit, silakan menjauh dari mereka dan hanya menggunakan variabel "$LANG" yang diatur ke salah satu lokal UTF-8.

Untuk GNOME pada sistem desktop Wayland, Bagian 8.2.1, “Masukan papan ketik untuk konsol Linux dan X Window” tidak dapat mendukung bahasa Eropa non-Inggris. IBus dibuat untuk mendukung tidak hanya bahasa Asia tetapi juga bahasa Eropa. Ketergantungan paket dari Lingkungan Desktop GNOME merekomendasikan "ibus" melalui "gnome-shell". Kode "ibus" telah diperbarui untuk mengintegrasikan fungsi opsi setxkbmap dan XKB. Anda perlu mengonfigurasi ibus dari "Pengaturan GNOME" atau "Tweak GNOME" untuk masukan papan ketik multibahasa.

[Catatan] Catatan

Jika ibus aktif, konfigurasi papan ketik X klasik Anda dengan setxkbmap mungkin ditimpa oleh ibus bahkan di bawah lingkungan desktop berbasis X klasik. Anda dapat menonaktifkan ibus yang dipasang menggunakan im-config untuk mengatur metode masukan ke "None". Untuk informasi selengkapnya, lihat Wiki Debian tentang papan ketik.

Konsol Linux hanya dapat menampilkan karakter terbatas. (Anda perlu menggunakan program terminal khusus seperti jfbterm(1) untuk menampilkan bahasa non-Eropa pada konsol non-GUI.)

Lingkungan GUI (Bab 7, Sistem GUI) dapat menampilkan karakter apa pun di UTF-8 selama fonta yang diperlukan terpasang dan diaktifkan. (Pengodean data fonta asli diurus dan transparan kepada pengguna.)

Di bawah lokal Asia Timur, gambar kotak, karakter Yunani, dan Sirilik dapat ditampilkan lebih lebar dari lebar yang Anda inginkan untuk menyebabkan keluaran terminal yang tidak selaras (lihat Unicode Standard Annex # 11).

Anda dapat mengatasi masalah ini:

  • gnome-terminal: Preferensi → Profil → Nama profil → Kompatibilitas → Karakter lebar-ambigu → Sempit

  • ncurses: Atur lingkungan export NCURSES_NO_UTF8_ACS=0.