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)
  • Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5.
// <pre>
// 表記法変換スクリプト
// User:<ユーザ名>/monobook.js にこの内容を追加すると discussion 等のタブの右横に変換用のタブが追加されます
// 新字体: 漢字の字体を新字体に統一する
// 舊字體: 漢字の字体を旧字体(康煕字典体)に統一する
// 舊表記: 漢字を旧字体に変換し、捨て仮名を大書きにする(例:「しゃ」→「しや」)
// 古典風表記: 舊表記に変換し、さらに句読点を適当な空白文字に置き換える
//
// ただし、新字体のうち複数の康煕字典体に対応するもの(例: 弁→辯、辨、瓣、辧、辮、弁)は変換しません。詳しくは下のコード参照。

var conversionTables = {
    "archaic_style": new Object(),
    "old_style": new Object(),
    "sinzi2kyuuzi": new Object(),
    "enlarge_small_kana": {
	"ぁ": "あ" , "ぃ": "い" , "ぅ": "う" , "ぇ": "え" , "ぉ": "お",
	"ゃ": "や" , "ゅ": "ゆ" , "ょ": "よ",
	"っ": "つ",
	"ゎ": "わ"
    },
    "remove_kutouten": {
	"、": " " ,
	"。": "\u2003"	// em space
    },
    "remove_dakuten_handakuten": {
	"が": "か", "ぎ": "き", "ぐ": "く", "げ": "け", "ご": "こ",
	"ざ": "さ", "じ": "し", "ず": "す", "ぜ": "せ", "ぞ": "そ",
	"だ": "た", "ぢ": "ち", "づ": "つ", "で": "て", "ど": "と",
	"ば": "は", "び": "ひ", "ぶ": "ふ", "べ": "へ", "ぼ": "ほ",
	"ぱ": "は", "ぴ": "ひ", "ぷ": "ふ", "ぺ": "へ", "ぽ": "ほ",
    },
    "kyuuzi2sinzi": {
	"亞": "亜", "惡": "悪", "壓": "圧", "圍": "囲", "爲": "為",
	"医": "医",	// うつぼ
	"醫": "医",	// 醫者
	"壹": "壱", "稻": "稲", "飮": "飲", "隱": "隠", "營": "営", "榮": "栄",
	"衞": "衛", "驛": "駅", "圓": "円", "艷": "艶", "鹽": "塩", "奧": "奥",
	"應": "応", "歐": "欧", "毆": "殴", "穩": "穏", "假": "仮", "價": "価",
	"畫": "画", "會": "会", "壞": "壊", "懷": "懐", "繪": "絵", "擴": "拡",
	"殼": "殻", "覺": "覚", "學": "学",
	"岳": "岳",	// 「嶽」の略字。[形]尊敬すべきもの。岳父
	"嶽": "岳",	// 高い山
	"樂": "楽", "勸": "勧", "卷": "巻", "歡": "歓",
	"缶": "缶",	// ほとぎ
	"罐": "缶",	// 水を汲むうつは
	"觀": "観", "關": "関", "陷": "陥", "巖": "巌", "顏": "顔", "歸": "帰",
	"氣": "気", "龜": "亀", "僞": "偽", "戲": "戯", "犧": "犠", "舊": "旧",
	"據": "拠", "擧": "挙", "峽": "峡", "挾": "挟", "狹": "狭", "曉": "暁",
	"區": "区", "驅": "駆", "勳": "勲", "徑": "径", "惠": "恵", "溪": "渓",
	"經": "経", "繼": "継", "莖": "茎", "螢": "蛍", "輕": "軽", "鷄": "鶏",
	"芸": "芸",	// ヘンルーダ
	"藝": "芸",	// わざ
	"欠": "欠",	// あくびをする。からだがまがる。
	"缺": "欠",	// かける。ゑぐる。
	"儉": "倹", "劍": "剣", "圈": "圏", "檢": "検", "權": "権", "獻": "献",
	"県": "県",	// 首をさかさにつりさげる。
	"縣": "県",	// あがた
	"險": "険", "顯": "顕", "驗": "験", "嚴": "厳", "效": "効", "廣": "広",
	"恆": "恒", "鑛": "鉱", "號": "号", "國": "国", "濟": "済", "碎": "砕",
	"齋": "斎", "劑": "剤", "櫻": "桜", "册": "冊", "雜": "雑", "參": "参",
	"慘": "惨", "棧": "桟",
	"蚕": "蚕",	// みみづ
	"蠶": "蚕",	// かひこ
	"贊": "賛", "殘": "残",
	"糸": "糸",	// いとすぢ。原糸
	"絲": "糸",	// 「糸」をよりあはせたもの。
	"齒": "歯", "兒": "児", "辭": "辞", "濕": "湿", "實": "実", "舍": "舎",
	"寫": "写", "釋": "釈", "壽": "寿", "收": "収", "從": "従", "澁": "渋",
	"獸": "獣", "縱": "縦", "肅": "粛", "處": "処", "敍": "叙", "奬": "奨",
	"將": "将", "燒": "焼", "稱": "称",
	"証": "証",	// いさめてあやまりをただす。
	"證": "証",	// あかす。
	"乘": "乗", "剩": "剰", "壤": "壌", "孃": "嬢", "條": "条", "淨": "浄",
	"疊": "畳", "穰": "穣", "讓": "譲", "釀": "醸", "囑": "嘱", "觸": "触",
	"寢": "寝", "愼": "慎", "晉": "晋", "眞": "真", "盡": "尽", "圖": "図",
	"粹": "粋", "醉": "酔", "隨": "随", "髓": "髄", "數": "数", "樞": "枢",
	"聲": "声", "靜": "静", "齊": "斉", "攝": "摂", "竊": "窃", "專": "専",
	"戰": "戦", "淺": "浅", "潛": "潜", "纖": "繊", "踐": "践", "錢": "銭",
	"禪": "禅", "雙": "双", "壯": "壮", "搜": "捜", "插": "挿", "爭": "争",
	"總": "総", "聰": "聡", "莊": "荘", "裝": "装", "騷": "騒", "臟": "臓",
	"藏": "蔵", "屬": "属", "續": "続", "墮": "堕",
	"体": "体",	// 「體」の略字。おとる。あらい。
	"體": "体",	// からだ。
	"對": "対", "帶": "帯", "滯": "滞",
	"台": "台",	// 一人称代名詞。
	"臺": "台",	// うてな
	"瀧": "滝", "擇": "択", "澤": "沢", "單": "単", "擔": "担", "膽": "胆",
	"團": "団", "彈": "弾", "斷": "断", "癡": "痴", "遲": "遅", "晝": "昼",
	"虫": "虫",	// まむし。爬虫類。
	"蟲": "虫",	// むし。昆虫。
	"鑄": "鋳", "廳": "庁", "聽": "聴", "鎭": "鎮", "遞": "逓",
	"鉄": "鉄",	// 「鐵」の略字。ぬふ。
	"鐵": "鉄",	// くろがね。
	"轉": "転", "點": "点", "傳": "伝",
	"党": "党",	// 姓・民族名
	"黨": "党",	// なかま。やから。
	"盜": "盗",
	"灯": "灯",	// はげしい火。
	"燈": "灯",	// ともしび。
	"當": "当", "鬪": "闘", "獨": "独", "讀": "読", "屆": "届", "繩": "縄",
	"貳": "弐", "惱": "悩", "腦": "脳", "廢": "廃", "拜": "拝", "賣": "売",
	"麥": "麦", "發": "発", "髮": "髪", "拔": "抜", "蠻": "蛮", "祕": "秘",
	"浜": "浜",	// 小さな水路。クリーク。
	"濱": "浜",	// はま。
	"拂": "払", "佛": "仏", "竝": "並", "變": "変", "邊": "辺",
	"弁": "弁",	// かんむり。
	"辨": "弁",	// よりわける。
	"辧": "弁",	// 「辨」の異體字。
	"辯": "弁",	// うまくものを言ふ。
	"瓣": "弁",	// はなびら。
	"舖": "舗", "穗": "穂", "寶": "宝", "豐": "豊", "沒": "没", "萬": "万",
	"滿": "満", "默": "黙", "彌": "弥", "藥": "薬", "譯": "訳", "藪": "薮",
	"予": "予",	// あたへる。われ=余。
	"豫": "予",	// あらかじめ。
	"余": "余",	// われ=予。
	"餘": "余",	// あまる。
	"與": "与", "譽": "誉", "搖": "揺", "樣": "様", "謠": "謡", "來": "来",
	"亂": "乱", "覽": "覧", "龍": "竜", "兩": "両", "獵": "猟", "壘": "塁",
	"勵": "励", "禮": "礼", "隸": "隷", "靈": "霊", "齡": "齢", "戀": "恋",
	"爐": "炉", "勞": "労", "樓": "楼", "祿": "禄", "灣": "湾" },
};

var menu_items = {
    "古典風表記": "archaic_style",
    "舊表記": "old_style",
    "舊字體": "sinzi2kyuuzi",
    "新字体": "kyuuzi2sinzi",
}

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);
}

// 表記法スクリプト - ここまで
//</pre>