Last active
January 7, 2019 09:09
-
-
Save Arathi/5c7b33cc07a938c75b4fc090edd5078b to your computer and use it in GitHub Desktop.
Wicurio的FGO Wiki翻译
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// ==UserScript== | |
// @name Wicurio的FGO Wiki翻译 | |
// @namespace http://fgoutils.undsf.com/ | |
// @version 0.0.4 | |
// @description 替换Wicurio的Wiki上的各种从者、怪物名称为中文 | |
// @author Arathi of Nebnizlla | |
// @match https://grand_order.wicurio.com/index.php?* | |
// @grant none | |
// ==/UserScript== | |
function loadDictionary() { | |
let json = { | |
"キメラ": "奇美拉", | |
"ホワイトキメラ": "白色奇美拉", | |
"女海賊": "女海盗", | |
"アマゾネス": "亚马逊人", | |
"アマゾネスリーダー": "亚马逊队长", | |
"飼育されている獣": "被饲育的兽", | |
"飼われている獣": "被豢养的兽", | |
"ワイバーン": "双足飞龙", | |
"ワイバーンドレッド": "恐惧飞龙", | |
"ワイバーンエビル": "恶魔飞龙", | |
"ゴーレム": "魔偶", | |
"ストーンゴーレム": "石魔偶", | |
"アイアンゴーレム": "金属魔偶", | |
"スプリガン": "守护者", | |
"ソウルイーター": "噬魂者", | |
"ラミア": "蛇女", | |
"ナーガ": "那伽", | |
"ヒュドラ": "许德拉", | |
"舞い踊る平目": "舞动的比目鱼", | |
"魔猪": "X", | |
"巨大魔猪": "X", | |
"翅刃虫": "X", | |
"翅刃群虫": "X", | |
"酷吏": "X", | |
"アストルフォ": "阿斯托尔福", | |
"デオン": "迪昂", | |
"レジスタンスのライダー": "反抗军的Rider", | |
"ダユー": "达尤", | |
"海賊公女ダユー": "海盗公女达尤", | |
"不夜城のアサシン": "不夜城的Assassin", | |
"不夜城のキャスター": "不夜城的Caster", | |
"シェヘラザード": "山鲁佐德", | |
"メガロス": "巨英雄", | |
"エルドラドのバーサーカー": "黄金国的Berserker", | |
"ペンテシレイア": "彭忒西勒亚", | |
"コロンブス": "哥伦布", | |
"魔神フェニクス": "魔神菲尼克斯", | |
}; | |
let dict = new Map(); | |
for (let key of Object.keys(json)) | |
{ | |
dict.set(key, json[key]); | |
} | |
return dict; | |
} | |
function translateMonsterNames(nameDict) { | |
'use strict'; | |
let $ = window.jQuery; | |
let tdElements = $("table.style_table.table_align_center tr td.style_td br.spacer").parent(); | |
let transNotYetNames = {}; | |
let patternMonsterInfo = /^(.*?)([A-Z]{0,1})[\s]{0,1}(Lv(\d+)){0,1}[\s]{0,1}\((.*):([\d,]+)\)$/; | |
tdElements.each(function(index, value){ | |
// 不替换超链接 | |
let tagName = value.firstElementChild.tagName; | |
if (tagName == 'A') return; | |
// 正则表达式匹配 | |
let content = value.textContent; | |
let matcher = patternMonsterInfo.exec(content); | |
if (matcher) { | |
let name = matcher[1]; | |
let suffix = matcher[2]; | |
if (nameDict.has(name)) { | |
let cnName = nameDict.get(name); | |
if (cnName != "________" && cnName != "X") { | |
let html = value.innerHTML.replace(name + suffix, cnName + suffix); | |
value.innerHTML = html; | |
} | |
} | |
else { | |
transNotYetNames[name] = "________"; | |
} | |
} | |
}); | |
console.log("发现未翻译怪物名称" + Object.keys(transNotYetNames).length + "个,如下:"); | |
console.log(JSON.stringify(transNotYetNames)); | |
} | |
function translateServantNames(nameDict) { | |
'use strict'; | |
let $ = window.jQuery; | |
let linkElements = $("tr td.style_td a[href][title]"); | |
linkElements.each(function(index, value) { | |
let name = value.innerText; | |
if (nameDict.has(name)) { | |
let cnName = nameDict.get(name); | |
if (cnName != "________" && cnName != "X") { | |
let html = value.innerHTML.replace(name, cnName); | |
value.innerHTML = html; | |
} | |
} | |
}); | |
} | |
(function() { | |
let nameDict = loadDictionary(); | |
translateMonsterNames(nameDict); | |
translateServantNames(nameDict); | |
})(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment