
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