Merhaba,

* Nilgün Belma Bugüner [2005-06-17 15:55:13+0300]
> Şimdi sınamayı olması gerektiği gibi yapmışsınız.

Gorebildigim kadariyla Serdar sizin icin tekrar bir sinama falan
yapmadi, sadece bir onceki iletisinde sunmus oldugu sonuclara
tarafinizdan gelen (ve benim de dogrusu algilamakta gucluk cektigim)
asiri reaksiyonunuza mukabilen nazik bir dille sonuclari tekrar etti.

> Teşekkür ederim. Bu sınama benim savımı doğruluyor.

Nilgun hanim, saviniz "KDE altinda UTF-8 kullanilmasi" ise eger,
kimsenin bu "sav"la ilgili bir degerlendirme yaptigi yok, dolayisiyla
tesekkur edilecek birsey de yok.  Benim ve yazdiklarindan kolayca
anladigim sekilde Serdar'in derdi bu degil.  Sistem sizin sisteminizdir;
istediginiz dosyayi silin, degistirin, ne yaparsaniz yapin, bu bizi
ilgilendirmez.  Ama "bu ayarlar boyle yapilmalidir nokta" derseniz
yanlis buldugumuz taraflari da soylemek durumundayiz.

> KMail tr_TR.ISO-8859-9 yerelinde yanlış dönüşüm
> yaparken, tr_TR.UTF-8 yerelinde doğru dönüşüm
> yapıyor. Bu tamamen KDE'nin yerel ayarı ne olursa
> olsun, UTF-8 kodlama kullanmasından kaynaklanıyor.
> Uygulama yazarları da bu önkabule göre yazılımlarını
> geliştiriyor olmalılar ki, yerelimizi UTF-8
> kodlamayı kullanacak şekilde ayarladığımızda
> yanlış dönüşüm sorunlarıyla karşılaşmıyoruz.

Tekrar ediyorum, meselenin beni ilgilendiren tarafi KMail'in UTF-8
altinda canavar gibi calistigi degil.  Kmail ISO yerelinde bir hataya
sahip ve bu hata, belirtileri itibariyla onceki iletilerde yeterince
bahsettigim Turkce "I/ı" tuzagina dusmelerinden kaynaklaniyor.  UTF-8
yerelinde bu problemin neden olusmadigi konusunda gayet ihtiyatli bir
dille ifade ettigim tahminlerim var sadece, bu tahminlerin aman aman da
arkasinda olmadigimi her firsatta belirttim.

> Konu dağılmasın diye aşağıdaki iletiden alıntı
> yaparak kafa karışıklığınızı gidermeye çalışacağım.
> 
> Bu, yerelin UTF-8 kodlama kullanacak şekilde ayarlandığında
> KMail'in kodlama tercihleri listesi:
> 
> > Composer -> Karakter kumesi icerisinde;
> > 
> >     us-ascii
> >     iso-8859-1      <====================
> >     utf-8 (locale)
> >     utf-8
> 
> Dikkat edin yerel tr_TR, kodlama UTF-8 ve I/i dönüşümü *doğru*
> Eğer sizin savınız doğru olsaydı o satırın ıso-8859-1 olması
> gerekmez miydi?

Hayir orada donusum falan kullanilmamis, onceki soyledigim "built-in"
liste lafi dogru.  12 MB'lik kdepim kaynagini da indirttiniz ya bana :-)

    [EMAIL PROTECTED]:~/tmp/kdepim-3.3.2/kmail$ grep iso-8859-1 *
    configuredialog.cpp:  // KCharsets::codecForName("us-ascii") 
                          // returns "iso-8859-1" (cf. Bug #49812)
    kmkernel.cpp:      cfg->writeEntry("pref-charsets", 
"us-ascii,iso-8859-1,locale,utf-8");
    kmmsgbase.h:    Base64 ("=?iso-8859-1?b?...?=") and quoted-printable */

Bakin asagidaki kod da composer yapilandirmasini hazirlayan islevden alinma:

    void ComposerPage::CharsetTab::slotVerifyCharset( QString & charset ) {
    ...

        if ( charset.lower() == QString::fromLatin1("locale") ) {
          charset =  QString::fromLatin1("%1 (locale)")
            .arg( QCString( kmkernel->networkCodec()->mimeName() ).lower() );
          return;
        }

"%1 locale"deki %1 argumani sistem yereline ait karakter kodlamasindan
lower() ile kucuk harfe donusturulerek aliniyor.  Icinde "I" gecen
"ISO-8859-9" ile bu harfi icermeyen "UTF-8" arasindaki farka dikkat
cekerken boyle bir sey kastettim.  'networkCodec' kmail/kmkernel.cpp'de
bir yerlerde ayarlaniyor.  Surasi muhtemelen (KMKernel constructor'i):

    KMKernel::KMKernel (QObject *parent, const char *name) :
      DCOPObject("KMailIface"), QObject(parent, name),
      mIdentityManager(0), mConfigureDialog(0),
      mContextMenuShown( false )
    {
    ...
    if ( QCString(QTextCodec::codecForLocale()->name()).lower() == "eucjp" )
    {
    ...
    } else {
      netCodec = QTextCodec::codecForLocale();

Problem 'QCString( kmkernel->networkCodec()->mimeName() ).lower()'
satiri civarinda gozukuyor.  Tabii sunu bilmiyorum: Composer'in karakter
kumesini gosterirken kullandigi string ile MIME kodlama yaparken
kullandigi karakter kumesi ayni lower() kiskacindan mi geciyor?  Bunlari
ayrintili incelemek icin vaktim yok, Baris ve Uludag ekibindeki
arkadaslar bu problem uzerinde calistiklarindan buna yapmama gerek de
yok. :-)

> Özellikle ayırarak yazdım: yerel tr_TR, kodlama UTF-8.
> yerel ile kodlamayı aynı şey gibi düşünmek, UTF-8 
> kodlama kullanan yerellerin olmadığı zamanlardan (aslında
> yakın geçmiş) kalma yanlış bir varsayım. Biz pek ala
[...]

Bu tartisma boyunca boyle bir sey diyen olmadi.  Ama tr_TR dediginizde
bu bir yerel etiketidir ve ontanimli olarak ISO-8859-9 kodlamali _ISO_
yerelini tanimlar, bunu da gozden kacirmayin:

    grep tr_TR /etc/locale.alias
    turkish         tr_TR.ISO-8859-9
    
    grep ^tr_TR /usr/share/i18n/SUPPORTED
    tr_TR.UTF-8 UTF-8
    tr_TR ISO-8859-9

> /etc/environment dosyasındaki ayarlara sistemin
> ihtiyacı yok.  Hangi karakter kodlamasını kullanırsanız
[...]

Debian BTS'e hata bildirimi yapin o halde.

> /etc/environment dosyanızda yerel ayarları ile ilgili
> satırlardan başka bir şey yok. /etc/profile dosyası
> ise tüm kullanıcılar için öntanımlı yapılanmayı
> içerir. Kullanıcı bunları ~/.profile dosyasında

/etc/profile POSIX uyumlu kabuk programlarinin giris (login) tipinde
ilklendirmelerinde okunan baslangic dosyasidir.  Yani (1) O dosyanin
etkin olmasi icin (login) giris tipinde bir kabuk acmaniz gerekir, (2)
Ayarlanan ortam degiskenleri _sadece_ kabuk programi ve onun cocuk
prosesleri tarafindan taninir.  Bu kapsama girmeden yasam dongusune
baslayacak _cok sayida_ program, proses ornegi verilebilir.  Bir ekran
yoneticisi ile X Window'a girip herhangi bir X programi calistirin,
bakalim o 'profile'deki ayarlar etkin mi?

> değiştirebilir (bu işlemin ingilizcesi: overriding).
> /etc/environment PAM içindir diyorsunuz ama gdm'de
> gidip o dosyaya bakıyor ve yerel ayarınızın ne
> olduğuna bakmaksızın yereli orada yazdığınız gibi
> tr_TR yapıyor. Nerede kaldı sizin ~/.profile dosyasında
> yaptığınız seçim?

Hanimefendi kimsenin bizim urettigimiz ~/.profile dosyasina kalmisligi
yok.  'language-env' paketini kurmus ve betigi calistirmissaniz o betik
brute force bir yontem kullanarak kullanicinin sectigi dilde herhangi
bir problem yasamamasi icin gerekli ayarlari yapmaya _calisir_ (yapar
demiyoruz).  Bu bir _hack_dir.  language-env paketi benim paketim degil
(gelistiricisi bir Japon arkadas), Debian'da yerellestirme islerini
uhdesinde tutan muthis onemli bir paket de degildir.  Paketin varlik
nedenini anlatmak uzun surer, isin icinde Debian Policy'nin de oldugu
bir takim onemli hususlar var.  Tomohiro KUBOTA'nun yazdigi Rationale
olmali bir yerlerde, Google'da aratirsaniz cikar.

> Bu iki nedenle /etc/environment dosyasını *silin* diyorum.

cat /etc/hosts.deny:

# /etc/hosts.deny: list of hosts that are _not_ allowed to access the system.
#                  See the manual pages hosts_access(5), hosts_options(5)
#                  and /usr/doc/netbase/portmapper.txt.gz
#
# Example:    ALL: some.host.name, .some.domain
#             ALL EXCEPT in.fingerd: other.host.name, .other.domain
#
# If you're going to protect the portmapper use the name "portmap" for the
# daemon name. Remember that you can only use the keyword "ALL" and IP
# addresses (NOT host or domain names) for the portmapper. See portmap(8)
# and /usr/doc/portmap/portmapper.txt.gz for further information.
#
# The PARANOID wildcard matches any host whose name does not match its
# address. You may wish to enable this to ensure any programs that don't
# validate looked up hostnames still leave understandable logs. In past
# versions of Debian this has been the default.
# ALL: PARANOID

Butunuyle aciklamalardan ibaret bu dosyaya da ihtiyac yok, hadi silelim
onu da.

> İhtiyaç olmadığı gibi sorunlara yol açıyor. Savunduğunuz
> gibi masum bir dosya değil o. Yerel ayarı bir yerde
> tr_TR, başka bir yerde tr_TR.UTF-8 olmaz. Hepsi aynı
> olmalıdır.

Tamam iste hepsi ayni yerde olsun diye o dosya secilmis :-).  Butun
ilklendirmeler icin gecerli o tek dosya /etc/profile veya ~/.profile
_olamaz_ (bk. yukaridaki aciklama).  Mesele su, bir UN*X kullanicisinin
sistem mesaisi, kimligini dogruladiktan (authentication) sonra baslar.
Bu "yetkilendirme" islemi sistemde calisacak butun sureclerin yasam
dongusune girmeden onceki erken donem dogum asamasidir ve PAM tarafindan
idare edilir (bk. /etc/pam.d/login).  Demek ki ne oluyor, PAM'a sadece
yetkilendirme isi degil, gorev yaptigi surenin uygunlugu dikkate
alinarak yerel ayarlari gibi butun sureclerin ortak sekilde ihtiyac
duydugu bilgilerin ilklendirilmesi gorevi de veriliyor.  Bu secimi sIk
bulmazsiniz (ki ben boyle dusundugumu bir cok defa ifade ettim) ayri
konu, fakat Debian GNU/Linux'da sistem geneli yerel ayarlari boyle
yapiliyor, ulemanin bir zamanki ittifaki boyle olmus.

> Sistem belgelerini okumuşsanız /etc/environment dosyasının
> atıl olduğu bir yerlerde yazıyor. O kadar çok belge
> okuyorum ki, yerini şu an hatırlamıyorum.

/etc/environment'in tarihcesiyle ilgili birseyler yazmistim zamaninda:

    http://lists.debian.org/debian-l10n-turkish/2004/05/msg00024.html

> Bu, /etc/environment dosyasını silmemin 3. sebebi.

Yanlis gerekceler, ama kendi kararinizdir.  Fakat bunu tavsiye etmeyin
lutfen.

> Sonuç olarak, ayarlarınızı nasıl yaparsanız yapın,
> KDE kullanmak ve sorun yaşamak istemiyorsanız,
> yereliniz tr_TR.UTF-8 ya da en_US.UTF-8 olmak zorunda.

Bu tartismanin benim icin odagi UTF-8'in tercih edilme gerekliligi
degil, onu bir baska baslik altinda konusuruz.  UTF-8'in GNU/Linux'da
cok onemli ve siddetle ihtiyac duydugumuz bir gecis oldugunun
suurundayim, ama Red Hat'in yaptigi gibi oyle pata kute bir gecise de
karsiyim.  Ben cok basit olarak Kmail'de de var olan "I/i" hatasi
etrafinda laf ediyorum, ve bu, kullanilan kodlamadan _bagimsiz_ bir
hata.

Sevgilerimle,

-- 
roktas


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Cevap