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.
|