Anasayfa

Google ın teknolojilerinden biri olan çeviri yani translate dediğimiz herhangi iki dil arasında verilen bir metni diğer dile çevirme özelliğini çoğumuz görmüşüzdür. Google herzaman yaptığı gibi bu özellikleride bize api desteği yani yazılımla buradan bilgi alma bilgi gönderme gibi işlemleri destekliyor.

İşte Google un bize sunduğu hizmet ve ya özellik google language api olarak geçiyor. Normalde bu hizmeti bize ajax şeklinde sunmakta yalnız biz bunu php ile arka planda kullanmak istiyorsak yine burada verdiği dökümanlardan faydalanarak aynı işlemleri yapabiliriz.

Geliştirme kitabına girip buradaki dökümanları okuduğumda kendi sağladığı javascript fonksiyonlarıyla da bu  işlemlerini nasıl yapacağımı tek tek anlatıyor.

Yanlız biz bunu php ile arka planda kullanmak istiyorsak doğal olarak bizim için burada verilen javascript fonksiyonları bizim için bir anlam ifade etmiyor.Biraz daha okumaya devam ettiğimizde desteklediği diller arasında Türkçe de olmak üzere bir çok dilin olduğunu görüyoruz. Şuanda görülen diller ise yani çeviri yapabileceğimiz diller olarak burda sıralanan diller olduğunu görüyoruz. Dikkat ederseniz bazı dillerin yanında yeni ifadesi yer alıyor.burdan anlıyacağımız üzere google boş durmuyor ve yeni diller eklemeye devam ediyor.

Şuan Türkçe desteği olmasa bile kısa sürede Türkçe desteğinin geleceğine eminiz.işte okumaya devam ettiğimizde curl yada wget gibi programlarla hiçbir ek ihtiyacımız olmadan ek bir yazılıma ihtiyaç duymadan da dönüştürme işlemi yapabileceğimizi söylüyor.

Bize gönderdiği değerin json ismini verdigimiz javascript objesi halinde döndüğünü söylüyor. Şurda verdiği basit örneğin bilgisayarımız şuan Windows olduğu için ve curl bulunmadığı için ama wgetin Windows versiyosunu mevcut wget çekerek inceleyelim.

Wgetin Windows versiyonunu bilgisayarıma çekiyorum Bilgisayarıma daha sonra kayıtediyorum. Zip halinde gelen dosyayı açarak Daha sonra indirdiğim dosyanın dizinine giriyorum.

Wget komutu  wget boşluk adresi vermek suretiyle kullanılabilir.işte burada verdiği curl ile verdiği komutun sadece adres satırını almak suretiyle komutumu yapıştırıyorum.burda sondaki ve baştaki çift tırnağı silerek tek tırnak haline getirdim.hata verdi çünkü bilgisayara kaydedilebilecek şekilde bir dosya adı yok.

Wget i  -O yani output veya kaydetmesini istediğimiz dosya adı olarak. bir dosya ismi verip tekrar çağırıyorum.

Wget bağlandı ve sonuc.txt kaydı gerçekleştiğini İşte sonuc.txt yi açtığımda karşıma responseData bunun içinde translatedText dönüştürülmüş metin responseDetails ve responseStatus şeklinde değerler dönüyor. İşte ben buradan translateText ile dönüştürülmüş metni alarak kullanabilirim.

işte biz bunu php ile yapmak istiyorsak burada dikkat etmemiz gereken küçük bir nokta daha var. Google bize söylüyor ki bize dönen değer yani cevap utf-8 formatındadır. Bu durumda bizim oluşturduğumuz php sayfasının dil kodlamasının utf-8 olması gerekir  ve dikkat edersek bize json formatında döndüğünü söylüyor. İşte bir php sayfası oluşturarak sırası ile buradaki işlemleri yaparak google aracıyla bizde dönüştürmeyi gerçekleştirelim.

Hepsinden önce php dosyasının dil kodlaması yani encoding dediğimiz content type ile header fonksiyonu ile gönderdiğimiz değerin utf-8 olması gerekir.

Bir php sayfası oluşturdum daha sonra bir header fonksiyonu ile Content-type imın text/html karakter setim utf-8 olacak şekilde değiştirmeyi yapıyorum.

<?php
header("Content-Type: text/html;charset=UTF-8");
?>

Bu ifadeyi aslında hatırlamamız gerekli değil googledan php header ve utf-8 yazarsanız direk bu satırı zaten bulabilirsiniz. Daha sonra burada konsoldan çağırdığım veya geliştirme sayfasında bana verdiği adresi php ile açmam ve okumam gerekiyor.bunun için birkaç yönten izleyebiliriz.en basit olarak fopen ile sayfayı açabiliriz.curl fonksiyonlarını kullanarak okuyabiliriz. Veya file_get_contents ile okuyabiliriz veya file komutu ile dizi olarak alıp implode edebiliriz.

Bu gibi tüm işlemler kullanılması mümkün şeyler. Ben bunlardan şuan için file_get_contents() fonksiyonu nu kullanmak suretiyle okuma işlemini gerçekleştireceğim. Burdan gelen değeri $data isminde bir değişkene atayıp daha sonra echo ile buraya dönen değeri yazdıracağım. Sayfayı çağırdığımda bana google un söylediği gibi json formatında bir değer gelmesi lazım.

Evet metin olarak değerim geldi istersem buradaki formata bakarak mesela buradaki translatedText ve responseDetails benim parçalama değerlerim olabilir. Yani metni bulmak için translatedText ve daha sonra responseDetails e göre explode edip direk metine erişebilirim.

Zaten zaten json php tarafından desteklendiği için json encode ve decode fonksiyonları mevcud olduğu için böle bir şey yapmaya ihtiyacım yok.Burdaki datayı okumak için json fonksiyonlarından decode fonksiyonunu kullanıyorum.

daha sonra print_ r()  ile burada var_dump da kullanabilirdik. Dönen değeri yazdırıyorum. Evet dikkat edersek objemizin içinde responseData yine obje halinde ve translatedText isminde değeri var. O zaman ben buna erişmek için bu objenin içindeki responseData objesinin içindeki translatedText değerine erişmem lazım. Bundan dolayı asıl dönen değeri yazdırmak için datanın içindeki  responseData nın içindeki translatedText değerini yazdırması söylüyorum.

Ve sayfayı çağırdığımda bana direk dönüştürülmüş metni sağlamış oluyor.

<?php
header("Content-Type: text/html;charset=UTF-8");
$data = file_get_contents('http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=hello%20world&langpair=en%7Cit''');
$data = json_decode($data);
echo $ata->responseData->translatedText;
?>

İşte buradaki değeri kolaylıkla alabildik. Yanlız şuanki programımız sabit değer alan merhaba dünya ile çalışıyor. İşte ben buna farklı bir değer göndermek istiyorsam.burdaki q ile belirtilen parametreyi değiştirmem gerek bunun için bir tane değer tanımlayalım.

Bu değer  thank you - teşekkür ederim olsun işte burada q yerine bizim kullanacağımız parametrik değeri girmemiz lazım.Yalnız dikkat edersek adres çağırmak suretiyle parametreyi gönderiyoruz. Yani get metodu ile bu durumda buraya ekleyeceğimiz parametrenin url ye uyum sağlayabilmesi için urlencode işlemine tabi tutulması gerekiyor. Bu işlemi yaptıktan sonra ve sayfamızı çağırdıktan sonra google bize teşekkür edrimin italyancasını döndermiş oluyor.

İşte bu kısma tekrar bakarsak parametrik hale getirdik yalnız dillerimiz şuan sabit dillerimizide parametrik hale getirmek için buradaki en le belirtilen dil kaynak yani hangi dilden dönüşüm yapılacağı it le belirtilen kısım ise hangi dile dönüştürüleceğini yani hedef dilimiz.

Burdaki dilleri yine elle tanımlamak suretiyle buradaki sabit değerleri iptal ederek kendi tanımladığım değişkenler haline dönüştürüyorum. İşte yine gelip sayfamı çağırdığımda kodlarımda mantıken bir değişiklik olmadığından bana aynı sonucu üretiyorlar. Burdaki dil değerlerini aslında ülke kodlarıyla bağdaştırabilirsiniz Yalnız Google un bize sunduğu dil kodlarını doğru olarak bilmek için Google ın kendi değişkeni olan languagedeğişkenlerinden öğrenebilirisniz. Javascript olarak biz aslında bu değerleri döndüriyor.

google.language.Languages

Buraya erişmek için tıkladığımda tek tek dillerin sıralı bir biçimde gittiğini görüyorum.

Şuan için bu listedeki dillerin hepsini desteklemiyor Desteklediği dilleri önceki sayfada zaten görmüştük. Mesela ingilizce değilde almanca çevirmek için de parametresini göndermeliydik. İtalyanca yerine Almanca için. Şuan için yaptığımız işlem yine sabit sabit değerlele çalıştığını söyleyebiliriz. Bunu function yani fonksiyon haline dönüştürmek için bir fonksiyon oluşturmamızda mümkün

<?php
header("Content-Type: text/html;charset=UTF-8");
function googleTranslate($str, $lang1, $lang2){
    $data = file_get_contents('http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=".urlencode($str)."&langpair=".$lang1."%7C'.$lang2');
    $data = json_decode($data);
    return $ata->responseData->translatedText;
}
echo googleTranslate('thank you', 'en', 'de');
?>
Daha sonra burda okuduğumuz değeri fonksiyon ile çağırmak için İngilizceden almancaya dönüştümesini sağlamak suretiyle fonksiyonumuzu İşte Sayfayı çağırdığımızda Danke yani Almancadaki teşekkür ederimi görmüş oluyoruz.

Böylelikle php ile google translate apisini kullanarak hazırladığımız scriptlere şuan için Türkçe yi desteklememiş olsa bile bir çok dile dönüşümü gerçekleştirebiliriz. Mesela kişinin sayfasına girdiği örnek olarak emlak bilgisindeki özellikler mesela havuzlu olması gibi parametreleri ingilizce girdiğini düşünürsek burda desteklediği tüm dillere dönderip. Doğal olarak sayfamızın tüm dilleri desteklemesini sağlayabiliriz. Zaten bu gibi sayfalarda çok fazla değişken yoktur. İşte böylelikle hazırladığımız çok basit fonksiyonla google un translate apisini kullanmış olduk


Sitenize Aşağıdaki kodlari ekleyerek videoyu izletebilirsiniz
Bu Sayfayı İmleyebilirsiniz : Bookmark and Share
Videoya Henüz Yorum Yazılmamış
İlgili Dosya Bulunmamaktadır
Adınız, Soyadınız
Mail
Telefon
Adres
Referans
Sitede bulunan Tüm dökümanların izinsiz kopyalanması yasaktır. ProgramlamaTv.com 2008
Hizmet Sözleşmesi - Gizlilik İlkesi