at 7:56 PM

Google translate - Perl


Didunia internet siapa yang tak mengenal Google, rasanya mungkin ga ada. Dan mungkin jika ada sepertinya anda baru
mengenal internet. LOL.
Banyak hal yang membuat Google begitu tangguh didunia internet (ga cuma disearch engine tapi hampir disemua aspek, bahkan baru-baru ini Google meluncurkan inovasi baru yaitu Google Voice yang diklaim sebagai metode baru dalam komunikasi.
Salah satu yang fitur yang menurut saya menjadikan google powerfull adalah tersedianya Google Api, yang membuat kita (terutama programmer) dapat dengan mudah berinteraksi dengan Google product.
Ini yang akan saya bahas khususnya Google Translate Api, dimana dengan menggunakan sebuah kode singkat kita bisa memanfaatkan Google Translate sebagai kamus yang mencakup seluruh bahasa didunia (tentu saja yang udah difasilitasi oleh Google).

Untuk Google translate kita bisa menggunakan alamat ini http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=$query&langpair=$fromTo


  • $query
    merupakan bahasa yang ingin kita translate.

  • $fromTo
    adalah bahasa yang ingin kita translate ke bahasa lainnya, formatnya adalah "bahasaAwal|bahasaTujuan" pembatas Pipe (|).


Misalkan kita ingin melakukan translate kata "home" dari bahasa Inggris(en) ke Indonesia(id), maka urlnya akan menjadi begini http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=home&langpair=en|id. Format output dari Url tersebut adalah begini:
{
"responseData":
{"translatedText":"rumah"},
"responseDetails": null,
"responseStatus": 200
}


Output inilah yang akan kita coba parsing dengan bahasa Perl, berikut contoh kodenya :
#!/usr/bin/perl
if($#ARGV lt 0) {
print "Need 2 argument.\nUsage: $ARGV .\n";
print "Ex: $ARGV \"en.id\" \"keep moving\".\n";
exit;
}
use LWP::Simple;
$argS=0;
$fromTo="en|id";
if($ARGV[0] =~ /\./) {
$fromTo=$ARGV[0];
$fromTo=~ s/\./\|/;
$argS=1;
}
foreach $argNum ($argS .. $#ARGV) {
$query=join " ", $query, $ARGV[$argNum];
}
$ret= get("http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=$query&langpair=$fromTo");
if($ret =~ /200/) {
@retArr=split(/:/,$ret);
$retFinal=substr(@retArr[2],0,-20);
print "$retFinal";
}else{
print "Check your input: Error..!\n";
}

Penjelasan:

  • baris 1 untuk memberitahukan interpreter yang kita gunakan yaitu Perl.

  • baris 2 -6 untuk melakukan cek terhadap kata dari kalimat yang ingin ditranslate, jika tidak ada maka berikan warning, exit.

  • baris 7 , kita menggunakan module LWP:Simple untuk melakukan akses ke internet.

  • baris 8 dan 9 , merupakan nilai default untuk proses berikutnya.

  • baris 10 kita melakukan cek pada argumen yang pertama (indeks 0, Perl memulai indeks array dari NOL) terhadap karakter titik, jika ada maka argument pertama dijadikan acuan translate bahasa (baris 11), kemudian tanda titik kita ganti dengan tanda Pipe (baris 12), yang berarti kalimat yang akan ditranslate dimulai dari argument ke dua(indeks 1) (baris 13).

  • baris 15 - 17, mengambil semua argument dimulai dari $args hingga panjang semua argument yang diberikan($#ARGV), yang kemudian semuanya disatukan (join) pada variabel $query.

  • baris 18, melakukan koneksi ke Google Translate, nilai baliknya dimasukkan ke variabel $ret

  • baris 19, cek nilai $ret, jika ada angka 200 berarti format url yang diberikan sesuai, jika tidak berarti ada format yang salah pada argument (misalkan bahasa yang ditranslate tidak ada) (baris 23 - 25).

  • baris 20, memecah nilai $ret dengan pemisah : dan dimasukkan ke array @retArray.

  • baris 21, membuang karakter pada @retArray yang ke2 20 karakter dari belakang (Lihat dibawah), yang kemudian dimasukkan ke variabel $retFinal, yang merupakan hasil dari translate bahasa yang diinginkan, kemudian mencetak ke monitor (baris 22).


Keterangan parsing output dari Google Translate:

Output Total : {"responseData": {"translatedText":"rumah"}, "responseDetails": null, "responseStatus": 200}

  • @retArray[0] → {"responseData"

  • @retArray[1] → {"translatedText"

  • @retArray[2]"rumah"}, "responseDetails" → 27 karakter, dan kita buang 20 karakter dari belakang.

  • @retArray[3] → null, "responseStatus"

  • @retArray[3] → 200}


Sebuah translator dengan yang dilabelin Powered By Google Translate, telah berhasil kita buat.

Contoh penggunaan:
Translate dari Inggris ke Indonesia (default) :
$ gootranslate who are you
Output → "siapa kau?"
Translate dari Indonesia ke Inggris :
$ gootranslate id.en bagaimana menurut mu
Output →"what do you think"
Translate dari Inggris ke Jepang :
$ gootranslate en.ja i love you
Output → "わたしは、あなたを愛しています"

Simpel bukan, meski terlalu panjang kodenya, atau malah bingung. Kalau mo lebih simple lagi kita bisa menggunakan perintah shell seperti curl dipadu dengan sed, dan hanya 1 baris lho, tapi tentu saja lebih membingungkan. Check this out

$ curl -s \
'http://ajax.googleapis.com/ajax/services/language/translate?=1.0&q=rumah&langpair=en|id' | \
sed 's/.*{"translatedText":"\([^"]*\)".*/\1\n/'



Tulis Komentar dengan akun Facebook Anda.

1 comments:

Post a Comment