Advertisement
torchlight

romaji thing that probably works

Jun 20th, 2013
128
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function convert_hiragana_to_romaji(hira)
  2. {
  3.     var map = {
  4.         'あ':'a','い':'i','う':'u','え':'e','お':'o',
  5.         'か':'ka','が':'ga','き':'ki','ぎ':'gi','く':'ku','ぐ':'gu','け':'ke','げ':'ge','こ':'ko','ご':'go',
  6.         'さ':'sa','ざ':'za','し':'shi','じ':'ji','す':'su','ず':'zu','せ':'se','ぜ':'ze','そ':'so','ぞ':'zo',
  7.         'た':'ta','だ':'da','ち':'chi','ぢ':'ji','つ':'tsu','づ':'zu','て':'te','で':'de','と':'to','ど':'do',
  8.         'な':'na','に':'ni','ぬ':'nu','ね':'ne','の':'no',
  9.         'は':'ha','ば':'ba','ぱ':'pa','ひ':'hi','び':'bi','ぴ':'pi','ふ':'fu','ぶ':'bu','ぷ':'pu','へ':'he','べ':'be','ぺ':'pe','ほ':'ho','ぼ':'bo','ぽ':'po',
  10.         'ま':'ma','み':'mi','む':'mu','め':'me','も':'mo',
  11.         'や':'ya','ゆ':'yu','よ':'yo',
  12.         'ら':'ra','り':'ri','る':'ru','れ':'re','ろ':'ro',
  13.         'わ':'wa','ゐ':'wi','ゑ':'we','を':'wo',
  14.         'ゔ':'vu',
  15.         ' ':' ','?':'?','!':'!'
  16.     };
  17.     var ymap = {'ゃ':'ya','ゅ':'yu','ょ':'yo'};
  18.     var wmap = {'ゎ':'wa'};
  19.     var vmap = {'ぁ':'a','ぃ':'i','ぅ':'u','ぇ':'e','ぉ':'o'};
  20.     var romaji = '';
  21.     var copynextconsonant = 0;
  22.     for (var i = 0; i < hira.length; i++)
  23.     {
  24.         if (map[hira[i]])
  25.         {
  26.             if (copynextconsonant > 0)
  27.             {
  28.                 if('あいうえおん'.indexOf(hira[i]) >= 0)
  29.                     copynextconsonant = 0;
  30.                 while (copynextconsonant > 0)
  31.                 {
  32.                     romaji += map[hira[i]][0];
  33.                     copynextconsonant--;
  34.                 }
  35.             }
  36.             romaji += map[hira[i]];
  37.         }
  38.         else if (hira[i] === 'っ') copynextconsonant++;
  39.         else if (ymap[hira[i]])
  40.         {
  41.             if (i > 0 && romaji.slice(-1) === 'i')
  42.                 if ('ちしじ'.indexOf(hira[i-1]) !== -1) romaji = romaji.slice(0,-1) + ymap[hira[i]][1];
  43.                 else romaji = romaji.slice(0,-1) + ymap[hira[i]];
  44.             else
  45.                 romaji += ymap[hira[i]];
  46.         }
  47.         else if (wmap[hira[i]])
  48.         {
  49.             if (i > 0 && romaji.slice(-1) === 'u')//is this even right?
  50.                 romaji = romaji.slice(0,-1) + wmap[hira[i]];
  51.             else
  52.                 romaji += wmap[hira[i]];
  53.         }
  54.         else if (vmap[hira[i]])
  55.         {
  56.             if (i > 0 && 'あいうえおぁぃぅぇぉん'.indexOf(hira[i-1]) === -1)
  57.                 romaji = romaji.slice(0,-1) + vmap[hira[i]];
  58.             else
  59.                 romaji += vmap[hira[i]];
  60.         }
  61.         else if (hira[i] === 'ん')
  62.         {
  63.             romaji += 'n';
  64.             if (i != hira.length-1 && 'あいうえおぁぃぅぇぉやゆよゃゅょ'.indexOf(hira[i+1]) >= 0)
  65.                 romaji += "'";
  66.         }
  67.         else if (hira[i] === 'ー')
  68.         {
  69.             romaji += romaji.slice(-1);
  70.         }
  71.         else if (hira.charCodeAt(i) < 127)
  72.             romaji += hira[i];
  73.     }
  74.     return romaji;
  75. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement