Yerel Verisine Noktasal Erişim
Önceki Yerel Bilgisine Erişim Sonraki
Yerel Verisine Noktasal Erişim
X/Open Taşınabilirlik Kılavuzu yazılırken yazarlar yerele özgü bilgilere erişmek anlamında localeconv işlevinin yetersizliğinde anlaştılar. Yerelde kullanılabilir bilgilere (daha sonra POSIX.1 standardında belirtildiği gibi) daha çok yoldan erişmek gerekir. nl_langinfo işlevi bunun için tasarlanmıştır.
char *nl_langinfo
(nl_item öğe)
işlev
nl_langinfo işlevi yerel kategorilerindeki her elemana tek tek erişmek için kullanılabilir. Tüm bilgiyi döndüren localeconv işlevinin tersine, nl_langinfo işlevi çağrıcının istediği bilgiyi belirtebilmesini sağlar. Bu çok hızlı yapıldığından işlevin defalarca çağrılması bir soruna yol açmaz.
İkinci bir getirisi de sayısal ve parasal gösterim bilgilerine ek olarak LC_TIME ve LC_MESSAGES kategorileriyle ilgili bilgilerin de istenebilmesidir.
nl_type türü nl_types.h dosyasında tanımlanmıştır. öğe argümanı langinfo.h dosyasında tanımlı sayısal değerlerden biri olmalıdır. X/Open standardı şu değerleri tanımlar:
CODESET
nl_langinfo seçili yerelin karakter kodlaması için kullanılan karakter kümesinin ismini içeren bir dizge ile döner.
ABDAY_1
ABDAY_2
ABDAY_3
ABDAY_4
ABDAY_5
ABDAY_6
ABDAY_7
nl_langinfo kısaltılmış gün ismi ile döner. ABDAY_1 Pazar gününe karşılıktır.
DAY_1
DAY_2
DAY_3
DAY_4
DAY_5
DAY_6
DAY_7
ABDAY_1 ve benzerleri gibidir, farklı olarak kısaltılmamış gün ismi ile döner.
ABMON_1
ABMON_2
ABMON_3
ABMON_4
ABMON_5
ABMON_6
ABMON_7
ABMON_8
ABMON_9
ABMON_10
ABMON_11
ABMON_12
İşlev kısaltılmış ay ismi ile döner. ABMON_1 Ocak ayına karşılıktır.
MON_1
MON_2
MON_3
MON_4
MON_5
MON_6
MON_7
MON_8
MON_9
MON_10
MON_11
MON_12
ABMON_1 ve benzerleri gibidir, farklı olarak kısaltılmamış ay ismi ile döner.
AM_STR
PM_STR
İşlev, 12 saatlik zaman gösteriminde kullanılan (sırayla) öğleden önce ve öğleden sonra kısaltmaları (öö/ös) olarak belirtilmiş dizge ile döner.
12 saatlik zaman gösterimi kullanılmayan yerellerde bu dizgeler boş olabilir, bu takdirde 12 saatlik gösterim seçilse bile bu kısaltmalar gösterilmeyecektir.
D_T_FMT
Yerele özgü tarih ve zaman gösterimi olarak strftime işlevinde kullanılabilecek biçim dizgesi ile döner.
D_FMT
Yerele özgü tarih gösterimi olarak strftime işlevinde kullanılabilecek biçim dizgesi ile döner.
T_FMT
Yerele özgü zaman gösterimi olarak strftime işlevinde kullanılabilecek biçim dizgesi ile döner.
T_FMT_AMPM
Yerele özgü öö/ös gösterimi olarak strftime işlevinde kullanılabilecek biçim dizgesi ile döner.
öö/ös biçimi seçilmiş yerelde belirlenmemişse dönen değer T_FMT için dönen değer ile aynı olabilir.
ERA
İşlev seçili yerelde kullanılan çağ ile döner.
Çoğu yerelde bu değer atanmamıştır. Bu değerin atandığı yarellerden biri olarak japonca gösterilebilir. Japonya'da geleneksel tarih gösterimleri imparatorun saltanat dönemine karşı düşen çağ ismini de içerir.
Normalde bu değeri doğrudan kullanmak gerekmez. strftime işlevinin biçim dizgesinde E değiştiricisini belirterek bu bilginin kullanılması sağlanabilir. Dönen dizgenin biçimi belirlenmemiştir, bu bakımdan başka sistemlerde aynı dizgenin elde edileceği varsayımında bulunmayın.
ERA_YEAR
Yerelde belirtilen çağa göre belirtilen yol döner. ERA gibi bu değeri de doğrudan kullanmak gerekmez.
ERA_D_T_FMT
Yerele özgü çağa göre tarih ve zaman gösterimi olarak strftime işlevinde kullanılabilecek biçim dizgesi ile döner.
ERA_D_FMT
Yerele özgü çağa göre tarih gösterimi olarak strftime işlevinde kullanılabilecek biçim dizgesi ile döner.
ERA_T_FMT
Yerele özgü çağa göre zaman gösterimi olarak strftime işlevinde kullanılabilecek biçim dizgesi ile döner.
ALT_DIGITS
0-99 arasındaki sayıların gösterimi için kullanılan 100 değerle döner. Bu değer de ERA gibi doğrudan kullanmak için tasarlanmamıştır. strftime işlevinde O değiştiricisi belirtilerek kullanılır. Bu takdirde biçim dizgesindeki saat, dakika, saniye, ayın günü, aylar ve haftalar gibi sayısal değerler buna göre gösterilir.
INT_CURR_SYMBOL
localeconv işlevi ile dönen struct lconv yapısının int_curr_symbol elemanındaki değer ile döner.
CURRENCY_SYMBOL
CRNCYSTR
localeconv işlevi ile dönen struct lconv yapısının currency_symbol elemanındaki değer ile döner.
CRNCYSTR, Unix98 tarafından hala ihtiyaç duyulan artık kullanılmayan bir takma addır.
MON_DECIMAL_POINT
localeconv işlevi ile dönen struct lconv yapısının mon_decimal_point elemanındaki değer ile döner.
MON_THOUSANDS_SEP
localeconv işlevi ile dönen struct lconv yapısının mon_thousands_sep elemanındaki değer ile döner.
MON_GROUPING
localeconv işlevi ile dönen struct lconv yapısının mon_grouping elemanındaki değer ile döner.
POSITIVE_SIGN
localeconv işlevi ile dönen struct lconv yapısının positive_sign elemanındaki değer ile döner.
NEGATIVE_SIGN
localeconv işlevi ile dönen struct lconv yapısının negative_sign elemanındaki değer ile döner.
INT_FRAC_DIGITS
localeconv işlevi ile dönen struct lconv yapısının int_frac_digits elemanındaki değer ile döner.
FRAC_DIGITS
localeconv işlevi ile dönen struct lconv yapısının frac_digits elemanındaki değer ile döner.
P_CS_PRECEDES
localeconv işlevi ile dönen struct lconv yapısının p_cs_precedes elemanındaki değer ile döner.
P_SEP_BY_SPACE
localeconv işlevi ile dönen struct lconv yapısının p_sep_by_space elemanındaki değer ile döner.
N_CS_PRECEDES
localeconv işlevi ile dönen struct lconv yapısının n_cs_precedes elemanındaki değer ile döner.
N_SEP_BY_SPACE
localeconv işlevi ile dönen struct lconv yapısının n_sep_by_space elemanındaki değer ile döner.
P_SIGN_POSN
localeconv işlevi ile dönen struct lconv yapısının p_sign_posn elemanındaki değer ile döner.
N_SIGN_POSN
localeconv işlevi ile dönen struct lconv yapısının n_sign_posn elemanındaki değer ile döner.
INT_P_CS_PRECEDES
localeconv işlevi ile dönen struct lconv yapısının int_p_cs_precedes elemanındaki değer ile döner.
INT_P_SEP_BY_SPACE
localeconv işlevi ile dönen struct lconv yapısının int_p_sep_by_space elemanındaki değer ile döner.
INT_N_CS_PRECEDES
localeconv işlevi ile dönen struct lconv yapısının int_n_cs_precedes elemanındaki değer ile döner.
INT_N_SEP_BY_SPACE
localeconv işlevi ile dönen struct lconv yapısının int_n_sep_by_space elemanındaki değer ile döner.
INT_P_SIGN_POSN
localeconv işlevi ile dönen struct lconv yapısının int_p_sign_posn elemanındaki değer ile döner.
INT_N_SIGN_POSN
localeconv işlevi ile dönen struct lconv yapısının int_n_sign_posn elemanındaki değer ile döner.
DECIMAL_POINT
RADIXCHAR
localeconv işlevi ile dönen struct lconv yapısının decimal_point elemanındaki değer ile döner.
RADIXCHAR Unix98 tarafından hala ihtiyaç duyulan artık kullanılmayan bir takma addır.
THOUSANDS_SEP
THOUSEP
localeconv işlevi ile dönen struct lconv yapısının thousands_sep elemanındaki değer ile döner.
THOUSEP Unix98 tarafından hala ihtiyaç duyulan artık kullanılmayan bir takma addır.
GROUPING
localeconv işlevi ile dönen struct lconv yapısının grouping elemanındaki değer ile döner.
YESEXPR
Dönen değer, evet/hayır sorusuna olumlu yanıt olarak regex işlevinde kullanılabilen bir düzenli ifadedir. GNU C kütüphanesi uygulamalarda bunu daha da kolaylaştıran rpmatch işlevini içerir.
NOEXPR
Dönen değer, evet/hayır sorusuna olumsuz yanıt olarak regex işlevinde kullanılabilen bir düzenli ifadedir.
YESSTR
Evet/hayır sorusuna olumlu yanıt olarak yerel özgü dizge ile döner.
İleti çevirilerinde çok özel bir durum olduğundan bu değer artık kullanılmamaktadır. İleti çeviri işlevleri ile elde edilmesi daha iyidir (bkz. İleti Çevirileri).
Bu sembol artık kullanılmamaktadır. Onun yerine ileti çevirileri kullanılmalıdır.
NOSTR
Evet/hayır sorusuna olumsuz yanıt olarak yerel özgü dizge ile döner. YESSTR için bahsedilen herşey bunun için de geçerlidir.
Bu sembol artık kullanılmamaktadır. Onun yerine ileti çevirileri kullanılmalıdır.
langinfo.h dosyası bunlardan başka semboller de içerir ama bunların pek kullanım alanı yoktur. Onların kullanılması taşınabilirliği ortadan kaldırır. Bu nedenle kullanılmaları tavsiye edilmez.
Her geçerli argüman için dönen değer tüm durumlarda kullanılabilir (öö/ös biçim kodlarının olası olağandışılığı dahil). Eğer kullanıcı ilgili kategori için bir yerel seçimi yapmamışsa nl_langinfo işlevi "C" yerelindeki bilgi ile döner. Bundan dolayı işlevi aşağıdaki örnekte gösterildiği gibi kullanmak mümkündür.
öğe argümanı geçersizse, boş dizge içeren bir gösterici döner.
Bir nl_langinfo kullanım örneği olarak bir işlev tarih ve zamanı yerele özgü biçimde basmak için kullanılmıştır. Burada, dikkat ederseniz, strftime işlevi yerel bilgisini zaten dahili olarak kullandığından biçim dizgesinde yeteri kadar değiştirici kullanılmıştır.
size_t
i18n_time_n_data (char *s, size_t len, const struct tm *tp)
{
  return strftime (s, len, "%X %D", tp);
}
Biçim ne haftanın günü ne de ay ismi içerir, bu nedenle uluslararası olarak kullanılabilir. Yanlış! Çıktı "hh:mm:ss AA/GG/YY" biçiminde üretilir. Bu biçim sadece ABD'de geçerlidir. Diğer ülkeler farklı biçim kullanır. Bu nedenle işlev şöyle yazılmalıydı:
size_t
i18n_time_n_data (char *s, size_t len, const struct tm *tp)
{
  return strftime (s, len, nl_langinfo (D_T_FMT), tp);
}
Artık yazılım çalıştırıldığında seçili yerelin tarih ve zaman biçimi kullanılacaktır. Kullanıcı doğru yereli seçmişse tarih ve zaman ile ilgili yanlış anlamalar olmayacakır.
Önceki Üst Ana Başlık Sonraki
localeconv: Taşınabilirdir ama … Başlangıç Sayıların Biçimlenmesi
Bir Linux Kitaplığı Sayfası