512 lines
11 KiB
HTML
512 lines
11 KiB
HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
|
<html xmlns="http://www.w3c.org/1999/xhtml">
|
|
<head>
|
|
<title>kanaverter [JavaScript]</title>
|
|
<style type='text/css'>
|
|
* {
|
|
margin:0;
|
|
padding:0;
|
|
}
|
|
|
|
#box {
|
|
background:#f5f5f5 url(logo.png) no-repeat 2px 4px;
|
|
width:490px;
|
|
height:250px;
|
|
padding:50px 5px 0 5px;
|
|
position:absolute;
|
|
left:50%;
|
|
top:50%;
|
|
margin-left:-251px;
|
|
margin-top:-151px;
|
|
border:1px solid #999;
|
|
}
|
|
|
|
#box div {
|
|
width:240px;
|
|
height:245px;
|
|
float:left;
|
|
}
|
|
|
|
#romaji_container {
|
|
margin-right:10px;
|
|
}
|
|
|
|
#kana_container {
|
|
}
|
|
|
|
#box div textarea {
|
|
font:12px arial;
|
|
border:1px solid #ddd;
|
|
width:232px;
|
|
padding:3px;
|
|
height:208px;
|
|
background:#fff;
|
|
overflow:auto;
|
|
}
|
|
|
|
#box div div textarea {
|
|
height:80px;
|
|
margin-bottom:5px;
|
|
}
|
|
|
|
#hirakata {
|
|
display:none;
|
|
}
|
|
|
|
h1 {
|
|
font:normal 20px georgia;
|
|
margin-top:5px;
|
|
padding-left:3px;
|
|
cursor:pointer;
|
|
}
|
|
|
|
h1:hover {
|
|
background:#ddd;
|
|
}
|
|
|
|
h2 {
|
|
font:normal 14px georgia;
|
|
}
|
|
|
|
#box #wl {
|
|
position:absolute;
|
|
top:5px;
|
|
right:5px;
|
|
color:#0000ff;
|
|
font:12px arial;
|
|
cursor:pointer;
|
|
width:auto;
|
|
height:auto;
|
|
float:none;
|
|
}
|
|
|
|
#box #wl #wn {
|
|
position:absolute;
|
|
top:20px;
|
|
right:0;
|
|
font:12px arial;
|
|
width:478px;
|
|
padding:5px;
|
|
border:1px solid #000;
|
|
height:auto;
|
|
float:none;
|
|
color:#000;
|
|
background:#fff;
|
|
display:none;
|
|
}
|
|
|
|
#box #wl:hover #wn {
|
|
display:block;
|
|
}
|
|
</style>
|
|
<!--[if IE]>
|
|
<style type='text/css'>
|
|
#box div textarea {
|
|
margin-top:-1px;
|
|
}
|
|
</style>
|
|
<![endif]-->
|
|
<script type='text/javascript'>
|
|
function is_array(obj) {
|
|
return obj.constructor==Array
|
|
}
|
|
|
|
function ctitle(where,title) {
|
|
nodes=eval(where+"_div").childNodes
|
|
nodes_length=nodes.length
|
|
for (var i=0;i<nodes_length;i++) {
|
|
node=nodes[i]
|
|
if (node.nodeName=="H1") node.innerHTML=title
|
|
}
|
|
}
|
|
|
|
function kanaside(what) {
|
|
nodes=kana_div.childNodes
|
|
nodes_length=nodes.length
|
|
for (var i=0;i<nodes_length;i++) {
|
|
node=nodes[i]
|
|
if (node.nodeName=="TEXTAREA") node.style.display=visibility_action[oppo[what]]
|
|
}
|
|
hk_div.style.display=visibility_action[what]
|
|
}
|
|
|
|
function pblur(what) {
|
|
if (what==infocus) {
|
|
if (what=="romaji") romaji_input=romaji_text.value
|
|
else if (what=="kana") romaji_output=romaji_text.value
|
|
}
|
|
else {
|
|
if (what=="romaji") romaji_output=romaji_text.value
|
|
}
|
|
}
|
|
|
|
function bpfocus(what,detail) {
|
|
if (detail===undefined) detail=what
|
|
if (eval(detail+"_text").value=="") pfocus(what)
|
|
else if (what!=infocus) eval(detail+"_text").select()
|
|
}
|
|
|
|
function pfocus(what) {
|
|
if (what!=infocus) {
|
|
whatnot=oppo[what]
|
|
ctitle(what,what.substr(0,1).toUpperCase()+what.substr(1)+" (input)")
|
|
ctitle(whatnot,whatnot.substr(0,1).toUpperCase()+whatnot.substr(1)+" (output)")
|
|
kanaside(what)
|
|
tfocus(what)
|
|
}
|
|
}
|
|
|
|
function tfocus(what) {
|
|
whatnot=oppo[what]
|
|
eval(what+"_text").focus()
|
|
if (what=="kana") romaji_text.value=romaji_output
|
|
else if (what=="romaji") romaji_text.value=romaji_input
|
|
infocus=what
|
|
}
|
|
|
|
function html_entity_decode(str) {
|
|
ta=document.createElement("textarea")
|
|
ta.innerHTML=str.replace(/</g,"<").replace(/>/g,">")
|
|
return ta.value
|
|
}
|
|
|
|
function convert_value(str,from,to) {
|
|
var strlen=str.length
|
|
var ftxt=""
|
|
if (to=="hira" || to=="kata") {
|
|
var ostr=str
|
|
var str=str.toLowerCase()
|
|
var ttxt=""
|
|
var ottxt=""
|
|
var ctxt
|
|
var octxt
|
|
var cctxt
|
|
var occtxt
|
|
var maybe
|
|
var ad
|
|
var crkanadb
|
|
for (var i=0;i<strlen;i++) {
|
|
ctxt=str.substr(i,1)
|
|
octxt=ostr.substr(i,1)
|
|
cctxt=ttxt+ctxt
|
|
occtxt=ottxt+octxt
|
|
maybe=false
|
|
ad=false
|
|
for (var ii=0;ii<eval("r"+to+"dbl");ii++) {
|
|
crkanadb=eval("r"+to+"db[ii]")
|
|
if (crkanadb==cctxt && !ad) {
|
|
ad=true
|
|
ftxt+=""+eval("r_"+to+"db[cctxt]")+";"
|
|
ttxt=""
|
|
ottxt=""
|
|
maybe=true
|
|
}
|
|
else if (crkanadb.substr(0,cctxt.length)==cctxt && !ad) {
|
|
ad=true
|
|
ttxt+=ctxt
|
|
ottxt+=octxt
|
|
maybe=true
|
|
}
|
|
}
|
|
if (!maybe) {
|
|
ad=false
|
|
for (var ii=0;ii<eval("r"+to+"dbl");ii++) {
|
|
crkanadb=eval("r"+to+"db[ii]")
|
|
if (crkanadb==ctxt && !ad) {
|
|
ad=true
|
|
ftxt+=occtxt.substr(0,1)+""+eval("r_"+to+"db[ctxt]")+";"
|
|
ttxt=""
|
|
ottxt=""
|
|
maybe=true
|
|
}
|
|
}
|
|
if (!maybe) {
|
|
ftxt+=ottxt
|
|
ttxt=ctxt
|
|
ottxt=octxt
|
|
}
|
|
}
|
|
}
|
|
//document.title="cc: "+cctxt+" c: "+ctxt+" t: "+ttxt
|
|
ftxt+=ottxt
|
|
ftxt=html_entity_decode(ftxt)
|
|
}
|
|
else if (to=="romaji") {
|
|
var ctxt
|
|
var ckana
|
|
var isit
|
|
for (var i=0;i<strlen;i++) {
|
|
ctxt=str.substr(i,1)
|
|
isit=false
|
|
for (var ii=0;ii<kkanadbl && !isit;ii++) {
|
|
ckana=kkanadb[ii]
|
|
if (html_entity_decode(""+ckana+";")==ctxt) isit=true
|
|
}
|
|
if (isit) ftxt+=k_kanadb[ckana]
|
|
else ftxt+=ctxt
|
|
}
|
|
}
|
|
return ftxt
|
|
}
|
|
|
|
function copy_value(from,to) {
|
|
if (from==infocus) {
|
|
ovalue=eval(from+"_text").value
|
|
nto=to.split(",")
|
|
tol=nto.length
|
|
for (var i=0;i<tol;i++) {
|
|
cto=nto[i]
|
|
if (ovalue!="") nvalue=convert_value(ovalue,from,cto)
|
|
else nvalue=""
|
|
eval(cto+"_text").value=nvalue
|
|
}
|
|
}
|
|
}
|
|
|
|
window.onload=function(){
|
|
box_div=document.getElementById("box")
|
|
romaji_div=document.getElementById("romaji_container")
|
|
kana_div=document.getElementById("kana_container")
|
|
hk_div=document.getElementById("hirakata")
|
|
|
|
romaji_text=document.getElementById("romaji")
|
|
kana_text=document.getElementById("kana")
|
|
hira_text=document.getElementById("hira")
|
|
kata_text=document.getElementById("kata")
|
|
|
|
if (navigator.appVersion.toLowerCase().indexOf("chrome")!=-1) {
|
|
hira_text.style.height="78px"
|
|
kata_text.style.height="78px"
|
|
}
|
|
|
|
oppo=new Array()
|
|
oppo["romaji"]="kana"
|
|
oppo["kana"]="romaji"
|
|
visibility_action=new Array()
|
|
visibility_action["romaji"]="block"
|
|
visibility_action["kana"]="none"
|
|
|
|
romaji_input=""
|
|
romaji_output=""
|
|
infocus=""
|
|
|
|
rhiradb=new Array("o","a","sa","ki","ma","ho","ha","yo","mu","mo","shi","si","nu","me","to","ko","ni","ta","na","ne","wa","le","re","se","ke","mi","no","tsu","tzu","tu","u","la","ra","chi","ci","ti","lo","ro","lu","ru","yu","ya","wo","li","ri","n'","e","so","te","he","ku","fu","hu","su","hi","ka","i")
|
|
rhiradbl=rhiradb.length
|
|
|
|
r_hiradb=new Array()
|
|
r_hiradb["o"]=362
|
|
r_hiradb["a"]=354
|
|
r_hiradb["sa"]=373
|
|
r_hiradb["ki"]=365
|
|
r_hiradb["ma"]=414
|
|
r_hiradb["ho"]=411
|
|
r_hiradb["ha"]=399
|
|
r_hiradb["yo"]=424
|
|
r_hiradb["mu"]=416
|
|
r_hiradb["mo"]=418
|
|
r_hiradb["shi"]=375
|
|
r_hiradb["si"]=375
|
|
r_hiradb["nu"]=396
|
|
r_hiradb["me"]=417
|
|
r_hiradb["to"]=392
|
|
r_hiradb["ko"]=371
|
|
r_hiradb["ni"]=395
|
|
r_hiradb["ta"]=383
|
|
r_hiradb["na"]=394
|
|
r_hiradb["ne"]=397
|
|
r_hiradb["wa"]=431
|
|
r_hiradb["le"]=428
|
|
r_hiradb["re"]=428
|
|
r_hiradb["se"]=379
|
|
r_hiradb["ke"]=369
|
|
r_hiradb["mi"]=415
|
|
r_hiradb["no"]=398
|
|
r_hiradb["tsu"]=388
|
|
r_hiradb["tzu"]=388
|
|
r_hiradb["tu"]=388
|
|
r_hiradb["u"]=358
|
|
r_hiradb["la"]=425
|
|
r_hiradb["ra"]=425
|
|
r_hiradb["chi"]=385
|
|
r_hiradb["ci"]=385
|
|
r_hiradb["ti"]=385
|
|
r_hiradb["lo"]=429
|
|
r_hiradb["ro"]=429
|
|
r_hiradb["lu"]=427
|
|
r_hiradb["ru"]=427
|
|
r_hiradb["yu"]=422
|
|
r_hiradb["ya"]=420
|
|
r_hiradb["wo"]=434
|
|
r_hiradb["li"]=426
|
|
r_hiradb["ri"]=426
|
|
r_hiradb["n'"]=435
|
|
r_hiradb["e"]=360
|
|
r_hiradb["so"]=381
|
|
r_hiradb["te"]=390
|
|
r_hiradb["he"]=408
|
|
r_hiradb["ku"]=367
|
|
r_hiradb["fu"]=405
|
|
r_hiradb["hu"]=405
|
|
r_hiradb["su"]=377
|
|
r_hiradb["hi"]=402
|
|
r_hiradb["ka"]=363
|
|
r_hiradb["i"]=356
|
|
|
|
|
|
rkatadb=new Array("ka","u","me","no","i","to","chi","ci","ti","o","mi","yo","mu","ke","wa","nu","so","n'","sa","na","te","yu","ko","e","ku","fu","hu","su","tsu","tzu","tu","shi","si","li","ri","lu","ru","le","re","hi","lo","ro","he","ho","ta","la","ra","wo","ki","ni","ha","se","ya","a","ma","ne")
|
|
rkatadbl=rkatadb.length
|
|
|
|
r_katadb=new Array()
|
|
r_katadb["ka"]=459
|
|
r_katadb["u"]=454
|
|
r_katadb["me"]=513
|
|
r_katadb["no"]=494
|
|
r_katadb["i"]=452
|
|
r_katadb["to"]=488
|
|
r_katadb["chi"]=481
|
|
r_katadb["ci"]=481
|
|
r_katadb["ti"]=481
|
|
r_katadb["o"]=458
|
|
r_katadb["mi"]=511
|
|
r_katadb["yo"]=520
|
|
r_katadb["mu"]=512
|
|
r_katadb["ke"]=465
|
|
r_katadb["wa"]=527
|
|
r_katadb["nu"]=492
|
|
r_katadb["so"]=477
|
|
r_katadb["n'"]=531
|
|
r_katadb["sa"]=469
|
|
r_katadb["na"]=490
|
|
r_katadb["te"]=486
|
|
r_katadb["yu"]=518
|
|
r_katadb["ko"]=467
|
|
r_katadb["e"]=456
|
|
r_katadb["ku"]=463
|
|
r_katadb["fu"]=501
|
|
r_katadb["hu"]=501
|
|
r_katadb["su"]=473
|
|
r_katadb["tsu"]=484
|
|
r_katadb["tzu"]=484
|
|
r_katadb["tu"]=484
|
|
r_katadb["shi"]=471
|
|
r_katadb["si"]=471
|
|
r_katadb["li"]=522
|
|
r_katadb["ri"]=522
|
|
r_katadb["lu"]=523
|
|
r_katadb["ru"]=523
|
|
r_katadb["le"]=524
|
|
r_katadb["re"]=524
|
|
r_katadb["hi"]=498
|
|
r_katadb["lo"]=525
|
|
r_katadb["ro"]=525
|
|
r_katadb["he"]=504
|
|
r_katadb["ho"]=507
|
|
r_katadb["ta"]=479
|
|
r_katadb["la"]=521
|
|
r_katadb["ra"]=521
|
|
r_katadb["wo"]=530
|
|
r_katadb["ki"]=461
|
|
r_katadb["ni"]=491
|
|
r_katadb["ha"]=495
|
|
r_katadb["se"]=475
|
|
r_katadb["ya"]=516
|
|
r_katadb["a"]=450
|
|
r_katadb["ma"]=510
|
|
r_katadb["ne"]=493
|
|
|
|
|
|
kkanadb=new Array("362","354","373","365","414","411","399","424","416","418","375","396","417","392","371","395","383","394","397","431","428","379","369","415","398","388","358","425","385","429","427","422","420","434","426","435","360","381","390","408","367","405","377","402","363","356")
|
|
kkanadbl=kkanadb.length
|
|
|
|
k_kanadb=new Array()
|
|
k_kanadb["362"]="o"
|
|
k_kanadb["354"]="a"
|
|
k_kanadb["373"]="sa"
|
|
k_kanadb["365"]="ki"
|
|
k_kanadb["414"]="ma"
|
|
k_kanadb["411"]="ho"
|
|
k_kanadb["399"]="ha"
|
|
k_kanadb["424"]="yo"
|
|
k_kanadb["416"]="mu"
|
|
k_kanadb["418"]="mo"
|
|
k_kanadb["375"]="shi"
|
|
k_kanadb["375"]="si"
|
|
k_kanadb["396"]="nu"
|
|
k_kanadb["417"]="me"
|
|
k_kanadb["392"]="to"
|
|
k_kanadb["371"]="ko"
|
|
k_kanadb["395"]="ni"
|
|
k_kanadb["383"]="ta"
|
|
k_kanadb["394"]="na"
|
|
k_kanadb["397"]="ne"
|
|
k_kanadb["431"]="wa"
|
|
k_kanadb["428"]="le"
|
|
k_kanadb["428"]="re"
|
|
k_kanadb["379"]="se"
|
|
k_kanadb["369"]="ke"
|
|
k_kanadb["415"]="mi"
|
|
k_kanadb["398"]="no"
|
|
k_kanadb["388"]="tsu"
|
|
k_kanadb["388"]="tzu"
|
|
k_kanadb["388"]="tu"
|
|
k_kanadb["358"]="u"
|
|
k_kanadb["425"]="la"
|
|
k_kanadb["425"]="ra"
|
|
k_kanadb["385"]="chi"
|
|
k_kanadb["385"]="ci"
|
|
k_kanadb["385"]="ti"
|
|
k_kanadb["429"]="lo"
|
|
k_kanadb["429"]="ro"
|
|
k_kanadb["427"]="lu"
|
|
k_kanadb["427"]="ru"
|
|
k_kanadb["422"]="yu"
|
|
k_kanadb["420"]="ya"
|
|
k_kanadb["434"]="wo"
|
|
k_kanadb["426"]="li"
|
|
k_kanadb["426"]="ri"
|
|
k_kanadb["435"]="n'"
|
|
k_kanadb["360"]="e"
|
|
k_kanadb["381"]="so"
|
|
k_kanadb["390"]="te"
|
|
k_kanadb["408"]="he"
|
|
k_kanadb["367"]="ku"
|
|
k_kanadb["405"]="fu"
|
|
k_kanadb["405"]="hu"
|
|
k_kanadb["377"]="su"
|
|
k_kanadb["402"]="hi"
|
|
k_kanadb["363"]="ka"
|
|
k_kanadb["356"]="i"
|
|
}
|
|
</script>
|
|
</head>
|
|
<body>
|
|
<div id='box'>
|
|
|
|
<div id='wl'>
|
|
Warning!
|
|
<div id='wn'>
|
|
This isn't a very good kana-romaji converter. For one thing, it's in a web browser and relies on the power of the user's computer. Second, it's also not complete. It only translates basic kanas. Kanas consisting of 2 signs simply don't exist in this web app. Instead I recommend JWPce for use as a text editor. It's simple and works perfectly.
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<div id='romaji_container'>
|
|
<h1 onclick='pfocus("romaji")'>Romaji</h1>
|
|
<textarea id='romaji' onfocus='bpfocus("romaji")' onblur='pblur("romaji")' onkeyup='copy_value("romaji","hira,kata")'></textarea>
|
|
</div>
|
|
|
|
<div id='kana_container'>
|
|
<h1 onclick='pfocus("kana")'>Kana</h1>
|
|
<textarea id='kana' onfocus='pfocus("kana")' onblur='pblur("kana")' onkeyup='copy_value("kana","romaji")'></textarea>
|
|
<div id='hirakata'>
|
|
<h2>Hiragana:</h2>
|
|
<textarea id='hira' onfocus='bpfocus("kana","hira")'></textarea>
|
|
<h2>Katakana:</h2>
|
|
<textarea id='kata' onfocus='bpfocus("kana","kata")'></textarea>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
</body>
|
|
</html>
|