Naraguna:Bennylin/transliterator.js

Saka Wikipédia Jawa, bauwarna mardika basa Jawa

Cathetan: Nalika rampung nyimpen, panjenengan kudu mbusek telihing pangluruné panjenengan supaya owahané katon.

  • Firefox / Safari: Pencèt Shift nalika ngeklik Reload, utawa pencèt Ctrl-F5 utawa Ctrl-R (⌘-R ing Mac)
  • Google Chrome: Pencèt Ctrl-Shift-R (⌘-Shift-R ing Mac)
  • Internet Explorer / Edge: Pencèt Ctrl nalika ngeklik Refresh, utawa pencèt Ctrl-F5
  • Opera: Menyang Menu → Settings (Opera → Preferences ing Mac) nuli menyang Privacy & security → Clear browsing data → Cached images and files.
/*!
* transliterator.js (Jawa-Latin / Javanese Script to Latin)
* https://bennylin.github.com/transliterasijawa
*
* Copyright 2013, Bennylin @bennylin
* Released under the CC-BY-SA.
*
* Date: 11 April 2013 - v 0.5
* Date: 25 Juli 2013 - v 0.6
*
*
*
*/
var java2latn = {
"ꦀ":'',//? -- archaic
"ꦁ":'ng',//cecak
"ꦂ":'r',//layar
"ꦃ":'h',//wignyan
"ꦄ":'A',//swara-A
"ꦅ":'I',//I-Kawi -- archaic
"ꦆ":'I',//I
"ꦇ":'Ii',//Ii -- archaic
"ꦈ":'U',//U
"ꦉ":'rê',//pa cêrêk
"ꦊ":'lê',//nga lêlêt
"ꦋ":'lêu',//nga lêlêt Raswadi -- archaic
"ꦌ":'E',//E
"ꦍ":'Ai',//Ai
"ꦎ":'O',//O

"ꦏ":'ka',
"ꦐ":'qa',//Ka Sasak
"ꦑ":'kha',//Murda
"ꦒ":'ga',
"ꦓ":'gha',//Murda
"ꦔ":'nga',
"ꦕ":'ca',
"ꦖ":'cha',//Murda
"ꦗ":'ja',
"ꦘ":'Nya',//Ja Sasak, Nya Murda
"ꦙ":'jha',//Ja Mahaprana
"ꦚ":'nya',
"ꦛ":'ṭa',
"ꦜ":'ṭha',//Murda
"ꦝ":'ḍa',
"ꦞ":'ḍha',//Murda
"ꦟ":'ṇa',//Murda
"ꦠ":'ta',
"ꦡ":'tha',//Murda
"ꦢ":'da',
"ꦣ":'dha',//Murda
"ꦤ":'na',
"ꦥ":'pa',
"ꦦ":'pha',//Murda
"ꦧ":'ba',
"ꦨ":'bha',//Murda
"ꦩ":'ma',
"ꦪ":'ya',
"ꦫ":'ra',
"ꦬ":'Ra',//Ra Agung
"ꦭ":'la',
"ꦮ":'wa',
"ꦯ":'sha',//Murda
"ꦰ":'ṣa',//Sa Mahaprana
"ꦱ":'sa',
"ꦲ":'ha',//could also be "a" or any sandhangan swara

"꦳":'​',//cecak telu -- diganti zero-width joiner (tmp)
"ꦺꦴ":'o',//taling tarung
"ꦴ":'aa',
"ꦶ":'i',
"ꦷ":'ii',
"ꦸ":'u',
"ꦹ":'uu',
"ꦺ":'e',
"ꦻ":'ai',
"ꦼ":'ě',
"ꦽ":'rě',
"ꦾ":'ya',
"ꦿ":'ra',

"꧀":'​',//pangkon -- diganti zero-width joiner (tmp)

"꧁":'',
"꧂":'',
"꧃":'',
"꧄":'',
"꧅":'',
"꧆":'',
"꧇":'​',//titik dua -- diganti zero-width joiner (tmp)
"꧈":',',
"꧉":'.',
"꧊":'',
"꧋":'',
"꧌":'(',
"꧍":')',
"ꧏ":'',
"꧐":'0',
"꧑":'1',
"꧒":'2',
"꧓":'3',
"꧔":'4',
"꧕":'5',
"꧖":'6',
"꧗":'7',
"꧘":'8',
"꧙":'9',
"꧞":'',
"꧟":'',
"​":'#',//zero-width joiner
"​":' '//zero-width space
}

var latn2java = {
//"":'ꦀ',//? -- archaic
"ng":'ꦁ',//cecak
"r":'ꦂ',//layar
"h":'ꦃ',//wignyan
"a":'ꦄ',//swara-A
"i":'ꦅ',//I-Kawi -- archaic
"i":'ꦆ',//I
"ii":'ꦇ',//Ii -- archaic
"u":'ꦈ',//U
"rê":'ꦉ',//pa cêrêk
"rě":'ꦉ',//pa cěrěk
"lê":'ꦊ',//nga lêlêt
"lě":'ꦊ',//nga lělět
"lêu":'ꦋ',//nga lêlêt Raswadi -- archaic
"lěu":'ꦋ',//nga lělět Raswadi -- archaic
"e":'ꦌ',//E
"ai":'ꦍ',//Ai
"o":'ꦎ',//O

"ka":'ꦏ',
"qa":'ꦐ',//Ka Sasak
"kha":'ꦑ',//Murda
"ga":'ꦒ',
"gha":'ꦓ',//Murda
"nga":'ꦔ',
"ca":'ꦕ',
"cha":'ꦖ',//Murda
"ja":'ꦗ',
"Nya":'ꦘ',//Ja Sasak, Nya Murda
"jha":'ꦙ',//Ja Mahaprana
"nya":'ꦚ',
"ṭa":'ꦛ',
"ṭha":'ꦜ',//Murda
"ḍa":'ꦝ',
"ḍha":'ꦞ',//Murda
"ṇa":'ꦟ',//Murda
"ta":'ꦠ',
"tha":'ꦡ',//Murda
"da":'ꦢ',
"dha":'ꦣ',//Murda
"na":'ꦤ',
"pa":'ꦥ',
"pha":'ꦦ',//Murda
"ba":'ꦧ',
"bha":'ꦨ',//Murda
"ma":'ꦩ',
"ya":'ꦪ',
"ra":'ꦫ',
"Ra":'ꦬ',//Ra Agung
"la":'ꦭ',
"wa":'ꦮ',
"sha":'ꦯ',//Murda
"ṣa":'ꦰ',//Sa Mahaprana
"sa":'ꦱ',
"ha":'ꦲ',//could also be "a" or any sandhangan swara

"​":'꦳',//cecak telu -- diganti zero-width joiner (tmp)
"o":'ꦺꦴ',//taling tarung
"aa":'ꦴ',
"i":'ꦶ',
"ii":'ꦷ',
"u":'ꦸ',
"uu":'ꦹ',
"e":'ꦺ',
"ai":'ꦻ',
"ê":'ꦼ',
"rê":'ꦽ',
"ya":'ꦾ',
"ra":'ꦿ',

/*"​":'꧀',//pangkon -- diganti zero-width joiner (tmp)

"":'꧁',
"":'꧂',
"":'꧃',
"":'꧄',
"":'꧅',
"":'꧆',
"":'꧇',*///titik dua
",":'꧈',
".":'꧉',
/*"":'꧊',
"":'꧋',*/
"(":'꧌',
")":'꧍',
//"":'ꧏ',
"0":'꧐',
"1":'꧑',
"2":'꧒',
"3":'꧓',
"4":'꧔',
"5":'꧕',
"6":'꧖',
"7":'꧗',
"8":'꧘',
"9":'꧙',
/*"":'꧞',
"":'꧟',*/
"#":'​',//zero-width joiner
" ":'​'//zero-width space
}

String.prototype.ganti=function(index, character) {
   return this.substr(0, index) + character;// + this.substr(index+character.length);
}
String.prototype.ganti2=function(index, character) {
   return this.substr(0, index-1) + character;// + this.substr(index+character.length);
}
String.prototype.ganti3=function(index, character) {
   return this.substr(0, index-2) + character;// + this.substr(index+character.length);
}
function transliterate(regexp_file) {

    var agt = navigator.userAgent.toLowerCase();
    if (agt.indexOf("msie")!=-1) { //IE
       var range = document.selection.createRange()
       txt = range.text;
       if (txt == '') {
         var str = window.document.formText.editSrc.value;
       }else{
         var str = range.text;
       }
    }
    else {
      str = window.document.formText.editSrc.value;
    }

    var trans = str;
    for (var i = 0, j = 0; i < str.length; i++) {
      if (regexp_file[str[i]] && regexp_file["ꦂ"] == "r") { //jawa->latin
        if (str[i] == "ꦴ" || str[i] == "ꦶ" || str[i] == "ꦸ" || str[i] == "ꦺ" || str[i] == "ꦼ") {
          if (str[i] == "ꦴ" && i > 0 && str[i-1] == "ꦺ") { trans = trans.ganti2(j, "o"); }
          else if (str[i] == "ꦴ" && i > 0 && str[i-1] == "ꦻ") { trans = trans.ganti3(j, "au");j++; }
          else if (str[i] == "ꦴ") { trans = trans.ganti2(j, "aa");j++; }
          else { trans = trans.ganti2(j, regexp_file[str[i]]); }
        } else if (str[i] == "ꦽ" || str[i] == "ꦾ" || str[i] == "ꦿ" || str[i] == "ꦷ" || str[i] == "ꦹ" || str[i] == "ꦻ" || str[i] == "ꦇ" || str[i] == "ꦍ") { //2 huruf
          trans = trans.ganti2(j, regexp_file[str[i]]);j++;
        } else if (str[i] == "꦳") {
          if (i > 0 && str[i-1] == "ꦗ") { trans = trans.ganti3(j, "za"); }
          else if (i > 0 && str[i-1] == "ꦥ") { trans = trans.ganti3(j, "fa"); }
          else if (i > 0 && str[i-1] == "ꦮ") { trans = trans.ganti3(j, "va"); }//catatan, "va" biasanya ditulis sama dengan "fa" (dengan pa+cecak telu), variannya adalah wa+cecak telu.
          else { trans = trans.ganti2(j, regexp_file[str[i]]); }
        } else if (str[i] == "꧀") {
          trans = trans.ganti2(j, regexp_file[str[i]]);
        } else if (str[i] == "ꦏ" || str[i] == "ꦐ" || str[i] == "ꦑ" || str[i] == "ꦒ" || str[i] == "ꦓ" || str[i] == "ꦕ" || str[i] == "ꦖ" || str[i] == "ꦗ" || str[i] == "ꦙ" || str[i] == "ꦟ" || str[i] == "ꦠ" || str[i] == "ꦡ" || str[i] == "ꦢ" || str[i] == "ꦣ" || str[i] == "ꦤ" || str[i] == "ꦥ" || str[i] == "ꦦ" || str[i] == "ꦧ" || str[i] == "ꦨ" || str[i] == "ꦩ" || str[i] == "ꦪ" || str[i] == "ꦫ" || str[i] == "ꦬ" || str[i] == "ꦭ" || str[i] == "ꦮ" || str[i] == "ꦯ" || str[i] == "ꦱ" || str[i] == "ꦲ" || str[i] == "ꦉ" || str[i] == "ꦊ" || str[i] == "ꦁ") {
          trans = trans.ganti(j, regexp_file[str[i]]);j+=2;
        } else if (str[i] == "ꦔ" || str[i] == "ꦘ" || str[i] == "ꦚ" || str[i] == "ꦛ" || str[i] == "ꦜ" || str[i] == "ꦝ" || str[i] == "ꦞ" || str[i] == "ꦰ" || str[i] == "ꦋ") {
          trans = trans.ganti(j, regexp_file[str[i]]);j+=3;
        /*} else if (str[i] == "꧈" || str[i] == "꧉") { // habis titik atau koma diberi spasi
          trans = trans.ganti(j, regexp_file[str[i]]+" ");j+=2;*/
        } else if (str[i] == " ") {
          trans = trans.ganti(j, " ");j++;
        } else {
          trans = trans.ganti(j, regexp_file[str[i]]);j++;
        }
      } else if (regexp_file[str[i]] && regexp_file["r"] == "ꦂ") { //latin->jawa
        if (str[i] == "a" && i > 0) {
          trans = trans.ganti(j, " ");j++;
        } else {
          trans = trans.ganti(j, regexp_file[str[i]]);j++;
        }
      } else {
        trans = trans.ganti(j, str[i]);j++;
      }
    }

    if (agt.indexOf("msie")!=-1) { //IE
      if (txt == ''){
        window.document.formText.editSrc.value = trans;
      } else {
        range.text = trans;
        //if (!window.opera) txt = txt.replace(/\r/g,'')
        if (range.moveStart) range.moveStart('character', - txt.length)
        range.select() 
      }
    }
    else {
        window.document.formText.editSrc.value = trans;
    }
    return true;
}