4 Şubat Cuma ´11   —   2 Yorum

Less

LESS CSS ile çalışmak oldukça keyifli. Kesinlikle herkese öneririm. Özellikle de sürekli php veya javascript gibi dillerle çalışan programcılar bunu seveceklerdir. Çünkü CSS yazarken değişken, kontroller gibi program yapıları kullanamıyorsunuz. Eğer sistematik bir css geliştiriyorsanız, mesela gridlerle çizilen, belli bir paleti olan veya pozisyon, kenarlıklar gibi değerleriniz sürekli tekrar eden değerler ise LESS CSS kullandığınız zaman aradaki farkı çok daha iyi hissedeceksiniz.

Örnek veriyorum, CSS3 ile daha çok tekrar etmeye başladığım border-radius için aynı değeri 3 satırda giriyorsunuz, eğer aynı radius değerini mesela 4 sınıf için tanımlamanız gerekiyorsa 12 kere bu satırları tekrar etmeniz gerekiyor. Less'de sadece border radius için parametrik çalışan fonksiyon tanımlayarak her yerde bu fonksiyonu çağırabilirsiniz.

Çok basit bir şekilde tek javascript dosyasıyla çalışıyor, eğer isterseniz sunucunuzda da less dosyalarınızı derleyip javascript bagımlılığı olmadan css olarak sunabilirsiniz.

Kesinlikle denemeye değer:http://lesscss.org/

Farklı programlama dillerine göre çözümler.

Bu döküman sadece php projeler için değil, tüm programlama dillerinde kullanabileceğiniz bir yapıyı anlatmaktadır. İçindeki tüm yapılar çoğu dilde mevcuttur. Ben web basisli bir dilde, daha kolay anlatabileceğimi ve daha çok web programcıların bu dökümandan faydalanacağını düşünüyorum.

Seçeneklerim Neler?

Projenizi yazarken 2 yol izlemiş olabilirsiniz, birincisi modüler, template yapısına benzer bişeyler, yani bütün proje index.php veya module.php veya buna benzer tek dosya üzerinde yorumlanıyordur. Yada projede her dosya farklı biçimde, index.php, giris.php, forum.php, dosyalar.php vs böyle gider. İkisi için hibişey değişmeyecektir. Amaç bir dil yorumlayıcısını her dosyanın başında çalıştırmak.

Peki bu dil yorumlayıcısı ne iş görecek?

Bu dil yorumlayıcısı oturumdaki dil değişkenine göre bütün içeriği oturumdfaki kayıtlı dile göre ayarlamamızı sağlayacaktır. Daha açık konuşursak tercümanımız olacaktır :-) Şimdi daha rahat anlayabileceğiniz uygulamaya geçelim.

Diyelimki sitemiz farklı farklı sayfalardan oluşuyor. (index.php, dosyalar.php, ziyaretci_defteri.php vs...)
Normal bi şekilde kendi dilimizde yazıp bitiriyoruz projemizi.. Ben burada tek bir dosya üzerinde örnek göstereceğim;

Önce dizin yapımıza dil diye bir klasör ekliyoruz;
Son yapı şuna benzer olsun;
Proje
 |
 |- <dir>  moduller
 |- <dir>  include
 |- <dir>  dil
 |          |- tr.php
 |          |- ...
 |          '- en.php
 |
 '---.- index.php
     |- giris.php
     |- dokumanlar.php
     |- dosyalar.php
     |- dilsec.php
     '- dil.php
Bu şekilde bir dizin yapımız olsun.. (buradaki örnek sadece :-) )(sadece dil dizini, dilsec.php ve dil.php'ye dikkat edin. dil dizininde dil dosyaları olacak tabiki)
Kullanıcılar için arabirim basan tüm dosyalarda başında dil.php'yi include edin. Bu tercümanımızdı bizim.

Neden tercümana ihtiyacımız var?

Çünkü birisi sayfa açılmadan/çalışmadan önce dili seçmeli, ve bu dile ait çeviriyi yapmalı.

Peki çeviriyi sayfalarımızda nasıl uygulayacağız?

Sayfalarımızda basitçe metinleri yazdık ve siteyi bitirmiştik değil mi? Mesela Menümüz şöyle idi;
<!-- MENU -->
<a href="index.php">Anasayfa</a>
<a href="dosyalar.php">Dosyalar</a>
<a href="#...">Linkler</a>
Yani kullanıcılar doğrudan bir yazıyı statik olarak görüyorlardı. Tek yapmamız gereken şey, çevirilerimizi değişkenlerde tutmak, Zaten tercüman dosyamız dile göre bu değişkenleri değiştirecektir. Sizin kodda oynama yapmanıza gerek kalmaz. Tercüman otomatik olarak seçer ve bu değişkenleri ayarlar. Ekrana seçili dil basılır.
Yani yukarıdaki kodumuz şu şekilde olmalıdır;
<!-- MENU -->
<a href="index.php"><?=$dil["menu_anasayfa"];?></a>
<a href="dosyalar.php"><?=$dil["menu_dosyalar"];?></a>
<a href="#..."><?=$dil["menu_linkler"];?></a>
Amacımız, daha önce kullanıcının önüne getirdiğimiz (print ettiğimiz veya etmediğimiz) tüm metinleri değişkenlerle değiştirmek.

Şimdi bu dökümandaki örneğe ait hazırladığım index.php ve dosyalar.php'yi dökümanın sonunda bulacaksınız, bunları inceleyin. Bütün içeriğe ait kısımlarda değişkenler göreceksiniz. $dil diye bir dizide toplanıyor olacaktır bunlar..

Bu değişkenleştirme işlemini yaparken kendi dilimizdeki çeviri dosyamızı da hazırlamış oluyoruz. dil klasörüne o dildeki (bilgisayara göre tabiki) dilin kısaltmasına ait bir dosya oluşturuyoruz. (Türkçe için tr.php, İngilizce için -english- en.php, İspanyolca için -espanol- es.php gibi..) Bu dosya şu şekilde olacak biçimde değişkenlerimizi çevirerek koyuyoruz.

Türkçe çeviri dosyamız;
<?php
/*
   TURKCE CEVIRIYE HOSGELDINIZ
   Ceviren : Mehmet Fatih YILDIZ
*/

unset($dil);

// dil dosyasi ayarlari
   $dil["dil"]                     = 'Türkçe';
   $dil["dil_seciniz"]             = 'Dil Seçiniz';

// site degiskenleri
   $dil["site_basligi"]            = 'Bilmemne Projesi Sayasi';

// menu
   $dil["menu_anasayfa"]           = 'Anasayfa';

   $dil["menu_dosyalar"]           = 'Dosyalar';
   $dil["menu_linkler"]            = 'Linkler';

// uye girisi paneli
   $dil["uye_giris_k_adi"]         = 'Kullanici Adi';
   $dil["uye_giris_sifre"]         = 'Sifre';
   $dil["uye_giris_buton"]         = 'Giris Yap';

// dosyalar bolumu
   $dil["dosyalar_bolum_basligi"]  = 'Dosyalar';
   $dil["dosyalar_dosya_listesi"]  = 'Dosya Listesi';
   $dil["dosyalar_dosya_adi"]      = 'Dosya Adi';
   $dil["dosyalar_dosya_boyutu"]   = 'Boyut';
   $dil["dosyalar_eklenme_tarihi"] = 'Eklenme Tarihi';
   .
   .
   .

?>
İngilizçe çeviri dosyamız;
<?php
/*
   WELCOME TO THE ENGLISH TRANSLATION
   Translator : Micheal Jackson :P
*/

unset($dil);

// language file settings
   $dil["dil"]                     = 'English';
   $dil["dil_seciniz"]             = 'Select Language';

// site variables
   $dil["site_basligi"]            = 'Bilmemne Project Homepage';

// menu variables
   $dil["menu_anasayfa"]           = 'Home';

   $dil["menu_dosyalar"]           = 'Files';
   $dil["menu_linkler"]            = 'Links';

// user login section
   $dil["uye_giris_k_adi"]         = 'User Name';
   $dil["uye_giris_sifre"]         = 'Password';
   $dil["uye_giris_buton"]         = 'Login';

// files section
   $dil["dosyalar_bolum_basligi"]  = 'Files';
   $dil["dosyalar_dosya_listesi"]  = 'File List';

   $dil["dosyalar_dosya_adi"]      = 'Filename';
   $dil["dosyalar_dosya_boyutu"]   = 'Size';
   $dil["dosyalar_eklenme_tarihi"] = 'Date';
   .
   .
   .
?>
Burada sadece Türkçe ve ingilizcesini yazdım, rahatlıkla çoğaltabilirsiniz/çoğalttırabilirsiniz..

Gördüğünüz gibi içerikleri oldukça basit. Tek yaptığımız metinlerimizi değişkenlere dönüştürüp içeriklerini bir dosyaya (çeviri dosyalarımız) yazmak. Projeleriniz bu şekilde yapıp, Mesela sadece kendi ana dilinizde yapıp, bilen insanlara bu dosyaları verip çevirmelerini isteyebilirsiniz. Bu işlem hem zahmetsiz hem de çok işe yarar. Ben çoklu dilli projelerimde çok fazla dili bilmeden bilen arkadaşlarımın sayesinde ekledim ;-)

Çeviri dosyalarımızı da yazdık, bütün projede değişken dışında bişey kalmadı, (Bu örneğe ait index.php'yi ve dosyalar.php'yi bu dökümanın sonunda görebilirsiniz.)

Tercüman dosyası

Şimdi gelelim çeviri dosyalarını seçecek ve siteye uygulayacak olan tercümanımızı kodlamaya :-) Önce kodu vereyim, sonra açıklayalım.
<?php

session_start();

# oturuma gore dil seciyoruz
$secili_dil = $_SESSION["dil"];

# eger dil oturumda secili degilse
if( empty($secili_dil) ){
  # dili browser ayarina gore otomatik sectiriyoruz.
  $secili_dil = $_SERVER["HTTP_ACCEPT_LANGUAGE"];
  if( !file_exists("dil/".$secili_dil.".php") ){
    # eger o dile ait ceviri dosyasi yoksa site icin varsayilan dili sectirelim.
    # bizim site icin turkce olsun
    $secili_dil = 'tr';
  }
}

# oturuma kaydedelim
  $_SESSION["dil"]=$secili_dil;

# simdide ceviri dosyasini yukleyelim
include("dil/".$secili_dil.".php");

?>
Kodu açıklayalım; ilk önce $secili_dil degiskenine oturumda kayitli olan dili aliyoruz, eğer oturuma kaydedip onu seçtirmezsek, kullanıcı, browser'in geçerli dilinden başka bir dil seçtiğinde her sayfada bu değer sıfırlanacak ve browser'in geçerli dili ile görüntülenecektir. Bunu yaparak oturum boyunca aynı dilde kalmayı sağlıyoruz. Cookie desteği koyup da hangi bilgisayarda hangi dilde gösterilecek bunu da rahatlıkla kontrol ettirebiliriz. Devam edelim; eğer dil değişkeni boş ise, demektir ki, kullanıcı ilk sayfasında ve dil seçilmedi. Site için uygun olan geçerli dili seçtirmeliyiz. Öncelikle kullanıcının tarayıcı bilgisinden tarayıcısını hangi dilde kullanıyor bunu bulduralım. Mesela Türkçe işletim sistemi, ve Türkçe tarayıcı kullanıyorsa sayfasyı Türkçe göstermemiz muhtemel olacaktır. İspanyol girdiğinde siteye, tarayıcısı ispanyolca olduğundan otomatik olarak site ispanyolda açılacaktır böylece.. :-) $secili_dil = $_SERVER["HTTP_ACCEP_LANGUAGE"]; ile bunu sağlamış olduk. Çeviri dosyalarımız dil klasöründe idi. Şimdi çeviri dosyamızı yüklememiz gerek. Ancak eğer tarayıcıda bulunan dil'e ait çeviri dosyamız yok ise sistem hata verecektir, çeviri görünmeyecektir. Bunun için dosya varmı kontrol ettiriyoruz. Eğer yoksa bize göre, yani projenin ana diline göre $secili_dil'e istediğimiz çeviri dosyasının adını giriyoruz. Bu örnekte Türkçe olmasını istediğimiz için "tr" girdik. Daha sonra oturuma daha sonraki sayfalarda bu dil görünmesi için dil değişkenini kaydettik ve son olarak çeviri dosyamızı yükledik. Böylece dosyanın devamında basılacak değişkenler seçili olan dile göre yer alacaktır.

Dil seçimi

Şimdi index dosyamıza dil seçici bir seçim kutusu koyuyoruz. Kodu şuna benzer olacaktır;
<select onChange="window.top.location='dilsec.php?dil='+this.value;">
  <option value="tr">Türkçe</option>
  <option value="en">English</option>
  <option value="de">Deutch</option>
  <option value="es">Espanol</option>
  .
  .
  .
</select>
Görüldüğü gibi seçildiği anda dilsec.php dosyasına dil değişkenini GET methodu yöntemi ile gönderiyoruz.
dilsec.php dosyamız da, aktif bulunan oturumda kullanıcının sitenin dilini değiştirmesini sağlayacaktır.
Kodu şu şekilde;
<?php

session_start();

# bilgiyi alalim
$dil=$_GET["dil"];

# dil dosyasi varsa;
if( file_exists("dil/".$dil.".php") ){
  #oturuma kaydediyoruz
  $_SESSION["dil"]=$dil;
}

# anasayfaya yonleniyoruz.
print '<script>location="index.php";</script>';
exit;

?>
Yapılan işlem çok basit. GET methodu ile gelen değişkene ait çeviri dosyası VAR ise oturuma o dili kaydedip anasayfa'ya geri dönüyoruz. Böylece projemiz çok dilli olmuş olacaktır. Aşağıdaki index ve dosyalar.php'nin içeriklerini yukarıdaki anlatımla birleştirirseniz daha rahat alnayabilirsiniz.

index.php
<?php

// dili sectiriyoruz.
include("dil.php");

?>
<html>
<head>
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-9" />
 <title><?=$dil["site_basligi"];?> - (Lang:<?=$dil["dil"];?>)</title>
</head>
<body>

<h1><?=$dil["site_basligi"];?></h1>

<!-- MENU -->
<a href="index.php"><?=$dil["menu_anasayfa"];?></a>
<a href="dosyalar.php"><?=$dil["menu_dosyalar"];?></a>
<a href="#..."><?=$dil["menu_linkler"];?></a>

<!-- DIL SECME FORMU -->
<?=$dil["_dil_seciniz"];?> : 
<select onChange="window.top.location='dilsec.php?dil='+this.value;">
  <option value="tr">Türkçe</option>
  <option value="en">English</option>
  <option value="de">Deutch</option>
  <option value="es">Espanol</option>
  .
  .
  .
</select>

<!-- UYE GIRIS PANELI -->
<form action="giris.php">
 <?=$dil["uye_giris_k_adi"];?> : <input type="text" name="kadi"><br>
 <?=$dil["uye_giris_sifre"];?> : <input type="password" name="sifre"><br>
 <input type="submit" value="<?=$dil["uye_giris_buton"];?>"><br>
</form>

.
.
.

</body>
</html>
dosyalar.php
<?php

// dili sectiriyoruz.
include("dil.php");

?>
<html>
<head>
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-9" />
 <title><?=$dil["site_basligi"];?> - (Lang:<?=$dil["dil"];?>)</title>
</head>
<body>

<h1><?=$dil["site_basligi"];?> / <?=$dil["dosyalar_bolum_basligi"];?></h1>

<!-- MENU -->
<a href="index.php"><?=$dil["menu_anasayfa"];?></a>
<a href="dosyalar.php"><?=$dil["menu_dosyalar"];?></a>
<a href="#..."><?=$dil["menu_linkler"];?></a>

<!-- DOSYA LISTESI -->
<?
// dosya listesini ureten php kodu ..
?>
<!-- DOSYA LISTESI YAZISI -->

<br><?=$dil["dosyalar_dosya_listesi"];?><br>

<!-- DOSYA LISTESI TABLOSU -->
<table border="1">
  <tr>
    <td><?=$dil["dosyalar_dosya_adi"];?></td>
    <td><?=$dil["dosyalar_dosya_boyutu"];?></td>
    <td><?=$dil["dosyalar_eklenme_tarihi"];?></td>
  </tr>

  <? 
  // dosya listesini ekrana basan php kodu ..
  ?>

</table>

.
.
.

</body>
</html>
Hemen küçük bir uygulama da siz yazın.


Hazırlayan : Mehmet Fatih YILDIZ

Popüler Etiketler

google search api ajax jquery sosyal medya istatistik social media statistics graph twitter html örnek kod windows linux fstab ntfs insanlar blog opengraph facebook share firefox zaman cms applications macosx free mdb2 pear sql injection ie browser php apache apple server javascript js date tarih widget player license lisans xmlhttprequest ios iphone ipad app store store in-app purchase purchase verification integration storekit itunes connect itunes ui ux css3 icons startups music htaccess url network textarea iOS portfolio xml nedir subversion svn optimizasyon ruffles doritos route router mod_rewrite open source css radio button switch ubuntu fql optimization plugin box internet explorer job form notebook laptop support proje assets framework connect internet regex imza signature mail db database service developer mfyz cache session tool mootools while mobile table login mysql pharma hack wordpress calendar rss parse kurulum nasıl code development coding lifestream dokuman logo html5 git version control deployment webkit web app app export konsol terminal http workspace browsers wireless gimp banner bootstrap newsletter subscription tebrik prepare execute mssql pgsql kampanya tytz wanda analyse procedure screen editor kontrol yapıları if kitap sitemap seo icon ikon grafik download xhtml chart osx query select auth digital object www subdomain redirect crossdomain meta ipucu cookie link howto design language input ide phpstorm jetbrains less spam generator oyun compile compiler on-the-fly diff style