# PHP Belgeleri NASIL çevrilir? Çeviriye katkıda bulunmanız 2 şekilde mümkündür: * PR yapabilirsiniz, * Çevirilerinizi ekip liderine gönderirsiniz. Hangi yöntemi kulanırsanız kullanın, çevirmenlerimizin birçok dilde ama mutlaka PHP ile kodlama yapabildiğini, komut satırından git kullanabildiğini, GitHub kullanabildiğini, HTML ve XML belgeler üretmekte ve düzenlemekte zorluk çekmeyeceğini, iyi ingilizce ve türkçe bildiğini varsayıyoruz. Aşağıdaki bilgiler Linux kullananlara göre düzenlenmiştir. Bir GitHub hesabınız olması önerilir. Örnek: https://github.com/nilgun PR yapacaksanız GitHub hesabınızda oturum açtıktan sonra https://github.com/php/doc-tr adresine gidip bu depoya bir "fork" açın. Böylece GitHub hesap sayfanızda yeni bir deponuz olacak. Bilgisayarınızda önce çalışma dizininizi oluşturun: `phpdoc` Dizine geçin ve şu komutları girin: GitHub PR'ları yapacaklar için komutlar: ```bash $ git clone git@github.com:/doc-tr.git tr $ git clone https://github.com/php/doc-en.git en $ git clone https://github.com/php/doc-base.git doc-base ``` Liderle çalışacaklar için komutlar: ```bash $ git clone https://github.com/php/doc-tr.git tr $ git clone https://github.com/php/doc-en.git en $ git clone https://github.com/php/doc-base.git doc-base ``` PHP karması olanların https://github.com/php/doc-base/README.md dosyasını okuduktan sonra buraya dönmesini öneririm. Bu komutlar `doc-base`, `en` ve `tr` diye üç dizin açacak ve altına GiT deposundan bu modüllere ait dosyaları indirecektir. Bundan sonra `phpdoc/tr` dizininden bahsederken "çalışma dizini" diyeceğiz. Bunu yaptıktan sonra yeni bir çeviriye başlamaya karar vermeden önce bu üç dizinde de daima ```bash $ git pull ``` komutunu vermelisiniz. Bu komut çalışma dizininizi son haline getirir. `tr` dizininde sadece çevrilmiş ve çevirisi sürmekte olan dosyalar vardır. Yani çevireceğiniz dosya `tr` altında varsa başka bir dosya seçmeniz gerekecek. Çevireceğiniz dosyayı `en` dizini altından seçip `tr` altındaki yerine kopyalayacaksınız. Örneğin, `en/reference/apache/book.xml` dosyasını gözünüze kestirdiniz diyelim. Yapacağınız, çalışma dizininizin içinde ```bash $ cp en/reference/apache/book.xml tr/reference/apache/book.xml ``` komutunu vermeye eşdeğer bir işlem olacak. GiT deposuyla çalışmak için Linux altında `git-gui` ve `gitk` kullanılabilir. `tr` altında komut satırından `gitk` komutunu verin. `gitk` arayüzünden `git-gui` uygulamasını çalıştırmak için bir seçenek mevcut. Windows için de benzer arayüz kullanılabiliyor: https://gitforwindows.org/ Ama hemen çeviriye girişmeyeceksiniz. Bazı önişlemler var. Dosyanın ilk satırı genelde şuna benzer bir girdi içerir: ``` ``` Bu satıra "XML başlığı" diyelim. Burada "utf-8", çeviri yaparken kullanacağınız karakter kodlamasıdır. XML başlığının altına şöyle bir satır ekleyin: ``` ``` Bu satıra "güncelleme satırı" diyelim. `123456` özgün belgenin "commit hash"i olup aslında oldukça uzun bir dizedir, `flarecaster` çevirmenin translation.xml dosyasında yazan kullanıcı adı (nick), sonuncusu ise dosyanın durumunu gösterecek. Çeviriye başlarken oraya`wip`, tamamlandığında `ready` yazacaksınız. Böylece özgün belgenin sürüm numarası değiştiğinde `en` dizini altındaki dosya için ```bash $ git diff ``` komutuyla eski ve yeni sürümler arasındaki farkı kolayca görebilecek, tüm dosyayı yeni baştan çevirircesine elden geçirmekten kurtulacağız. Yani, çeviriyi güncellemek kolaylaşacak. Tabii, çeviriyi yapan güncelleyecek ;-) Güncelleme sırasında `123456` yerine özgün belgenin yeni commit hash'ini yazmayı unutmuyoruz. Bunu elde etmek için özgün belgenin bulunduğu dizinde şu komutu verin: ``` $ cmhash ``` Bu başta çalışmayacak çünkü `cmhash` bir bash alias. Ev dizinizde `.bashrc` dosyasının sonuna şu satırı ekleyin: ```bash $ alias cmhash='git log -n1 --format=format:"%H"' ``` ve aynı satırı bir defalık komut satırından da girin ki oturum aç/kapa yapmak gerekmesin. Böylece her dosya için bu alengirli komutu yazmaktan kurtulursunuz. Güncelleme satırının altında bazı dosyalarda ``` ``` gibi satırlar göreceksiniz. Bu kişiler o belgenin çevirisiyle evvelce ilgilenmiş kişilerdir. Onları böyle bir satırla hatırlamış oluyoruz. Sıra geldi çeviride dikkat edilecek hususlara... XML dosyalarla çalışırken dosyanın sekme karakterini (09) içermemesi gerekir. Eğer metin düzenleyiciniz yapabiliyorsa sekmeleri boşluklara çevirmeyi etkin kılın, yapamıyorsa bunu yapabilen bir metin düzenleyici bulun. Bulamıyorsanız, sekme yerine boşluk tuşuna basın. Zaten çalışacağınız XML dosyaların girintileri 1 karakter uzunlukta. 78 sütundan daha geniş satırlar kullanmayın. Uzun satırlar farkları (`diff`) komut satırından görmek istediğinizde işinizi kolaylaştırmayacaktır. Dosyalar `This extension requires PHP 8.` şeklinde HTML'ye benzer etiketler arasında bir takım metinler içerir. Bu etiketler XML belgenin yapı taşları olduğundan onları çevirmeyeceğiz. Bazı etiketlerin HTML etiketlerindeki gibi öznitelikleri vardır, onlara da dokunmuyoruz. Yani, yukarıdaki metni `Bu eklenti PHP 8 gerektirir.` şeklinde çevireceğiz. Ayrıca dosyalarda bazen `&` ile başlayıp `;` ile biten bazı sözcüklere rastlayacaksınız. Onları cümlenin bir parçası haline getireceksiniz. Örneğin, ``` You must enable the foo setting in &php.ini; ``` yerine ``` foo ayarını &php.ini; içinde yapmış olmalısınız. ``` yazacaksınız. Ancak bazı durumlarda bunu yapamayabiliriz. Değişken içindeki metin parçası cümle içinde kulanıldığında bir yerde doğruyken başka bir yerde imla hatasına yol açabilir. Böyle bir durumdan şüphe duyarsanız mevcut HTML belgeye bakıp ne yapacağınıza kendiniz karar vermelisiniz. XML belgeyle ilişkili HTML belgelere, genellikle, XML belgenin kök etiketindeki `xml:id` değerinin sonuna `.html` veya `.php` getirerek ulaşabilirsiniz. Tırnak karakteri yerine `'` kullanılmışsa siz de onu kullanın. Sizin cümle içinde tek tırnak imi kullanmanız gerekirse zor gelmeyecekse yine `'` kullanın. Böylece farklı tırnak imleri yerine tek bir tırnak imi kullanmış oluruz. Ayrıca XML belgelerin HTML veya PHP'ye dönüştürülmesi sırasında olası bir tırnak ayırma hatasını da önlemiş oluruz. Bu durum belgelerin kılavuz sayfaları üretilirken bilhassa önem kazanmaktadır. Kılavuz (man) sayfalarında `'` iminden başkası (`'` olur, kendileri) görüntülenmez. Yani `'` yerine başka bir tırnak imi kullanmışsanız kılavuz sayfasında o tırnağı bulamayabilirsiniz. Çeviri bittikten sonra güncelleme satırındaki `wip` dizgesini `ready` yapmayı unutmayın. Linux kullananların çeviriyi kate üzerinde yapmasını öneririm. Windows kullananlara notepad++ öneririm. Özellikle dikkat edilmesi gereken husus, internetteki çeviri motorlarını yardımcı olması için kullanabilirsiniz ama o çevirileri elden geçirmeden buraya göndermeyin. Hatasız çeviri yapanı (yıl: 2026) hala yok. Son olarak dosyayı teslim etmeden önce `phpdoc/doc-base` dizininde şu komutunu kullanın: ```bash $ php configure.php --with-lang=tr --enable-force-dom-save --disable-segfault-error --enable-xml-details ``` Komut hata vermemişse ve GitHub PR'ı yapacaksanız dosyayı depoya gönderebilirsiniz. Aksi takdirde, dosyayı ekip liderine göndermelisiniz. Verdiği hatayı nasıl gidereceğinizi bilmiyorsanız listedekilere sorunuz. (Burada artık esr'nin ünlü belgesinden söz etmeyelim.) Hatalı dosyayı bana gönderebilirsiniz. Git hesabı olanlar için teslimat işlemleri: ```bash $ git commit -m"açıklamayı buraya yazın" $ git push ``` PR yapacak olanlar bu işlemden sonra artık GitHub hesaplarında Pull Request oluşturabilir. Çeviri projesinin son durumunu öğrenmek için `phpdoc` dizini altında aşağıdaki komutu verin ve `revcheck.html` dosyasını tarayıcınız ile açın. Çevirmenler için çok yararlı bir araçtır. ```bash $ php doc-base/scripts/revcheck.php tr > revcheck.html ``` Veya http://doc.php.net/revcheck.php?p=filesummary&lang=tr adresine bakın (saatte bir güncellenmektedir). ### Sözlük Aşağıda İngilizce terimlerin bu çeviride kullandığımız Türkçe karşılıkları yazılmıştır. _AMACIMIZ AYNI TERİMLERİ KULLANMAK, OKUYUCUYU FARKLI TERİMLERLE KAVRAM KARGAŞASI İÇİNDE BIRAKMAMAKTIR._ ``` _ Altçizgi imi & Ve imi Abstract Metin için "Özet" ifadeler için "soyut" veya "mutlak" Argument Bağımsız değişken (return durumunda: Bağımlı değişken) Array Dizi Associative Array İlişkisel Dizi Attribute Öznitelik Authentication Kimlik doğrulama Authorization Yetkilendirme Backslash Ters bölü Binary Uygulamaysa kastedilen "çalıştırılabilir", kendisi bir veri türü ise çevrilmez, veri türünü niteliyorsa "ikil", bir işleci niteliyorsa "iki terimli". Bitwise Bitsel Boolean Mantıksal Built-in Yerleşik Callback Geriçağırım Class Sınıf Closure Kapsanım Unicode Code Point Unicode Karakter Kodu Compile Derleme Configuration Yapılandırma Constants Sabitler (Değişmezler değil!) Contravariance Az Özgüllük (bu ikisi tam karşılık değil, kullanıma uygunluk sağlar) Covariance Çok Özgüllük Control Structure Denetim Yapısı Default Ön tanımlı Detail Ayrıntı (lütfen "detay" diye çevirmeyin) Digest Özet Directive Yönerge double quote çift tırnak " Endian Dip Escape Escape tuşu için çevrilmez. Escape character Önceleme karakteri Exception İstisna Executable Çalıştırılabilir Extention Eklenti Extents Genişletir (nyp) Float Gerçek sayı, kayan noktalı sayı Form Form Function İşlev Handle Tanıtıcı Handler İşleyici Hash Aş Hashing Aşlama Heredoc Yorumlu metin Idle Boşakoşum Implementation Gerçeklenim Implements Gerçekler (nyp) Include dahil etme Index (diziler için) indis Initialize İlklendirmek Instantiate Örnekleme Interpreter Yorumlayıcı integer tamsayı Label Yafta Matrix Dizey Mechanism Düzenek Method Yöntem mixed karışık Module Modül Multithread Çok evreli Multibyte Çok baytlı Nowdoc Yorumsuz metin Nullable Boş olabilen Object Nesne Operand Terim Operator İşleç Original Özgün Outputs Çıktılanır Override Geçersiz kılmak Parameter Bağımsız değişken (return durumunda: Bağımlı değişken) Parse error Çözümleme hatası Parser Çözümleyici Pass into İçe aktarmak Peer Görevdeş Pointer Fare oku sözkonusu ise "imleç", C tarzı ise "gösterici" Predefined Önceden tanımlanmış Procedure Yordam Protocol Protokol Ouery string Sorgu dizesi Reference gönderim, başvuru Regular expression Düzenli ifade Resource Özkaynak root user root kullanıcı (Linux'ta en yetkili kullanıcı root'dur). Runtime Çalışma anı Scalar Sayıl, değişmez Scope Etki Alanı Script Betik Scripting Kodlama, kod yazma Serialize Dizeleştirme Server Sunucu single quote tek tırnak ' Slash Bölü imi Statement Deyim Strict Typing Katı Kodlama String Dize, dizge Tag İmlenim dilleri (*ML) için "etiket" Ternary Üç terimli Thread Evre Throws Yavrulanır (nyp) Trait Nitelik Transaction Veri hareketi Type "Tür" veya "veri türü" Unary Tek terimli Union type Birleşim türü Unpack Genişletme, yayma Unserialize Nesneleştirme Validation Geçerlilik Variable Değişken (İfadenin sol tarafında: "Bağımlı değişken", sağ tarafında: "Bağımsız değişken") Variance Farklılık Vector Yöney Web Server HTTP Sunucusu Widget Gereç Version.Revision.Patch Biz bunun tamamına ve parçalarına sürüm numarası diyoruz. Bu kılavuzun okuyucusu için sürüm numarasını oluşturan parçaların isimlerinin bir önemi olmayacaktır. ``` PHP Belgelelerinin yapısı ve daha pek çok şey hakkında fikir edinmek için http://doc.php.net/tutorial/ adresindeki belgeyi ve git hakkında kapsamlı bilgi edinmek için http://git-scm.com/book adresindeki belgeyi okuyun.