User:Yes0song/hani converter.js
Note: After publishing, you may have to bypass your browser's cache to see the changes.
- Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
- Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
- Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
- Opera: Press Ctrl-F5.
// 이 스크립트에 대한 안내 및 설치 방법은 [[User:Yes0song/漢字 異體字 變換機]]를 참조해 주십시오.
// 異體字 變換 스크립트
// 原本 소스: http://incubator.wikimedia.org/w/index.php?title=User:Leque/monobook.js&oldid=76535
// 修正, maintainer: [[User:Yes0song]]
//
// 生成되는 탭의 目錄
// ks: 本文의 漢字를 KS 코드 內의 漢字 中 常用漢字에 近接한 것으로 統一시킴.
// 常用漢字: 本文의 漢字를 常用漢字로 統一시킴(KS 코드 範圍 벗어남).
// 本字: 本文의 漢字를 本字로 統一시킴(KS 코드 範圍 벗어남).
//
// 本 소스에서 使用된 略號
// kss: KS 코드 內의 漢字 中 常用漢字이거나 그것에 近接한 글자.
// (예: 萬, 草, 産, 强)
// syo: KS 코드 外의 常用漢字 및 이와 類似한 글자.
// (예: 產)
// bja: KS 코드 外의 本字. 但, 古字類는 排除.
// (예: 強)
var conversionTables = {
"ks": {
// syo->kss
"吿": "告", "祕": "秘", "產": "産", "插": "揷", "叙": "敍", "鎻": "鎖", "顏": "顔",
"鴈": "雁", "彥": "彦", "研": "硏", "妍": "姸", "艷": "艶", "衞": "衛", "絕": "絶",
"即": "卽", "册": "冊", "栅": "柵", "豐": "豊",
// "畫": "畵", //畫는 劃일 수도 있어서 一旦 이 글자는 變換하지 않도록 設定함.
// "畫": "劃", //畫은 畵일 수도 있어서 一旦 이 글자는 變換하지 않도록 設定함.
// bja->kss
"強": "强", "皋": "皐", "躳": "躬", "竆": "窮",
"亙": "亘", // 亘이 '뻗칠 긍'일 때만 亙과 異體字 關係 成立.
// 亘이 '펼 선'일 때는 宣과 通字 關係 成立.
"涼": "凉", "畱": "留", "橊": "榴", "澑": "溜", "璢": "瑠", "癅": "瘤",
// 以上 畱→留(留가 KS에 있으므로 거기에 맞춤)
"冰": "氷", "彝" :"彛", "姊": "姉", "恆": "恒", "郉": "邢",
"籀": "籒", // 이것은 反對로 留→畱의 變換. 籒가 KS 擴張漢字에 있으므로 거기에 맞춤.
"霸": "覇", "戲": "戱",
// 其他
"黙": "默" // [[한/글|아래아한글]]에서 默이 黙으로 잘못 整理됨. 아래아한글을 通해
// 編輯하는 使用者를 配慮하여 追加함.
},
"sy": {
// kss->syo
"告": "吿", "秘": "祕", "産": "產", "揷": "插", "敍": "叙", "鎖": "鎻", "顔": "顏",
"雁": "鴈", "彦": "彥", "硏": "研", "妍": "姸", "艷": "艶", "衛": "衞", "絶": "絕",
"卽": "即", "冊": "册", "柵": "栅", "豊": "豐",
"畵": "畫",
// "劃": "畫", //劃은 畫으로 바꾸면 안 되는 境遇도 있다는 見解가 있어
// 一旦 이 글자는 變換하지 않도록 設定함.
// bja->syo, kss
"強": "强", "皋": "皐", "躳": "躬", "竆": "窮",
"亙": "亘", // 亘이 '뻗칠 긍'일 때만 亙과 異體字 關係 成立.
// 亘이 '펼 선'일 때는 宣과 通字 關係 成立.
"涼": "凉", "畱": "留", "橊": "榴", "㙧": "塯", "澑": "溜", "璢": "瑠", "癅": "瘤",
"羀": "罶", "鐂": "鎦", "飅": "飀", "驑": "騮",
// 以上 畱→留(留가 常用漢字이므로 거기에 맞춤)
"冰": "氷", "彝" :"彛", "姊": "姉", "恆": "恒", "郉": "邢",
"籀": "籒", // 이것은 反對로 留→畱의 變換. 籒와 籀는 常用漢字에서 빠진 글자.
// 大韓民國의 漢字混用文에서 一般的으로 KS 擴張漢字에 있는 籒를 使用하는
// 傾向이 많은 것으로 判斷되므로, 留 等과 反對로 變換함.
"霸": "覇", "戲": "戱",
// 其他
"黙": "默" // [[한/글|아래아한글]]에서 默이 黙으로 잘못 整理됨. 아래아한글을 通해
// 編輯하는 使用者를 配慮하여 追加함.
},
"bj": {
// kss->bj
"告": "吿", "秘": "祕", "産": "產", "揷": "插", "叙": "敍", "鎻": "鎖", "顔": "顏",
"雁": "鴈", "彦": "彥", "研": "硏", "妍": "姸", "艶": "艷", "衛": "衞", "絶": "絕",
"即": "卽", "冊": "册", "柵": "栅", "豊": "豐",
// syo->bj, kss
"强": "強", "皐": "皋", "躬": "躳", "窮": "竆",
// "亘": "亙", // 亘이 '뻗칠 긍'일 때만 亙과 異體字 關係 成立.
// 亘이 '펼 선'일 때는 宣과 通字 關係 成立.
// 一旦 이 글자는 變換하지 않도록 設定함.
"凉": "涼", "留": "畱", "榴": "橊", "塯": "㙧", "溜": "澑", "瑠": "璢", "瘤": "癅",
"罶": "羀", "鎦": "鐂", "飀": "飅", "騮": "驑",
// 以上 留→畱(留가 常用漢字이므로 거기에 맞춤)
"氷": "冰", "彛" :"彝", "姉": "姊", "恒": "恆", "邢": "郉",
"籀": "籒", // 이것도 留→畱
"霸": "覇", "戱": "戲",
// 其他
"黙": "默" // [[한/글|아래아한글]]에서 默이 黙으로 잘못 整理됨. 아래아한글을 通해
// 編輯하는 使用者를 配慮하여 追加함.
},
};
var menu_items = {
"ks": "ks",
"常用漢字": "sy",
"本字": "bj",
}
function copyPropsInto(targetObj) {
var i, prop, fromObj;
for (i = 1; i < arguments.length; i++) {
fromObj = arguments[i];
for (prop in fromObj) {
targetObj[prop] = fromObj[prop];
}
}
}
function getParameter(search, param)
{
var r;
if (r = search.match("[?&;]" + param + "=([-._~a-zA-Z0-9]*)")) {
return r[1];
} else {
return null;
}
}
function convertZitai(kind) {
var table = conversionTables[kind];
var elems = document.getElementsByTagName("*");
var i, j;
for (i = 0; i < elems.length; i++) {
var elem = elems.item(i);
var nodes = elem.childNodes;
for (j = 0; j < nodes.length; j++) {
if (nodes.item(j).nodeType == 3) {
var text_node = nodes.item(j);
text_node.nodeValue = text_node.nodeValue.replace(/./g, function(str) { return table.hasOwnProperty(str) ? table[str] : str; });
}
}
}
}
function initZitaiConverter() {
var seizi, ryakuzi, kana;
var anchor, li;
for (kyuuzi in conversionTables.kyuuzi2sinzi) {
sinzi = conversionTables.kyuuzi2sinzi[kyuuzi];
if (!conversionTables.sinzi2kyuuzi[sinzi]) {
conversionTables.sinzi2kyuuzi[sinzi] = kyuuzi;
} else {
conversionTables.sinzi2kyuuzi[sinzi] = sinzi;
}
}
copyPropsInto(conversionTables.old_style,
conversionTables.sinzi2kyuuzi,
conversionTables.enlarge_small_kana)
copyPropsInto(conversionTables.archaic_style,
conversionTables.old_style,
conversionTables.remove_dakuten_handakuten,
conversionTables.remove_kutouten);
var menu = document.getElementById("ca-edit").parentNode;
for (var label in menu_items) {
var v = menu_items[label];
anchor = document.createElement("a");
anchor.appendChild(document.createTextNode(label));
anchor.href = document.location.pathname + "?variant=" + v;
li = document.createElement("li");
li.id = "char-trans:" + v;
li.appendChild(anchor);
menu.appendChild(li);
}
var variant = getParameter(document.location.search, "variant");
if (variant)
convertZitai(variant);
}
if (window.addEventListener) {
window.addEventListener("load", initZitaiConverter, false);
} else if (window.attachEvent) {
window.attachEvent("onload", initZitaiConverter);
}
// 異體字 變換 스크립트 끝.