Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function convert_hiragana_to_romaji(hira)
- {
- var map = {
- 'あ':'a','い':'i','う':'u','え':'e','お':'o',
- 'か':'ka','が':'ga','き':'ki','ぎ':'gi','く':'ku','ぐ':'gu','け':'ke','げ':'ge','こ':'ko','ご':'go',
- 'さ':'sa','ざ':'za','し':'shi','じ':'ji','す':'su','ず':'zu','せ':'se','ぜ':'ze','そ':'so','ぞ':'zo',
- 'た':'ta','だ':'da','ち':'chi','ぢ':'ji','つ':'tsu','づ':'zu','て':'te','で':'de','と':'to','ど':'do',
- 'な':'na','に':'ni','ぬ':'nu','ね':'ne','の':'no',
- 'は':'ha','ば':'ba','ぱ':'pa','ひ':'hi','び':'bi','ぴ':'pi','ふ':'fu','ぶ':'bu','ぷ':'pu','へ':'he','べ':'be','ぺ':'pe','ほ':'ho','ぼ':'bo','ぽ':'po',
- 'ま':'ma','み':'mi','む':'mu','め':'me','も':'mo',
- 'や':'ya','ゆ':'yu','よ':'yo',
- 'ら':'ra','り':'ri','る':'ru','れ':'re','ろ':'ro',
- 'わ':'wa','ゐ':'wi','ゑ':'we','を':'wo',
- 'ゔ':'vu',
- ' ':' ','?':'?','!':'!'
- };
- var ymap = {'ゃ':'ya','ゅ':'yu','ょ':'yo'};
- var wmap = {'ゎ':'wa'};
- var vmap = {'ぁ':'a','ぃ':'i','ぅ':'u','ぇ':'e','ぉ':'o'};
- var romaji = '';
- var copynextconsonant = 0;
- for (var i = 0; i < hira.length; i++)
- {
- if (map[hira[i]])
- {
- if (copynextconsonant > 0)
- {
- if('あいうえおん'.indexOf(hira[i]) >= 0)
- copynextconsonant = 0;
- while (copynextconsonant > 0)
- {
- romaji += map[hira[i]][0];
- copynextconsonant--;
- }
- }
- romaji += map[hira[i]];
- }
- else if (hira[i] === 'っ') copynextconsonant++;
- else if (ymap[hira[i]])
- {
- if (i > 0 && romaji.slice(-1) === 'i')
- if ('ちしじ'.indexOf(hira[i-1]) !== -1) romaji = romaji.slice(0,-1) + ymap[hira[i]][1];
- else romaji = romaji.slice(0,-1) + ymap[hira[i]];
- else
- romaji += ymap[hira[i]];
- }
- else if (wmap[hira[i]])
- {
- if (i > 0 && romaji.slice(-1) === 'u')//is this even right?
- romaji = romaji.slice(0,-1) + wmap[hira[i]];
- else
- romaji += wmap[hira[i]];
- }
- else if (vmap[hira[i]])
- {
- if (i > 0 && 'あいうえおぁぃぅぇぉん'.indexOf(hira[i-1]) === -1)
- romaji = romaji.slice(0,-1) + vmap[hira[i]];
- else
- romaji += vmap[hira[i]];
- }
- else if (hira[i] === 'ん')
- {
- romaji += 'n';
- if (i != hira.length-1 && 'あいうえおぁぃぅぇぉやゆよゃゅょ'.indexOf(hira[i+1]) >= 0)
- romaji += "'";
- }
- else if (hira[i] === 'ー')
- {
- romaji += romaji.slice(-1);
- }
- else if (hira.charCodeAt(i) < 127)
- romaji += hira[i];
- }
- return romaji;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement