40252492 发表于 2022-8-8 22:07:12

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

本帖最后由 40252492 于 2022-10-20 13:54 编辑

汉化文本突破3000行!!!😜😜😜
感谢cxxjackie大佬!
https://greasyfork.org/zh-CN/scripts/450728-dulst-com%E7%9A%84cardfighit-vanguard-overdulst%E6%96%87%E6%9C%AC%E6%9B%BF%E6%8D%A2%E6%B1%89%E5%8C%96

***

大家好,我想使用油猴脚本制作一个网页游戏“卡片战斗先导者OD”的汉化,采用将英文替换为中文的方法
https://dulst.com/overdulst/cards/31853506/Vairina-Valiente
如上↑,我要汉化这个网站的UI、卡名、效果等信息,大段的效果文本里会有加粗和斜体,举个例子(如图)
!(data/attachment/forum/202208/08/220650b8avi6vmzj24avvc.png)
请看,这是一整句效果文本,但是被加粗(或斜体)给隔开了,如果分多段汉化,则没法阅读

(我有做一个excel,A列英文原文,B列中文翻译,C列用公式合成需要的格式,粘到JS里)

(我的excel里,效果文本以外的翻译都完成了,卡在这种被加粗隔开的句子,没法分开翻译,要是把加粗的<strong <i 啥的当做英文原文也可以,希望能把<p中的文本当成一段来翻译)
求帮忙写一个油猴脚本啦,谢谢!QvQ

steven026 发表于 2022-8-8 22:41:35

本帖最后由 steven026 于 2022-8-8 22:43 编辑

核心文件:https://g8hh.com/zh/core.js
汉化文件(供参考):https://gltyx.github.io/immortality-idle/chs.js
最终样品(供参考):https://www.gityx.com/g8hh/hanhuazhong/466.html

有现成的汉化脚本,稍微改造一下可以变成油猴形式
然后控制台输入```cnItems._OTHER_```能打印出需要汉化的文本

cxxjackie 发表于 2022-8-8 23:29:25

给你写个示例:
// ==UserScript==
// @name         汉化示例
// @description...
// @namespace    ...
// @author       ...
// @version      1.0
// @match      https://dulst.com/overdulst/cards/31853506/Vairina-Valiente
// @require      https://scriptcat.org/lib/513/1.1.1/ElementGetter.js
// ==/UserScript==

(function() {
    'use strict';
    const translation = {
      '-"Trickstar", or a grade 3 or less unit in the state ': '这是',
      '(RC):This unit gets +5000 for each of this unit\'s originalDress.': '一段',
      '(RC)1/Turn:When the attack of this unit in the state hits, COST , and this unit.': '汉化文本',
    };
    const elmGetter = new ElementGetter();
    elmGetter.each('.effect p', document, p => {
      if (p.innerText in translation) {
            p.innerText = translation;
      }
    });
})();
完整脚本还是自己写吧,汉化要做的细节挺多的。
ElementGetter:https://bbs.tampermonkey.net.cn/thread-2726-1-1.html

李恒道 发表于 2022-8-9 09:46:27

分成多段没法阅读的话
可以考虑给抽成虚拟dom那样?
感觉好像知乎见过这个问题...
比如
![图片.png](data/attachment/forum/202208/09/094502dn1w1nhn1fnq3arc.png)
给搞成
[
    {
      label:'strong',
      text:'RC:'
   },
   {
         label:'text',
      text:'When this unit boosts, this unit gets '
   },
    {
      label:'strong',
      text:'+2000:'
   },
   {
         label:'text',
      text:' until end of turn.'
   }
]

40252492 发表于 2022-8-9 12:56:16

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

cxxjackie 发表于 2022-8-8 23:29
给你写个示例:

完整脚本还是自己写吧,汉化要做的细节挺多的。

多谢大佬,请问这个油猴脚本能汉化UI吗,还是只能汉化卡片的效果?
目前有个报错,没有生效
您看图鸭~我上面已经加上了
// @require      https://scriptcat.org/lib/513/1.1.1/ElementGetter.js
但是它还报eslint : no-undef - ‘ElementGetter’ is not defined.

40252492 发表于 2022-8-9 12:59:56

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

> 本帖最后由 40252492 于 2022-8-9 13:17 编辑

> 本帖最后由 40252492 于 2022-8-9 13:17 编辑

多谢大佬提供思路,但是我完全是个外行,我是学设计的,就是PS AI Flash 3Dmax那种,DW是用图形化界面学的。。。

我非常喜欢这个TCG卡牌游戏,我已经在excel里写了942行翻译了,这绝不是一时兴起!

请问能否帮我写油猴脚本哇QAQ,楼上的我正准备试试,但是加粗和斜体好像全都去掉了,还报了个错

是的,我是去知乎问了,但是邀请了200多人,没人搭理我鸭

李恒道 发表于 2022-8-9 14:21:02

```
function Generate_vitural_text_message(dom){
    let entity_text=""
    let text_json=Generate_virtual_text_struct(dom,[],(text)=>{
      entity_text+=text
    })
    return {
      text_json_struct:text_json,
      entity_text:entity_text
    }

}
function Generate_virtual_text_struct(dom,parent=[],callback){
    debugger;
    if(dom.childNodes.length!==0){
      dom.childNodes.forEach((item)=>{
            if(item.childNodes.length!==0){
                let inject_dom={
                  name:item.nodeName,
                  children:[]
                }
                parent.push(inject_dom)
                Generate_virtual_text_struct(item,inject_dom.children,callback)
            }else{
                Generate_virtual_text_struct(item,parent,callback)
            }
      })
    }else{
      if(dom.nodeName==='#text'){
            debugger;
            callback&&callback(dom.data)
            parent.push({
                name:'#text',
                text:dom.data,
                dom:dom,
            })
      }
    }
    return parent
}
window.Generate_virtual_text_struct=Generate_virtual_text_struct
window.Generate_vitural_text_message=Generate_vitural_text_message
```
可以生成每个strong和p标签内的结构和数据
以及附带了完整的段落
具体翻译还是要哥哥去搞的
因为一个完整的脚本不只是翻译
各种页面的判断和持久性维护很麻烦的
还是推荐自己动手学一阵
![图片.png](data/attachment/forum/202208/09/142003iz7ozebbrxrpi9pi.png)

李恒道 发表于 2022-8-9 14:28:11

关于json格式会翻译有个比较简单地操作
就是利用json序列函数来做text翻译工作,发现匹配直接操作dom
```
    JSON.stringify(json,(key,value)=>{
      console.log('key,value',key,value)
          return value;
    })
```
![图片.png](data/attachment/forum/202208/09/142807ag5sc5s3oaycs9lv.png)

40252492 发表于 2022-8-9 14:28:55

李恒道 发表于 2022-8-9 14:21
```
function Generate_vitural_text_message(dom){
    let entity_text=""


多谢大佬写的代码!!!请问怎么用在油猴脚本里哇?。。。
(对不起我完全看不懂)
我只会翻译,其实只是对着网站里的英文,粘到excel里,然后从中文wiki粘现成的翻译

或者我换个问法
我的英文和中文应该怎么写,放在那里?

40252492 发表于 2022-8-9 14:41:47

李恒道 发表于 2022-8-9 14:28
关于json格式会翻译有个比较简单地操作
就是利用json序列函数来做text翻译工作,发现匹配直接操作dom
` ...

太感谢了,但是我是0基础的。。。我没学过编程,我完全看不懂{:4_115:}
请问能麻烦您帮忙写一个油猴脚本吗?Q3Q
页: [1] 2 3 4 5 6 7 8
查看完整版本: 网页文本替换汉化的油猴脚本,支持包含加粗和斜体