Akhirnya selesai juga saya mengerjakan tugas mata kuliah yang menguras waktu dan kata-kata ini. Walau akhirnya harus di revisi lagi sebelum dikumpulkan. Daripada mumet ngurusin laporan yang satu ini, lebih baik saya posting aja di blog kesayangan saya ini. Kali ini saya mau posting tentang konsep web multi language. Web multi language adalah web yang mendukung multi bahasa dari berbagai belahan dunia. Sampai saat ini, ada 2 cara yang saya ketahui untuk membuat web multi language. Yang pertama dengan menggunakan cara manual. Manual disini maksudnya dengan membuat beberapa konten dengan bahasa yang berbeda dan disimpan di dalam di database. Kemudian ditampilkan sesuai pilihan user. Sedangkan cara yang kedua dengan menggunakan metode otomatis, yaitu dengan menggunakan sebuah mesin yang berisi sebuah algoritma learning untuk menterjemahkan kata-kata dan menyusunnya sesuai dengan grammar yang sesuai.
Dan sampai saat ini, masih sangat sulit untuk membuat sebuah mesin learning seperti yang saya sebutkan di atas. Namun, kita bisa memanfaatkan Google Translate yang sudah disediakan oleh Google. “Tetapi bagaiamana jika ingin menterjemahkan sebuah isi website secara otomatis tanpa harus meng-copy-kan isinya ke Google Translate?”. Solusinya, kita bisa menggunakan Google API Translate yang sudah dibuatkan oleh om Google. Setelah kemarin main-main ke webnya mas Sinaryuda, akhirnya saya menemukan sebuah helper google translate. Nah, kali ini saya akan menjelaskan cara untuk mengintegrasikan CodeIgniter dengan Google API Translate.
1. Seperti biasa, siapkan dulu file-file framework CodeIgniter di direktori htdocs web server masing-masing.
2. Buka text editor kesayangan ana, dan copy-kan script dibawah ini, dan simpan dengan nama google_translate_helper.php pada folder helper.
if ( ! function_exists('google_translate')) { function google_translate($text,$d = '',$s = 'en',$f='text') { if($d=='') $d = $s; if($d != $s){ $lang_pair = urlencode($s.'|'.$d); $q = rawurlencode($text); // Google's API translator URL $url = "http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=".$q."&langpair=".$lang_pair."&format=".$f; // Make sure to set CURLOPT_REFERER because Google doesn't like if you leave the referrer out $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_REFERER, base_url()); $body = curl_exec($ch); curl_close($ch); $json = json_decode($body, true); $tranlate = $json['responseData']['translatedText']; echo $tranlate; } else { echo $text; } } }
3. Setelah itu, kita buat sebuah controller dengan nama tes.php, dan copy-kan script di bawah ini :
class tes extends CI_Controller { function __construct() { parent::__construct(); $this->load->helper(array('url','form')); $this->load->model('berita_model'); $this->load->database(); } function index() { $data['berita']=$this->berita_model->tampil_berita(); $this->load->view('isi_depan',$data); //$data['lang'] = $this->session->userdata('language'); //$this->load->view('translate',$data); } function detail() { $id = $this->uri->segment(3); $data['berita']=$this->berita_model->detail_berita($id); $data['lang'] = $this->session->userdata('language'); $this->load->view('detail',$data); //$data['lang'] = $this->session->userdata('language'); //$this->load->view('translate',$data); } function languages() { extract($_POST); $id=$this->input->post('det'); $this->session->set_userdata('language', $dlang); echo "<meta http-equiv='refresh' content='0; url=".base_url()."index.php/tes/detail/".$id."'>"; } }
4. Jangan lupa untuk membuat sebuah file model, yang berisikan script seperti di bawah ini :
Class berita_model extends CI_Model{ function __construct() { parent::__construct(); } function tampil_berita() { $q = $this->db->query("select * from berita"); return $q; } function detail_berita($id) { $q = $this->db->query("select * from berita where id_berita=$id"); return $q; } }
5. Karena pada contoh kali ini, saya mencoba untuk menterjemahkan konten dari sebuah isi web berita, maka saya buatkan 2 buah view. View yang pertama untuk menampilkan daftar berita, dan view yang kedua untuk menampilkan detail berita. Nah, pada view kedua inilah kita akan menterjemahkan konten berita tersebut ke bahasa yang lainnya. Isi view yang pertama, kira-kira seperti di bawah ini dan simpan dengan nama isi_depan.php :
<table> <?php foreach($berita->result_array() as $b) { echo "<tr><td><a href='".base_url()."index.php/tes/detail/".$b['id_berita']."'>".$b['judul']."</a></td></tr>"; } ?> </table>
Copy-kan script di bawah ini untuk view yang kedua, simpan dengan nama detail.php :
<script language="javascript" type="text/javascript"> function lanfTrans(lan) { switch(lan) { case 'en': document.getElementById('dlang').value='en';document.langForm.submit(); break; case 'fr': document.getElementById('dlang').value='fr'; document.langForm.submit(); break; case 'es': document.getElementById('dlang').value='es'; document.langForm.submit(); break; case 'id': document.getElementById('dlang').value='id'; document.langForm.submit(); break; } } </script> <body> <?php echo form_open('tes/languages/',array('name'=>'langForm','id'=>'langForm')); $id = $this->uri->segment(3); ?> <input type="hidden" name="dlang" id="dlang"> <input type="hidden" name="det" id="det" value="<?php echo $id; ?>"> <input type="hidden" name="current" id="current" value="<?php echo substr(uri_string(),1,strlen(uri_string()));?>"> <img src="<?php echo base_url()?>images/fr.jpg" onClick="lanfTrans('fr');" title="French"> <img src="<?php echo base_url()?>images/en.jpg" onClick="lanfTrans('en');" title="English"> <img src="<?php echo base_url()?>images/sp.jpg" onClick="lanfTrans('es');" title="Spanish"> <img src="<?php echo base_url()?>images/ind.jpg" onClick="lanfTrans('id');" title="Indonesia"> <?php echo form_close(); ?> </body> <div id="soal"> <table> <?php foreach($berita->result_array() as $b) { google_translate($b['judul'],$lang,"id","text"); echo "<br><br>"; google_translate($b['isi_berita'],$lang,"id","text"); } ?> </table>
Nah, gampang kan penggunaanya? Google API Translate ini masih mempunyai kekurangan, yaitu tidak akan menterjemahkan konten yang lebih dari 300 kata. Ini bisa diakali dengan membagi konten tersebut per 300 kata :D. Di bawah ini sudah saya sediakan demo file-nya dan link untuk mendownload contoh kode lengkapnya. Semoga bisa bermanfaat untuk rekan-rekan yang lagi berkutat dengan proyek yang berhubungan dengan Google API Translate.
Happy Blogging and Keep Coding
Cheerrrss….!!!!
Om/Mas/Kakak (*pilih salah satu) Gede Lumbung
di tutorial ini kita pake’ database ya? boleh tau detail dari tabel yg digunakan untuk tutorial ini ga?
Thx b4
databasenya memakai tabel berita sederhana aja mas…
gpp kok kalau database dan fieldnya diganti…
demonya gak ke translate…katanya sih sekarng google translate berbayar…kalo memang benar bagaimana mengakali hal ini.? ada gagasan?
weleeehhh…
saya baru tau kalo skarang google translate berbayar…
kalo gtu, ayook sama2 cari solusinya.. 😀
Mas,
qo keluar pesan ini??
Fatal error: Call to undefined function google_translate() in C:\xampp\htdocs\web\application\views\detail.php on line 72
file google_translate_helper.php di-copy dulu ke folder helper brow…
Fatal error: Unknown function: curl_init() in F:\Xampp\xampp\htdocs\adha-internasional\trunk\application\helpers\google_translate_helper.php on line 51
kenapa ini bro?
A PHP Error was encountered
Severity: Notice
Message: Undefined property: tes::$session
Filename: controllers/tes.php
Line Number: 23
Fatal error: Call to a member function userdata() on a non-object in C:\xampp\htdocs\translate\application\controllers\tes.php on line 23
ini kenapa ya bro?
udh ketemu masalahnya masbro ???
ini masalahnya karena library session belum di load brow
$this->load->library(“session”);
mantap bos!
kok muncul pesan gini ya mas : “Fatal error: Maximum execution time of 30 seconds exceeded in C:\xampp\htdocs\ie\system\helpers\google_translate_helper.php on line 17″
line 17 : $body = curl_exec($ch);
Mohon bantuannya…terima kasih
API utk google translate sekarng sudah tidak bisa digunakan lagi
gan kalo bahasanya udah di translate ke bahasa lain apakah kalimatnya benar atau acak-acakan gan ?
makasih gan 😀