Sleazy Fork is available in English.

E621 辅助翻译

目前仅支持汉化 E621 的标签,且字典尚不完善

// ==UserScript==
// @name         E621 辅助翻译
// @name:en-US   E621 translator for Chinese
// @namespace    https://greasyfork.org/users/159546
// @version      1.0.2
// @description  目前仅支持汉化 E621 的标签,且字典尚不完善
// @description:en-US E621 tags translate to Chinese
// @author       LEORChn
// @match        https://e621.net/posts*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=e621.net
// @grant        none
// @run-at       document-start
// @license      MIT
// ==/UserScript==
initEZLib();

var tagsRaw = `
  // 所有行都会无视前空格。所有原文都无视大小写。注释必须写在双斜杠后。
  // Copyrights // 版权
  nintendo, pokemon: 任天堂,宝可梦
  mythology, european mythology, greek mythology: 神话,欧洲神话,希腊神话
  asian mythology, east asian mythology, chinese mythology: 亚洲神话,东亚神话,中国神话

  // Species // 种族
  pokemon (species), generation 1 pokemon: 口袋妖怪,第一代口袋妖怪
  mammal: 哺乳动物
  canine, canid, canis, wolf: 高智力犬类,犬科,犬属,狼  // FIXME: 暂时被搞晕了
  leporid, lagomorph, rabbit: 兔类,兔形目,兔子

  // General // 一般
  feral, anthro: 野生形态,直立形态
  clothed, clothing: 着装得体的,着装的                   // FIXME: 这两者的区别有待修改
  asian clothing, east asian clothing, chinese clothing: 亚洲服饰,东亚服饰,中国服饰
  armor: 防具
  chinese, hanfu, chinese dress: 中国的,汉服,旗袍?
  moon, full moon: 月亮,满月
  video games: 电子游戏
  simple background: 简单的背景

  solo, duo, trio: 角色数量 单个,角色数量 两个,角色数量 三个
  group, large group: 团体,三个角色以上大团体
  unseen character: 涉及到图像外的角色
  male, female, male/female, male/male, female/female: 雄性,雌性,雄性和雌性,雄性和雄性,雌性和雌性
  facial hair, beard, hair: 面部毛发,胡子,头发和胡子等毛发
  feathers, wings: 羽毛,翅膀
  smile, blush: 微笑,脸红
  nude, sex, erection, penetration, cum: 裸体,性交,勃起,中出,射精
  bodily fluids, genital fluids: 体液,生殖液
  genitals, penis, balls, breasts, nipples: 生殖器,阴茎,睾丸,乳房,乳头

  // Meta // 图像元数据
  thumbnail, low res: 缩略图,低分辨率
  hi res, absurd res, superabsurd res: 高分辨率,超高分辨率,顶级分辨率
  wallpaper: 可用于壁纸的分辨率
  text, english text: 有文本的,有英语文本
`;
var tags = {};
var tagsFlatArray = tagsRaw.split('\n').map(function(lineText){
    if(!lineText.trim().length) return; // 去除纯空行
    if(lineText.trim().startsWith('//')) return; // 去除注释行
    var kv = lineText.split('//')[0].split(/[::]/); // 支持行内注释,
    var keys = kv[0].split(/[,,]/),
        values = kv[1].split(/[,,]/);
    if(keys.length != values.length) alert('发现这一行没有对齐:\n' + lineText);
    return keys.map(function(e, i){
        try{
            return [e.trim().toLowerCase(), values[i].trim()];
        }catch(err){
            if(keys.length <= values.length) alert('在解析这一行时发生错误:\n' + lineText);
            // 如果key数量大于value数量,那么前面的没有对齐信息就已经讲过了
        }
    });
}).filter(function(e){ return e; }).flat();
tagsFlatArray.foreach(function(e, i){
    tags[e[0]] = e[1];
});
setInterval(function(){
    $$('.search-tag').foreach(e=>{
        var origin = e.innerText;
        if(!(origin in tags)) return;
        e.innerText = tags[origin];
    });
}, 1000);



function $$(e){ return document.querySelectorAll(e); }
function initEZLib(){
    Array.prototype.foreach =
    NodeList.prototype.foreach = function(func){
        if(!(func instanceof Function)) return;
        for(var i=0; i < this.length; i++) try{
            if(func(this[i], i, this)) return true;
        }catch(e){
            console.warn(e);
        }
    }
}