网页文本替换汉化的油猴脚本,支持包含加粗和斜体
本帖最后由 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: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_```能打印出需要汉化的文本 给你写个示例:
// ==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 分成多段没法阅读的话
可以考虑给抽成虚拟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 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 13:17 编辑
> 本帖最后由 40252492 于 2022-8-9 13:17 编辑
> 本帖最后由 40252492 于 2022-8-9 13:17 编辑
多谢大佬提供思路,但是我完全是个外行,我是学设计的,就是PS AI Flash 3Dmax那种,DW是用图形化界面学的。。。
我非常喜欢这个TCG卡牌游戏,我已经在excel里写了942行翻译了,这绝不是一时兴起!
请问能否帮我写油猴脚本哇QAQ,楼上的我正准备试试,但是加粗和斜体好像全都去掉了,还报了个错
是的,我是去知乎问了,但是邀请了200多人,没人搭理我鸭 ```
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) 关于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) 李恒道 发表于 2022-8-9 14:21
```
function Generate_vitural_text_message(dom){
let entity_text=""
多谢大佬写的代码!!!请问怎么用在油猴脚本里哇?。。。
(对不起我完全看不懂)
我只会翻译,其实只是对着网站里的英文,粘到excel里,然后从中文wiki粘现成的翻译
或者我换个问法
我的英文和中文应该怎么写,放在那里? 李恒道 发表于 2022-8-9 14:28
关于json格式会翻译有个比较简单地操作
就是利用json序列函数来做text翻译工作,发现匹配直接操作dom
` ...
太感谢了,但是我是0基础的。。。我没学过编程,我完全看不懂{:4_115:}
请问能麻烦您帮忙写一个油猴脚本吗?Q3Q