Proyek Penerjemahan ke Bahasa Indonesia
(Indonesian Translation Project)

Menerjemahkan file-file PO

Dokumen ini dibuat oleh Priyadi Iman Nurcahyo, dengan sebagian menyadur dari KDE Internationalization HOWTO.

Sebagian besar free software menggunakan mekanisme gettext untuk memudahkan penerjemahan. Dengan gettext, programmer dapat menandakan teks-teks mana saja yang perlu untuk diterjemahkan. Kemudian dari source tersebut dapat diekstrak teks-teks tersebut ke dalam suatu file untuk memudahkan proses penerjemahan. File ini umumnya disebut file PO atau potfiles, biasanya berakhiran po. Anda dapat mengedit file-file PO dengan menggunakan editor teks biasa seperti vi, pico, joe dan sebagainya.

Sebuah file PO biasanya memiliki format seperti di bawah ini:

# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR Free Software Foundation, Inc.
# FIRST AUTHOR , YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 1998-01-02 15:01+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: ENCODING\n"
#: kdecore/kapp.cpp:407 kdeui/kcolordlg.cpp:469 kdeui/kcontrol.cpp:34
#: po/texts.cpp:43
msgid "Help"
msgstr ""
#: kdecore/kapp.cpp:412
msgid "About "
msgstr ""
#: kdecore/kapp.cpp:416 kdecore/kapp.cpp:437
msgid "About KDE"
msgstr ""
......

Header dari PO digunakan untuk memudahkan mengidentifikasi penerjemah kalau-kalau programmer ingin menghubungi penerjemah.

Di dalam file PO anda akan menemukan tanda "#" diikuti oleh nama file dan nomor baris. Ini digunakan untuk menunjukkan di mana teks tersebut berasal (dari file mana, baris ke berapa).

Untuk menerjemahkan kata "Help" pada PO di atas, anda harus mengisikan terjemahan kata "Help", yaitu "Bantuan", di belakang msgstr. Hasilnya seperti ini:

#: kdecore/kapp.cpp:407 kdeui/kcolordlg.cpp:469 kdeui/kcontrol.cpp:34
#: po/texts.cpp:43
msgid "Help"
msgstr "Bantuan"

Terkadang anda akan menemukan pesan-pesan yang jauh lebih panjang dari contoh di atas, seperti ini:

#: kdecore/kapp.cpp:439
msgid ""
"The KDE Desktop Environment was written by the KDE team.\n"
"\n"
"Please send bug reports to kde-bugs@kde.org.\n"
"\n"
"\n"
"KDE was developed with Qt, a cross-platform GUI library.\n"
"\n"
"Qt is a product of Troll Tech (http://www.troll.no, info@troll.no).\n"
"Qt may be used freely to develop free software on the X Window
System.\n"
msgstr ""
"KDE Desktop Environment dibuat oleh tim KDE.\n"
"\n"
"Kirimkan laporan bug ke kde-bugs@kde.org.\n"
"\n"
"\n"
"KDE dibuat dengan Qt, library GUI yang cross-platform.\n"
"\n"
"Qt adalah produk dari Troll Tech (http://www.troll.no, info@troll.no).\n"
"Qt dapat digunakan secara bebas untuk membuat software bebas di dalam 
X Window System.\n"

Anda menemukan lagi kata-kata msgid dan msgstr, namun kali ini diikuti oleh teks yang lebih panjang. Tidak ada keharusan supaya layout dari terjemahan sama, asalkan informasi yang sama sampai ke pengguna. Biasanya, teks yang panjang digunakan pada boks dialog atau teks --help.

Kasus lainnya adalah tombol akselerator:

#: po/texts.cpp:48
msgid "View"
msgstr ""
#: po/texts.cpp:49
msgid "&View"
msgstr ""

Yang pertama adalah View tanpa akselerator dan yang kedua adalah View dengan akselerator. Keduanya tampak sebagai View, namun yang kedua dengan V yang digarisbawahi untuk digunakan dengan ALT-V. Jadi, dimana "&" harus diletakkan di dalam terjemahan? Jawabannya tidaklah mudah, karena hanya satu huruf dari beberapa menu yang berfungsi sebagai akselerator, tidak boleh ada dua menu yang memiliki tombol akselerator yang sama. Dalam Bahasa Indonesia, "View" bisa berarti "Tampilan", anda dapat menggunakan huruf "T" disini selama huruf "T" belum dipakai oleh menu lainnya. Tanda "&" sebagai akselerator berlaku pada proyek KDE, sedangkan GNOME menggunakan karakter "_".

Hal lain yang cukup penting adalah string terformat:

#: app.cpp:416
#, c-format
msgid "file %s not found, tried %d times"
msgstr ""

Jika anda berpengalaman dengan printf(), tentunya anda tahu permasalahannya. Teks tersebut akan diterjemahkan dan waktu akan dimasukkan ke dalam teks tersebut. Anda tidak boleh membalikkan urutan "%s" dan "%d" pada teks tersebut, sebagai contoh, anda tidak boleh menggunakan terjemahan seperti ini: "Telah dicoba %d kali, tapi file %s tetap tidak ditemukan", tidak boleh karena urutannya adalah "%d" kemudian "%s", namun pada program aslinya, urutannya adalah "%s" kemudian "%d".

Kebanyakan software akan selalu dikembangkan oleh pembuatnya, oleh karena itu, update file PO harus dilakukan secara periodik. Jika sebuat paket software telah diterjemahkan, kemudian software tersebut mengalami perkembangan, maka hasil terjemahan kemungkinan besar menjadi tidak konsisten dengan sourcenya. Biasanya programmer akan menggunakan aplikasi msgmerge untuk menggabungkan hasil terjemahan dari versi lama dan hasil dari pengekstrakan teks dari versi baru. Biasanya tidak akan ada masalah, namun terkadang msgmerge mengalami kebingungan dan menandai sebuah terjemahan sebagai "fuzzy":

#: kfmprops.cpp:697
#, fuzzy
msgid "Run normally"
msgstr "Kirim sinyal"

Terjemahan ini hanyalah tebakan dari msgmerge. Biasanya tebakan ini tepat, namun terkadang salah. Jika salah anda harus memperbaiki terjemahan tersebut. Benar ataupun salah, anda harus menghapus baris ", fuzzy" pada terjemahan tersebut, karena msgfmt akan mengabaikan terjemahan yang ditandai sebagai "fuzzy".

Anda juga akan menemui terjemahan yang tidak terpakai, seperti:

#~ msgid "Do you really want to quit?"
#~ msgstr "Apakah anda benar-benar ingin keluar?"
#~ msgid "&How can I ..."
#~ msgstr "&Bagaimana saya dapat ...?"

Terjemahan ini dulunya dipakai, namun saat ini tidak terpakai oleh aplikasi, atau (biasanya) teks-nya telah diubah oleh programmer.

Copyright © Linux Indonesia webmaster