Bir sistem yerel ayarını nasıl özelleştirebilirim?

17

Sistem Yönetim Dil desteği Metin. Sadece standart yerel ayarları seçebilirim, ama ince ayar yapmak isterim. Örneğin, Windows'da zaman ve tarih formatı, ölçü birimleri, ondalık ayırıcı, para birimi vb. Gibi şeyleri kişiselleştirebilirim - bunu Ubuntu'da nasıl yapabilirim?

    
sordu Ivan 13.01.2011 06:34

2 cevap

21

Bu cevap, isteğe bağlı olarak mevcut bir yerel ayarı temel olarak kullanarak bir yerel ayarın tamamen nasıl özelleştirileceğini gösterecektir. Bu cevapta kullanılacak olan yerel ayar türü i18n tipidir; cevabın gövdesinde "locale" kelimesinin her sayısında böyle bir türden yerel işaret belirtilecektir.

Rehber bul

Bir yerel ayarı özelleştirmek için ihtiyacınız olan ilk şey, yerel ayarın biçimini öğrenmektir. Bu web locale editörü , yalnızca bir kullanıcı tarafından kullanılabilir olmamasına rağmen, bir yerdeki her alanın kapsamlı bir tanımına sahiptir. - uzak bir yol. Bu kullanım kılavuzu olacak.

Gerekli araçlar

Yerel olarak çalışmak için ihtiyacınız olan tek araçlar

  1. Bir metin düzenleyici. VIM mükemmel olsa da, her şey yapacak.
  2. Bir metinden unicode dönüştürücü. En çok beklediğiniz bir tane yoktu, bu yüzden size basit bir tane vereceğim. Bunu elde etmek için sonraki alt bölümü okuyun.

Bir dizin oluşturmanızı ve yerel ayarlarda yapacağınız iş ile ilgili her şeyi kaydetmenizi öneririm.

Metinden unicode dönüştürücüye (encodestr)

NOT: ortak olmayan karakterler kullanıyorsanız, aşağıda yazdığım komut dosyası ile ilgili sorunlarınız olabilir; nass ile bağlantılı alternatif komutlara göz atmak isteyebilirsiniz.

Aşağıdaki kodu bir dosyaya kaydedin. Bu dosya sisteminiz tarafından bir python betiği olarak tanımlanacaktır; Bu kılavuz, encodestr komut dosyasını çağırdığınızı varsayar.

#!/usr/bin/python

def encode(string):
    newstring = str()
    for ch in string:
        newstring += "<U%04X>" % ord(ch)
    return newstring

if __name__ == '__main__':
    import sys
    print encode(sys.argv[1])

Kaydettikten sonra, dosya yürütme iznini verin - bu kullanışlı olacaktır. Bunu, nautilus'u kullanarak veya komut dosyasını kaydettiğiniz dizinde bir terminalden aşağıdaki komutu çalıştırarak yapabilirsiniz: chmod +x encodestr .

Artık bu komut dosyasını aynı dizinde çalıştırarak test edebilirsiniz: ./encodestr hello . % Co_de% 'ye eşit bir çıktı almalısınız.

Mevcut bir yerel ayarı değiştir

Mevcut bir yerel ayarı değiştirmek en kolay durumdur, ideal olarak ihtiyaçlarınızı neredeyse tamamen karşılayacak bir yer seçecektir, bu durumda yalnızca küçük değişiklikler yapmanız gerekir. Bunu uyarlamak için, hangi bölümlerin değiştirmek istediğinizi ve bunları nasıl değiştirebileceğinizi öğrenmek için kılavuzu kullanabilirsiniz. Yüklenen tüm yerel konumlar <U0068><U0065><U006C><U006C><U006F> dizinindedir, ancak kılavuz , oluşturulan her yerel ayarı içerir.

Ancak, bir yer açtığınızda dikkat edeceğiniz ilk şey, ingilizce kelimeleri tuhaf /usr/share/i18n/locales kodları kadar okuyacağınızdır. Bu kodları oluşturabilmeniz gerekir. Bu, <UXXXX> komut dosyasının geldiği yerdir.

Hangi bölümleri değiştirmeniz gerektiğini bildiğinizde, bölümdeki her alanı bilmeniz gerekir.

  

Örneğin, encodestr bölümü LC_TIME alanını ve daha fazlasını içerir. Her alanın kılavuzda kendi açıklaması vardır.

Artık hangi alanların değiştirileceğini biliyorsunuz, alanın hangi değerlerin kabul edildiğini öğrenmek için rehberi kullanın. .

  

Örneğin, t_fmt alanı metni ve ortak strfmt değişkenlerini kabul eder.

Değiştirmek istediğiniz alanlarda ne yazacağınızı bildiğinizde, kodlanan eşdeğerini almak için metni t_fmt komut dizisinden çalıştırın.

NOT: Her alanın kodlanması gerekmez, gerekiyorsa referans olarak mevcut bir yerel ayarı kullanın.

  

Örneğin, encodestr alanında Time: %T biçimine sahip olmak istiyorsanız, t_fmt dosyasını çalıştırın; Bu, ./encodestr "Time: %T" değerini döndürecek ve böylece, yerel ayarda <U0054><U0069><U006D><U0065><U003A><U0020><U0025><U0054> satırına sahip olacaksınız (tabii ki ilgili bölümde).

İstediğiniz her alanı değiştirdikten sonra, yerel ayarı sisteme yüklemeniz gerekecek, dolayısıyla kullanılabilir. Bunun için yükleme bölümüne geçin.

Sıfırdan bir yer oluşturma

Bir tanesini değiştirmenin aksine, özel yerel ayarınızı oluşturmak için kullanabileceğiniz diğer yöntem, üzerinde sıfırdan çalışıyor. Kılavuzu kullanıyorsanız, bu çok zor değildir. Ancak, yararlı bir ipucu: gerçek kopyala ve yapıştır yöntemlerini kullanmadan diğer yerel bölgelerden bölümleri kopyalayabilirsiniz. Bu formatı takip etmeniz yeterli:

LC_SECTION
copy "locale"
END LC_SECTION

t_fmt <U0054><U0069><U006D><U0065><U003A><U0020><U0025><U0054> , değiştirmek istediğiniz bölüm ve LC_SECTION bu bölümü kopyalamak istediğiniz konumdur.

  

Örneğin, saat dilimini İngilizce yerel ayarına kopyalamak isterseniz, bu metin özel yerel ayar dosyanız olur:

LC_TIME
copy "en_GB"
END LC_TIME
  

Ve bu size çok fazla iş gücü kazandırıyor ve referans alınan yerel ayarda yapılan değişikliklerin sizinkilere yansıtılacağını garanti ediyor.

Özel yerel ayarınızı yükleme

Aşağıda göstereceğim adımlar optimal olmayabilir, ancak işe yarar.

  1. Yerel ayarlarınızı derleyin. Panik yapma! Bu zaman almaz. Sadece locale komutunu çalıştırın, burada sudo localedef -i custom -f UTF-8 custom.UTF-8 -c -v yerel ayarınızın adıdır.

  2. Yerel ayarınızı custom dizinine kopyalayın. Bunu yapmak için kesinlikle sudo ayrıcalıklarına ihtiyacınız olacak ve bunu /usr/share/i18n/locales/ komutunun sudo cp locale /usr/share/i18n/locales/ özel yerel ayarınızın dosya adı olduğu

    komutu ile yapabilirsiniz.

  3. Yerel ayarınızı locale olarak belirtin. Örneğin, /var/lib/locales/supported.d/ bir dosya adı oluşturun ve /var/lib/locales/supported.d/asd satırını ekleyin; burada özel, yerel ayarınızın adıdır.

  4. Sihirli komutu çalıştırın. Aslında bu komutun tam olarak ne yaptığını bilmiyorum ama bu çok önemli. % Co_de% dosyasını çalıştırın. En olası, gerektiğinde mevcut yerlere referanslar oluşturur.

  5. Sisteminize yerel ayarı kullanmasını söyleyin. Yerel ayarın sistem çapında kullanılmasını istiyorsanız, custom UTF-8 dosyasını değiştirin. Değilse, sudo locale-gen dosyanızı veya başlangıçta kaynaklı olan herhangi bir dosyayı değiştirebilirsiniz. İkincisinin ne anlama geldiğini bilmiyorsanız, sadece /etc/environment dosyasını kullanın. Ne yazacağınızı bilmek için önce ~/.profile komutunu çalıştırın. % Co_de%, ~/.profile , locale ve diğerleri gibi öğeler içeren bir liste yayınlamalıdır. İstediğiniz bölümlerin her biri için (önceki komut tarafından listelenen) ayrı satırlarda yazacaksınız, bu LANGUAGE , LC_MESSAGES ise bölüm ve LC_CTYPE özel yerel ayarınızın adı.

  

Örneğin, saat biçimini Hollanda'dan, ancak ingilizce dilinden kullanmak isterseniz, şunu yazın:

LANGUAGE="en_GB:en"
LC_TIME="nl_NL"

NOT: Her yerel ayar için bir yerel ayar kullanmak isterseniz, SECTION="locale" değerini, SECTION özel yerel ayarınızın adı olarak yazın. Dil için her şey için bir yer kullanmak istiyorsanız, locale ve (başka bir satırda, elbette) LC_ALL="locale" yazabilirsiniz. Burada locale istediğiniz dil için 2 harf kodudur.

  

Örneğin, Hollanda yerel ayarını ve İngilizce dilini kullanmak isterseniz, şunları kullanabilirsiniz:

LANG="nl_NL"
LANGUAGE="nl_NL:en"

Bitirdin

Bir sonraki girişinizde, yerel ayarınız kullanımda olmalıdır. Bunu LANG="locale" komutunu tekrar çalıştırarak test edebilirsiniz.

Lütfen bu kılavuzdaki tutarsızlıklar veya yanlış ifadeler hakkında yorum yapın!

    
verilen cevap Severo Raz 12.07.2012 09:49
7

Ne tür bir özelleştirme istediğinizden emin değilsiniz, ancak ~/.locale 'nizi kullanarak bazı yerel değişkenleri ayarlayabilirsiniz. Örneğin, ingilizce mesajları almak için ama almanca zamanı ve kullandığım beğenileri almak için

export LC_ALL=""
export LANG="en_GB.utf8"
export LC_CTYPE="de_DE.utf8"
export LC_NUMERIC="de_DE.utf8"
export LC_TIME="de_DE.utf8"
export LC_COLLATE="de_DE.utf8"
export LC_MONETARY="de_DE.utf8"
export LC_MESSAGES="en_GB.utf8"
export LC_PAPER="de_DE.utf8"
export LC_NAME="en_GB.utf8"
export LC_ADDRESS="de_DE.utf8"
export LC_TELEPHONE="de_DE.utf8"
export LC_MEASUREMENT="de_DE.utf8"
export LC_IDENTIFICATION="de_DE.utf8"

Özel bölgeler oluşturmak da mümkündür. Bakınız örn. Tarihleri ​​için bu kılavuz .

    
verilen cevap Carsten Thiel 13.01.2011 10:00

Etiketlerdeki diğer soruları oku