Arkaplan bilgisi
Çözümü Fedora 21 üzerinde GNOME Shell 3.14.4 ile test ettim, ancak bunun diğer sürümlere de uygulanabileceğine inanıyorum.
Anlaşılması gereken ilk şey, GNOME masaüstü ortamının sistem genelindeki yerel ayar tanımlarını geçersiz kılması ve bundan etkilenmemesi /etc/locale.conf
. Ayrıca, kendi yerel yapılandırmasına sahip olan ve sistem veya GNOME ayarlarını kullanmayan uygulamalar da olabilir. Bu kılavuzda, yerel ayarları ihtiyaçlarınıza ve GNOME'a göre özelleştirmenin bir yolunu anlatacağım ve sistem yerel ayar perspektifinden tutarlı olacaktır.
Mevcut Yerel Durum Durumunu Kontrol Etme
Sistem Genelinde Ayarlar
Gönderen Fedora 21 Sistem Yöneticisi Kılavuzu :
Sistem çapında yerel ayarlar, sistem önleme programı /etc/locale.conf
tarafından erken önyüklemede okunan dosyada saklanır . Tek tek programlar veya tek tek kullanıcılar bunları geçersiz kılmadığı sürece, yapılandırılan yerel ayarlar her hizmet veya kullanıcı tarafından devralınır./etc/locale.conf
Geçerli yerel ayar durumunu görmek için şunu çalıştırabiliriz:
$ 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
GNOME Ayarları
$ gsettings get org.gnome.system.locale region
'en_US.UTF-8'
GNOME'un yalnızca bir ayarı vardır. Gnome-control-set_localed_locale()
center'ın kaynak koduna hızlı bir şekilde bakıldığında , işlev çağrıldığında, aşağıdaki tüm kategorileri (LC_TIME, LC_NUMERIC, LC_MONETARY, LC_MEASUREMENT, LC_PAPER), tanımlanmış olan aynı yerel ayara ayarlar gibi görünüyor org.gnome.system.locale region
.
Özel bir yerel ayar oluşturmadan farklı yerel ayarların karıştırılması imkansız görünüyor, ancak neyse ki çok karmaşık bir görev değil.
Özel Yerel Ayar Oluşturma
Bence açıklamanın en kolay yolu örnek. Benim özel durumda ben öncelikle İbranice (dayalı bir özel yerel ayarı, olmasını istedik he_IL ) ama LC_NAME ile gelen LC_MESSAGES en_US ve LC_TIME (ile değiştirilmiş first_weekday
ve first_workday
itibaren) en_GB .
Yerel Ayar Tanımlama Dosyalarını Yakalama
Hangi bölgeleri karıştırmak istediğinize dair bir fikriniz olmalıdır. İlk olarak, içinde bulunabilecek ilgili tanım dosyalarını bulmamız gerekiyor /usr/share/i18n/locales/
. Örneğime geri dönersek , aşağıdakilere ihtiyacım vardı: he_IL , en_US ve en_GB . Evimde bir çalışma klasörü ayarladım ve gerekli dosyaları buraya kopyaladım:
$ cd /usr/share/i18n/locales
$ mkdir -v ~/custom-locale ; cp -v he_IL en_US en_GB ~/custom-locale/
Yeni Bir Tanım Dosyası Oluşturma
Yerel ayarımı hc_IL olarak adlandırmaya karar verdim ve he_IL'i temel aldım . Aşağıdaki satırlar, yeni bir dosya oluşturmak hc_IL
gelen içeriği ile he_IL
bir dize yinelenme tamamının yerini ve yolda he_IL ile dosya içindeki hc_IL .
$ cd ~/custom-locale/
$ sed 's/he_IL/hc_IL/g' he_IL > hc_IL
Yeni Tanım Dosyasını Değiştirme
Şimdi yeni yerel ayarları ihtiyaçlarınıza göre özelleştirebiliriz. Yeni oluşturulan dosyayı ~/custom-locale/hc_IL
favori metin düzenleyicinizle açın. Ben vim kullanın (yerel tanımı dosyaları için uygun sözdizimi vurgulama vardır):
$ vim ~/custom-locale/hc_IL
Henüz favori editörünü seçmemiş olanlar ve vim çayları değil, gedit kullanabilir :)
$ gedit ~/custom-locale/hc_IL
Dosya yapısı çok karmaşık değil. Esasen, bölümlerden inşa edilmiştir. Gönderen yerel (5) man sayfaları:
Yerel ayar tanımının her yerel ayar kategorisi için bir bölümü vardır. Her bölüm mevcut başka bir yerel ayardan kopyalanabilir veya sıfırdan tanımlanabilir. Kategori kopyalanması gerekiyorsa, tanımında tek geçerli anahtar kelimedir kopya kopyalanması gerekir yerel isminin takip eder.
Kopyalama kavramı çok faydalıdır. Zaman kazandırır ve ortaya çıkan dosya net ve özlüdür. Örneğin, bölümlerin tamamını kopyalamak yerine aşağıdakilere sahip olabilirsiniz:
LC_MESSAGES
copy "en_US"
END LC_MESSAGES
Yerel ayar tanımı dosyasındaki belgelerin tamamına şu yollardan erişilebilir:
$ man 5 locale
Her ne kadar, sadece mevcut olanların bir karışımı olan özel bir yerel ayar oluşturmak istiyorsanız, her ayrıntıyı anlamaya gerek yoktur.
Benim durumumda aşağıdaki kategorileri ve anahtar kelimeleri değiştirdim:
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"
Not: LC_IDENTIFICATION bölümündeki tüm " category .. " satırları , dosya oluşturma sırasında kullanılarak değiştirildi . Artık onlara dokunmaya gerek yok.sed
LC_TIME
Tüm bölümü en_GB'den kopyaladım ve yalnızca haftanın ilk gününü ve ilk iş gününü gösteren satırları değiştirdim:
first_weekday 1
first_workday 1
Kalan kategorileri oldukları gibi bıraktım veya içeriklerini aşağıdaki gibi kopyalama yönergesiyle değiştirdim :
LC_NAME
copy "en_US"
END LC_NAME
İşte bu, tanım dosyası hazır. Dosyayı kaydetmeyi unutmayın :)
Yeni Yerel Ayarı Derleme ve Kopyalama
Yeni yerel ayarın derlenmesi, root olarak aşağıdaki komut kullanılarak veya sudo kullanılarak yapılır . hc_IL
Yerel ayarınızla değiştirin :
$ sudo localedef -c -v -i hc_IL -f UTF-8 hc_IL.UTF-8
Derleme başarılı olursa, derlenen yerel veri arşiv dosyasına eklenir /usr/lib/locale/locale-archive
.
Yeni yerel ayar tanımı dosyasını yerel ayar tanımları dizinine kopyalayın. hc_IL
Yerel ayarınızla değiştirin :
$ sudo cp -v hc_IL /usr/share/i18n/locales/
Yeni Yerel Ayarı Etkinleştirme
Bu adımda sistemi ve GNOME'u yeni yerel ayarı kullanacak şekilde yapılandırmak istiyoruz.
Sistem Genelinde Ayarlar
Düzen /etc/locale.conf
gibi dosya kökü ve set her satır bununla başlar LC_
yeni yerele. Örneğin:
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
GNOME Ayarları
GNOME'da yeni yerel ayarı etkinleştirmek için aşağıdaki komutu çalıştırın. hc_IL
Yerel ayarınızla değiştirin :
$ gsettings set org.gnome.system.locale region "hc_IL.utf8"
Yeni Ayarları Doğrulama
Son adım, her şeyin beklendiği gibi çalıştığını doğrulamaktır. Tüm ayarları yeniden yüklemek benim için en kolay olanı yeniden başlatmaktı.
Not: Her şey GNOME 3.14 ile Fedora 21'de test edildi. Diğer Linux dağıtımları ek veya farklı adımlar gerektirebilir.
Talimatlarla ilgili herhangi bir sorun bulursanız lütfen yorum yapın.