2011-02-04 20 views
5

Bu biraz daha fazla bilgi ile oldukça fazla This question. Amacım sistemde yüklü olan dilleri çalışmaktır.Linux'ta belirli bir yerel ayar için dil adını nasıl alabilirim?

Aşağıdaki komut

locale -a 

görüntüler (örneğin en_AU.utf8 gibi bir formatta) tüm dilleri. Bu,/usr/lib/locale içeriğine karşılık geliyor gibi görünüyor.

LANG=fr_FR.utf8 locale -ck LC_IDENTIFICATION 

yürütmesini Dahası

, (bu durumda Fransız) dili adını içeren söz konusu yerel ayar bilgisini verir. Bu, /usr/lib/locale/fr_FR.utf8/LC_IDENTIFICATION adresinde yer alan bilgilerden biri gibi görünmektedir.

Bu bilgi edinmek için bir yöntem (belki de bir API çağrısı) var mı? Yerel yardımcı programın kaynağına baktım ama özel bir yapı kullanıyor.

+0

elle ortam değişkeni 'LANG' almak gerekmez -' setlocale (LC_ALL, ""); 'çevre ayarlarını temel yerel ayarlar. – caf

+0

Yasir'in çözümünü kabul etmeli ve kabul etmeli, soruya kopyalamamalısınız. Soru sadece bir soru olarak kalmalıdır. – tripleee

+1

@tripleee Teşekkürler. Düzeltilmiş soru ve cevap eklendi. – Dushara

cevap

0

Yasir'e teşekkürler. Bu tam olarak ne istediğini geçerli:

#include <langinfo.h> 

char *s; 
s = getenv("LANG"); 
if (s == NULL) 
    printf("LANG is not set"); 
else { 
    setlocale(LC_ALL, s); 
    printf(nl_langinfo(_NL_IDENTIFICATION_LANGUAGE)); 
} 
+0

Dil kodunu arayan herhangi birisi _NL_ADDRESS_LANG_AB kullanılarak alınabilir. Ve ülke kodu _NL_ADDRESS_COUNTRY_AB2 kullanılarak alınabilir. –

1

Sanırım ortam değişkenlerini, örneğin getenv(3) kullanarak elde edebilirsiniz, bu yüzden ona değişken adını vermek isteyebilirsiniz, e. g:

char *s; 
s = getenv("LANG"); 
if (s == NULL) 
    printf("LANG is not set"); 
else 
    printf(s); 
+0

Sorun değil, ancak LANG'nin içeriğinin neyi temsil ettiğini bilmek istiyorum. Örneğin, eğer LANG = fr_FR.utf, Temsil edilen dilin "Fransızca" olduğunu nasıl anlarım? – Dushara

+2

Sadece yerel ayarın adında 'fr_FR 'değeri olup olmadığını test edebileceğinizi düşünüyorum; Sonuçta, bunun Fransızca için kısayol olduğunu biliyorsunuz. Yararlı olabilecek diğer işlev ise ['nl_langinfo (3)'] 'dir (http://linux.die.net/man/3/nl_langinfo). –

+0

Hmm nl_langinfo umut verici görünüyor. Buna bir bakacağım. – Dushara

İlgili konular