Giriş
- locale komutu yazısına bakabilirsiniz.
- LANG Ortam Değişkeni yazısına bakabilirsiniz.
Açıklaması şöyle. Genellikle bir script içinde kullanıcının diğer ayaları ile teker teker uğraşmadan her yerelleştirme ayarını hep birlikte bir değere geçirmek için kullanılır
Şöyle yaparız.
Localization değerlerini değiştirmek için bir sürü değişken var. Bunların önem sırası şöyle
Normalde LC_ALL değişkenine değer atanmaz, sadece LANG ve LC_X değişkenlerine değer atanır. Bence sadece script içinde kullanılmalıdır.
Sıralama - Sorting
Sıralama (sorting) en etkilinden başlayarak şu 3 değişkene göre yapılır.
Örnek - C Kullanımı
Açıklaması şöyle. Yani bu komut aslında string karşılaştırması yapar.
- locale komutu yazısına bakabilirsiniz.
- LANG Ortam Değişkeni yazısına bakabilirsiniz.
Açıklaması şöyle. Genellikle bir script içinde kullanıcının diğer ayaları ile teker teker uğraşmadan her yerelleştirme ayarını hep birlikte bir değere geçirmek için kullanılır
LC_ALL is the environment variable that overrides all the other localisation settingsÖrnek
Şöyle yaparız.
export LC_ALL=en_US.UTF-8
Locale İsimleri Nasıldır
Açıklaması şöyle
Locale names are typically of the form language[_territory][.codeset][@modifier]
Burada modifier kısmı biraz belirsiz. Açıklaması şöyle. Yani locale'i aynı tutup önemli bir değişikliği de dahil edebilmek için kullanılıyor
The @modifier setting specifies a variant. A minor addition in the encoding set. As an example :
European countries have long time relied on ISO definitions. Some French, for example (language fr, country FR) would have most probably set their codeset to ISO-8859-1 in the following way :fr_FR.ISO-8859-1
Then comes a new currency, the Euro and the the associated currency symbol could be made available via Alt Gr E while keeping the ISO-8859-15 encoding.fr_FR.ISO-8859-1@euro
Benzer bir açıklama şöyle
For example, in Germany, if you had your locale set to de_DE.UTF-8 in the early 2000s, a banking program that uses the locale information to determine the default currency would probably have chosen DM as the default, but if you change the locale to de_DE.UTF-8@euro, the default might have been €.
Localization Değişkenlerinin Öncelik Sırası
1. LANG_ALL - Her şeyi ezer
2. LC_XYZ değişkenleri - Eğer varsa bu değişkenler kullanılır
3. LANG - En düşük sıradaki değişken budur.
Örnek
Elimizde şöyle bir kod olsun. Burada LC_NUMERIC değişkeni LANG'dan önce gelir. Bu yüzden printf Almanca'da ayraç olarak virgül kullanıldığı için 3.14 değerini algılayamaz ve hata verir.$ export LC_NUMERIC="de_DE.UTF-8" $ export LANG=C $ printf "%.2f\n" 3.14 -bash: printf: 3.14: invalid number 3,00Ancak kodu şöyle değiştirelim. Bu durumda LC_ALL her şey ezecek ve yerelleştirmeyi C yapacaktır. Böylece printf çalışır.
$ export LC_NUMERIC="de_DE.UTF-8" $ export LC_ALL=C $ printf "%.2f\n" 3.14 3.14LC_ALL Ne Zaman Kullanılır
Normalde LC_ALL değişkenine değer atanmaz, sadece LANG ve LC_X değişkenlerine değer atanır. Bence sadece script içinde kullanılmalıdır.
Sıralama - Sorting
Sıralama (sorting) en etkilinden başlayarak şu 3 değişkene göre yapılır.
LC_ALL, LC_COLLATE ve LANG
LC_ALL normalde boş olduğu için LC_COLLATE değişkeni devreye girer.Örnek - C Kullanımı
Açıklaması şöyle. Yani bu komut aslında string karşılaştırması yapar.
Note that some uniq implementations like GNU uniq will give you the first of a sequence of lines that sort the same (where strcoll() returns 0) as opposed to are byte-to-byte identical (where memcmp() or strcmp() returns 0). To force a byte to byte comparison regardless of the uniq implementation, you can force the locale to C with:Byte karşılaştırması için şöyle yaparız.
LC_ALL=C uniq your-file
Hiç yorum yok:
Yorum Gönder