Informasi latar belakang
Saya menguji solusi pada Fedora 21 dengan GNOME Shell 3.14.4, tapi saya percaya itu dapat diterapkan ke versi lain juga.
Hal pertama yang harus dipahami adalah bahwa lingkungan desktop GNOME menimpa definisi lokal seluruh sistem dan karenanya tidak terpengaruh olehnya /etc/locale.conf
. Selain itu, mungkin ada aplikasi yang memiliki konfigurasi lokal sendiri dan tidak menggunakan pengaturan sistem atau GNOME sama sekali. Dalam panduan ini saya akan menjelaskan cara menyesuaikan pengaturan lokal dengan kebutuhan Anda dan GNOME dan sistem akan konsisten dari perspektif lokal.
Memeriksa Status Lokal Saat Ini
Pengaturan Seluruh Sistem
Dari Panduan Administrator Sistem Fedora 21 :
Pengaturan lokal seluruh sistem disimpan dalam /etc/locale.conf
file, yang dibaca saat boot awal oleh daemon systemd . Pengaturan lokal yang dikonfigurasikan /etc/locale.conf
diwarisi oleh setiap layanan atau pengguna, kecuali setiap program atau pengguna individual menimpanya.
Untuk melihat status lokal saat ini kami dapat menjalankan:
$ localectl status
System Locale: LANG=en_US.UTF-8
LC_NUMERIC=en_US.UTF-8
LC_TIME=en_US.UTF-8
LC_MONETARY=en_US.UTF-8
LC_PAPER=en_US.UTF-8
LC_MEASUREMENT=en_US.UTF-8
VC Keymap: us
X11 Layout: us
Pengaturan GNOME
$ gsettings get org.gnome.system.locale region
'en_US.UTF-8'
GNOME hanya memiliki satu pengaturan. Dengan memberikan sekilas kode sumber dari gnome-control-centre nampaknya ketika set_localed_locale()
fungsi dipanggil, ia menetapkan semua kategori berikut (LC_TIME, LC_NUMERIC, LC_MONETARY, LC_MEASUREMENT, LC_PAPER) ke tempat yang sama dengan yang didefinisikan dalam lokal org.gnome.system.locale region
.
Menggabungkan pengaturan lokal yang berbeda tampaknya tidak mungkin tanpa membuat lokal kustom, tapi untungnya itu bukan tugas yang sangat kompleks.
Membuat Lokasi Khusus
Saya pikir cara termudah untuk menjelaskan adalah dengan contoh. Dalam kasus khusus saya, saya ingin memiliki lokal kustom, terutama berdasarkan bahasa Ibrani ( he_IL ) tetapi dengan LC_NAME, LC_MESSAGES dari en_US dan LC_TIME (dengan dimodifikasi first_weekday
dan first_workday
) dari en_GB .
Meraih File Definisi Lokal
Anda harus memiliki ide lokasi mana yang ingin Anda gabungkan. Pertama kita perlu mencari file definisi terkait, yang dapat ditemukan di /usr/share/i18n/locales/
. Kembali ke contoh saya, saya membutuhkan berikut: he_IL , en_US dan en_GB . Saya mengatur folder yang berfungsi di rumah saya dan menyalin file yang diperlukan ke dalamnya:
$ cd /usr/share/i18n/locales
$ mkdir -v ~/custom-locale ; cp -v he_IL en_US en_GB ~/custom-locale/
Membuat File Definisi Baru
Saya memutuskan untuk menelepon lokal saya hc_IL dan mengambil he_IL sebagai dasar. Baris berikut membuat file baru hc_IL
dengan konten dari he_IL
dan dalam perjalanan mengganti semua kemunculan string he_IL di dalam file dengan hc_IL .
$ cd ~/custom-locale/
$ sed 's/he_IL/hc_IL/g' he_IL > hc_IL
Memodifikasi File Definisi Baru
Sekarang kita dapat menyesuaikan lokal baru dengan kebutuhan kita. Buka file yang baru dibuat ~/custom-locale/hc_IL
dengan editor teks favorit Anda. Saya menggunakan vim (memiliki highlight sintaksis yang tepat untuk file definisi lokal):
$ vim ~/custom-locale/hc_IL
Bagi mereka yang belum memilih editor favorit mereka dan vim bukan secangkir teh, dapat menggunakan gedit :)
$ gedit ~/custom-locale/hc_IL
Struktur file tidak terlalu rumit. Pada dasarnya, ini dibangun dari bagian. Dari lokal (5) halaman manual:
Definisi lokal memiliki satu bagian untuk setiap kategori lokal. Setiap bagian dapat disalin dari lokal lain yang sudah ada atau dapat ditentukan dari awal. Jika kategori harus disalin, satu-satunya kata kunci yang valid dalam definisi adalah salinan diikuti dengan nama lokal yang harus disalin.
Gagasan salinan sangat berguna. Menghemat waktu dan file yang dihasilkan jelas dan ringkas. Misalnya, alih-alih menyalin seluruh bagian di sekitar, Anda dapat memiliki:
LC_MESSAGES
copy "en_US"
END LC_MESSAGES
Dokumentasi lengkap pada file definisi lokal dapat diakses melalui:
$ man 5 locale
Meskipun, jika Anda hanya ingin membuat lokal kustom, yang merupakan campuran dari yang sudah ada, Anda tidak perlu memahami setiap detail.
Dalam kasus saya, saya mengubah kategori dan kata kunci berikut:
LC_IDENTIFICATION
title "Custom Hebrew locale"
source "mydomain.ws"
address "http:////www.mydomain.ws"
contact ""
email "admin@mydomain.ws"
tel ""
fax ""
language "Hebrew"
territory "Israel"
revision "1.0"
date "2015-04-21"
Catatan: Semua baris " kategori .. " di bagian LC_IDENTIFICATION telah dimodifikasi selama pembuatan file menggunakan sed
. Jadi kita tidak perlu menyentuhnya lagi.
LC_TIME
Saya menyalin bagian lengkap dari en_GB dan hanya memodifikasi baris yang menunjukkan hari pertama minggu dan hari kerja pertama:
first_weekday 1
first_workday 1
Kategori lainnya yang saya tinggalkan atau diganti isinya dengan arahan salin seperti pada:
LC_NAME
copy "en_US"
END LC_NAME
Itu saja, file definisi siap. Jangan lupa untuk menyimpan file :)
Kompilasi dan Salin Lokal Baru
Kompilasi lokal baru dilakukan dengan menggunakan perintah berikut sebagai root atau menggunakan sudo . Ganti hc_IL
dengan lokal Anda:
$ sudo localedef -c -v -i hc_IL -f UTF-8 hc_IL.UTF-8
Jika kompilasi berhasil, data lokal yang dikompilasi ditambahkan ke file arsip /usr/lib/locale/locale-archive
.
Salin file definisi lokal baru ke direktori definisi lokal. Ganti hc_IL
dengan lokal Anda:
$ sudo cp -v hc_IL /usr/share/i18n/locales/
Mengaktifkan Lokal Baru
Pada langkah ini kami ingin mengonfigurasi sistem dan GNOME untuk menggunakan lokal baru.
Pengaturan Seluruh Sistem
Edit /etc/locale.conf
file sebagai root dan atur setiap baris yang dimulai dengan LC_
ke lokal baru Anda. Sebagai contoh:
LANG=en_US.UTF-8
LC_NUMERIC=hc_IL.utf8
LC_TIME=hc_IL.utf8
LC_MONETARY=hc_IL.utf8
LC_PAPER=hc_IL.utf8
LC_MEASUREMENT=hc_IL.utf8
Pengaturan GNOME
Untuk mengaktifkan lokal baru di GNOME, jalankan perintah berikut. Ganti hc_IL
dengan lokal Anda:
$ gsettings set org.gnome.system.locale region "hc_IL.utf8"
Memvalidasi Pengaturan Baru
Langkah terakhir adalah memvalidasi bahwa semuanya berfungsi seperti yang diharapkan. Untuk memuat ulang semua pengaturan yang paling mudah bagi saya adalah reboot.
Catatan: Semuanya diuji pada Fedora 21 dengan GNOME 3.14. Distribusi Linux lain mungkin memerlukan langkah tambahan atau berbeda.
Berikan komentar jika Anda menemukan masalah dengan instruksi.