上一主题 下一主题
ScriptCat,新一代的脚本管理器脚本站,与全世界分享你的用户脚本油猴脚本开发指南教程目录
返回列表 发新帖
楼主: 40252492 - 

网页文本替换汉化的油猴脚本,支持包含加粗和斜体

[复制链接]
  • TA的每日心情

    2023-9-1 16:15
  • 签到天数: 71 天

    [LV.6]常住居民II

    4

    主题

    48

    回帖

    59

    积分

    初级工程师

    积分
    59
    发表于 2022-8-12 15:17:06 | 显示全部楼层

    本帖最后由 40252492 于 2022-8-12 18:20 编辑

    本帖最后由 40252492 于 2022-8-12 17:35 编辑

    本帖最后由 40252492 于 2022-8-12 17:35 编辑

    本帖最后由 40252492 于 2022-8-12 17:34 编辑

    本帖最后由 40252492 于 2022-8-12 17:34 编辑

    cxxjackie 发表于 2022-8-11 22:09

    重复声明了,把46行那句删掉就行,在网页那里F12切换到控制台(Console),可以看到错误信息的。 ...

    当当当当!锵锵锵!QVQ
    现在卡名和阵营这两种我都搞明白了,再见到类似的应该也会写了,
    但是这个卡片类型和种族的选择器,请问怎么写哇?

    image.png

    // ==UserScript==
    // @name dulst.com的CardFighit Vanguard OverDulst文本替换汉化
    // @namespace https://bbs.tampermonkey.net.cn/
    // @version 0.8
    // @description 通过将英文替换为中文的方法,汉化卡片战斗先导者OD的网页游戏
    // @author 库X崔羊羊
    // @match https://dulst.com/overdulst/\*
    // @icon https://www.google.com/s2/favicons?domain=dulst.com
    // @require https://scriptcat.org/lib/513/1.1.1/ElementGetter.js
    // ==/UserScript==
    
    (function() {
    'use strict';
    
    const xiaoguo = {
        '[overDress]-"Trickstar", or a grade 3 or less unit in the [overDress] state ': '【超限舞装】-「托里科斯塔」或处于【超限舞装】状态的等级3以下的后防者',
        '[CONT](RC):This unit gets [Power]+5000 for each of this unit\'s originalDress.': '【永】【R】:这个单位的舞装源每有1张,这个单位的力量+5000。',
        '[AUTO](RC)1/Turn:When the attack of this unit in the [overDress] state hits, COST [Counter Blast (1) & discard a card from your hand], and [Stand] this unit.': '【自】【R】【1回合1次】:处于【超限舞装】状态的这个单位的攻击击中时,通过【费用】[计数爆发1,将手牌中的1张卡舍弃],将这个单位重置。',
    };
    
    const qita = {
        'Trickstar': '托里科斯塔',
        'Vairina Valiente': '瓦尔里纳·勇气',
        'Dragon Empire': '龙族帝国',
        'Unit': '单位',
        ': Talisman': '护身符',
    };
    
    //能力.effect p
    const getxiaoguo = new ElementGetter();
    getxiaoguo.each('.effect p', document, p => {
    if (p.innerText in xiaoguo) {
    p.innerText = xiaoguo[p.innerText];
    }
    });
    
    //卡名.name[data-cardid]
    //国家[data-name="nation"]>.data
    //卡片类型.name[data-tooltip-position]
    //种族
    const getqita = new ElementGetter();
    getqita.each('.name[data-cardid], [data-name="nation"]>.data,.name[data-tooltip-position]', document, p => {
    if (p.innerText in qita) {
    p.innerText = qita[p.innerText];
    }
    });
    })();
    回复
    订阅

    使用道具 举报

  • TA的每日心情
    慵懒
    2022-3-8 11:41
  • 签到天数: 2 天

    [LV.1]初来乍到

    22

    主题

    881

    回帖

    1379

    积分

    荣誉开发者

    积分
    1379

    荣誉开发者卓越贡献油中2周年生态建设者油中3周年挑战者 lv2

    发表于 2022-8-12 22:21:50 | 显示全部楼层
    40252492 发表于 2022-8-12 15:17
    [md]> 本帖最后由 40252492 于 2022-8-12 17:35 编辑

    > 本帖最后由 40252492 于 2022-8-12 17:35 编辑

    li.type span
    li.rarity
    自己学一下呗,又不难写。另外ElementGetter不用new这么多个的,只需要new一次,后面都用同一个变量名就可以了。
    回复

    使用道具 举报

  • TA的每日心情

    2023-9-1 16:15
  • 签到天数: 71 天

    [LV.6]常住居民II

    4

    主题

    48

    回帖

    59

    积分

    初级工程师

    积分
    59
    发表于 2022-8-15 12:31:45 | 显示全部楼层
    steven026 发表于 2022-8-11 20:06
    @王一之 这脚本猫编辑器竟然不报错,有点离谱了😳话说脚本猫能像油猴一样内置一个eslint吗?至少eslint ...

    大佬,您好像没有@成功啊
    回复

    使用道具 举报

  • TA的每日心情

    2023-9-1 16:15
  • 签到天数: 71 天

    [LV.6]常住居民II

    4

    主题

    48

    回帖

    59

    积分

    初级工程师

    积分
    59
    发表于 2022-8-15 12:36:10 | 显示全部楼层
    本帖最后由 40252492 于 2022-8-15 13:23 编辑
    cxxjackie 发表于 2022-8-12 22:21
    li.type span
    li.rarity
    自己学一下呗,又不难写。另外ElementGetter不用new这么多个的,只需要new一次, ...

    多谢大佬,我看了您发的《querySelector与css选择器入门》现在能大概通读一遍了
    然后,请问有教程吗?我先从选择器的写法入手百度查了查,甚至不知道应该查什么关键词。。。

    然后就是,卡片类型翻译成功了,种族没有翻译成功,请您帮忙看看啦~
    (我给代码合成一段了!Q3Q)
    无标题.png

    (function() {
        'use strict';

        const fanyi = {
            '[overDress]-"Trickstar", or a grade 3 or less unit in the [overDress] state ': '【超限舞装】-「托里科斯塔」或处于【超限舞装】状态的等级3以下的后防者',
            '[CONT](RC):This unit gets [Power]+5000 for each of this unit\'s originalDress.': '【永】【R】:这个单位的舞装源每有1张,这个单位的力量+5000。',
            '[AUTO](RC)1/Turn:When the attack of this unit in the [overDress] state hits, COST [Counter Blast (1) & discard a card from your hand], and [Stand] this unit.': '【自】【R】【1回合1次】:处于【超限舞装】状态的这个单位的攻击击中时,通过【费用】[计数爆发1,将手牌中的1张卡舍弃],将这个单位重置。',
            'Trickstar': '托里科斯塔',
            'Vairina Valiente': '瓦尔里纳·勇气',
            'Dragon Empire': '龙族帝国',
            'Unit': '单位',
            ': Talisman': '护身符',
        };
    //能力.effect p
    //卡名.name[data-cardid]
    //国家[data-name="nation"]>.data
    //卡片类型li.type span
    //种族li.rarity
        const getfanyi = new ElementGetter();
        getfanyi.each('.effect p,.name[data-cardid], [data-name="nation"]>.data,.name[data-tooltip-position],li.type span,li.rarity', document, p => {
            if (p.innerText in fanyi) {
                p.innerText = fanyi[p.innerText];
            }
        });
    })();


    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2022-3-8 11:41
  • 签到天数: 2 天

    [LV.1]初来乍到

    22

    主题

    881

    回帖

    1379

    积分

    荣誉开发者

    积分
    1379

    荣誉开发者卓越贡献油中2周年生态建设者油中3周年挑战者 lv2

    发表于 2022-8-15 22:39:29 | 显示全部楼层
    40252492 发表于 2022-8-15 12:36
    多谢大佬,我看了您发的《querySelector与css选择器入门》现在能大概通读一遍了
    然后,请问有教程吗?我先 ...

    li.rarity不是种族,是右下角的稀有度,类型和种族我合一起了,就是li.type span,没有替换成功是因为没有完全匹配,冒号后面的空格不一样,在字符集里面有很多种空格,虽然看起来都一样但实际是不同的编码,最好用复制粘贴的,不要自己输入。
    教程论坛里就有:https://bbs.tampermonkey.net.cn/thread-184-1-1.html
    如果是要选择器的教程,那篇文章的基本够用了,要学更多的话:https://www.w3school.com.cn/cssref/css_selectors.asp
    回复

    使用道具 举报

  • TA的每日心情

    2023-9-1 16:15
  • 签到天数: 71 天

    [LV.6]常住居民II

    4

    主题

    48

    回帖

    59

    积分

    初级工程师

    积分
    59
    发表于 2022-8-16 10:01:19 | 显示全部楼层
    本帖最后由 40252492 于 2022-8-16 10:15 编辑
    cxxjackie 发表于 2022-8-15 22:39
    li.rarity不是种族,是右下角的稀有度,类型和种族我合一起了,就是li.type span,没有替换成功是因为没 ...

    多谢大佬的教程!我好好看看!QvQ

    刚百度搜了一下nbsp,原来空格也不止一种啊,我复制一下试试

    'Unit: Talisman': '单位:护身符',

    我这样写的,但是没有生效哇(是复制的)

            'Unit': '单位',
            ': Talisman': ': 护身符',
    我又写成了2行,结果只有单位被翻译了,种族没有被翻译出来QAQ


    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2022-3-8 11:41
  • 签到天数: 2 天

    [LV.1]初来乍到

    22

    主题

    881

    回帖

    1379

    积分

    荣誉开发者

    积分
    1379

    荣誉开发者卓越贡献油中2周年生态建设者油中3周年挑战者 lv2

    发表于 2022-8-16 11:51:50 | 显示全部楼层
    40252492 发表于 2022-8-16 10:01
    多谢大佬的教程!我好好看看!QvQ

    刚百度搜了一下nbsp,原来空格也不止一种啊,我复制一下试试

    应该是分开的,估计你复制的时候哪里弄错了,算了,你写成这样吧:
    :\u00A0Talisman
    后面要是再碰到这种空格就都替换成\u00A0。
    回复

    使用道具 举报

  • TA的每日心情

    2023-9-1 16:15
  • 签到天数: 71 天

    [LV.6]常住居民II

    4

    主题

    48

    回帖

    59

    积分

    初级工程师

    积分
    59
    发表于 2022-8-16 13:11:33 | 显示全部楼层

    本帖最后由 40252492 于 2022-8-16 13:16 编辑

    本帖最后由 40252492 于 2022-8-16 13:15 编辑

    啊啊啊阿斯克编码?
    6啊!谢谢大佬
    8XA{KF~@{Q)R3}VPKU2UUXA.png

    我原本只是打算求程序的,结果怎么成了学习专业技能的了
    image.png

    回复

    使用道具 举报

  • TA的每日心情

    2023-9-1 16:15
  • 签到天数: 71 天

    [LV.6]常住居民II

    4

    主题

    48

    回帖

    59

    积分

    初级工程师

    积分
    59
    发表于 2022-8-19 16:33:53 | 显示全部楼层

    本帖最后由 40252492 于 2022-8-19 16:37 编辑

    本帖最后由 40252492 于 2022-8-19 16:36 编辑

    本帖最后由 40252492 于 2022-8-19 16:35 编辑

    大佬大佬,我看了一遍CSS选择器的写法,已经能看得懂您写的那些选择器了。
    然后我灵光一现,写成了'.effect p,:not(p)',结果出了点问题
    目前可以通过:not(p)替换一切p以外的东西,但是会把a和div里的属性带着一起替换成中文
    导致按钮、卡图没了
    标题字少,拿标题举例

    原本长这样
    1.jpg

    替换之后成了这样
    2.jpg

    请问咋整哇?QAQ

    // ==UserScript==
    // @name         dulst.com的CardFighit Vanguard OverDulst文本替换汉化
    // @namespace    https://bbs.tampermonkey.net.cn/
    // @version      0.8
    // @description  通过将英文替换为中文的方法,汉化卡片战斗先导者OD的网页游戏
    // @author       库X崔羊羊
    // @match        https://dulst.com/overdulst/*
    // @icon         https://www.google.com/s2/favicons?domain=dulst.com
    // @require      https://scriptcat.org/lib/513/1.2.0/ElementGetter.js
    // ==/UserScript==
    
    (function() {
        'use strict';
    
        const fanyi = {
            'Play': '匹配',
            'Home': '首页',
            'Collectible': '收藏',
            'Community': '论坛',
            'Market': '商店',
        };
        const getwenben = new ElementGetter();
        getwenben.each('.effect p,:not(p)', document, p => {
            if (p.innerText in fanyi) {
                p.innerText = fanyi[p.innerText];
            }
        });
    })();

    另外Play这个按钮没有替换成功,您知道咋回事嘛?Q3Q

    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2022-3-8 11:41
  • 签到天数: 2 天

    [LV.1]初来乍到

    22

    主题

    881

    回帖

    1379

    积分

    荣誉开发者

    积分
    1379

    荣誉开发者卓越贡献油中2周年生态建设者油中3周年挑战者 lv2

    发表于 2022-8-19 20:59:28 | 显示全部楼层
    40252492 发表于 2022-8-19 16:33
    [md]> 本帖最后由 40252492 于 2022-8-19 16:36 编辑

    > 本帖最后由 40252492 于 2022-8-19 16:35 编辑

    最好不要这么搞,这个写法就是会把元素下的子元素一起搞没的,前面效果对加粗倾斜的处理就是这个原理(加粗实际是p元素下的strong元素)。选择器还是老老实实手动写,上面这一排可以用#dulstMenu a,能看懂的话应该会举一反三吧,要测试选择器是否正确,可以在控制台那里执行这行代码看看:
    1. $$('#dulstMenu a')
    复制代码
    回复

    使用道具 举报

    发表回复

    本版积分规则

    快速回复 返回顶部 返回列表