// ==UserScript== // @name アイヌ語版ウィキペディアの文字変換 // @namespace http://lit.link/toracatman // @version 2024-12-15 // @description アイヌ語版ウィキペディアの文字変換をします。 // @author トラネコマン // @match https://incubator.wikimedia.org/*Wp/ain* // @icon data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw== // @grant none // @license MIT // @downloadURL https://update.greasyfork.icu/scripts/513558/%E3%82%A2%E3%82%A4%E3%83%8C%E8%AA%9E%E7%89%88%E3%82%A6%E3%82%A3%E3%82%AD%E3%83%9A%E3%83%87%E3%82%A3%E3%82%A2%E3%81%AE%E6%96%87%E5%AD%97%E5%A4%89%E6%8F%9B.user.js // @updateURL https://update.greasyfork.icu/scripts/513558/%E3%82%A2%E3%82%A4%E3%83%8C%E8%AA%9E%E7%89%88%E3%82%A6%E3%82%A3%E3%82%AD%E3%83%9A%E3%83%87%E3%82%A3%E3%82%A2%E3%81%AE%E6%96%87%E5%AD%97%E5%A4%89%E6%8F%9B.meta.js // ==/UserScript== var letter = "kana"; //kana=カタカナ katakana=拡張カタカナ hiragana=拡張ひらがな cyrillic=キリル文字 //カタカナ(拡張カタカナでない)の設定 var tu = 0; //tu 0=トゥ 1=ト゚ 2=ツ゚ var ce = 0; //ce 0=チェ 1=セ゚ var yw = 0; //-y, -w 0=イ、ウ 1=ィ、ゥ var renzoku = 0; //子音の連続 0=ッにする 1=ッにしない var nm = 0; //b、m、pの前のn 0=ン 1=ㇺ var convert_sign_attr = "data-convert"; var convert_sign_value = "true"; var separate = " | "; var replacement = "\x1a"; var flag; var c; if (letter == "kana") { flag = "ig"; c = [ ["á", "a"], ["í", "i"], ["ú", "u"], ["é", "e"], ["ó", "o"], ["(?<=\\w)[-=](?=\\w)", ""], [", ?", "、"], ["\\. ?", "。"], ["! ?", "!"], ["\\? ?", "?"], [" ?“", "「"], ["” ?", "」"], [" ?‘", "『"], ["’ ?", "』"], ["a[hx]", "aㇵ"], ["i[hx]", "iㇶ"], ["u[hx]", "uㇷ"], ["e[hx]", "eㇸ"], ["o[hx]", "oㇹ"], ["ar", "aㇻ"], ["ir", "iㇼ"], ["ur", "uㇽ"], ["er", "eㇾ"], ["or", "oㇿ"], ["[hxㇵ-ㇹ](?=[hx])", "ッ"], ["[hxㇵ-ㇹ]a", "ハ"], ["[hxㇵ-ㇹ]i", "ヒ"], ["[hḣxㇵ-ㇹ]u", "フ"], ["[hxㇵ-ㇹ]e", "ヘ"], ["[hxㇵ-ㇹ]o", "ホ"], ["[hx]", "ㇵ"], ["[rㇻ-ㇿ](?=r)", "ッ"], ["[rㇻ-ㇿ]a", "ラ"], ["[rㇻ-ㇿ]i", "リ"], ["[rㇻ-ㇿ]u", "ル"], ["[rㇻ-ㇿ]e", "レ"], ["[rㇻ-ㇿ]o", "ロ"], ["r", "ㇽ"], ["k(?=k)", "ッ"], ["ka", "カ"], ["ki", "キ"], ["ku", "ク"], ["ke", "ケ"], ["ko", "コ"], ["k", "ㇰ"], ["g(?=g)", "ッ"], ["ga", "ガ"], ["gi", "ギ"], ["gu", "グ"], ["ge", "ゲ"], ["go", "ゴ"], ["g", "ㇰ゙"], ["(ts|ċ)a","ツァ"], ["ċi","ツィ"], ["(ts|ċ)e","ツェ"], ["(ts|ċ)o","ツォ"], ["(ts|ċ)u","ツ"], ["s(?=s)", "ッ"], ["sa", "サ"], ["ṡi", "スィ"], ["su", "ス"], ["se", "セ"], ["so", "ソ"], ["ş(?=ş)", "ッ"], ["şa", "シャ"], ["şu", "シュ"], ["şe", "シェ"], ["şo", "ショ"], ["[sş]i", "シ"], ["d(?=d)", "ッ"], ["dza","ヅァ"], ["dżi","ヅィ"], ["dze","ヅェ"], ["dzo","ヅォ"], ["dzu","ヅ"], ["z(?=z)", "ッ"], ["za", "ザ"], ["żi", "ズィ"], ["zu", "ズ"], ["ze", "ゼ"], ["zo", "ゾ"], ["dja","ヂャ"], ["dju","ヂュ"], ["dje","ヂェ"], ["djo","ヂョ"], ["d[jz]i","ヂ"], ["j(?=j)", "ッ"], ["ja", "ジャ"], ["ju", "ジュ"], ["je", "ジェ"], ["jo", "ジョ"], ["[jz]i", "ジ"], ["ca", "チャ"], ["cu", "チュ"], ["ce", "チェ"], ["co", "チョ"], ["(ts|c)i", "チ"], ["(ts|ċ)","ッ"], ["ṡ", "ㇲ"], ["[sş]", "ㇱ"], ["dż","ッ゙"], ["ż", "ㇱ゙"], ["d[jz]","ッ゙"], ["[jz]", "ㇱ゙"], ["c", "ッ"], ["ta", "タ"], ["ti", "ティ"], ["tu", "トゥ"], ["te", "テ"], ["to", "ト"], ["t", "ッ"], ["da", "ダ"], ["di", "ディ"], ["du", "ドゥ"], ["de", "デ"], ["do", "ド"], ["d", "ッ゙"], ["na", "ナ"], ["ni", "ニ"], ["nu", "ヌ"], ["ne", "ネ"], ["no", "ノ"], ["n", "ン"], ["m(?=[bmp])", "ン"], ["b(?=b)", "ッ"], ["ba", "バ"], ["bi", "ビ"], ["bu", "ブ"], ["be", "ベ"], ["bo", "ボ"], ["b", "ㇷ゙"], ["p(?=p)", "ッ"], ["pa", "パ"], ["pi", "ピ"], ["pu", "プ"], ["pe", "ペ"], ["po", "ポ"], ["p", "ㇷ゚"], ["ma", "マ"], ["mi", "ミ"], ["mu", "ム"], ["me", "メ"], ["mo", "モ"], ["m", "ㇺ"], ["ya", "ヤ"], ["yu", "ユ"], ["ye", "イェ"], ["yo", "ヨ"], ["yi?", "イ"], ["wa", "ワ"], ["wi", "ウィ"], ["we", "ウェ"], ["wo", "ウォ"], ["wu?", "ウ"], ["v(?=v)", "ッ"], ["va", "ヴァ"], ["vi", "ヴィ"], ["ve", "ヴェ"], ["vo", "ヴォ"], ["vu", "ヴ"], ["v", "ゥ゙"], ["f(?=f)", "ッ"], ["fa", "ファ"], ["fi", "フィ"], ["fe", "フェ"], ["fo", "フォ"], ["fu", "フ"], ["f", "ㇷ"], ["a", "ア"], ["i", "イ"], ["u", "ウ"], ["e", "エ"], ["o", "オ"] ]; if (tu + ce + yw + renzoku + nm != 0) { var b = JSON.stringify(c); switch (tu) { case 1: b = b.replace("トゥ", "ト゚"); break; case 2: b = b.replace("トゥ", "ツ゚"); break; } if (ce == 1) { b = b.replace("チェ", "セ゚"); } if (yw == 1) { b = b.replace('["yi?","イ"]', '["yi","イ"],["y","ィ"]') .replace('["wu?","ウ"]', '["wu","ウ"],["w","ゥ"]'); } if (renzoku == 1) { b = b.replace(/\["[^"]+?\(\?=[^"]+?\)","ッ"\],/g, ""); } if (nm == 1) { b = b.replace('["m(?=[bmp])","ン"],', ""); } c = JSON.parse(b); } } else if (letter == "katakana") { flag = "ig"; c = [ ["á", "a"], ["í", "i"], ["ú", "u"], ["é", "e"], ["ó", "o"], [", ?", "、"], ["\\. ?", "。"], ["! ?", "!"], ["\\? ?", "?"], [" ?“", "「"], ["” ?", "」"], [" ?‘", "『"], ["’ ?", "』"], ["a[hx]", "aㇵ"], ["i[hx]", "iㇶ"], ["u[hx]", "uㇷ"], ["e[hx]", "eㇸ"], ["o[hx]", "oㇹ"], ["ar", "aㇻ"], ["ir", "iㇼ"], ["ur", "uㇽ"], ["er", "eㇾ"], ["or", "oㇿ"], ["[hxㇵ-ㇹ]a", "ハ"], ["[hxㇵ-ㇹ]i", "ヒ"], ["[hxㇵ-ㇹ]u", "フ"], ["[hxㇵ-ㇹ]e", "ヘ"], ["[hxㇵ-ㇹ]o", "ホ"], ["[hx]", "ㇵ"], ["[rㇻ-ㇿ]a", "ラ"], ["[rㇻ-ㇿ]i", "リ"], ["[rㇻ-ㇿ]u", "ル"], ["[rㇻ-ㇿ]e", "レ"], ["[rㇻ-ㇿ]o", "ロ"], ["r", "ㇽ"], ["ka", "カ"], ["ki", "キ"], ["ku", "ク"], ["ke", "ケ"], ["ko", "コ"], ["k", "ㇰ"], ["ga", "ガ"], ["gi", "ギ"], ["gu", "グ"], ["ge", "ゲ"], ["go", "ゴ"], ["g", "ㇰ゙"], ["(ts|ċ)a",""], ["ċi",""], ["(ts|ċ)u","ツ"], ["(ts|ċ)e",""], ["(ts|ċ)o",""], ["sa", "サ"], ["ṡi", ""], ["su", "ス"], ["se", "セ"], ["so", "ソ"], ["şa", ""], ["[sş]i", "シ"], ["şu", ""], ["şe", ""], ["şo", ""], ["dza",""], ["dżi",""], ["dzu","ヅ"], ["dze",""], ["dzo",""], ["za", "ザ"], ["żi", ""], ["zu", "ズ"], ["ze", "ゼ"], ["zo", "ゾ"], ["dja",""], ["d[jz]i","ヂ"], ["dju",""], ["dje",""], ["djo",""], ["ja", ""], ["[jz]i", "ジ"], ["ju", ""], ["je", ""], ["jo", ""], ["ca", ""], ["(ts|c)i", "チ"], ["cu", ""], ["ce", ""], ["co", ""], ["(ts|ċ)",""], ["ṡ", "ㇲ"], ["[sş]", "ㇱ"], ["dż","ッ゙"], ["ż", "ㇲ゙"], ["d[jz]","𛅚゙"], ["[jz]", "ㇱ゙"], ["c", "𛅚"], ["ta", "タ"], ["ti", ""], ["tu", ""], ["te", "テ"], ["to", "ト"], ["t", "ㇳ"], ["da", "ダ"], ["di", ""], ["du", ""], ["de", "デ"], ["do", "ド"], ["d", "ㇳ゙"], ["na", "ナ"], ["ni", "ニ"], ["nu", "ヌ"], ["ne", "ネ"], ["no", "ノ"], ["n", "ン"], ["ḣu", ""], ["ba", "バ"], ["bi", "ビ"], ["bu", "ブ"], ["be", "ベ"], ["bo", "ボ"], ["b", "ㇷ゙"], ["pa", "パ"], ["pi", "ピ"], ["pu", "プ"], ["pe", "ペ"], ["po", "ポ"], ["p", "ㇷ゚"], ["ma", "マ"], ["mi", "ミ"], ["mu", "ム"], ["me", "メ"], ["mo", "モ"], ["m", "ㇺ"], ["ya", "ヤ"], ["yi", "𛄠"], ["yu", "ユ"], ["ye", "𛄡"], ["yo", "ヨ"], ["y", ""], ["wa", "ワ"], ["wi", "ヰ"], ["wu", "𛄢"], ["we", "ヱ"], ["wo", "ヲ"], ["w", ""], ["va", "ヷ"], ["vi", "ヸ"], ["vu", ""], ["ve", "ヹ"], ["vo", "ヺ"], ["v", "𛅭゙"], ["fa", ""], ["fi", ""], ["fu", ""], ["fe", ""], ["fo", ""], ["f", "𛅭゚"], ["a", "ア"], ["i", "イ"], ["u", "ウ"], ["e", "エ"], ["o", "オ"] ]; } else if (letter == "hiragana") { flag = "igu"; c = [ ["á", "a"], ["í", "i"], ["ú", "u"], ["é", "e"], ["ó", "o"], [", ?", "、"], ["\\. ?", "。"], ["! ?", "!"], ["\\? ?", "?"], [" ?“", "「"], ["” ?", "」"], [" ?‘", "『"], ["’ ?", "』"], ["a[hx]", "a𛅁"], ["i[hx]", "i𛅂"], ["u[hx]", "u𛅃"], ["e[hx]", "e𛅄"], ["o[hx]", "o𛅅"], ["ar", "a𛅋"], ["ir", "i𛅌"], ["ur", "u𛅍"], ["er", "e𛅎"], ["or", "o𛅏"], ["[hx𛅁-𛅅]a", "は"], ["[hx𛅁-𛅅]i", "ひ"], ["[hx𛅁-𛅅]u", "ふ"], ["[hx𛅁-𛅅]e", "へ"], ["[hx𛅁-𛅅]o", "ほ"], ["[hx]", "𛅁"], ["[r𛅋-𛅏]a", "ら"], ["[r𛅋-𛅏]i", "り"], ["[r𛅋-𛅏]u", "る"], ["[r𛅋-𛅏]e", "れ"], ["[r𛅋-𛅏]o", "ろ"], ["r", "𛅍"], ["ka", "か"], ["ki", "き"], ["ku", "く"], ["ke", "け"], ["ko", "こ"], ["k", "𛄱"], ["ga", "が"], ["gi", "ぎ"], ["gu", "ぐ"], ["ge", "げ"], ["go", "ご"], ["g", "𛄱゙"], ["(ts|ċ)a",""], ["ċi",""], ["(ts|ċ)u","つ"], ["(ts|ċ)e",""], ["(ts|ċ)o",""], ["sa", "さ"], ["ṡi", ""], ["su", "す"], ["se", "せ"], ["so", "そ"], ["şa", "𛁃"], ["[sş]i", "し"], ["şu", ""], ["şe", ""], ["şo", ""], ["dza",""], ["dżi",""], ["dzu","づ"], ["dze",""], ["dzo",""], ["za", "ざ"], ["żi", ""], ["zu", "ず"], ["ze", "ぜ"], ["zo", "ぞ"], ["dja",""], ["d[jz]i","ぢ"], ["dju",""], ["dje",""], ["djo",""], ["ja", ""], ["[jz]i", "じ"], ["ju", ""], ["je", ""], ["jo", ""], ["ca", ""], ["(ts|c)i", "ち"], ["cu", ""], ["ce", ""], ["co", ""], ["(ts|ċ)",""], ["ṡ", "𛄵"], ["[sş]", "𛄴"], ["dż","っ゙"], ["ż", "𛄵゙"], ["d[jz]","𛄹゙"], ["[jz]", "𛄴゙"], ["c", "𛄹"], ["ta", "た"], ["ti", ""], ["tu", "𛁭"], ["te", "て"], ["to", "と"], ["t", "𛄻"], ["da", "だ"], ["di", ""], ["du", ""], ["de", "で"], ["do", "ど"], ["d", "𛄻゙"], ["na", "な"], ["ni", "に"], ["nu", "ぬ"], ["ne", "ね"], ["no", "の"], ["n", "ん"], ["ḣu", "𛀹"], ["ba", "ば"], ["bi", "び"], ["bu", "ぶ"], ["be", "べ"], ["bo", "ぼ"], ["b", "𛅃゙"], ["pa", "ぱ"], ["pi", "ぴ"], ["pu", "ぷ"], ["pe", "ぺ"], ["po", "ぽ"], ["p", "𛅃゚"], ["ma", "ま"], ["mi", "み"], ["mu", "む"], ["me", "め"], ["mo", "も"], ["m", "𛅈"], ["ya", "や"], ["yi", "𛀆"], ["yu", "ゆ"], ["ye", "𛀁"], ["yo", "よ"], ["y", ""], ["wa", "わ"], ["wi", "ゐ"], ["wu", "𛄟"], ["we", "ゑ"], ["wo", "を"], ["w", ""], ["va", ""], ["vi", ""], ["vu", ""], ["ve", ""], ["vo", ""], ["v", "𛅪゙"], ["fa", ""], ["fi", ""], ["fu", ""], ["fe", ""], ["fo", ""], ["f", "𛅪゚"], ["a", "あ"], ["i", "い"], ["u", "う"], ["e", "え"], ["o", "お"] ]; } else if (letter == "cyrillic") { flag = "g"; c = [ ["Á", "Á"], ["á", "á"], ["Í", "Í"], ["í", "í"], ["Ú", "Ú"], ["ú", "ú"], ["É", "É"], ["é", "é"], ["Ó", "Ó"], ["ó", "ó"], ["A", "А"], ["a", "а"], ["I", "И"], ["i", "и"], ["U", "У"], ["u", "у"], ["E", "Э"], ["e", "э"], ["O", "О"], ["o", "о"], ["K", "К"], ["k", "к"], ["G", "Г"], ["g", "г"], ["S", "С"], ["s", "с"], ["Z", "З"], ["z", "з"], ["Ṡ", "С̇"], ["ṡ", "с̇"], ["Ż", "З̇"], ["ż", "з̇"], ["Ş", "Ш"], ["ş", "ш"], ["J", "Ж"], ["J", "ж"], ["C", "Ч"], ["c", "ч"], ["Ċ", "Ц"], ["ċ", "ц"], ["T", "Т"], ["t", "т"], ["D", "Д"], ["d", "д"], ["N", "Н"], ["n", "н"], ["Ḣ", "Х̇"], ["ḣ", "х̇"], ["[HX]", "Х"], ["[hx]", "х"], ["P", "П"], ["p", "п"], ["B", "Б"], ["b", "б"], ["M", "М"], ["m", "м"], ["Y", "Й"], ["y", "й"], ["R", "Р"], ["r", "р"], ["W", "Ў"], ["w", "ў"], ["V", "В"], ["v", "в"], ["F", "Ф"], ["f", "ф"] ]; } (function() { if (letter == "katakana" || letter == "hiragana") { var style = document.createElement("style"); style.textContent = '@font-face{font-family:"Mkana+";src:local("Mkana+"),url("https://toracatman.github.io/fonts/mkanaplus.woff2")format("woff2"),url("https://toracatman.github.io/fonts/mkanaplus.woff")format("woff");font-display:swap;}*{font-family:"Mkana+"!important;}'; document.head.appendChild(style); } setInterval(() => { var a; a = document.querySelectorAll('style,.mw-parser-output [lang]:not([lang^="ain"]),.mw-parser-output [lang]:not([lang^="ain"]) *,.mw-editsection *,.external,pre'); if (a != null) { for (var i = 0; i < a.length; i++) { if (a[i].getAttribute(convert_sign_attr) == convert_sign_value) continue; a[i].setAttribute(convert_sign_attr, convert_sign_value); } } a = document.querySelectorAll('.mw-parser-output *,#mw-panel-toc-list :nth-child(n+2) *,#firstHeading *,#catlinks ul *,.mw-prefixindex-list *,.mw-allpages-chunk *,.mw-category *'); if (a == null) return; for (var i = 0; i < a.length; i++) { if (a[i].getAttribute(convert_sign_attr) == convert_sign_value) continue; a[i].setAttribute(convert_sign_attr, convert_sign_value); if (!(a[i].hasChildNodes())) continue; var h = (b) => { var s = b.split(separate); for (var j = 0; j < c.length; j++) { s[0] = s[0].replace(new RegExp(c[j][0], flag), c[j][1]); } return s.join(separate); } if (a[i].childElementCount == 0) { a[i].textContent = h(a[i].textContent); } else { var t = a[i]; var p = document.createTextNode(""); t.replaceWith(p); var r = document.createDocumentFragment(); var e = t.firstElementChild; while (e != null) { e.replaceWith(document.createTextNode(replacement)); r.appendChild(e); e = t.firstElementChild; } var ss = h(t.textContent).split(replacement); t.textContent = ""; t.appendChild(document.createTextNode(ss[0])); for (var j = 1; j < ss.length; j++) { t.appendChild(r.firstElementChild); t.appendChild(document.createTextNode(ss[j])); } p.replaceWith(t); } } }, 100); })();