Pengolahan teks multilingual untuk mekanisme yang telah dipersatukan serta yang dapat diperluas atau dibentangkan.

Kenichi Handa, Mikiko Nishikimi, Satoru Tomura, Naoto Takahashi

Electrotechnical Laboratory
Umezono 1-1-4, Tsukuba, 305 JAPAN

Ringkasan

Pokok persoalan yang terpenting untuk sistem pengolahan teks multilingual adalah (1) mekanisme yang telah dipersatukan untuk bahasa multipel dan (2) kecapakan untuk menyesuaikan diri serta eksensibilitas kecakapan yang telah diperlengkapi dengan sistem tersebut Dalam karangan ini dijelaskan bagaimana pokok-pokok persoalan tersebut dapat dipecahkan dengan sistem yang disebut Mule atau Multilingual Enhancement to GNU Emacs. Mule adalah teks biasa yang telah disesuaikan dengan screen editor running mengenai berbagai sitem antara lain UNIX, DOS, Windows dan OS/2 tentang banyak program. Ini memberikan para pemakai lingkungan pengolahan teks berbagai bahasa yang meliputi bukan hanya penyuntingan teks yang sederhana saja tetapi juga pos dan berita Internet melalui pembacaan atau penulisan maupun membaca-baca Web pages dan lain sebagainya. Semua kecakapan tersebut dikontrol dengan mekanisme yang telah dipersatukan dan dapat disetel sepenuhnya sekaligus dapat diperluaskan atau dibentangkan oleh para pemakai.

1. Kata pengantar

Dengan adanya perkembangan yang luar biasa di dalam bidang teknologi komputer, kini kita mempunyai tenaga komputer yang cukup untuk ditangani bukan hanya bahasa Inggris saja tetapi juga banyak bahasa-bahasa lainnya. Banyak negara telah memperkembangkan cara-cara untuk menangangi komputer dengan mempergunakan bahasa nasional mereka sendiri. Kebanyakannya berdasarkan mekanisme yang bersifat locale di mana tidak menimbulkan masalah apa-apa sepanjang lingkungan kimputer masing masing itu dibatasi dengan suatu tempat mereka sendiri. Namun demikian, seperti Internet menghubungi seluruh dunia secara lebih erat lagi, keperluan atau kebutuhan guna membuat komunikasi lebih lancar di antara berbagai tempat/negara/bahasa telah menjadi lebih besar lagi, dan kini kita menghadapi kesulitan untuk menangani bahasa-bahasa multipel secara bersama-sama. Itulah sebab sistem locale masing masing masing itu telah berkembang secara independen, tanpa memperhatikan sistem-sistem locale yang lainnya.

Agar supaya menyelesaikan masalah mengenai bahasa-bahasa multipel, telah kita mengembangkan Mule, suatu editor plain-text multilingual berdasarkan GNU Emacs. GNU Emacs adalah salah satu editor atau penyunting yang paling terkenal sekaligus dipakai secara luas di dunia UNIX. Keistimewaan terbesar mengenai Emacs adalah bahwa penyunting ini diperlengkapi dengan interpreter Emacs Lisp, dan kebanyakan fasilitas tersebut dilengkapi dengan perkakas Emacs Lisp, yang berarti memungkinkan menambah GNU Emacs hanya dengan memodifikasi atau menambah program-program Emacds Lisp saja. Emacs dapat dipakai bukan hanya untuk pekerjaan penyuntingan saja tetapi juga untuk segala jenis pekerjaan yang berkaitan dengan pekerjaan pengolahan teks termasuk membaca dan menulis pos dan berita Internet, membaca-baca Web pages, manual referencing, mencari kamus on-line dan lain sebagainya. Kesemuanya itu dapat diwujudkan dengan program-program Emacs Lisp sebab sepenuhnya bersifat customizable.

Mule menuruni sifat-sifat dari kecakapan tersebut dan dapat mempergunakannya dalam lingkungan multilingual. Misalnya, para pemakai Mule dapat tukar-menukar surat-surat dan juga dapat membaca Web pages dalam bahasa apa pun, sepanjang bahasa-bahasa tersebut dibantu oleh Mule.

Dalam maksud Mule ini, kita telah membuat dua catatan seperti berikut; yakni

Pokok persoalan yang paling sukar tetapi paling penting mengenai pengolahan teks berbagai bahasa adalah untuk memberikannya mekanisme yang telah dipersatukan untuk menangani banyak bahasa tanpa kehilangan kemudahan atau sarana yang terwujud melalui lokalisasi untuk masing masing bahasa. Pekerjaan pengolahan teks dalam berbagai bahasa itu mungkin berbeda dengan satu sam alain dalam berbagai aspek; antara lain character set yang mana yang akan dipakai, teks yang bagaimana yang akan diterjemahkan di atas layar, teks yang bagaimana yang akan diinput dari papan tombol jari, mekanisme sandi apa yang akan dipergunakan dalam arsip dsb. Bahasa target yang bersifat multipel itu memerlukan mekanisme yang telah dipersatukan yangmana mencakup keanekaragaman tersebut.

Pokok persoalan yang lain adalah kecakapan menyesuaikan diri serta eksensibilitas, yakni bagaimana mudahnya untuk membuat sesuatu atas dasar pesanan atau untuk menambah kecakapannya. Hampir mustahil merencanakan dan menyediakan semua fungsi yang diperlukan untuk seluruh bahasa yang didukung sebelumnya. Di negara-negara maju, bahkan lingkungan standar untuk bahasa nasionalnya mungkin berubah. Sistem apa saja tanpa fleksibilitas tentang memodifikasi atau menambah kecakapan tersebut akan segera menjadi tak berguna, atau menjadi terlalu sulit untuk menambah bahasa-bahasa baru.

Oleh karena itu, sekalipun bila kita mengetahui bahwa fungsi baru diperlukan untuk suatu bahasa, kita tidak akan menambahnya dengan segera. Terlebih dahulu, kita memikirkan dengan seksama apakah ada suatu kemungkinan bahwa beberapa bahasa lainnya juga memerlukan fungsi yang serupa, bagian fungsi yang mana yang seharusnya disamaratakan untuk semua bahasanya dan bagian fungi yang manakah yang seharusnya diubah. Setelah hal-hal tersebut ditentukan, kita merencanakan atau merancang fungsi yang sifatnya paling serbaguna.

Pengolahan teks adalah pekerjaan ruwet. Sekurang-kurangnya itu berisi inputting teks, storing, storing kembali, dan displaying. Bila kita mengatakan Mule mendukung suatu bahasa, itu berarti bahwa Mule setidak-tidaknya mampu mengerjakan hal-hal seperti berikut; yaitu

Di sini kita memakai kata ``standar'' bukan hanya untuk ``standar resmi'' tetapi juga untuk ``de facto standard'' atau ``standar yang sebenarnya''. Selain itu, sementara mengolah teks kita harus mengolah huruf, kata-kata dan garis-garis sesuai dengan aturan standar untuk menulis masing masing bahasa. Kesemua kecakapan tersebut terkendali oleh mekanisme yang telah dipersatukan untuk menangani set huruf, sistem sandi, metode input dan cara display.

Seksi-seksi berikutnya diatur sebagai;

Seksi 2
Bagaimana caranya Mule mengolah huruf-huruf di bagian dalam.
Seksi 3
Bagaimana caranya Mule pengaruh-mempengaruhi dengan dunia luar di mana dipergunakan berbagai mekanisme penyunting yang berbeda-beda.
Seksi 4
Bagaimana caranya seseorang dapat menginput teks berbagai bahasa dari papan tombol jari normal yang berdasarkan bahasa Inggris.
Seksi 5
Bagaimana caranya Mule menangani aturan menulis dalam bahasa yang berbeda-beda.
Seksi 6
Bagaimana caranya Mule menerjemahkan teks multilingual di atas layar komputer.
Seksi 7
Ringksan, status sekarang dan pekerjaan di masa depan bagi Mule.

2. Representasi internal tentang teks berbagai bahasa

Yang disebut character set adalah sekelompok huruf-huruf yang dipakai bersama-sama untuk suatu teks regional, yaitu teks bahasa Inggris, teks bahasa Jepang. Walaupun single character set untuk semua bahasa adalah merupakan impian termanis bagi seorang pengembang sistem, namun tidak ada barang demikian untuk sementara. ISO 10646 ( atau Unicode ) tidak berguna untuk sementara khususnya untuk huruf-huruf bahasa Cina karena penanganan unifikasi-CJK yang bersifat inkonsisten. Itulah sebabnya kita menetapkan menangani kelompok huruf multipel dalam Mule.

Kebanyakan character set yang dimiliki oleh Mule mempunyai korespondensi secara seimbang dengan character set yang telah terdaftar dalam ISO misalnya ISO 8859-1, JIS X0208. Walaupun masing masing character set ISO dikenali dengan tipe ukurannya ( berapa banyak hurufnya berisi ) dan character final ( kode satu byte untuk membedakan character set yang sama ukurannnya ), namun Mule mengenali masing masing character set dengan nomor identifikasi yang unik yang disebut charset-id. Dengan demikian, memberi definisi tentang character set dalam Mule adalah menghubungkan charset-id yang unik itu dengan mengkorespondensi character set ISO dan memberitahu beberapa parameter tentang Mule mengenai character set. Parameter tersebut, yang dipakai untuk pekerjaan menyunting termasuk lebarnya display, petunjuk penulisan dan lain sebagainya. Tabel 1 menunjukkan contoh-contoh character set.

Tabel 1. Contoh character set
Character set ISO parameter yang dipakai dalam Mule
nama tipe ukuran final-char charset-id bytes lebarnya petunjuk
ASCII 94 'B' 0 1 1 left-to-right
ISO8859-1 (Latin1) 96 'A' 129 2 1 left-to-right
ISO8859-8 (Hebrew) 96 'H' 136 2 1 right-to-left
TIS620 96 'T' 133 2 1 left-to-right
GB2312 94 X 94 'A' 145 3 1 left-to-right
JISX0208 94 X 94 'B' 146 3 1 left-to-right
CNS11643-1 94 X 94 'G' 149 4 1 left-to-right
CNS11643-3 94 X 94 'I' 246 4 1 left-to-right
Dalam tabelnya ditunjukkan bahwa bytes adalah panjangnya byte tentang representasi internal yang dimiliki oleh Mule, lebarnya adalah nomor kolom yang terdapat di atas layar, dan petunjuk adalah pentunjuk terjemahan: kiri ke kanan [left-to-right] atau kanan ke kiri[right-to-left].

Juga mungkin untuk memberi definisi tentang character set yang tidak terdafter dalam ISO. Dalam kasus demikian, Mule memakai final-character yang telah disediakan untuk penggunaan pribadi dengan ISO. Jika character set mula-mula tidak sesuai dengan syarat-syarat teknis dari ISO 2022, maka sebaiknya disusun kembali untuk membagi-bagi dalam character set yang kecil, atau dengan menggantikan angka-angka kode character dan menyesuaikan dirinya dengan syarat teknis tersebut. Sebuah contoh tipitak tentang kasus ini adalah character set untuk bahasa Vietnam, yang perinciannya digambarkan dalam bagian yang berikutnya.

Cara yang paling biasa dan sederhana untuk menyimpan teks dalam memori komputer adalah menunjukkan masing masing huruf dengan susunan daripada elemen-elemen yang panjangnya sudah ditentukan sebelumnya ( satu hingga empat bytes ). Mengingat teks multilingual, akan tetapi, menggunakannya satu atau dua bytes untuk masing masing huruf itu rupanya tidak cukup untuk meliputi huruf-huruf dari seluruh dunia. Penggunaan elemen empat bytes akan cukup tetapi justru menyia-nyiakan memori untuk hanya teks bahasa Inggris. Oleh karenanya, sebagai pengganti dari pemakaian representasi panjangnya yang telah ditentukan sebelumnya, kita telah mengambil bentuk panjangnya variabel sesuai dengan multi-byte ( selanjutnya disebut multi-byte ) untuk menunjukkan huruf-huruf dalam Mule's buffer baik untuk penggunaan memroi yang efisien maupun untuk ekstensibilitas. ( Ide ini berasal dari laporan singkat dari Stallman. )

Dengan bentuk multi-byte, masing masing huruf ditunjukkan dengan satu atau dua bytes dari leading codes untuk charset-id dan satu atau dua bytes yang berikutnya untuk kode huruf tersebut. Satu-satunya kekecualian adalah huruf-huruf ASCII, yang dapat ditunjukkan sebagaimana adanya, dan charset-id tersebut adalah 0. Tabel 2 menunjukkan definisi yang lebih formal tentang represntasi huruf internal dari Mule.

Tabel 2. Definisi formal tentang representasi huruf internal
    CHARACTER := ASCII_CHAR | MULTIBYTE_CHAR
    MULTIBYTE_CHAR := PRIMARY_CHAR_1 | PRIMARY_CHAR_2
                      | SECONDARY_CHAR_1 | SECONDARY_CHAR_2
    PRIMARY_CHAR_1   := LEADING_CODE_PRI C1
    PRIMARY_CHAR_2   := LEADING_CODE_PRI C1 C2
    SECONDARY_CHAR_1 := LEADING_CODE_SEC LEADING_CODE_EXT C1
    SECONDARY_CHAR_2 := LEADING_CODE_SEC LEADING_CODE_EXT C1 C2
    ASCII_CHAR := 0 | 1 | ... | 127
    LEADING_CODE_PRI := 129 | 130 | ... | 153
    LEADING_CODE_SEC := 154 | 155 | 156 | 157
    C1, C2, LEADING_CODE_EXT := 160 | 161 | ... | 255
 

Dalam tabelnya, CHAR_PRIMER[PRIMARY_CHAR] dan CHAR_SEKUNDER[SECONDARY_CHAR] berbeda hanya dalam memori yang diperlukan per huruf dan dalam pekerjaan penyusunan tidak ada perbedaan sama sekali di antaranya. Charset-id ditunjukkan dengan LEADING_CODE-PRI yang tunggal ( dalam hal ini, charset-id adalah dari 129 sampai dengan 154 ) atau susunan LEADING_CODE_SEC dan LEADING_CODE EXT ( dalam hal ini, charset-id adalah lebih dari 160 ). Character set yang berdasarkan byte tunggal dapat berisi paling banyak 96 huruf dan ditunjukkan dengan susunan dua atau tiga byte, sedang character set byte doubel dapat mengandung sebanyak-banyaknya 9216 ( 96 x 96 ) huruf dan ditunjukkan dengan susunan tiga atau empat byte. Kita sering memilih character set yang telah dipakai dan menetapkannya sebagai PRIMER [PRIMARY]. Semua character set yang ditambah oleh para pemakai dtetapkan sebagai SEKUNDER [SECONDARY]. Misalnya. dalam rangkaian character set dari bahasa Cina ( bahasa Taiwan ) yaitu CNS11643, dua plains yang pertama adalah PRIMER [PRIMAY] tetapi plains tersisa adalah SEKUNDER [SECONDARY]( Lihat Tabel 1 ). Gambar 1 menunjukkan pemakaian area kode dengan satu byte.

Gambar 1. Pemakaian area kode dengan satu byte.
0x00--0x7f character code of ASCII_CHAR
0x80--0x99 LEADING_CODE_PRI
0x9a--0x9f LEADING_CODE_SEC
0xa0--0xff 1st and 2nd charactercodes of MULTIBYTE_CHAR or LEADING_CODE_EXT

3. Sistem menyandi

Sistem menyadi, atau mekanisme menyandikan, adalah suatu cara tentang bagaimana caranya untuk menyandikan teks. Kita menggunakan banyak sistem menyandi yang berbeda-beda mengenai komputer. Oleh karena itu Mule dapat menyandi konversi secara otomatis dari berbagai format representasi mentenai teks ke bentuk multi-byte internal. Kapan-kapan saja Mule dapat saling mempengaruhi dengan dunia luar dengan membaca atau menulis files, berkomunikasi dengan proses lain, berkomunikasi lewat jaringan, menerima data dari terminal, atau mengeluarkan informasi tentang data ke terminal.

Untuk membuat proses dari konversi kode dapat disetel dan diperluas atau dibentangkan, kita menghindarkan memperlengkapi Mule dengan rutine konversi secara hard-coded. Malahan, kita membuat model generik dari sistem menyandi dengan beberapa parameter untuk diisi. Untung sekali, kebanyakan sistem menyandi yang kini dipakai di dunia mencocokkan dengan kerangka ISO 2022. Oleh karena itu, kita menggolongkan sistem menyandi tersebut ke dalam tipe ISO-2022 dan tipe non-ISO-2022. Untuk tipe yang terlebih dahulu, kita membuat interpreter ISO 2022 yang bersifat generik. Untuk tipe yang belakangan, kita merancang CCL atau bahasa konversi kode yang merupakan bahasa penyusunan yang sederhana dan membuat interpreter CCL tersebut.

Bilamana para pemakai menentukan suatu sistem kode untuk suatu pengolahan ( misalnya, membaca file atau mengirim surat ), Mule secara otomatis mengandalkan interpreter ISO 2022 atau interpreter CCL tersebut menurut sistem menyandi yang telah ditetapkan sebelumnya.

3.1 Sistem menyandi dengan tipe ISO-2022

Walaupun ISO 2022 menyediakan banyak variasi untuk menyandikan teks yang sama, namun sebenarnya hanya sedikit sajalah yang dipergunakan secara aktual. Karenanya, agar supaya menentukan menyandikannya, cukuplah dengan memakai parameter-parameter yang berangka kecil seperti digambarkan dalam Tabel 3. Misalnya, bahasa Cina, bahasa Jepang dan bahasa Korea berlainan dengan EUC atau Extended UNIX Code dan semua seri ISO-8859 berbeda hanya dalam penandaan intial parameter tersebut dan penandaan yang telah disediakan sebelumnya. Contoh-contoh lainnya ialah ISO-2022 dengan 7 bit seperti misalnya ISO-2022-JP, ISO-2022-JP-2, ISO-2022-KR, dan ISO-2022-CN. Itu semuanya memakai lingkungan dengan 7 bit. Semua itu berbeda hanya dalam penandaan yang telah disediakan sebelumnya dan locking shift . Kedua yang pertama itu tidak memakai fungsi locking shift, sedangkan yang sisanya menggunakannya.

Tabel 3. Parameter mengenai sistem menyandi dengan tipe ISO-2022
parameter nilai makna
penandaan initial daftar charset-id Untuk register grafik masing masing, yang character set ditandakan pada awalnya.
penandaan yang telah disediakan sebelumnya daftar charset-id Untuk register grafik masing masing, yang character set ditandakan secara eksklusif mengenai menyandikannya.
lingkungan dengan 7 bit benar / tidak benar Memakai hanya lower 7 bit atau memakai ful 8 bit mengenai menyandikannya.
locking shift benar / tidak benar Memakai fungsi locking shift atau tidaknya.
shift singel benar / tidak benar Memakai fungsi shift singel atau tidaknya.
indikasi petunjuk benar / tidak benar Memakai escape sequence dari ISO-6429 untuk menandakan petunjuk penulisan mengenai menyandikannya.

Tabel 4 menunjukkan bagaimana kita dengan mudah bisa menentukan sistem kode dengan tipe ISO-2022 dalam Mule. Setelah ditetapkannya suatu sistem kode, itu dapat ditentukan untuk siatuasi bagaimanapun di mana konversi kodenya diperlukan. Misalnya, setelah kejelasan tabel 4, para pemakai dapat membaca dan menulis arsip GB dan memamerkan huruf-huruf bahasa Cina di atas terminal GB, dan dapat juga surat-menyurat di dalam GB.

Tabel 4. Kejelasan sistem menyandi EUC ( apa yang dinamakan GB ) dalam bahasa Cina dalam Mule.
 '*euc-china*		;; Nama sitem kode
 2			;; Tipe, '2' berarti tipe ISO-2022
 ?C			;; Huruf mnemonik mengenai sistem kode
 t			;; Tipe auto-detect end-of-line ( CR, CRLF, LF )
 (list lc-ascii lc-cn	;; GO adalah untuk ASCII, G1 adalah untuk bahasa Cina GB2312
       nil nil		;; G2 dan G3 tidak pernah dipakai.
 

3.2 Sistem menyandi dengan tipe Non-ISO-2022

Contoh-contoh tentang sistem kode non-ISO-2022 adalah bahasa Rusia dengan KOI-8 dan bahasa Vietnam dengan VISCII. Meskipun KOI-8 sesuai dengan syarat teknis dari ISO 2022, angka-angka kode daripada huruf-hurufnya berbeda dengan ISO 8859-5 ( alfabet Latin/Cyrillik ) yang adalah kekurangan character set untuk huruf-huruf Cyrillik dalam Mule.

VISCII memamai kode dengan ful 8-bit untuk sebanyak 134 huruf spesifik dalam bahasa Vietnam, yang tidak sesuai dengan syarat teknis dari ISO 2022. Oleh karena itu, dalam Mule, character set dalam bahasa Vietnam dibagi dua yaitu huruf-huruf kecil dan huruf-huruf besar, yang keduanya sudah ditetapkan dalam charset-id.

Sejak interpreter generik dengan ISO 2022 tidak dapat dipakai untuk menguraikan isi sandi serta menulis dalam kata-kata sandi, kita memperlengkapi Mule dengan program-program CCL untuk melaksanakan konversinya. CCL adalah bahasa pengolahan yang sederhana tetapi sangat kuat yang cocok untuk menulis algoritme koversi kode, yang berarti bahwa secara teoritis Mule dapat menangani jenis sistem kode yang mana saja dengan menyediakan program CCL. Tabel 5 menunjukkan sumber program CCL untuk menulis dalam sandi KOI-8.

Tabel 5. Program CCL untuk menulis dalam sandi berdasarkan sistem kode KOI-8
(define-ccl-program ccl-write-koi8
 '(1
   ((read r0)
    (loop (if (r0 != 140) (write-read-repeat r0)
            ((read r0) (r0 -= 160)
             (write-read-repeat r0
     [ 32 179  32  32  32  32  32  32  32  32  32  32  32  32  32  32
      225 226 247 231 228 229 246 250 233 234 235 236 237 238 239 240
      242 243 244 245 230 232 227 254 251 253 255 249 248 252 224 241
      193 194 215 199 196 197 214 218 201 202 203 204 205 206 207 208
      210 211 212 213 198 200 195 222 219 221 223 217 216 220 192 209
       32 163  32  32  32  32  32  32  32  32  32  32  32  32  32  32])
             )))))
  "CCL program to write KOI8.")
 

4. Metode input

Kita pernah menyelidiki metode input yang ada untuk huruf-huruf multilingual dan menggolongkannya ke dalam empat tipe seperti berikutnya.

(1) Key mapping
Merupakan sebuah metode yang paling sederhana yang memetakan tombol-tombol jari dari deretan tuts bahasa Inggris yang normal pada beberapa huruf-huruf yang lainnya satu demi satu. Contoh tipikalnya adalah bahasa Yunani dan bahasa Rusia.

(2) Kombinasi nada
Merupakan sebuah metode input yang membentuk huruf gabungan dengan menggabungkan deretan tombol. Contoh yang tipikalnya adalah bahasa-bahasa Eropa dan bahasa Vietnam di mana huruf dengan tanda pengenal serta tanda nada dibentuk dari alfabet dan beberapa nada yang bersifat simbul. Misalnya, dalam metode input bahasa Vietnam, deretan tombol a membentuk huruf bahasa Vietnam {a}. Ada juga metode input tipe ini dalam bahasa Cina, tetapi itu memerlukan banyak pelatihan karena dibutuhkan jumlah huruf Cina yang luar biasa banyaknya.

(3) Campuran (1) dan (2)
Merupakan sebuah metode yang mula-mula memetakan tombol-tombol jari kemudian membentuk huruf gabungan dengan menggabungkan tombol-tombol jari yang telah dipetakan. Contoh-contoh yang tipikal adalah bahasa Thailand dan bahasa Korea. Misalnya, dalam metode input bahasa Thailand, semua bagian atas tombol jari tersebut dipetakan konsonan-konsonan bahasa Thailand, vokal-vokal, atau tanda nada, dan deretan tombol dari huruf konsonan dan vokal berikutnya atau tanda nada membentuk huruf gabungan yang meletakkan vokal dan/atau tanda nada di atas atau di bawah konsonan tersebut.

(4) (3) dan program konversi luar
Metode semacam ini dipakai untuk meng-input huruf-huruf bahasa Cina. Karena terdapat lebih dari sepuluh ribu huruf-huruf bahasa Cina, maka sungguh sukar untuk mengingat semua kombinasi tombol tersebut. Namun demikian, jika hanya meng-input huruf-huruf fonetis itu boleh dikatakan agak mudah. Oleh sebab itu, kita menciptakan metode input yang tepat dengan mengijinkan hanya meng-input huruf-huruf fonetis dalam (1) atau (3), kemudian mengolah pekerjaan tersisa untuk membentuk huruf-huruf bahasa Cina di atas komputer.

Misalnya, dalam metode input bahsa Jepang, deretan Hiragana ( alfabet fonetis bahasa Jepang ) pada mulanya diketik, kemudian diubah beberapa program konversi ke dalam campuran Kanji ( huruf bahasa Cina ) dan deretan Hiragana yang tepat. Di sini terdapat beberapa program konversi seperti misalnya Wnn, Canna, SJ3 ( semuanya untuk bahasa Jepang ) dan cWnn ( untuk bahasa Cina ) yang dapat dipergunakan dari Mule. Mereka biasanya memakai kamus yang bermacam-macam serta pengetahuan tentang taha bahasa masing-masing guna membentuk deretan huruf yang tepat.

Dalam Mule, metode input tentang tiga tipe yang pertama itu telah diwujudkan sebagai sistem penerjemahan input papan tombol jari yang disebut Quail. Quail diberikan sepasang aturan penerjemahan ( yang disebut `Paket Quail' ) untuk sekali waktu dan menerjemahkan si pemakai meng-input sesuai dengan itu. Aturan penerjemahan masing masing terdiri dari deretan tombol dan teks korespondensi yang telah diterjemahkan. Satu aturan boleh mempunyai calon-calon multipel mengenai teks yang telah diterjemahkan itu, dalam hal ini, para pemakai dianjurkan untuk memilih satu dengan bersifat saling mempengaruhi.

Sungguh mudah untuk membuat paket Quail tersebut atas dasar pesanan. Para pemakai hanya menambah aturan penerjemahan baru atau memodifikasi aturan-aturan translasi yang sudah ada. Oleh karena modularitas dari pada paket Quail tersebut, menambah aturan-aturan baru untuk bahasa baru juga mudah. Hal itu dapat dikerjakan hanya membuat paket baru dengan nama yang tepat serta menetapkan bilangan yang mana saja tentang aturan-aturan penerjemahannya menurut paket tersebut. Tabel 6 menunjukkan bagaimana caranya untuk membuat paket Quail baru yang menirukan keadaan Caps-Lock ( yakni semua huruf-huruf kecil dipindahkan ke huruf-huruf besar. )

Tabel 6 Contoh membuat pake Quail ``Caps-Lock''
     ;; Mula-mula, menentukan paket Quail baru.
     (quail-define-package "caps-lock"
                           "Caps-Lock" nil "Simulate Caps-Lock")
     ;; Kemudian, menentukan aturan-aturan penerjemahan mengenai paket
     (quail-defrule "a" "A")
       ...
 

Metode input yang terakhir diwujudkan sebagai sebuah sistem yang bernama Tamago. It pertama menerjemahkan input-input keyboard ke dalam beberapa kode fonetis ( Hiragana dalam bahasa Jepang dan PinYin atau ZhuYin dalam bahasa Cina ) dan mengirimnya ke program konversi luar melalui jaringan. Besar kemungkinan untuk mempergunakan sistem Quail pada waktu tahap pertama. [ITS]Namun, Tamago telah dikembangkan secara independen dari Quail dan mempunyai sistemnya sendiri dengan namanya sendiri untuk membentuk kode-kode fonetis untuk sementara. Karena konversi tidak dapat diotomatisasikan secara sepenuhnya, maka si pemakai dapat memilih beberapa konversi lain dengan bersifat saling mempengaruhi. Untuk sementara, Tamago dapat memakai Wnn dan cWnn sebagai server konversi.

5. Pengolahan teks

Pengolahan teks lebih lagi dari pada meng-input huruf. Agar supaya memudahkan pengolahan teks, Mule menyediakan berbagai alat-alat. Contoh-contohnya adalah kategori-kategori huruf dan penyusun ekspresi regular yang sangat kuat, yang memungkinkan lebih cepat pencarian ekspresi regular.

Pada saat menyunting teks, tidak menyusahkan untuk menggolong-golongkan beberapa huruf dan mempergunakan kelompok tersebut dalam menyunting perintah. Sebagai contohnya, seorang pemakai mungkin juga menghendaki mencari huruf Cyrillik yang bagaimana pun dan apa saja, tetapi tidak menghendaki menentukan semua huruf-huruf Cyrillik tersebut dan menggabungkannya dengan operator-operator OR. Untuk maksud ini, GNU Emacs yang original itu memberikan kode sintaksis huruf kepada masing masing huruf. Sintaksis huruf, namun demikian, mempunyai beberapa restriksi. Setiap huruf dapat mempunyai paling banyak satu sintaksis huruf dan para pemakai barangkali tidak menentukan sintaksis baru.

Mule menawarkan cara tambahan atau ekstra untuk menggolong-golongkan huruf-huruf yang disebut kategori huruf atau character category. Para pemakai dapat menentukan kategori huruf baru itu dan memberikan satu huruf sebanyak kategori huruf yang disukainya. Tabel 7 menunjukkan ketidaksanggupan kategori huruf mengenai Mule. Pekerjaan menyunting sering kali memerlukan kata dengan pengolahan kata, tetapi bahasa-bahasa yang berlainan mungkin mempunyai definisi kata yang berbeda. Dengan Mule, para pemakai dapat menentukan sebuah kata berdasarkan kategori-kategori huruf tersebut, yang mewujudkan menyunting komando yang dapat dibuat atas dasar pesanan.

Tabel 7 Ketidakmampuan kategori huruf
'b' huruf-huruf Arabik
'c' huruf-huruf dengan 2-byte dalam bahasa Cina
'g' huruf-huruf bahasa Yunani
'h' huruf-huruf dengan 2 byte dalam bahasa Korea
'j' huruf-huruf dengan 2 byte dalam bahasa Jepang
'k'huruf-huruf Katakana dengan 1 byte dalam bahasa Jepang
'r' huruf-huruf Romawi dengan 1 byte dalam bahasa Jepang
'l' huruf-huruf bahasa Latin
'w' huruf-huruf bahasa Yahudi
'y' huruf-huruf Cyrillik
' ' huruf-huruf bahasa Taiwan

6. Displaying

Untuk men-display teks multilingual, kita harus memikirkan dua hal; yakni menjalankan Mule dari beberapa terminal ( atau emulator terminal seperti misalnya `xterm', `kterm', `cxterm' dsb. ), dan menjalankan Mule menurut sistem window.

Dalam kasus yang terlebih dahulu, Mule hanya mengirim dengan benar teks yang telah disandikan kepada terminal-terminal dan meninggalkan pekerjaan menerjemahkan teks multilingual tersebut kepadanya. Konversi kode tersebut dikerjakan sesuai dengan coding system yang telah ditetapkan untuk output terminal. Misalnya, jika seorang pemakai menjalankan Mule dari `cxterm', maka tidak ada jalan untuk men-display teks lain yang apa pun melainkan bahasa Inggris dan bahasa Cina.

Bilamana Mule dijalankan menurut sistem window, maka Mule bertanggungjawab men-display teks multilingual. Dalam Mule, masing masing character set diberikan dengan fon korespondensi. Koleksi pembuatan peta dari semua character set ke fon-fon korespondensi tersebut dinamakan fontset dan menjadi dasar untuk men-display huruf masing masing. Mule boleh memakai fontset yang berlainan dalam konteks yang berbeda. Misalnya, sementara membaca surat, lapangan subyek dipamerkan dalam huruf atau cetakan tebal, dalam hal ini, fontset dari koleksi huruf tebal itu dipergunakan hanya untuk lapangan subyek tersebut.

Mengenai window X, kode-kode huruf internal Mule pada umumnya cocok dengan poin-poin kode dari pada fon korespondensi. Misalnya, character set dalam bahasa Jepang JISX0208 dapat dipamerkan dengan benar dengan fon tersebut di mana poin-poin kode hurufnya mengikuti JISX0208. Tetapi, sekalipun pencocokan ini tidak berlaku untuk beberapa kombinasi character set dan fon, kita dapat mengubah poin-ppin kode internal kepada kombinasi fon dengan program CCL yang disebutkan dalam bagian sebelumnya. Misalnya, character set Mule untuk huruf-huruf Cyrillik dilandasi dengan ISO 8859-5, karena seorang pemakai barangkali juga hanya mempunyak fon KOI-8 saja. Walaupun dalam kasus demikian, segala sesuatu yang harus dikerjakannya ialah mengubah pembuatan peta tentang fontset agar supaya fon KOI-8 dipergunakan untuk character set Cyrillik, dan menghubungkan program CCL yang tepat dengan character set Cyrillik ( Lihat Tabel 8 ).

Bila seorang pemakai menambah support untuk bahasa baru, ia dapat hanya menambah pembuatan peta di antara character set yang baru itu untuk bahasa tersebut dan fon yang tepat kepada fontset yang ada.

Tabel 8 Contoh pemakaian fon KOI8 untuk huruf-huruf Cyrillik
  ;; Mengubah font mapping dalam fontset DEFAULT-FONTSET.
  (set-fontset-font default-fontset lc-crl "HERE_COMES_KOI8_FONT_NAME")
  (define-ccl-program ccl-x-koi8
    '(0
      ((r1 -= 160)
       (r1 = r1
     [ 32 179  32  32  32  32  32  32  32  32  32  32  32  32  32  32
      225 226 247 231 228 229 246 250 233 234 235 236 237 238 239 240
      242 243 244 245 230 232 227 254 251 253 255 249 248 252 224 241
      193 194 215 199 196 197 214 218 201 202 203 204 205 206 207 208
      210 211 212 213 198 200 195 222 219 221 223 217 216 220 192 209
       32 163  32  32  32  32  32  32  32  32  32  32  32  32  32  32])))
    "CCL program to convert chars of lc-crl (ISO8859-5) to KOI8 font.")
  ;; Menghubungkan program CCL dengan character set Cyrillik LC-CRL.
  (x-set-ccl lc-crl ccl-x-koi8)
  

7. Kesimpulan

Kita telah menggambarkan tentang editor teks Mule multilingual, menitikberatkan kecakapan menyesuaikan diri serta ekstensibilitas yang dimilikinya. Mule diperlengkapi dengan interpreter yang membuat sistem tersebut terbuka. Program Emacs Lisp yang sederhana dapat melakukan segala kustomisasi.

Mule telah diedarkan pada tahun 1993. Sejak itu, orang-orang di dunia menyumbang banyak bantuan untuk bahasa-bahasa mereka sendiri. Kini Mule dapat menangani kebanyakan bahasa -bahasa Eropa ( termasuk bahasa Rusia dan bahasa Yunani ) dan bahasa-bahasa Asia Timur ( bahasa Cina, bahasa Jepang, bahasa Korea ) di samping bahasa Thailand, bahasa Vietnam, bahasa Yahudi, bahasa Arab, bahasa Turki dan lain-lainnya. Kita sedang berusaha keras untuk membantu bahasa-bahasa India ( Tulisan-tulisan Devanagali ).

Selain dari bantuan bahasa baru, ada juga banyak aplikasi yang telah disumbangkan untuk menambahkan Mule, seperti misalnya kamus on-line looking-up tools, encorder dan decorder MIME. Kehadiran alat-alat tersebut membuktikan bahwa Mule bisa jadi suatu meja kerja/lingkungan, daripada editor belaka.

Kini kita sedang menggabungkan Mule ke dalam Emacs GNU original dalam kerjasama dengan Free Software Foundation, organisasi mendistribusi Emacs GNU. Pengeluaran Emacs GNU yang akan datang akan memuat kecakapan-kecakapan multilingual Mule.

Tambahan:

Mule disalurkan untuk bebas dengan syarat GNU GENERAL PUBLIC LICENSE. Versi Mule 2.3 tersedia melalui ftp tanpa nama dari tempat-tempat berikutnya dan banyak tempat-tempat teladan yang lainnya.