Pengguna:Hakimi97/rumikpdjawi.js
Catatan: Selepas diterbitkan, anda mungkin perlu memintas cache pelayar web untuk melihat perubahan.
- Firefox / Safari: Tahan Shift sambil klik Reload, atau tekan sama ada Ctrl-F5 atau Ctrl-R (⌘-R pada Mac)
- Google Chrome: Tekan Ctrl-Shift-R (⌘-Shift-R pada Mac)
- Edge: Tahan Ctrl sambil tekan Refresh, atau tekan Ctrl-F5.
/**
** LOG:
** Percubaan menggunakan kod dari Pengguna:Kurniasan/rumikpdjawi.js
**/
/* Tukar teks daripada rumi kepada jawi */
/* Pengarang asal: [[Pengguna:Kurniasan]] */
/*
* PRINSIP KAMUS (Dikemaskini pada 18 Julai 2022):
*
* 1. Semua nama khas berkaitan masa, geografi dan etnolinguistik akan ditambah
* pada kata dasar. Hanya nama manusia sahaja diasingkan senarai dengan
* terjemahan rumi paling lazim di kedudukan paling hadapan dengan
* variasi-variasi nama di belakangnya.
*
* 2. Semua hamzah bebas (ء) kecuali kata serapan Arab sepatutnya berbentuk
* hamzah tiga suku. Namun disebabkan masalah teknikal maka hamzah tiga suku
* buat masa ini belum diperkenalkan untuk semua perkataan dalam kamus ini.
*
* 3. Apabila ada penambahan alif (ا) atau hamzah (ء) di hadapan imbuhan “-an”
* sedangkan alif atau hamzah tambahan tidak terjumpa pada kata dasarnya,
* maka kesemua akan ditambah dalam senarai berikut. Selain daripada itu
* semua “-an” secara automatik akan ditambah nun (ن) sahaja.
*
* 4. Semua kata dalam Kamus Dewan Perdana yang memerlukan penanda gandaan
* “٢” akan ditambah dalam senarai berikut (contohnya:اݢق٢). Selain itu semua
* perkataan lain yang tidak tersenarai akan dipapar secara lalai dengan
* tanda sengkang “-” (contohnya: برنتاي-رنتاي).
*
* 5. Perubahan alif berhamzah (أ) dan wau berhamzah (ؤ) pada kedudukan awal
* suku kata kata dasar (contohnya "سأهلي") yang tercatat dalam Kamus Dewan
* Perdana akan ditambah selepas dan sebaris dengan entri kata dasarnya.
*
* 6. Sebarang kata yang mengalami pengguguran alif (ا) dan ain (ع) pada
* kedudukan awal kata dasarnya akan ditambah berserta imbuhan di
* hadapannya, contohnya "مڠهلي" dan "مڠاءيب".
*
* 7. Ta marbutah (ة) yang fonem akhir kata ruminya /-t/ akan bertukar kepada
* ta maftuhah (ت), contohnya seperti “عاقبة” berubah kepada“عاقبتن”. Manakala
* ta marbutah yang fonem akhir kata ruminya /-h/ pula akan digantikan dengan
* huruf ha tebal (ه) sekiranya disambung dengan imbuhan akhir “-an”, “-kan”
* dan “-nya”, contohnya seperti "عقيدة" berubah kepada "عقيدهن". Perubahan ini
* yang dirakam dalam Kamus Dewan Perdana akan ditambah selepas dan sebaris
* dengan entri kata dasarnya.
*
*/
mw.loader.load( '/w/index.php?title=Pengguna:Hakimi97/kamusrumikpdjawi.js&action=raw&ctype=text/javascript' );
if (mw.config.get('wgNamespaceNumber') === 0) {
var cache = null;
var RumiJawi = null;
/**
* Tukar teks rumi kepada jawi.
* @param src teks untuk dijawikan.
* @param noRecursive
*/
var convertToJawi = function (src, noRecursive) {
if (kamus[src]) { // Kalau ada entri dalam kamus, gunakannya.
src = src.replace(new RegExp('\\b' + src + '\\b', 'i'), kamus[src]);
} else if (!noRecursive) {
for (var i in imbuhanAkhiran) {
src = src.replace(RumiJawi.suffixes[i], suffixProcessor);
}
}
return src;
};
var prefixProcessor = function (a, b, c) {
var d = convertToJawi(c);
return d == c ? a : (imbuhanAwalan[b.toLowerCase()] + d);
};
var suffixProcessor = function (a, b, c) {
var d = convertToJawi(b, true);
return d == b ? a : (d + imbuhanAkhiran[c]);
};
$('#p-interaction ul').append('<li id="ca-nstab-rkj"><span><a><input id="togol-rkj" type="checkbox"></a><a><label for="togol-rkj"> Tukar ke Jawi</label></a></span></li>');
$('#togol-rkj').click(function () {
var $mwContentText = $('#mw-content-text');
if (this.checked) {
cache = cache || $mwContentText.html(); // Simpan teks asal.
RumiJawi = RumiJawi || {
entries: (function() {
var r = [];
for (var i in kamus) { // Proses kata-kata yg ada dlm kamus.
r[i] = new RegExp('\\b' + i + '\\b', 'gi');
}
return r;
}) (),
prefixes: (function() {
var r = {};
for (var i in imbuhanAwalan) { // Proses imbuhan awalan.
r[i] = new RegExp('(\\b' + i + ')(\\w+)\\b', 'gi');
}
return r;
}) (),
suffixes: (function() {
var r = [];
for (var i in imbuhanAkhiran) {
r[i] = new RegExp('\\b(\\w+)(' + i + ')\\b', 'i');
}
return r;
}) ()
};
$mwContentText.contents().map(function recursive() {
var $cs = $(this).contents();
if ($cs.length > 0) {
$cs.map(recursive);
} else {
var s,
i;
if ((s = this.textContent) === '') {
return;
}
for (i in kamus) { // Proses kata-kata yg ada dlm kamus.
s = s.replace(RumiJawi.entries[i], kamus[i]);
}
for (i in imbuhanAwalan) { // Proses imbuhan awalan.
s = s.replace(RumiJawi.prefixes[i], prefixProcessor);
}
this.textContent = s;
}
});
$mwContentText.attr('dir', 'rtl').attr('class', 'mw-content-rtl');
}
else if (cache !== null) {
$mwContentText.attr('dir', 'ltr').attr('class', 'mw-content-ltr').html(cache);
cache = null;
}
});
}