Beranda > J2ME > Menggunakan Google Translate dengan J2ME

Menggunakan Google Translate dengan J2ME

Menggunakan Google Translate dengan J2MEAnda pernah menggunakan Google Translate? Cukup canggih bukan? Tidak hanya mampu menerjemahkan kata demi kata, melainkan Google Translate juga mampu menerjemahkan satu kalimat, bahkan sebuah website penuh. Bagaimana bisa begitu? Aah, sudahlah. Tidak usah terlalu dipikirkan. Begitulah Google, serba bisa.

Tetapi yang menjadi tantangan adalah, bagaimana memiliki fitur penerjemahan seperti dalam Google Translate di dalam software buatan kita? Benar, inilah yang akan kita bahas kali ini. Kita akan menggunakan Google Translate dengan J2ME. Artikel kali ini akan menunjukkan kepada Anda:

  1. Bagaimana melakukan koneksi HTTP ke sebuah website dengan J2ME
  2. Bagaimana memanggil Google Translate dengan J2ME

Ingin tahu lebih detil? Baca terus artikel ini.

Konsep Translate ME

Google telah menyediakan Google AJAX Language API. Library ini secara umum diperuntukkan bagi aplikasi web based., karena menggunakan Javascript (diutamakan AJAX). Tetapi untunglah, Google juga menyediakan API-nya untuk perangkat non JavaScript. Oleh karenanya, kita jadi bisa menggunakannya dengan J2ME.

Silakan coba klik link ini, sebaiknya Anda set agar browser Anda mengijinkan pop-up atau Anda tidak akan melihat sebuah contoh yang baik sekali. Kalau repot, cobalah klik kanan, kemudian pilih Open in New Tab. Perhatikanlah bahwa Google telah menerjemahkan sebuah String yang saya masukkan ke dalam parameter ‘q’, dari bahasa inggris (kodenya ‘en’) ke bahasa indonesia (kodenya ‘id’). Hasilnya disajikan dalam format JSON. Nah, setelah melihat contoh tersebut, apa ide Anda?

Jika Anda cukup memiliki rasa ingin tahu (seperti saya), tentunya Anda akan berpikit seperti saya. Kira-kira begini, “Kalau begitu, berarti saya bisa dong bikin software penerjemah dengan J2ME tanpa harus mengelola database kata-kata bahasa lain berikut tata bahasanya“. Saya jawab, “Ya, saya akan tunjukkan caranya kepada Anda”. Software ini akan saya sebut TranslateME (hanya untuk memudahkan).

Cara kerjanya begini:

  1. TranslateME akan meminta 3 input: bahasa asal, bahasa yang dituju dan String kalimat yang ingin diterjemahkan.
  2. TranslateME akan mengirimkan HTTP request dengan metode GET ke alamat URL http://ajax.googleapis.com/ajax/services/language/translate?
  3. Dalam HTTP request tersebut TranslateME menyertakan parameter:
    • v (versi) berisi 1.0. Ini adalah versi Google AJAX Translate
    • q (query) berisi String kalimat yang ingin Anda translate
    • langpair berisi kode bahasa asal dan bahasa yang dituju, dipisahkan dengan tanda |. Misalnya en|id artinya terjemahkan dari bahasa inggris ke bahasa Indonesia.
  4. TranslateME menangkat response dari Google yang berrupa hasil translasi-nya (jika berhasil) dalam format JSON

Proof of Concept

Yang akan saya sampaikan kali ini hanya sampai nomor 3. Untuk implementasi nomor 4, Anda perlu mempelajari Parsing JSON dengan J2ME (atau Blackberry; Blackberry juga menerapkan J2ME jadi tidak banyak perbedaan).

Anggap input sudah diberikan, yaitu bahasa asal: inggris, bahasa yang dituju: bahasa Indonesia, dan ada kalimat yang ingin diterjemahkan. Selanjutnya kita akan membuat HTTP request ke alamat yang telah ditentukan. Caranya adalah:

  1. Membuat instance dari class HttpConnection, menentukan request method sebagai GET dan menentukan request property “Connection” bernilai “Close”.
    private HttpConnection con;
    con = (HttpConnection)
     Connector.open("http://ajax.googleapis.com/ajax/services/" +
     "language/translate?v=1.0&q=" + URLEncoder.encode(input) + "&" +
     "langpair=" + this.from + "|" + this.to);
     con.setRequestMethod(HttpConnection.GET);
     con.setRequestProperty("Connection", "close");
  2. Mengambil hasilnya jika response code bernilai OK.
    InputStream inputstream = null;
     if (con.getResponseCode() == HttpConnection.HTTP_OK) {
     inputstream = con.openInputStream();
     int length = (int) con.getLength();
     if (length != -1) {
     byte incomingData[] = new byte[length];
     inputstream.read(incomingData);
     str = new String(incomingData);
     } else {
     ByteArrayOutputStream bytestream =
     new ByteArrayOutputStream();
     int ch;
     while ((ch = inputstream.read()) != -1) {
     bytestream.write(ch);
     }
     str = new String(bytestream.toByteArray());
     bytestream.close();
     }
     if (inputstream != null) {
     try {
     inputstream.close();
     } catch (Exception error) {
     /*log error*/
     }
     }
     if (con != null) {
     try {
     con.close();
     } catch (Exception error) {
     /*log error*/
     }
     }
    }
    
  3. Membuatnya dalam class yang extends Thread atau mengimplementasikan interface Runnable, agar tidak terjadi blocking ketika Handheld Device melakukan koneksi internet. Kondisi blocking adalah kondisi seperti hang ketika device mencoba melakukan akses ke resource tertentu yang memerlukan waktu untuk menunggu jawaban.
    public class GoogleTranslate extends Thread {
  4. Panggil class di atas, yang saya sebut GoogleTranslate, dengan MIDlet.
    public void startApp() {
     GoogleTranslate gt = new GoogleTranslate(GoogleTranslate.LANG_INDONESIA, GoogleTranslate.LANG_ENGLISH, this);
     gt.setInput("Siapakah nama vampir kesukaan Anda?");
     new Thread(gt).start();
     }

Begitulah secara garis besar proses yang perlu dilakukan. Untuk lebih jelasnya, silakan download contoh kode program lengkap yang saya sertakan (link ada di bagian bawah artikel ini). Anda bisa mencoba menjalankan MIDlet (Test.java) dengan simulator. Saya sarankan Anda menggunakan Netbeans, karena MIDlet yang saya tulis tidak pernah menampilkan object Screen apapun, tetapi hanya menulis hasilnya dengan System.out.println(). Jika Anda menggunakan Netbeans, Anda akan dapat melihat hasilnya di window Output beberapa saat setelah Anda klik tombol Launch. Seperti screenshot saya di bawah ini. (Klik untuk memperbesar).

Screenshot Google Translate dengan J2ME

Silakan download Contoh kode program J2ME menggunakan Google Translate.

  1. kelly
    Oktober 4, 2009 pukul 6:09 am

    kalo bikin translator di bb jde codenya sama ga???

  2. kelly
    Oktober 4, 2009 pukul 6:38 am

    tolong dijawab ya pak..soalnya tu penting bgt buat saya , oh ya perkenalkan saya kelly, mahasiswi jurusan teknik informatika di uieu pak…

    thx

  3. Oktober 4, 2009 pukul 8:40 am

    Hmm, nampaknya sama saja mbak. Belum saya test sih. Secara umum, class-class yang digunakan adalah class-class yang ada juga di Blackberry. Secara umum (kecuali beberapa, termasuk class-class untuk GUI), kita bisa menggunakan class J2ME pada project Blackberry Java. Kalau ingin tahu lebih dalam, sebaiknya dicoba saja mbak. Jangan lupa, nyalakan simulator MDS-nya, juga koneksi internetnya.

  4. aci
    November 2, 2009 pukul 5:29 am

    kalo pake Blackberry gimana pak? apa build pake ganymede n BJDE, tolong kasi contoh donk pak.

    terima kasih

  1. No trackbacks yet.

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: