Tag

, , , ,


Qt Linguist digunakan untuk membuat program support Multilanguage. Hampir semua bahasa dapat didukung, tergantung kita, bahasa apa yang akan kita gunakan untuk program kita, Bahasa Indonesia, Nahasa Inggris, Latin, Jepang ataukah Bahasa daerah Anda sendiri. Penterjemahan program masih dilakukan secara manual, yakni memasukkan satu per-satu terjemahan dari property Text dari komponen-komponen visual, misal Menu, Label dan lain sebagainya. Harapannya sih Qt dapat mengintegrasikan dengan Server penterjemah (mis Google Translate) untuk menterjemahkan Program yang kita buat secara otomatis.
Qt Linguist dilengkapi dengan 3 binary utama yakni:

  • linguist yang digunakan sebagai editor penterjemahan,
  • lupdate untuk membuat File *.ts yakni untuk mengupdate pilihan bahasa yang ditambahkan ke program.
  • lrelease untuk membuat file *.qm yakni untuk merelease terjemahan dari program tersebut.

File-file dengan extensi *.ts adalah file XML yang berisi terjemahan bahasa dari text-text yang berada dalam fungsi tr(“”) dalam program kita. sedangkan *.qm adalah terjemahan yang telah siap realese/siap pakai oleh program.

Sebelum diterjemahkan

Sebelum diterjemahkan

Sebelumnya, dalam pembuatan program, agar dapat diterjemahkan oleh QtLinguist. Pada setiap Caption, atau property text dari sebuah komponen harus diisi dengan QString yang diambil dari translator yakni dengan methode tr(), misal:

labelAlamat->setText(tr("Alamat"));

Jadi, agar semua bagian program kita dapat diterjemahkan dengan baik, maka perhatikanlah dengan teliti agar pada saat inisialisasi property yang menggunakan QString, String yang akan dijadikan nilainya tersebut sebelumnya harus melalui methode tr(“*”) terlebih dahulu.

Sampai disini program kita masih belum bisa diterjemahkan. Jika dijalankan maka program kita masih menggunakan bahasa default pembuatannya. Untuk itu, perlu ditambahkan beberapa baris syntak untuk dipangil sebelum objek program dibuat (biasanya sebelum objek program dibuat pada fungsi main program) yakni:

 #include <QTranslator>

yang diinclude kan pada program, agar methode2 yang digunakan untuk penterjemaha dikenal oleh program.

     QTranslator translator;

buat objeck dari QTranslator, tanpa harus mamiliki parent.

     translator.load("hellotr_la");

Me-Load/memanggil file yang berisi terjemahan dalam konteks contoh di atas yakni file hellotr_la.qm. Detailnya akan dijelaskan pada akhir tulisan ini.

     app.installTranslator(&translator);

Untuk menginstallasi Terjemahan yang digunakan.

Nah, barulah setelah itu kita dapat mendeklarasikan dan membuat objek program yang didalamnya telah diatur sedemikian rupa agar dapat diterjemahkan nanti.

Jika kita menggunakan lebih dari 2 bahasa (selain bahasa saat pembuatan program dan satu bahasa lainnya) mislnya Bhs. Inggris sebagai bahasa pembuatan program, dengan bahasa tambahan yakni: Indonesia dan Jepang. Maka, akan ada 2 file terjemahan yang akan dibuat misalnya:
hellotr_id.ts dan hellotr_jp.ts

agar saat user menggunakannya pada OS yang menggunakan bahasa tersebut dapat langsung menikmati terjemahannya, maka pada saat memanggil file *.qm nya cukup sampai pada tanda undersore. misal:

     translator.load("hellotr_");

Selain penambahan pada fungsi main program, kita juga perlu menambahakan pada project filenya (file *.pro) yakni misalnya:

 SOURCES        = main.cpp
 TRANSLATIONS 	= hellotr_la.ts

Penambahan pada file *.pro ini tujuannya agar file *.ts dan *.qm nya dapat digenerate oleh lupdate.
File *.ts inilah yang akan digunakan untuk membuat terjemahan program. Untuk membuat file dengan extensi *.ts ini kita memerlukan lupdate untuk mengupdate language file dalam project kita. Untuk menjalankannya yakni misalnya:

$ lupdate hellotr.pro

Jika di list, akan terbentuk file-file dengan extensi *.ts sejumlah bahasa yang kita tentukan pada file *.pro project kita. Dalam konteks diatas, maka seharusnya akan terbentuk sebuah file yakni hellotr_la.ts. Isi file ini yaitu berupa file XML yang didalamnya terdapat terjemahan dari masing2 text yang ada dalam program (tentunya hanya text2 yang berada dalam methode tr(“”)).
Teks-teks tersebut, belum diterjemahkan, dan masih menggunakan bahasa Asalnya yakni bahasa saat pembuatan program. Untuk menterjemahkan, kita perlu menjalankan program linguist. Untuk menjalankannya yakni:

$ linguist [file.ts]

misal:

$ linguist hellotr_la.ts

Selanjutnya kita akan dibawa ke jendela Qt Linguist untuk melakukan proses penterjemahan. Detailnya dapat dilihat di Screenshot.

Qt Linguist

Qt Linguist

Selanjutnya kita perlu membuat file *.qm yang akan dipanggil oleh program. untuk membuatnya kita perlu menjalankan lrelease. Misalnya:

$ lrelease hellotr.pro

Maka seharusnya akan terbuat sebuah file *.qm yakni hellotr_la.qm. Untuk mengujicoba, compile dan run program, maka terjemahan bahasanya akan langsung digunakan.

Contoh Program Jadinya:


Setelah diterjemahkan

Hasil

#include <QApplication> #include <QPushButton> #include <QTranslator> int main(int argc, char *argv[]) { QApplication app(argc, argv); QTranslator terjemah; terjemah.load("hellotr_id"); app.installTranslator(&terjemah); QPushButton btn(QPushButton::tr("Hello world!")); btn.resize(100, 30); btn.show(); return app.exec(); }

dengan terjemahan:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.0" language="id">
<context>
<name>QPushButton</name>
<message>
<location filename="main.cpp" line="13"/>
<source>Hello world!</source>
<translation>Halo dunia!</translation>
</message>
</context>
</TS>

Video tutorial: