5 Mart 2010 Cuma

Google translate api - Php ile metin çeviri

Google Translate Api Kullanımı

Google translate dünyada metin çeviri hizmeti olarak tek tercih edilen hizmet diyebiliriz.web sitesi olan kişiler sitelerinde merin çeviri & translate hizmeti vermek istediklerinde google translate hizmeti yardımlarına koşuyor.İsteyen herkes google translate api anahtarı alarak google metin çeviri hizmetini web sayfalarında kullanabiliyorlar. Bu yazımda PHP kullanarak Google'ın nimetlerinden biri olan Google Translate API yardımıyla nasıl çeviri yaptırılır onu anlatacağım.
Neler yapacağımızı kısatla özetleyecek olursak;
* Öncelikle bir form oluşturacağız
* Formdan gelen veriyi Google Translate API kullanarak çevirecek olan PHP kodumuzu yazacağız.
* Daha sonra ise sayfa yüklemeye gerek kalmadan verileri PHP dosyasına aktarıp çeviriyi yaptırdıktan sonra veriyi çekip ekrana yazdıracak olan jQuery fonksiyonunu oluşturacağız.

İşe, çevirilecek metni yazacağımız bir textarea, metnin dilini ve metnin çevirileceği dili seçeceğimiz iki selectbox, bir gönder butonu ve bir de çevrilen metni yazdıracağımız alandan oluşan betiğimizin arayüzünü yazmakla başlıyoruz.

1.HTML
<div class="blok">
 <div class="girdi">
  <label>Çevirilecek Metin</label>
  <textarea name="metin" id="cevir"></textarea>
 </div>
    <div class="girdi">
  <label>Kaynak Dil</label>
  <select name="kaynak">
            <option value="af">Afrika Dili</option>
            <option value="de">Almanca</option>
            <option value="ar">Arapça</option>
            <option value="sq">Arnavutça</option>
            <option value="be">Belarusça</option>
            <option value="bg">Bulgarca</option>
            <option value="cs">Çekçe</option>
            <option value="zh-CN">Çince</option>
            <option value="da">Danca</option>
            <option value="id">Endonezya Dili</option>
            <option value="et">Estonyaca</option>
            <option value="fa">Farsça</option>
            <option value="nl">Felemenkçe</option>
            <option value="tl">Filipince</option>
            <option value="fi">Fince</option>
            <option value="fr">Fransızca</option>
            <option value="cy">Galce</option>
            <option value="gl">Galiçyaca</option>
            <option value="ht">Haiti Creole Dili ALPHA</option>
            <option value="hr">Hırvatça</option>
            <option value="hi">Hintçe</option>
            <option value="iw">İbranice</option>
            <option value="en">İngilizce</option>
            <option value="ga">İrlandaca</option>
            <option value="es">İspanyolca</option>
            <option value="sv">İsveçce</option>
            <option value="it">İtalyanca</option>
            <option value="is">İzlandaca</option>
            <option value="ja">Japonca</option>
            <option value="ca">Katalanca</option>
            <option value="ko">Korece</option>
            <option value="pl">Lehçe</option>
            <option value="lv">Letonca</option>
            <option value="lt">Litvanyaca</option>
            <option value="hu">Macarca</option>
            <option value="mk">Makedonca</option>
            <option value="ms">Malezya Dili</option>
            <option value="mt">Malta Dili</option>
            <option value="no">Norveçce</option>
            <option value="pt">Portekizce</option>
            <option value="ro">Romence</option>
            <option value="ru">Rusça</option>
            <option value="sr">Sırpça</option>
            <option value="sk">Slovakça</option>
            <option value="sl">Slovence</option>
            <option value="sw">Svahili</option>
            <option value="th">Tay Dili</option>
            <option value="tr">Türkçe</option>
            <option value="uk">Ukraynaca</option>
            <option value="vi">Vietnamca</option>
            <option value="yi">Yidce</option>
            <option value="el">Yunanca</option>
        </select>
        <label>Hedef Dil</label>
  <select name="hedef">
            <option value="af">Afrika Dili</option>
            <option value="de">Almanca</option>
            <option value="ar">Arapça</option>
            <option value="sq">Arnavutça</option>
            <option value="be">Belarusça</option>
            <option value="bg">Bulgarca</option>
            <option value="cs">Çekçe</option>
            <option value="zh-CN">Çince</option>
            <option value="da">Danca</option>
            <option value="id">Endonezya Dili</option>
            <option value="et">Estonyaca</option>
            <option value="fa">Farsça</option>
            <option value="nl">Felemenkçe</option>
            <option value="tl">Filipince</option>
            <option value="fi">Fince</option>
            <option value="fr">Fransızca</option>
            <option value="cy">Galce</option>
            <option value="gl">Galiçyaca</option>
            <option value="ht">Haiti Creole Dili ALPHA</option>
            <option value="hr">Hırvatça</option>
            <option value="hi">Hintçe</option>
            <option value="iw">İbranice</option>
            <option value="en">İngilizce</option>
            <option value="ga">İrlandaca</option>
            <option value="es">İspanyolca</option>
            <option value="sv">İsveçce</option>
            <option value="it">İtalyanca</option>
            <option value="is">İzlandaca</option>
            <option value="ja">Japonca</option>
            <option value="ca">Katalanca</option>
            <option value="ko">Korece</option>
            <option value="pl">Lehçe</option>
            <option value="lv">Letonca</option>
            <option value="lt">Litvanyaca</option>
            <option value="hu">Macarca</option>
            <option value="mk">Makedonca</option>
            <option value="ms">Malezya Dili</option>
            <option value="mt">Malta Dili</option>
            <option value="no">Norveçce</option>
            <option value="pt">Portekizce</option>
            <option value="ro">Romence</option>
            <option value="ru">Rusça</option>
            <option value="sr">Sırpça</option>
            <option value="sk">Slovakça</option>
            <option value="sl">Slovence</option>
            <option value="sw">Svahili</option>
            <option value="th">Tay Dili</option>
            <option value="tr">Türkçe</option>
            <option value="uk">Ukraynaca</option>
            <option value="vi">Vietnamca</option>
            <option value="yi">Yidce</option>
            <option value="el">Yunanca</option>
        </select>
 </div>
    <div class="girdi">
  <input type="submit" id="gonder"/>
 </div>
</div>
<div class="clear"></div>
<div class="ceviri">Çevirilen Metin:</div>
<div id="sonuc">Lütfen çevirilecek metni giriniz.</div>


Şimdi ise CSS kullanarak formumuzu şekillendiriyoruz.

2.CSS
body{
 font-family:"Trebuchet MS";
 font-size:12px;
 text-align:center;
 color:06F;
}
.clear {
 clear:both;
 margin-top:8px;
}
.blok {
 width:600px;
 margin:0 auto;
}
.girdi * {
 padding:5px; 
 margin:2px;
}
.girdi label {
 float:left; 
 width:125px;
 font-weight:bold;
}
.girdi textarea {
 float:left; 
 width:450px;
 padding:4px;
}
.girdi select {
 float:left; 
 width:152px;
 height:28px;
 padding:4px;
}
.girdi .uyari {
 border:2px solid #CC0000;
}
.girdi #gonder {
 text-align:center;
}
.ceviri {
 width:500px;
 margin:0 auto;
 padding-bottom:2px;
 font-weight:bold;
 border-bottom:1px solid #06F;
 text-align:left;
}
#sonuc {
 font-size:13px;
 padding:8px;
}


Sırada, çevirimizi sayfa yüklemeden yaptırmak için kullanacağımız javascript kodumuzu oluşturmak var. Bu kısımda işimizi kolaylaştırmak ve hızlandırmak için jQuery kütüphanesini kullanıyoruz. jQuery sitesinden bu kütüphaneyi indirip HTML dosyasına dahil etmeniz gerekmekte. Bu bölümde, az önce oluşturduğumuz formdan yollanan site adresi POST metodu ile translate.php dosyasına yollanacak ve gelen veri sonuç kısmında gösterilecek.

3.javascript
// Metin girilmeye başlandığında çeviriye başlıyoruz
$(document).ready(function(){
 $('#gonder').click( sonucAl );
});

// Çeviriyi yaptıracak olan fonksiyonumuz
function sonucAl()
{
 // Formdan gönderilen veriler
 var metin = $('textarea[name=metin]');
 var kaynak = $('select[name=kaynak]');
 var hedef = $('select[name=hedef]');
 
 // Çevirilecek metin girilmediyse uyarı veriliyor
 if (metin.val()=='') {
  metin.addClass('uyari');
  return false;
 } else metin.removeClass('uyari');
 
 // Sonuç kısmında veri alınana kadar yükleniyor işareti gösteriliyor
 $('#sonuc').html('<img src="yukleniyor.gif" border="0" alt="Yükleniyor" />');
 
 // Formdan gönderilen veri php dosyamıza yollanıyor
 $.ajax({
   type: 'POST',
   url: 'translate.php',
   data: 'metin=' + metin.val() + '&kaynak=' + kaynak.val() + '&hedef=' + hedef.val(),    
   success: function(sonuc) {
   $('#sonuc').html(sonuc);
   }
 });

 return false;
}


Son olarak formdan gönderilen veriyi işleyecek olan PHP betiğimizi kodlamak kaldı. Bu betikte formdan gönderilen metni ve dilleri alıyor ve CURL kütüphanesini kullanarak Google Translate API'ye bağlanarak çeviriyi yaptırıyoruz

4.PHP
<?php
header('Content-Type: text/html; charset=utf-8');

$kaynak = $_POST['kaynak'];
$hedef = $_POST['hedef'];
$diller = urlencode($kaynak.'|'.$hedef);
$metin = urlencode($_POST['metin']);
 
// Google'ın API çeviri URL'si
$url = "http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=".$metin."&langpair=".$diller;

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_REFERER, "http://localhost/translate.php"); // Bu kısma translate.php dosyanızın bulunduğu kendi URL adresinizi yazınız
$body = curl_exec($ch);
curl_close($ch);
 
$json = json_decode($body, true);
echo $json['responseData']['translatedText'];
?>


Ve işlem tamam! Artık Google Translate API kullanarak çeviri yaptırabileceğimiz bir betiğimiz var.
Unutmadan hatırlatmakta fayda var. Eğer sunucunuzda PHP'nin CURL kütüphanesi yüklü değilse, betik API'ye bağlanamayacak ve sonuç olarak çalışmayacaktır. Bununla birlikte, PHP betiğinde kullandığımız json_decode fonksiyonu PHP 5 versiyonu ile birlikte gelen bir fonksiyon olduğu için, sunucunuzda bulunan PHP versiyonunun PHP 5 veya üstü versiyonlardan birisi olması gerekmektedir.kaynak

Hiç yorum yok: