Compare commits
3 Commits
837f406908
...
4a2032b8cb
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4a2032b8cb | ||
|
|
0d919a7379 | ||
|
|
63cef85608 |
244
DOC/bugs.json
244
DOC/bugs.json
@ -1,5 +1,5 @@
|
||||
{
|
||||
"nextId": 142,
|
||||
"nextId": 166,
|
||||
"bugs": [
|
||||
{
|
||||
"id": 2,
|
||||
@ -1335,21 +1335,21 @@
|
||||
"id": 135,
|
||||
"title": "【英文】new game的game mode说明缺少翻译",
|
||||
"description": "",
|
||||
"status": "open",
|
||||
"status": "fixed",
|
||||
"priority": "medium",
|
||||
"module": "",
|
||||
"createdAt": 1778736764427,
|
||||
"updatedAt": 1778736764427
|
||||
"updatedAt": 1778783694502
|
||||
},
|
||||
{
|
||||
"id": 136,
|
||||
"title": "【英文】英雄面板行动点说明缺少翻译",
|
||||
"description": "",
|
||||
"status": "open",
|
||||
"status": "fixed",
|
||||
"priority": "medium",
|
||||
"module": "",
|
||||
"createdAt": 1778737143020,
|
||||
"updatedAt": 1778737143020
|
||||
"updatedAt": 1778783692926
|
||||
},
|
||||
{
|
||||
"id": 137,
|
||||
@ -1395,11 +1395,241 @@
|
||||
"id": 141,
|
||||
"title": "单机自定义模式 下一回合按钮丢失",
|
||||
"description": "英文,人数和地图选择最大。点击retry后next turn按钮回来,但下一回合开始又丢失",
|
||||
"status": "open",
|
||||
"status": "fixed",
|
||||
"priority": "medium",
|
||||
"module": "",
|
||||
"createdAt": 1778745107106,
|
||||
"updatedAt": 1778745107106
|
||||
"updatedAt": 1778783683382
|
||||
},
|
||||
{
|
||||
"id": 142,
|
||||
"title": "升级后再攻是bug吗",
|
||||
"description": "",
|
||||
"status": "open",
|
||||
"priority": "medium",
|
||||
"module": "",
|
||||
"createdAt": 1778751262788,
|
||||
"updatedAt": 1778751262788
|
||||
},
|
||||
{
|
||||
"id": 143,
|
||||
"title": "残无lv3有辉夜技能",
|
||||
"description": "",
|
||||
"status": "fixed",
|
||||
"priority": "medium",
|
||||
"module": "",
|
||||
"createdAt": 1778753378414,
|
||||
"updatedAt": 1778783291055
|
||||
},
|
||||
{
|
||||
"id": 145,
|
||||
"title": "文文立风露图标纯白",
|
||||
"description": "",
|
||||
"status": "open",
|
||||
"priority": "medium",
|
||||
"module": "",
|
||||
"createdAt": 1778753575515,
|
||||
"updatedAt": 1778753575515
|
||||
},
|
||||
{
|
||||
"id": 146,
|
||||
"title": "溅射能增加协同吗?",
|
||||
"description": "",
|
||||
"status": "open",
|
||||
"priority": "medium",
|
||||
"module": "",
|
||||
"createdAt": 1778754728669,
|
||||
"updatedAt": 1778754728669
|
||||
},
|
||||
{
|
||||
"id": 147,
|
||||
"title": "联机情况下,建立大使馆后,在等待队友回合期间点开队友外交页面,会显示可以建立大使馆",
|
||||
"description": "",
|
||||
"status": "open",
|
||||
"priority": "medium",
|
||||
"module": "",
|
||||
"createdAt": 1778755222571,
|
||||
"updatedAt": 1778755222571
|
||||
},
|
||||
{
|
||||
"id": 148,
|
||||
"title": "军港少了在港口相邻的描述",
|
||||
"description": "",
|
||||
"status": "fixed",
|
||||
"priority": "medium",
|
||||
"module": "",
|
||||
"createdAt": 1778755784385,
|
||||
"updatedAt": 1778783284554
|
||||
},
|
||||
{
|
||||
"id": 149,
|
||||
"title": "打咲夜保护单位无法逃跑",
|
||||
"description": "",
|
||||
"status": "open",
|
||||
"priority": "medium",
|
||||
"module": "",
|
||||
"createdAt": 1778758376886,
|
||||
"updatedAt": 1778758376886
|
||||
},
|
||||
{
|
||||
"id": 150,
|
||||
"title": "分辨率 全屏",
|
||||
"description": "",
|
||||
"status": "open",
|
||||
"priority": "medium",
|
||||
"module": "",
|
||||
"createdAt": 1778758464928,
|
||||
"updatedAt": 1778758464928
|
||||
},
|
||||
{
|
||||
"id": 151,
|
||||
"title": "城市【尼亚尼】翻译丢失,疑似因为局内切换语种",
|
||||
"description": "",
|
||||
"status": "open",
|
||||
"priority": "medium",
|
||||
"module": "",
|
||||
"createdAt": 1778758777605,
|
||||
"updatedAt": 1778758777605
|
||||
},
|
||||
{
|
||||
"id": 152,
|
||||
"title": "咲夜銀之跳躍到迷霧中還會顯示一小段時間才消失,被其它玩家看到位置",
|
||||
"description": "",
|
||||
"status": "fixed",
|
||||
"priority": "medium",
|
||||
"module": "",
|
||||
"createdAt": 1778764534552,
|
||||
"updatedAt": 1778833006557
|
||||
},
|
||||
{
|
||||
"id": 153,
|
||||
"title": "浅海和地块搞不清",
|
||||
"description": "",
|
||||
"status": "open",
|
||||
"priority": "medium",
|
||||
"module": "",
|
||||
"createdAt": 1778769581953,
|
||||
"updatedAt": 1778769581953
|
||||
},
|
||||
{
|
||||
"id": 154,
|
||||
"title": "击杀了一个雾里面的兵,兵变成僵尸",
|
||||
"description": "",
|
||||
"status": "fixed",
|
||||
"priority": "medium",
|
||||
"module": "",
|
||||
"createdAt": 1778770821452,
|
||||
"updatedAt": 1778833003790
|
||||
},
|
||||
{
|
||||
"id": 155,
|
||||
"title": "使用诹坊子的小蛇发现敌方间谍时,间谍会直接消失而不是现身。",
|
||||
"description": "",
|
||||
"status": "open",
|
||||
"priority": "medium",
|
||||
"module": "",
|
||||
"createdAt": 1778772507381,
|
||||
"updatedAt": 1778772507381
|
||||
},
|
||||
{
|
||||
"id": 156,
|
||||
"title": "BGM忽小忽大的bug",
|
||||
"description": "",
|
||||
"status": "open",
|
||||
"priority": "medium",
|
||||
"module": "",
|
||||
"createdAt": 1778783675175,
|
||||
"updatedAt": 1778783675175
|
||||
},
|
||||
{
|
||||
"id": 157,
|
||||
"title": "假金币",
|
||||
"description": "",
|
||||
"status": "open",
|
||||
"priority": "medium",
|
||||
"module": "",
|
||||
"createdAt": 1778818570879,
|
||||
"updatedAt": 1778818570879
|
||||
},
|
||||
{
|
||||
"id": 158,
|
||||
"title": "百科计算器工具",
|
||||
"description": "",
|
||||
"status": "open",
|
||||
"priority": "medium",
|
||||
"module": "",
|
||||
"createdAt": 1778823653860,
|
||||
"updatedAt": 1778823653860
|
||||
},
|
||||
{
|
||||
"id": 159,
|
||||
"title": "右键取消当前选中单位",
|
||||
"description": "",
|
||||
"status": "open",
|
||||
"priority": "medium",
|
||||
"module": "",
|
||||
"createdAt": 1778823715676,
|
||||
"updatedAt": 1778823715676
|
||||
},
|
||||
{
|
||||
"id": 160,
|
||||
"title": "地块染色有bug",
|
||||
"description": "",
|
||||
"status": "open",
|
||||
"priority": "medium",
|
||||
"module": "",
|
||||
"createdAt": 1778824400667,
|
||||
"updatedAt": 1778824400667
|
||||
},
|
||||
{
|
||||
"id": 161,
|
||||
"title": "游戏存档坏了开局会挂",
|
||||
"description": "",
|
||||
"status": "open",
|
||||
"priority": "medium",
|
||||
"module": "",
|
||||
"createdAt": 1778829858602,
|
||||
"updatedAt": 1778829858602
|
||||
},
|
||||
{
|
||||
"id": 162,
|
||||
"title": "阿燐杀死妹红有两个火焰",
|
||||
"description": "",
|
||||
"status": "open",
|
||||
"priority": "medium",
|
||||
"module": "",
|
||||
"createdAt": 1778829869261,
|
||||
"updatedAt": 1778829869261
|
||||
},
|
||||
{
|
||||
"id": 163,
|
||||
"title": "盟友城市底板改成绿色",
|
||||
"description": "",
|
||||
"status": "open",
|
||||
"priority": "medium",
|
||||
"module": "",
|
||||
"createdAt": 1778830121326,
|
||||
"updatedAt": 1778830121326
|
||||
},
|
||||
{
|
||||
"id": 164,
|
||||
"title": "芙兰吃盟友=背盟",
|
||||
"description": "",
|
||||
"status": "open",
|
||||
"priority": "medium",
|
||||
"module": "",
|
||||
"createdAt": 1778830385870,
|
||||
"updatedAt": 1778830385870
|
||||
},
|
||||
{
|
||||
"id": 165,
|
||||
"title": "分辨率 / 帧率",
|
||||
"description": "",
|
||||
"status": "open",
|
||||
"priority": "medium",
|
||||
"module": "",
|
||||
"createdAt": 1778831099141,
|
||||
"updatedAt": 1778831099141
|
||||
}
|
||||
]
|
||||
}
|
||||
@ -1,5 +1,5 @@
|
||||
{
|
||||
"nextId": 14,
|
||||
"nextId": 18,
|
||||
"todos": [
|
||||
{
|
||||
"id": 2,
|
||||
@ -46,8 +46,9 @@
|
||||
{
|
||||
"id": 8,
|
||||
"title": "5.14中午发布EA视频",
|
||||
"done": false,
|
||||
"createdAt": 1778391719909
|
||||
"done": true,
|
||||
"createdAt": 1778391719909,
|
||||
"doneAt": 1778764188383
|
||||
},
|
||||
{
|
||||
"id": 9,
|
||||
@ -70,14 +71,40 @@
|
||||
{
|
||||
"id": 12,
|
||||
"title": "韩语本地化(商店)",
|
||||
"done": false,
|
||||
"createdAt": 1778685966257
|
||||
"done": true,
|
||||
"createdAt": 1778685966257,
|
||||
"doneAt": 1778764180066
|
||||
},
|
||||
{
|
||||
"id": 13,
|
||||
"title": "日文韩文抢先体验本地化",
|
||||
"done": false,
|
||||
"createdAt": 1778685972626
|
||||
},
|
||||
{
|
||||
"id": 14,
|
||||
"title": "Steam发通知",
|
||||
"done": false,
|
||||
"createdAt": 1778764189425
|
||||
},
|
||||
{
|
||||
"id": 15,
|
||||
"title": "Bilibili发布反馈建议收集贴",
|
||||
"done": true,
|
||||
"createdAt": 1778767206768,
|
||||
"doneAt": 1778781618471
|
||||
},
|
||||
{
|
||||
"id": 16,
|
||||
"title": "周五7:30推送小黑盒",
|
||||
"done": false,
|
||||
"createdAt": 1778768338921
|
||||
},
|
||||
{
|
||||
"id": 17,
|
||||
"title": "伊吹小秋",
|
||||
"done": false,
|
||||
"createdAt": 1778772889258
|
||||
}
|
||||
]
|
||||
}
|
||||
Binary file not shown.
BIN
Tools/Multilingual.xlsx.bak_artemis
Normal file
BIN
Tools/Multilingual.xlsx.bak_artemis
Normal file
Binary file not shown.
BIN
Tools/Multilingual2.xlsx
Normal file
BIN
Tools/Multilingual2.xlsx
Normal file
Binary file not shown.
File diff suppressed because one or more lines are too long
118
Tools/Multilingual_Fix_Report_2026-05-14.md
Normal file
118
Tools/Multilingual_Fix_Report_2026-05-14.md
Normal file
@ -0,0 +1,118 @@
|
||||
# Multilingual.xlsx 修复报告 (2026-05-14 17:04:16)
|
||||
|
||||
- 备份:`Multilingual.before_fix_2026-05-14.bak.xlsx`
|
||||
- 成功修改:**94** 条
|
||||
- 跳过(NOOP):**8** 条
|
||||
- 失败:**0** 条
|
||||
|
||||
## 成功列表
|
||||
|
||||
| 决策 | ID | 语言 | 修改前 | 修改后 | 说明 |
|
||||
|---|---|---|---|---|---|
|
||||
| A1 | 173 | KR | 이나바 테이 | 이나바 테위 | 因幡帝韩文统一 |
|
||||
| A1 | 16889 | KR | 이나바 테이 Lv.1 | 이나바 테위 Lv.1 | 因幡帝韩文统一 |
|
||||
| A1 | 16890 | KR | 이나바 테이 Lv.2 | 이나바 테위 Lv.2 | 因幡帝韩文统一 |
|
||||
| A1 | 16891 | KR | 이나바 테이 Lv.3 | 이나바 테위 Lv.3 | 因幡帝韩文统一 |
|
||||
| A1 | 16892 | KR | 이나바 테이 Lv.4 | 이나바 테위 Lv.4 | 因幡帝韩文统一 |
|
||||
| A1 | 17230 | KR | **<[상] 클래스 영웅>**. 전장에 **<이나바 테이>**는 최대 1명만 존재 가능. 사망 후 3턴 동안 재출전 불가. | **<[상] 클래스 영웅>**. 전장에 **<이나바 테위>**는 최대 1명만 존재 가능. 사망 후 3턴 동안 재출전 불가. | 因幡帝韩文统一 |
|
||||
| A1 | 17247 | KR | **<제국의 기만자:이나바 테이>**<br> **<-------- Lv.1 -------->**<br> **<[기본 속성]>**15HP/공1/방2/이동력2/사거리1/수역 통행<br> **<[능력:망루]>**2칸 범위 | **<제국의 기만자:이나바 테위>**<br> **<-------- Lv.1 -------->**<br> **<[기본 속성]>**15HP/공1/방2/이동력2/사거리1/수역 통행<br> **<[능력:망루]>**2칸 범위 | 因幡帝韩文统一 |
|
||||
| A1 | 18565 | KR | 제국의 기만자:이나바 테이 | 제국의 기만자:이나바 테위 | 因幡帝韩文统一 |
|
||||
| A2 | 2330 | KR | 불타라 홍미령 | 불타라 홍 메이링 | 红美铃韩文统一 |
|
||||
| A2 | 2391 | KR | V1.5.0 패치 노트 <size=36><b>[신규 진영] 스칼렛 제국</b></size> 홍무가 나일 강 양안을 뒤덮고, 신들이 제국의 방향을 인도한다. 생사는 그녀의 시계로 재고, 지혜는 그녀의 책장 사이로 | V1.5.0 패치 노트 <size=36><b>[신규 진영] 스칼렛 제국</b></size> 홍무가 나일 강 양안을 뒤덮고, 신들이 제국의 방향을 인도한다. 생사는 그녀의 시계로 재고, 지혜는 그녀의 책장 사이로 | 红美铃韩文统一 |
|
||||
| A2 | 17329 | KR | **<제국의 용: 홍미령>**<br> **<-------- Lv.1 -------->**<br> **<[기본 속성]>**15HP/공3/방3/이동력1/사거리1<br> **<[능력:황진각]>**이동 시 범위 스플래시 피 | **<제국의 용: 홍 메이링>**<br> **<-------- Lv.1 -------->**<br> **<[기본 속성]>**15HP/공3/방3/이동력1/사거리1<br> **<[능력:황진각]>**이동 시 범위 스플래시 | 红美铃韩文统一 |
|
||||
| A2 | 18531 | KR | [능력:불타라 홍미령] | [능력:불타라 홍 메이링] | 红美铃韩文统一 |
|
||||
| A2 | 18535 | KR | 제국의 용: 홍미령 | 제국의 용: 홍 메이링 | 红美铃韩文统一 |
|
||||
| A3 | 35 | KR | 플란드르 | 플랑드르 | 芙兰朵露韩文统一 |
|
||||
| A3 | 2391 | KR | V1.5.0 패치 노트 <size=36><b>[신규 진영] 스칼렛 제국</b></size> 홍무가 나일 강 양안을 뒤덮고, 신들이 제국의 방향을 인도한다. 생사는 그녀의 시계로 재고, 지혜는 그녀의 책장 사이로 | V1.5.0 패치 노트 <size=36><b>[신규 진영] 스칼렛 제국</b></size> 홍무가 나일 강 양안을 뒤덮고, 신들이 제국의 방향을 인도한다. 생사는 그녀의 시계로 재고, 지혜는 그녀의 책장 사이로 | 芙兰朵露韩文统一 |
|
||||
| A3 | 17328 | KR | **<제국의 금기:플랑드르 스칼렛>**<br> **<-------- Lv.1 -------->**<br> **<[기본 속성]>**10HP/공3/방1/이동력2/사거리1<br> **<[능력:뱀파이어]>**공격 및 반격 | **<제국의 금기:플랑드르 스칼렛>**<br> **<-------- Lv.1 -------->**<br> **<[기본 속성]>**10HP/공3/방1/이동력2/사거리1<br> **<[능력:뱀파이어]>**공격 및 반격 | 芙兰朵露韩文统一 |
|
||||
| A4 | 16842 | KR | **<후>** 클래스 영웅. 제국의 토착신. 제국 기반의 가장 깊은 어둠에 뿌리내렸으며, 전역에 퍼진 적구의 재앙은 그녀 의지의 연장이다. | **<후>** 클래스 영웅. 제국의 토착신. 제국 기반의 가장 깊은 어둠에 뿌리내렸으며, 전역에 퍼진 미샤구지의 재앙은 그녀 의지의 연장이다. | 赤口→米沙古吉(仅16842) |
|
||||
| A5 | 19414 | KR | 사이교지 유유코 | 사이교우지 유유코 | 西行寺幽幽子韩文修正 |
|
||||
| A6 | 19830 | KR | <b>제작</b>: 레미리아 사령부 <b>원작</b>: 상하이 앨리스 환악단 <color=grey>본 작품은 동방 프로젝트의 2차 동인 창작물입니다</color> | <b>제작</b>: 레밀리아 사령부 <b>원작</b>: 상하이 앨리스 환악단 <color=grey>본 작품은 동방 프로젝트의 2차 동인 창작물입니다</color> | 蕾米莉亚拼写修正 |
|
||||
| C1 | 1233 | EN | Build **<Forest>** on **<Logging Camp>**, provides 1 City EXP. Note: Will remove animals in the forest | Build **<Logging Camp>** on **<Forest>**, provides 1 City EXP. Note: Will remove animals in the forest | 主宾颠倒修复 |
|
||||
| C1 | 1234 | EN | Build **<Water>** on **<Harbor>**, provides 1 City EXP. Enables Conversion of regular units into naval units, and allows establishing **<Ocean Trade Route>** | Build **<Harbor>** on **<Water>**, provides 1 City EXP. Enables Conversion of regular units into naval units, and allows establishing **<Ocean Trade Route>** | 主宾颠倒修复 |
|
||||
| C1 | 1235 | EN | Build **<Water>** on **<Bridge>**. Forms **<Trade Route>** and provides Movement bonus | Build **<Bridge>** on **<Water>**. Forms **<Trade Route>** and provides Movement bonus | 主宾颠倒修复 |
|
||||
| C1 | 1236 | EN | Build **<Plains>** on **<Road>**. Forms **<Trade Route>** and provides Movement bonus | Build **<Road>** on **<Plains>**. Forms **<Trade Route>** and provides Movement bonus | 主宾颠倒修复 |
|
||||
| C1 | 1250 | EN | Plant a **<Plains>** on **<Forest>** | Plant a **<Forest>** on **<Plains>** | 主宾颠倒修复 |
|
||||
| C4 | 18128 | EN | Allows construction of **<Forest>** in **<Statue of the Queen>** tiles | Allows construction of **<Statue of the Queen>** in **<Forest>** tiles | 主宾颠倒修复 |
|
||||
| C4 | 18131 | EN | Allows construction of **<Water>** in **<Statue of the Bishop>** tiles | Allows construction of **<Statue of the Bishop>** in **<Shallow Water>** tiles | 主宾颠倒修复;浅海用 Shallow Water |
|
||||
| C4 | 18134 | EN | Allows construction of **<Mountain>** in **<Statue of the Rook>** tiles | Allows construction of **<Statue of the Rook>** in **<Mountain>** tiles | 主宾颠倒修复 |
|
||||
| C4 | 18139 | EN | Allows construction of **<Plains>** in **<Statue of the Knight>** tiles | Allows construction of **<Statue of the Knight>** in **<Plains>** tiles | 主宾颠倒修复 |
|
||||
| D1 | 1014 | JP | 他者の**<占領>**や村をすることは、発展のために必要なステップである | 他者の**<占領>**や村を占領することは、発展のために必要なステップである | 日文语序修复 |
|
||||
| D1 | 1014 | JP | 他者の**<占領>**や村を占領することは、発展のために必要なステップである | 他者の都市や村を**<占領>**することは、発展のために必要なステップである | 日文语序修复(覆盖) |
|
||||
| D2 | 1155 | JP | 製材所を建設可能、または森林を除去可能 | 伐採場を建設可能、または森林を除去可能 | 伐木场(1155)与锯木厂(1158)区分 |
|
||||
| D3 | 1503 | JP | 英雄神像をし、より多くの英雄経験値を提供 | 英雄神像をアップグレードし、より多くの英雄経験値を提供 | 补充アップグレード动词 |
|
||||
| D3 | 1504 | JP | **<帆船>**を**<突撃艇>**に進化。海上近接ユニット。**<再行動>**力3・力3・力3とスキルを持つ | **<帆船>**を**<突撃艇>**に進化。海上近接ユニット。**<再行動>**移動力3・攻撃3・防御3とスキルを持つ | 补充属性名 |
|
||||
| D3 | 1506 | JP | 超強力総合ユニット。HP40・力5・力4を持つ | 超強力総合ユニット。HP40・攻撃5・防御4を持つ | 补充属性名 |
|
||||
| D3 | 1508 | JP | 超強力海上総合ユニット。HP40・力4・力4を持つ | 超強力海上総合ユニット。HP40・攻撃4・防御4を持つ | 补充属性名 |
|
||||
| D4 | 2253 | JP | **<穀物>**を**<農地>**に改造でき、特殊な**<灌漑整備>**にを建設できる | **<穀物>**を**<農地>**に改造でき、特殊な平原に**<灌漑整備>**を建設できる | 补充平原+清除尾巴的に |
|
||||
| D5 | 2294 | KR | 사쿠야가 유닛을 처치 시, 다시 **<은의 도약>**하고 을 사용할 수 있다. | 사쿠야가 유닛을 처치 시, 다시 이동하고 **<은의 도약>**을 사용할 수 있다. | 补充이동+修助词 |
|
||||
| D6 | 16652 | JP | **<帆船>**を**<遠洋帆船>**に強化する。海上遠距離ユニット。**<巡航>**力3、**<再行動>**2、と再動スキルを持つ | **<帆船>**を**<遠洋帆船>**に強化する。海上遠距離ユニット。移動力3、射程2、**<巡航>**と**<再行動>**スキルを持つ | 语序+属性名修复 |
|
||||
| D6 | 16654 | JP | の遺産を建設し、経験値3を獲得 | 貿易の遺産を建設し、都市経験値3を獲得 | 补充贸易+城市 |
|
||||
| D6 | 16672 | JP | 古代世界最大かつ最も著名な図書館であり、プトレマイオス朝時代のに建設され、天下の全ての知識を収蔵することを目的としていた。後に戦火と政治的混乱により何度も焼失した。経験値3を提供 | 古代世界最大かつ最も著名な図書館であり、プトレマイオス朝時代のエジプトに建設され、天下の全ての知識を収蔵することを目的としていた。後に戦火と政治的混乱により何度も焼失した。都市経験値3を提供 | 补充埃及+都市 |
|
||||
| D7 | 19580 | EN | Can move to any position within 1 space of **<Friendly Hero>**, granting **<Within 1 Tile>** to **<Friendly Hero>** within **<Chief Maid's Blessing>** range. Multiple uses in same turn stack layers. E | Can move within 1 tile of any **<Friendly Hero>**, granting **<Chief Maid's Blessing>** to **<Friendly Hero>** within **<Within 1 Tile>**. Stacks if used multiple times in the same turn. Each **<Silve | 4-token 错位重写 |
|
||||
| D7 | 19734 | EN | Can move within 1 hex of any **<Friendly Hero>**, granting **<Within 1 Tile>** within **<Friendly Hero>** and 1 **<Chief Maid's Blessing>** to that **<Attack Action Points>**. Stacks if used multiple | Can move within 1 tile of any **<Friendly Hero>**, granting **<Chief Maid's Blessing>** and 1 **<Attack Action Points>** to **<Friendly Hero>** within **<Within 1 Tile>**. Stacks if used multiple time | 4-token 错位重写 |
|
||||
| E1 | 17849 | JP | 致命的なダメージを受けた時、**<消散>**ではなく**<死亡>**する | 致命的なダメージを受けた時、**<死亡>**ではなく**<消散>**する | 反义错译修正 |
|
||||
| E2 | 580 | JP | 10月6日市 | ラマダーン10日目市 | 斋月十日城日文修正 |
|
||||
| E2 | 580 | KR | 10월 6일 시 | 라마단 10일째 시 | 斋月十日城韩文修正 |
|
||||
| E3 | 704 | EN | Sannessjøen | Sandefjord | Sannessjøen 错位 → Sandefjord |
|
||||
| E4 | 18752 | EN | Train of Kurukshetra | Kasha of Kurukshetra | 俱卢之野的火车=Kasha 非 Train |
|
||||
| E5 | 18755 | EN | Satori Can't Remember the Mantra | Okuu Can't Remember the Mantra | 阿空非觉(Satori) |
|
||||
| E6 | 17013 | EN | Summon Lord Mishot Gūji | Summon Lord Mishaguji | Mishot Gūji → Lord Mishaguji |
|
||||
| E10 | 17009 | EN | Summon Lesser Devil Priest | Summon Koakuma Priestess | Lesser Devil Priest → Koakuma Priestess |
|
||||
| F1 | 2270 | KR | 주홍 안개 제거 | 홍무 제거 | 红雾韩文统一 |
|
||||
| F1 | 2437 | KR | 주홍 안개 회수 | 홍무 회수 | 红雾韩文统一 |
|
||||
| F1 | 2472 | KR | 주홍 안개 회수하여 HP 4 회복한다. 행동 기회를 소모하지 않는다. | 홍무 회수하여 HP 4 회복한다. 행동 기회를 소모하지 않는다. | 红雾韩文统一 |
|
||||
| F1 | 2474 | KR | 처치 완료 시, 해당 타일을 **<홍무 영지>**로 전환한다(도시 중심부는 무효). 스칼렛 제국 유닛이 **<홍무 영지>**에 있을 때, 현재 턴 첫 공격 시 공격력 +0.5 효과를 받으며, **<주홍 안개 회수>* | 처치 완료 시, 해당 타일을 **<홍무 영지>**로 전환한다(도시 중심부는 무효). 스칼렛 제국 유닛이 **<홍무 영지>**에 있을 때, 현재 턴 첫 공격 시 공격력 +0.5 효과를 받으며, **<홍무 회수>**를 | 红雾韩文统一 |
|
||||
| F1 | 16922 | KR | 스칼렛 제국 유닛이 **<홍무 영지>** 위에 있을 때 공격+0.5. 또한 **<주홍 안개 회수>**로 HP 회복 가능. | 스칼렛 제국 유닛이 **<홍무 영지>** 위에 있을 때 공격+0.5. 또한 **<홍무 회수>**로 HP 회복 가능. | 红雾韩文统一 |
|
||||
| F1 | 17242 | KR | 행동 기회를 소모해 주홍 안개 제거 | 행동 기회를 소모해 홍무 제거 | 红雾韩文统一 |
|
||||
| F2 | 461 | KR | 부의 유산 건설 | 부의 불가사의 건설 | 奇观→불가사의 |
|
||||
| F2 | 1211 | KR | 지혜 유산 건설, 도시 경험치 3 제공 | 지혜 불가사의 건설, 도시 경험치 3 제공 | 奇观→불가사의 |
|
||||
| F2 | 1213 | KR | 권력 유산 건설, 도시 경험치 3 제공 | 권력 불가사의 건설, 도시 경험치 3 제공 | 奇观→불가사의 |
|
||||
| F2 | 1214 | KR | 문화 유산 건설, 도시 경험치 3 제공 | 문화 불가사의 건설, 도시 경험치 3 제공 | 奇观→불가사의 |
|
||||
| F2 | 1215 | KR | 탐험 유산 건설, 도시 경험치 3 제공 | 탐험 불가사의 건설, 도시 경험치 3 제공 | 奇观→불가사의 |
|
||||
| F2 | 16654 | KR | 무역 유산 건설, 도시 경험치 3점 제공 | 무역 불가사의 건설, 도시 경험치 3점 제공 | 奇观→불가사의 |
|
||||
| F2 | 17042 | KR | 부의 유산 건설, 도시 경험치 3 제공 | 부의 불가사의 건설, 도시 경험치 3 제공 | 奇观→불가사의 |
|
||||
| G2 | 289 | TW | | 關注我們 | 台繁补全 |
|
||||
| G2 | 290 | TW | | YouTube | 台繁补全 |
|
||||
| G2 | 293 | TW | | Bilibili | 台繁补全 |
|
||||
| G2 | 294 | TW | | Discord | 台繁补全 |
|
||||
| G2 | 295 | TW | | 官方網站 | 台繁补全 |
|
||||
| G3 | 435 | KR | 유적 광산 시 골드, 기술, 유닛 등 무작위 보상을 획득한다. | 유적 발굴 시 골드, 기술, 유닛 등 무작위 보상을 획득한다. | 挖掘遗迹重译 |
|
||||
| G5 | 17010 | EN | When a Lv.4+ City levels up, you may choose to summon the Empire's unique Giant unit **<Lesser Demon Priest>**. Its cat-god form can Heal allies; upon death, it converts into lion-god form with devast | When a Lv.4+ City levels up, you may choose to summon the Empire's unique Giant unit **<Koakuma Priestess>**. Its cat-god form can Heal allies; upon death, it converts into lion-god form with devastat | 小恶魔→Koakuma |
|
||||
| G7 | 16797 | EN | When attacked, the attacker s 2 | When attacked, the attacker recovers 2 HP | 补丢失动词 recovers |
|
||||
| G7 | 16800 | EN | When killed, the killer s all action opportunities | When killed, the killer recovers all action opportunities | 补丢失动词 recovers |
|
||||
| G8 | 16987 | KR | 미조우 | 만나지 않음 | 미조우(日式音读)→韩语意译 "만나지 않음" |
|
||||
| G9 | 17078 | KR | ...‘매력’으로 교섭하는 여왕?? 사람을 잘못 찾아왔네... 로열 플레어 도서관의 체면을 봐서, 마지못해 수락할게. | ...‘매력’으로 교섭하는 여왕?? 사람을 잘못 찾아왔네... 황실 도서관의 체면을 봐서, 마지못해 수락할게. | 皇家图书馆韩文修正 |
|
||||
| G11 | 17661 | KR | 점석성금! | 미다스의 손! | 点石成金韩文成语化 |
|
||||
| G12 | 17520 | KR | 바가지 요금에 속지 말자!<br>제국 환상향 정품 CD, 1장 1000엔, 2장 5000엔! | 바가지 요금에 속지 말자!<br>제국 환상향 정품 CD, 1장 1000원, 2장 5000원! | 货币:日元→韩元 |
|
||||
| G14 | 19298 | JP | **<[后]クラスの英雄>**。フィールド上に最大ヒーローレベルと同じ数の**<古明地こいし>**が存在できる | **<[クイーン]クラスの英雄>**。フィールド上に最大ヒーローレベルと同じ数の**<古明地こいし>**が存在できる | [后]→[クイーン] |
|
||||
| G14 | 19298 | KR | **<[후] 클래스 영웅>**. 전장에 영웅 레벨과 같은 수의 **<코메이지 코이시>**만 존재할 수 있다. | **<[퀸] 클래스 영웅>**. 전장에 영웅 레벨과 같은 수의 **<코메이지 코이시>**만 존재할 수 있다. | [후]→[퀸] |
|
||||
| G15 | 19414 | EN | Saigyouji Yuyuko | Yuyuko Saigyouji | 姓名→名姓 |
|
||||
| G16 | 19429 | EN | Kirisame Marisa | Marisa Kirisame | 姓名→名姓 |
|
||||
| G16 | 19427 | EN | Kijin Seija | Seija Kijin | 姓名→名姓 |
|
||||
| G16 | 19418 | EN | Iizunamaru Megumu | Megumu Iizunamaru | 姓名→名姓 |
|
||||
| G17 | 19423 | EN | Hinananawi Empire | Hinanawi Empire | 比那名居拼写 |
|
||||
| G17 | 19709 | EN | Hinananawi Empire BGM | Hinanawi Empire BGM | 比那名居拼写 |
|
||||
| G19 | 19228 | JP | ニシウェルト | バルーン・ウルト | 蒙古城市 Baruun-Urt 音译 |
|
||||
| G19 | 19228 | KR | 서울르트 | 바룬우르트 | 蒙古城市 Baruun-Urt 音译 |
|
||||
| G20 | 19108 | KR | 가우가멜라 | 아르벨라 | Arbela韩文 |
|
||||
| G21 | 19123 | KR | 바푸온 | 바바푸라 | Bhavapura韩文 |
|
||||
| G22 | 19117 | JP | コンポンケイ | コー・ケー | Koh Ker 日文音译 |
|
||||
| G22 | 19117 | KR | 콤파이 | 코케르 | Koh Ker 韩文音译 |
|
||||
| G24 | 19257 | TW | 突尼西亞 | 突尼斯 | 台繁也用突尼斯 |
|
||||
| G26 | 19768 | EN | With my Lady's skill, there's no doubt! | With Milady's skill, there's no doubt! | 大小姐口吻 |
|
||||
| G28 | 19837 | KR | 오른쪽 아래의 "기술" 버튼을 클릭하여 **<채집>**을 찾아 연구하세요. 그런 다음 **<청과>** 타일을 선택하여 **<청과>**을 채집해 도시 레벨을 올리세요! | 오른쪽 아래의 "기술" 버튼을 클릭하여 **<채집>**을 찾아 연구하세요. 그런 다음 **<청과>** 타일을 선택하여 **<청과>**를 채집해 도시 레벨을 올리세요! | 修助词 을→를 |
|
||||
| G28 | 19841 | KR | **<곡물>**을 **<농지>**으로 개조하여 도시를 업그레이드하세요! | **<곡물>**을 **<농지>**로 개조하여 도시를 업그레이드하세요! | 修助词 으로→로 |
|
||||
|
||||
## NOOP 列表(已是目标态或决策为 NOOP)
|
||||
|
||||
| 决策 | ID | 语言 | 原因 |
|
||||
|---|---|---|---|
|
||||
| E7 | 17890 | JP | 已含 "ミシャグチ様",无 "赤口様",跳过 |
|
||||
| E7 | 17890 | KR | 已含 "미샤구지",无 "적구",跳过 |
|
||||
| E8 | 18127 | EN | 已含 "Statue of the Queen",无 "Statue of the Successor",跳过 |
|
||||
| F3 | * | KR | 当前已为 널리지,无 널릿지 命中,NOOP |
|
||||
| G10 | 17245 | * | 当前已完整,NOOP |
|
||||
| G10 | 17246 | * | 当前已完整,NOOP |
|
||||
| G10 | 17247 | * | 当前已完整,NOOP |
|
||||
| G13 | 17890 | EN | 已含 "Lord Mishaguji",无 "Mishot Gūji",跳过 |
|
||||
412
Tools/Multilingual_P1_Clusters_For_Review.md
Normal file
412
Tools/Multilingual_P1_Clusters_For_Review.md
Normal file
@ -0,0 +1,412 @@
|
||||
# P1 修改提案(聚类版,逐项确认)
|
||||
|
||||
**总 P1 数**: 345 条(已剔除因错误规则产生的误报 + 已修复的 P0 项)
|
||||
|
||||
## P1-C01 日文/英文/韩文 换行符数量不一致 (13 条)
|
||||
**修复方式**: 保持/去除中文里多余换行(往往是中文蓝本里有多余空格+换行,目标语言整理成一行反而对)
|
||||
|
||||
| ID | lang | 类型/Code | 中文 | 当前 → 建议 |
|
||||
|---|---|---|---|---|
|
||||
| 4 | en | S4_NEWLINE | 阵营的普通单位如完成击杀后,将 在下回合获得攻击强化。 | Ordinary units of your faction gain Attack bonus for the nex |
|
||||
| 4 | jp | S4_NEWLINE | 阵营的普通单位如完成击杀后,将 在下回合获得攻击强化。 | 陣営の通常ユニットが撃破を完了すると、次のターンに攻撃強化を獲得する |
|
||||
| 4 | kr | S4_NEWLINE | 阵营的普通单位如完成击杀后,将 在下回合获得攻击强化。 | 진영의 일반 유닛이 적을 처치하면 다음 턴에 공격 강화를 획득한다. |
|
||||
| 879 | en | S4_NEWLINE | Debug 开关 | Debug Toggle |
|
||||
| 884 | en | S4_NEWLINE | All Unit Panel (Coming soon) | All Unit Panel (Coming soon) |
|
||||
| 885 | en | S4_NEWLINE | All City Panel (Coming soon) | All City Panel (Coming soon) |
|
||||
| 1392 | en | S4_NEWLINE | 实装 "深海" => "需**<航海>**科技才能前往这里。", "浅海" | Ocean" => "Requires **<Navigation>** tech to access.", |
|
||||
| 1401 | tw | S4_NEWLINE | 欢迎加入官方Q群952618884 反馈您的游戏体验和建议意见~ | 官方 Discord 籌備中,即將開放。 |
|
||||
| 1401 | en | S4_NEWLINE | 欢迎加入官方Q群952618884 反馈您的游戏体验和建议意见~ | English localization is currently in Beta. We apologize for |
|
||||
| 1401 | jp | S4_NEWLINE | 欢迎加入官方Q群952618884 反馈您的游戏体验和建议意见~ | 日本語翻訳はβ版です。不備をお詫びし、順次改善します。 |
|
||||
| 1401 | kr | S4_NEWLINE | 欢迎加入官方Q群952618884 反馈您的游戏体验和建议意见~ | 한국어 번역은 현재 베타 버전입니다. 양해 부탁드리며, 지속적으로 개선하겠습니다. |
|
||||
| 17391 | tw | S4_NEWLINE | <color=orange>探索与扩张</color>是建设帝国的第一步。 <br>探索<color | <color=orange>探索與擴張</color>是打造帝國的第一步。 <br>探索<color=orange>遺跡 |
|
||||
| 17393 | tw | S4_NEWLINE | 虽然您选中的是敌人的棋子……<br>需要我解决掉裁判吗? | 雖然您選中的是敵人的棋子……<br> 需要我解決掉裁判嗎? |
|
||||
|
||||
## P1-C02 日文条目无假名/汉字相同(疑似漏译) (71 条)
|
||||
**修复方式**: 逐条复核:合理保留(建設/守備等)还是真漏译
|
||||
|
||||
| ID | lang | 类型/Code | 中文 | 当前 → 建议 |
|
||||
|---|---|---|---|---|
|
||||
| 10 | jp | S7_UNTRANSLATED | 比那名居天子 | 比那名居天子 |
|
||||
| 37 | jp | S7_UNTRANSLATED | 十六夜咲夜 | 十六夜咲夜 |
|
||||
| 190 | jp | S7_UNTRANSLATED | 八坂神奈子 | 八坂神奈子 |
|
||||
| 1635 | jp | S7_UNTRANSLATED | 蓬莱山帝国 | 蓬莱山帝国 |
|
||||
| 1639 | jp | S7_UNTRANSLATED | 古明地帝国 | 古明地帝国 |
|
||||
| 2307 | jp | S7_UNTRANSLATED | 魔力石(金) | 魔力石(金) |
|
||||
| 2313 | jp | S7_UNTRANSLATED | 魔力石(土) | 魔力石(土) |
|
||||
| 2315 | jp | S7_UNTRANSLATED | 魔力石(水) | 魔力石(水) |
|
||||
| 2318 | jp | S7_UNTRANSLATED | 魔力石(木) | 魔力石(木) |
|
||||
| 2320 | jp | S7_UNTRANSLATED | 魔力石(火) | 魔力石(火) |
|
||||
| 2491 | jp | S7_UNTRANSLATED | 人口 3/4 | 人口 3/4 |
|
||||
| 9662 | jp | S7_UNTRANSLATED | 守矢科学院 | 守矢科学院 |
|
||||
| 16802 | jp | S7_UNTRANSLATED | 防御-2 | 防御-2 |
|
||||
| 16822 | jp | S7_UNTRANSLATED | 防御+1 | 防御+1 |
|
||||
| 16859 | jp | S7_UNTRANSLATED | 十六夜咲夜 Lv.1 | 十六夜咲夜 Lv.1 |
|
||||
| 16860 | jp | S7_UNTRANSLATED | 十六夜咲夜 Lv.2 | 十六夜咲夜 Lv.2 |
|
||||
| 16861 | jp | S7_UNTRANSLATED | 十六夜咲夜 Lv.3 | 十六夜咲夜 Lv.3 |
|
||||
| 16862 | jp | S7_UNTRANSLATED | 十六夜咲夜 Lv.4 | 十六夜咲夜 Lv.4 |
|
||||
| 16885 | jp | S7_UNTRANSLATED | 八意永琳 Lv.1 | 八意永琳 Lv.1 |
|
||||
| 16886 | jp | S7_UNTRANSLATED | 八意永琳 Lv.2 | 八意永琳 Lv.2 |
|
||||
| 16887 | jp | S7_UNTRANSLATED | 八意永琳 Lv.3 | 八意永琳 Lv.3 |
|
||||
| 16888 | jp | S7_UNTRANSLATED | 八意永琳 Lv.4 | 八意永琳 Lv.4 |
|
||||
| 16901 | jp | S7_UNTRANSLATED | 八坂神奈子 Lv.1 | 八坂神奈子 Lv.1 |
|
||||
| 16902 | jp | S7_UNTRANSLATED | 八坂神奈子 Lv.2 | 八坂神奈子 Lv.2 |
|
||||
| 16903 | jp | S7_UNTRANSLATED | 八坂神奈子 Lv.3 | 八坂神奈子 Lv.3 |
|
||||
| 16904 | jp | S7_UNTRANSLATED | 八坂神奈子 Lv.4 | 八坂神奈子 Lv.4 |
|
||||
| 16913 | jp | S7_UNTRANSLATED | 射命丸文 Lv.1 | 射命丸文 Lv.1 |
|
||||
| 16914 | jp | S7_UNTRANSLATED | 射命丸文 Lv.2 | 射命丸文 Lv.2 |
|
||||
| 16915 | jp | S7_UNTRANSLATED | 射命丸文 Lv.3 | 射命丸文 Lv.3 |
|
||||
| 16916 | jp | S7_UNTRANSLATED | 射命丸文 Lv.4 | 射命丸文 Lv.4 |
|
||||
| 16917 | jp | S7_UNTRANSLATED | 犬走椛 Lv.1 | 犬走椛 Lv.1 |
|
||||
| 16918 | jp | S7_UNTRANSLATED | 犬走椛 Lv.2 | 犬走椛 Lv.2 |
|
||||
| 16919 | jp | S7_UNTRANSLATED | 犬走椛 Lv.3 | 犬走椛 Lv.3 |
|
||||
| 16920 | jp | S7_UNTRANSLATED | 犬走椛 Lv.4 | 犬走椛 Lv.4 |
|
||||
| 17287 | jp | S7_UNTRANSLATED | 天狗仲裁者 | 天狗仲裁者 |
|
||||
| 17886 | jp | S7_UNTRANSLATED | [能力:山神] | [能力:山神] |
|
||||
| 17911 | jp | S7_UNTRANSLATED | [能力:千里眼] | [能力:千里眼] |
|
||||
| 18420 | jp | S7_UNTRANSLATED | 千年吸血鬼 | 千年吸血鬼 |
|
||||
| 18481 | jp | S7_UNTRANSLATED | 1.5倍 | 1.5倍 |
|
||||
| 18514 | jp | S7_UNTRANSLATED | [能力:四重存在] | [能力:四重存在] |
|
||||
| 18517 | jp | S7_UNTRANSLATED | [能力:吸血鬼] | [能力:吸血鬼] |
|
||||
| 18528 | jp | S7_UNTRANSLATED | [能力:瞭望] | [能力:瞭望] |
|
||||
| 18534 | jp | S7_UNTRANSLATED | [能力:黄震脚] | [能力:黄震脚] |
|
||||
| 18538 | jp | S7_UNTRANSLATED | 魔力石{火} | 魔力石{火} |
|
||||
| 18539 | jp | S7_UNTRANSLATED | 魔力石{木} | 魔力石{木} |
|
||||
| 18541 | jp | S7_UNTRANSLATED | 魔力石{金} | 魔力石{金} |
|
||||
| 18542 | jp | S7_UNTRANSLATED | 魔力石{水} | 魔力石{水} |
|
||||
| 18543 | jp | S7_UNTRANSLATED | 魔力石{土} | 魔力石{土} |
|
||||
| 18550 | jp | S7_UNTRANSLATED | [能力:蓬莱玉枝] | [能力:蓬莱玉枝] |
|
||||
| 18613 | jp | S7_UNTRANSLATED | 魔法石{火} | 魔法石{火} |
|
||||
| 18614 | jp | S7_UNTRANSLATED | 魔法石{木} | 魔法石{木} |
|
||||
| 18615 | jp | S7_UNTRANSLATED | 魔法石{金} | 魔法石{金} |
|
||||
| 19683 | jp | S7_UNTRANSLATED | 原曲: | 原曲: |
|
||||
| 19685 | jp | S7_UNTRANSLATED | 作曲: | 作曲: |
|
||||
| 19698 | jp | S7_UNTRANSLATED | 蓬莱山帝国BGM | 蓬莱山帝国BGM |
|
||||
| 19699 | jp | S7_UNTRANSLATED | 守矢帝国BGM | 守矢帝国BGM |
|
||||
| 19700 | jp | S7_UNTRANSLATED | 古明地帝国BGM | 古明地帝国BGM |
|
||||
| 19704 | jp | S7_UNTRANSLATED | 日白帝国BGM | 日白帝国BGM |
|
||||
| 19705 | jp | S7_UNTRANSLATED | 白玉帝国BGM | 白玉帝国BGM |
|
||||
| 19707 | jp | S7_UNTRANSLATED | 天狗帝国BGM | 天狗帝国BGM |
|
||||
|
||||
(还有 11 条未列出)
|
||||
|
||||
|
||||
## P1-C03 英文条目含汉字且与中文相同(漏译) (29 条)
|
||||
**修复方式**: 重译英文(含汉字必须翻成英文)
|
||||
|
||||
| ID | lang | 类型/Code | 中文 | 当前 → 建议 |
|
||||
|---|---|---|---|---|
|
||||
| 19691 | en | S7_UNTRANSLATED | 赤より紅い夢 | 赤より紅い夢 |
|
||||
| 19696 | en | S7_UNTRANSLATED | おてんば恋娘 | おてんば恋娘 |
|
||||
| 19714 | en | S7_UNTRANSLATED | 亡き王女の為のセプテット | 亡き王女の為のセプテット |
|
||||
| 19715 | en | S7_UNTRANSLATED | 竹取飛翔 ~ Lunatic Princess | 竹取飛翔 ~ Lunatic Princess |
|
||||
| 19716 | en | S7_UNTRANSLATED | 神さびた古戦場 ~ Suwa Foughten Field | 神さびた古戦場 ~ Suwa Foughten Field |
|
||||
| 19717 | en | S7_UNTRANSLATED | 少女さとり ~ 3rd eye | 少女さとり ~ 3rd eye |
|
||||
| 19718 | en | S7_UNTRANSLATED | 少女綺想曲 ~ Dream Battle | 少女綺想曲 ~ Dream Battle |
|
||||
| 19719 | en | S7_UNTRANSLATED | 感情の摩天楼 ~ Cosmic Mind | 感情の摩天楼 ~ Cosmic Mind |
|
||||
| 19720 | en | S7_UNTRANSLATED | 聖徳伝説 ~ True Administrator | 聖徳伝説 ~ True Administrator |
|
||||
| 19721 | en | S7_UNTRANSLATED | 逸脱者達の無礙光 ~ Kingdom of Nothingness. | 逸脱者達の無礙光 ~ Kingdom of Nothingness. |
|
||||
| 19722 | en | S7_UNTRANSLATED | 幽雅に咲かせ、墨染の桜 ~ Border of Life | 幽雅に咲かせ、墨染の桜 ~ Border of Life |
|
||||
| 19724 | en | S7_UNTRANSLATED | 星降る天魔の山 | 星降る天魔の山 |
|
||||
| 19725 | en | S7_UNTRANSLATED | 有頂天変 ~ Wonderful Heaven | 有頂天変 ~ Wonderful Heaven |
|
||||
| 19726 | en | S7_UNTRANSLATED | 例え世界から忘れられても | 例え世界から忘れられても |
|
||||
| 19737 | en | S7_UNTRANSLATED | 綿月のスペルカード ~ 神海戦 | 綿月のスペルカード ~ 神海戦 |
|
||||
| 19773 | en | S7_UNTRANSLATED | 天火人雪糕 | 天火人雪糕 |
|
||||
| 19785 | en | S7_UNTRANSLATED | 白哉 | 白哉 |
|
||||
| 19787 | en | S7_UNTRANSLATED | 久九 | 久九 |
|
||||
| 19791 | en | S7_UNTRANSLATED | P君 | P君 |
|
||||
| 19793 | en | S7_UNTRANSLATED | 娇阳 | 娇阳 |
|
||||
| 19795 | en | S7_UNTRANSLATED | 蛋卷 | 蛋卷 |
|
||||
| 19797 | en | S7_UNTRANSLATED | 深澜 | 深澜 |
|
||||
| 19798 | en | S7_UNTRANSLATED | 绝壁的夜鹭子 | 绝壁的夜鹭子 |
|
||||
| 19799 | en | S7_UNTRANSLATED | 亮蓝 | 亮蓝 |
|
||||
| 19801 | en | S7_UNTRANSLATED | 黎玄 | 黎玄 |
|
||||
| 19803 | en | S7_UNTRANSLATED | 阿令 | 阿令 |
|
||||
| 19805 | en | S7_UNTRANSLATED | 星期六上线 | 星期六上线 |
|
||||
| 19807 | en | S7_UNTRANSLATED | Q群群友 | Q群群友 |
|
||||
| 19822 | en | S7_UNTRANSLATED | QQ群:952618884 | QQ群:952618884 |
|
||||
|
||||
## P1-C04 韩文条目与中文相同(漏译) (30 条)
|
||||
**修复方式**: 重译韩文
|
||||
|
||||
| ID | lang | 类型/Code | 中文 | 当前 → 建议 |
|
||||
|---|---|---|---|---|
|
||||
| 17276 | kr | S7_UNTRANSLATED | 日本語 | 日本語 |
|
||||
| 19691 | kr | S7_UNTRANSLATED | 赤より紅い夢 | 赤より紅い夢 |
|
||||
| 19696 | kr | S7_UNTRANSLATED | おてんば恋娘 | おてんば恋娘 |
|
||||
| 19714 | kr | S7_UNTRANSLATED | 亡き王女の為のセプテット | 亡き王女の為のセプテット |
|
||||
| 19715 | kr | S7_UNTRANSLATED | 竹取飛翔 ~ Lunatic Princess | 竹取飛翔 ~ Lunatic Princess |
|
||||
| 19716 | kr | S7_UNTRANSLATED | 神さびた古戦場 ~ Suwa Foughten Field | 神さびた古戦場 ~ Suwa Foughten Field |
|
||||
| 19717 | kr | S7_UNTRANSLATED | 少女さとり ~ 3rd eye | 少女さとり ~ 3rd eye |
|
||||
| 19718 | kr | S7_UNTRANSLATED | 少女綺想曲 ~ Dream Battle | 少女綺想曲 ~ Dream Battle |
|
||||
| 19719 | kr | S7_UNTRANSLATED | 感情の摩天楼 ~ Cosmic Mind | 感情の摩天楼 ~ Cosmic Mind |
|
||||
| 19720 | kr | S7_UNTRANSLATED | 聖徳伝説 ~ True Administrator | 聖徳伝説 ~ True Administrator |
|
||||
| 19721 | kr | S7_UNTRANSLATED | 逸脱者達の無礙光 ~ Kingdom of Nothingness. | 逸脱者達の無礙光 ~ Kingdom of Nothingness. |
|
||||
| 19722 | kr | S7_UNTRANSLATED | 幽雅に咲かせ、墨染の桜 ~ Border of Life | 幽雅に咲かせ、墨染の桜 ~ Border of Life |
|
||||
| 19724 | kr | S7_UNTRANSLATED | 星降る天魔の山 | 星降る天魔の山 |
|
||||
| 19725 | kr | S7_UNTRANSLATED | 有頂天変 ~ Wonderful Heaven | 有頂天変 ~ Wonderful Heaven |
|
||||
| 19726 | kr | S7_UNTRANSLATED | 例え世界から忘れられても | 例え世界から忘れられても |
|
||||
| 19737 | kr | S7_UNTRANSLATED | 綿月のスペルカード ~ 神海戦 | 綿月のスペルカード ~ 神海戦 |
|
||||
| 19773 | kr | S7_UNTRANSLATED | 天火人雪糕 | 天火人雪糕 |
|
||||
| 19785 | kr | S7_UNTRANSLATED | 白哉 | 白哉 |
|
||||
| 19787 | kr | S7_UNTRANSLATED | 久九 | 久九 |
|
||||
| 19791 | kr | S7_UNTRANSLATED | P君 | P君 |
|
||||
| 19793 | kr | S7_UNTRANSLATED | 娇阳 | 娇阳 |
|
||||
| 19795 | kr | S7_UNTRANSLATED | 蛋卷 | 蛋卷 |
|
||||
| 19797 | kr | S7_UNTRANSLATED | 深澜 | 深澜 |
|
||||
| 19798 | kr | S7_UNTRANSLATED | 绝壁的夜鹭子 | 绝壁的夜鹭子 |
|
||||
| 19799 | kr | S7_UNTRANSLATED | 亮蓝 | 亮蓝 |
|
||||
| 19801 | kr | S7_UNTRANSLATED | 黎玄 | 黎玄 |
|
||||
| 19803 | kr | S7_UNTRANSLATED | 阿令 | 阿令 |
|
||||
| 19805 | kr | S7_UNTRANSLATED | 星期六上线 | 星期六上线 |
|
||||
| 19807 | kr | S7_UNTRANSLATED | Q群群友 | Q群群友 |
|
||||
| 19822 | kr | S7_UNTRANSLATED | QQ群:952618884 | QQ群:952618884 |
|
||||
|
||||
## P1-C05 占位符 {xxx} 不一致 (16 条)
|
||||
**修复方式**: 保留原中文占位符(程序代码可能依赖)
|
||||
|
||||
| ID | lang | 类型/Code | 中文 | 当前 → 建议 |
|
||||
|---|---|---|---|---|
|
||||
| 18538 | en | S3_PLACEHOLDER | 魔力石{火} | Mana Stone {Fire} |
|
||||
| 18538 | kr | S3_PLACEHOLDER | 魔力石{火} | 마력석{화} |
|
||||
| 18539 | en | S3_PLACEHOLDER | 魔力石{木} | Mana Stone {Wood} |
|
||||
| 18539 | kr | S3_PLACEHOLDER | 魔力石{木} | 마력석{목} |
|
||||
| 18541 | en | S3_PLACEHOLDER | 魔力石{金} | Mana Stone {Metal} |
|
||||
| 18541 | kr | S3_PLACEHOLDER | 魔力石{金} | 마력석{금} |
|
||||
| 18542 | en | S3_PLACEHOLDER | 魔力石{水} | Mana Stone {Water} |
|
||||
| 18542 | kr | S3_PLACEHOLDER | 魔力石{水} | 마력석{수} |
|
||||
| 18543 | en | S3_PLACEHOLDER | 魔力石{土} | Mana Stone {Earth} |
|
||||
| 18543 | kr | S3_PLACEHOLDER | 魔力石{土} | 마력석{토} |
|
||||
| 18613 | en | S3_PLACEHOLDER | 魔法石{火} | Mana Stone {Fire} |
|
||||
| 18613 | kr | S3_PLACEHOLDER | 魔法石{火} | 마법석{화} |
|
||||
| 18614 | en | S3_PLACEHOLDER | 魔法石{木} | Mana Stone {Wood} |
|
||||
| 18614 | kr | S3_PLACEHOLDER | 魔法石{木} | 마법석{목} |
|
||||
| 18615 | en | S3_PLACEHOLDER | 魔法石{金} | Mana Stone {Metal} |
|
||||
| 18615 | kr | S3_PLACEHOLDER | 魔法石{金} | 마법석{금} |
|
||||
|
||||
## P1-C06 数字缺失 (10 条)
|
||||
**修复方式**: 补回数字或确认是有意改写(如本地化为英文单词或替换 Q 群为 Discord)
|
||||
|
||||
| ID | lang | 类型/Code | 中文 | 当前 → 建议 |
|
||||
|---|---|---|---|---|
|
||||
| 1112 | en | S5_NUM_MISSING | 饰演<color=red>克里欧帕特拉</color>的魔女。她是红魔馆地下大图书馆的贤者,对一切纷 | The Witch playing <color=red>Cleopatra</color>. She is the s |
|
||||
| 1114 | en | S5_NUM_MISSING | 饰演<color=red>赛特</color>的恶魔之妹。她是被囚禁于红魔馆地下室的终极秘密,纯粹的 | The Devil's Sister playing <color=red>Set</color>. She is th |
|
||||
| 1282 | en | S5_NUM_MISSING | 哼哼,9对5,优势在我! | Heh heh, nine versus five, the advantage is mine! |
|
||||
| 1401 | tw | S5_NUM_MISSING | 欢迎加入官方Q群952618884 反馈您的游戏体验和建议意见~ | 官方 Discord 籌備中,即將開放。 |
|
||||
| 1401 | en | S5_NUM_MISSING | 欢迎加入官方Q群952618884 反馈您的游戏体验和建议意见~ | English localization is currently in Beta. We apologize for |
|
||||
| 1401 | jp | S5_NUM_MISSING | 欢迎加入官方Q群952618884 反馈您的游戏体验和建议意见~ | 日本語翻訳はβ版です。不備をお詫びし、順次改善します。 |
|
||||
| 1401 | kr | S5_NUM_MISSING | 欢迎加入官方Q群952618884 反馈您的游戏体验和建议意见~ | 한국어 번역은 현재 베타 버전입니다. 양해 부탁드리며, 지속적으로 개선하겠습니다. |
|
||||
| 18084 | en | S5_NUM_MISSING | 移动时无视敌控,若路径上存在敌方单位则对其造成1次溅射伤害,若存在**<精微身>**则获得**<旱魔 | Ignores enemy control during Movement. Deals Splash Damage o |
|
||||
| 19845 | en | S5_NUM_MISSING | [Beta 0.7.1h] 发布日期 26.5.13 ------- [bug修复] ------ | [Beta 0.7.1h] Released 2026-05-13 ------- [Bug Fixes] ----- |
|
||||
| 19845 | jp | S5_NUM_MISSING | [Beta 0.7.1h] 发布日期 26.5.13 ------- [bug修复] ------ | [Beta 0.7.1h] リリース日 2026/5/13 ------- [バグ修正] ------- 1. 竹林の |
|
||||
|
||||
## P1-C07 <...> 标签总数不匹配 (3 条)
|
||||
**修复方式**: 检查多/少哪个标签
|
||||
|
||||
| ID | lang | 类型/Code | 中文 | 当前 → 建议 |
|
||||
|---|---|---|---|---|
|
||||
| 17036 | jp | S1b_PLAIN_TAG_COUNT | <size=36><b>[新增阵营] 德意志文明——守矢帝国</b></size> 古老的土著神奠 | <size=36><b>[新陣営追加] ドイツ文明――守矢帝国</b></size> 古の土着神がその礎を築き、変革の |
|
||||
| 17329 | en | S1b_PLAIN_TAG_COUNT | **<帝国之龙:红美铃>**<br> **<-------- Lv.1 -------->**<br | **<Imperial Dragon: Hong Meiling>**<br> **<-------- Lv.1 --- |
|
||||
| 17370 | en | S1b_PLAIN_TAG_COUNT | **<帝国的月之头脑:八意永琳>**<br> **<-------- Lv.1 -------->* | **<Imperial Lunar Mastermind: Eirin Yagokoro>**<br> **<----- |
|
||||
|
||||
## P1-C08 跨条目术语不一致(同概念用了多种译法) (63 条)
|
||||
**修复方式**: 统一术语
|
||||
|
||||
| ID | lang | 类型/Code | 中文 | 当前 → 建议 |
|
||||
|---|---|---|---|---|
|
||||
| 28 | kr | 不一致 | 步兵 | 전사 → 보병 |
|
||||
| 190 | tw | 不一致 | 八坂神奈子 | 八阪神奈子 → 八坂神奈子 |
|
||||
| 203 | en | 不一致 | 火焰猫燐 | Kaenbyou Rin → Rin Kaenbyou |
|
||||
| 634 | tw | 不一致 | 慕尼黑 | 慕尼克 → 慕尼黑 |
|
||||
| 809 | kr | 不一致(术语) | 马之神像 | 기사의 신상 → 나이트의 신상(与811"퀸의 신상"、812"비숍의 신상"、810"룩의 신상"统一为外来语) |
|
||||
| 809 | jp | 不一致 | 马之神像 | 馬の神像 → ナイトの神像 |
|
||||
| 1016 | en | 不一致 / 用词 | **<挖掘>**宝藏... | **<Mine>** treasures for a chance to gain massive wealth... → **<Excavate>** treasures... |
|
||||
| 1016 | jp | 不一致 | **<挖掘>**宝藏 | 宝を**<採掘>**すると → 宝を**<発掘>**すると |
|
||||
| 1016 | kr | 不一致 | **<挖掘>**宝藏 | 보물을 **<채굴>**하면 → 보물을 **<발굴>**하면 |
|
||||
| 1158 | kr | 不一致 | 可以建造锯木厂,可以训练炮手。 | 제재소 건설 가능, 포병 훈련 가능 → 保留 제재소;但"炮手"段内不一致:本段 1158=포병;其他段中 Cannoneer 多译"포수/대포병",需后续段比 |
|
||||
| 1214 | jp | 不一致 | 建造文化奇观,提供3点城市经验 | |
|
||||
| 1215 | jp | 不一致 | 建造探索奇观 | |
|
||||
| 1247 | en | 错译 / 不一致 | **<深海>**提供额外的防御 | **<Ocean>** provides additional Defense → 保留 |
|
||||
| 1173 | kr | 不一致 | 训练游骑兵 | 라이더 생산 → 统一。 |
|
||||
| 1283 | kr | 不一致(专名) | 可恶,妹红那个家伙…… | 제길, 모코우 그 녀석이…… → 保留(妹红=모코우 是标准音译) |
|
||||
| 1401 | 所有 | 信息混乱(每语言内容不一致) | 欢迎加入官方Q群952618884 ⏎ 反馈您的游戏体验和建议意见~ | |
|
||||
| 1543 | jp | 不一致(专名) | **<[王]职阶英雄>**。全场只能存在一个**<蕾米莉亚斯卡雷特>**。 | **<[王]クラスの英雄>**。場に**<レミリア・スカーレット>**は1体のみ存在可能。死亡後3ターン以内は再出撃不可 |
|
||||
| 1665 | jp | 不一致 | 猜忌 | 警戒 → 疑念 / 猜疑 |
|
||||
| 1741 | kr | 不一致(专名) | 我的棋盘上,需要几颗有用的棋子。 | 내 장기판 위에 쓸만한 말 몇 개가 필요하겠군. → 内 체스판 위에... / 与 1758 统一。 |
|
||||
| 1939 | en | 不一致 | 竹林驿站 | Bamboo Forest Station → Bamboo Forest Post Station |
|
||||
| 1939 | jp | 不一致 | 竹林驿站 | 竹林ステーション → 竹林の宿場 |
|
||||
| 2137 | kr | 不一致 | 隐身 | 은신 → 투명화 / 잠복 / 그림자 숨김 等区别于「潜行」的译名 |
|
||||
| 2383 | kr | 不一致 | 小恶魔祭司 | 소악마 사제 → 코아쿠마 사제 |
|
||||
| 16703 | jp | 不一致 | 周围1格内若存在**<天狗酒馆>**,移动力+1 | 周囲1マス以内に**<天狗酒場>**が存在する場合、移動力+1 → 译名「天狗酒馆」=「天狗酒場」,需检查其他位置是否用了同名 |
|
||||
| 16846 | kr | 不一致 | 由诹访子统率的祟神 | 스와코가 통솔하는 타타리가미 → 스와코가 통솔하는 저주신 / 타타리가미(保持一致) |
|
||||
| 16847 | kr | 不一致 | 守矢神社麾下的强大祟神 | 모리야 신사 휘하의 강력한 타타리가미 → 모리야 신사 휘하의 강력한 저주신 / 타타리가미 |
|
||||
| 16848 | kr | 不一致 | 守矢神社麾下的强大祟神 | 모리야 신사 휘하의 강력한 타타리가미 → 选定统一译法 |
|
||||
| 16965 | jp | 不一致 | 高天原急行 | 高天原エクスプレス → 高天原急行 |
|
||||
| 17091 | jp | 不一致 | 风神、山神、战神和科技变革之神 | 風神、山神、軍神、科学変革の神 → 風神、山神、軍神、科学技術変革の神 |
|
||||
| 17157 | tw | 不一致 | 土豆大王与核能尊神 | 馬鈴薯大王與核能尊神 → 同当前 |
|
||||
| 17304 | kr | 不一致 | 猿田彦的先导 | 사루타히코의 선도자 → 사루타히코의 선도 |
|
||||
| 17309 | en | 不一致 | 神圣追猎 | Divine Hunt → Sacred Hunt |
|
||||
| 17309 | jp | 不一致 | 神圣追猎 | 神聖なる追撃 → 神聖追猟 |
|
||||
| 17309 | kr | 不一致 | 神圣追猎 | 신성한 추격 → 신성한 추적 |
|
||||
| 17318 | kr | 不一致 | 狂犬断噬 | 광견단식 → 광견의 물어뜯기 |
|
||||
| 17657 | jp | 不一致 | 奇迹时代 / 奇观建筑 | Title=奇跡の時代 / Desc(17658)=遺産を1つ建設 → 统一为「奇跡の時代/奇跡を1つ建設」或「遺産の時代/遺産を1つ建設」 |
|
||||
| 17831 | en | 不一致 | 正法 | Dharma → True Dharma |
|
||||
| 18133 | kr | 不一致 | 车之雕像 | 전차 조각상 → 차의 조각상 |
|
||||
| 18138 | kr | 不一致 | 马之雕像 | 기마 조각상 → 마의 조각상 |
|
||||
| 18093 | zh | 不一致 | 斯卡雷特·蕾米莉亚 Lv.1 | 斯卡雷特·蕾米莉亚 Lv.1 → 蕾米莉亚·斯卡雷特 Lv.1 |
|
||||
| 18223 | en | 不一致 | 训练护法炮兵 | Train Dharma Guardian Cannoneer → Train Dharma Guardian Gunner |
|
||||
| 18186 | jp | 不一致 | 护法炮兵 | 護法砲手 → 護法砲兵(或保持砲手并同步 18194 中文为「护法炮手」) |
|
||||
| 18189 | jp | 不一致 | 古明地帝国特色帆船单位。拥有特色能力**<慑心>**。 | ...特色帆船ユニット / ...범선 유닛 ... → 保留,但确认「帆船」在 EN 同段是 Sailboat(18211、18225);本条 EN 已用 Sailboat,O |
|
||||
| 18563 | kr | 不一致 | [能力:竹林的欺诈师-隔岸观火] | [능력:대나무숲의 기만자-격안관화] → [능력:죽림의 사기꾼-격안관화] |
|
||||
| 18563 | kr | 不一致 | [能力:竹林的欺诈师-隔岸观火] | [능력:대나무숲의 기만자-격안관화] → [능력:죽림의 사기꾼-격안관화] |
|
||||
| 18616 | zh | 不一致 | 帝国的魔女:帕秋莉·诺蕾姬 | 帝国的魔女:帕秋莉·诺蕾姬 → 帝国的魔女:帕秋莉诺蕾姬(或两条都加间隔号) |
|
||||
| 18624 | zh | 不一致 | 帝国的永恒:蓬莱山辉夜 | 帝国的永恒:蓬莱山辉夜 → 帝国的永远:蓬莱山辉夜 |
|
||||
| 18621 | zh | 不一致 | 月兔幻想 | 月兔幻想 → 月兔幻象(与 18447 统一) |
|
||||
| 18621 | en | 不一致 | 月兔幻想 | Lunar Rabbit Fantasy → 与 18447 Moon Rabbit Phantom 统一(若同概念) |
|
||||
| 18622 | zh | 不一致 | [能力:幻象视差] | [能力:幻象视差] → 与 18555「幻想视差」核对是否同一能力 |
|
||||
| 18717 | en | 不一致 | 王之神像 | Divine Statue of Kings → Statue of the King |
|
||||
| 18707 | en | 不一致 | 建造马之神像 | Build Horse God Statue → Build Statue of the Knight(或建立"神像"vs"雕像"两套差异化命名后再选) |
|
||||
| 18710 | en | 不一致 | 建造后之神像 | Build Queen God Statue → Build Statue of the Queen |
|
||||
| 18710 | jp | 不一致 | 建造后之神像 | **<クイーンの神像>**を建造(Desc 内) → **<后の神像>**を建造 |
|
||||
| 18710 | kr | 不一致 | 建造后之神像 | Desc 用「퀸의 신상」、ActionName 用「후의 신상 건설」 → 统一为「후의 신상」 |
|
||||
| 18715 | jp | 不一致 | 建造相之神像描述 | JP「**<ビショップの神像>**を建造」 / KR「**<비숍의 신상>**을 건설」 → JP「**<相の神像>**」/ KR「**<상의 신상>**」 |
|
||||
| 18708 | zh | 不一致 | 回合文化点 | 回合文化点 → 回合文化值(与 18141「文化值」/ 18148「回合文化值」统一) |
|
||||
| 18886 | kr | 专名错(拼写不一致) | 全场只能存在一个**<星熊勇仪>** | 전장에 1명의 **<호시구마 유우기>**만 존재할 수 있다 → **<호시구마 유기>** |
|
||||
| 18883 | kr | 不一致 | 古明地觉 | 코메이지 사토리 → 保持(与 17936 一致) |
|
||||
| 19282 | kr | 不一致 | 博丽灵梦(木偶) | 하쿠레이 레이무(인형) → 保持 |
|
||||
|
||||
(还有 3 条未列出)
|
||||
|
||||
|
||||
## P1-C09 翻译不自然/机翻味 (34 条)
|
||||
**修复方式**: 重译润色
|
||||
|
||||
| ID | lang | 类型/Code | 中文 | 当前 → 建议 |
|
||||
|---|---|---|---|---|
|
||||
| 963 | jp | 不自然 | 败北并不可怕。 | 負けは何も恐ろしくない。 → 敗北は何も恐ろしくはない。 / 負けることなど恐ろしくはない。 |
|
||||
| 976 | jp | 不自然 | 别怪老身不留情面。 | 情け容赦ないことを責めるなよ。 → 情け容赦しないが、恨むなよ。 / 容赦しないからな、恨むんじゃないぞ。 |
|
||||
| 1058 | jp | 不自然 / 错译 | 我要看到血流成河! | 血の川が流れるのを見せてやる! → 血の川を流してみせる! / 血の海を見せてやる! |
|
||||
| 1072 | en | 不自然 | 我要打10个 | I'll take on 10 of you → I can take on 10 of them! |
|
||||
| 1244 | en | 不自然 / 用词冲突 | 可以在**<浅海>**移动 | Can move on **<Water>** → Can move in **<Shallow Water>** / Can move on **<Water>** |
|
||||
| 1613 | jp | 不自然 | 在平原或者浅海地区建造您的奇观吧! | 平原または浅瀬エリアに遺産を建造しましょう → 平原または浅瀬エリアに遺産を建造しましょう! |
|
||||
| 1635 | jp | 不自然 / 专名 | 蓬莱山帝国 | 蓬莱山帝国 → 保留 |
|
||||
| 1718 | jp | 漏字 / 不自然 | 请等待**<{param}>**行动... | **<{param}>**行動お待ちください → **<{param}>**の行動をお待ちください |
|
||||
| 1756 | jp | 不自然 | 无聊。铃仙,这把你来打。 | 退屈だ。鈴仙、この勝負はお前に任せる。 → 保留 |
|
||||
| 1768 | jp | 不自然 | 来吧,站在胜利者这边,风光无限。 | さあ、勝者側に立って、風光明媚な景色を眺めましょう。 → さあ、勝者側に立てば、栄光は思いのままだ。 |
|
||||
| 1770 | jp | 不自然 / 错译 | 供品随便拿,报销走我账。 | 供物はご自由に、経費は私が負担します。 → 供物はご自由に、経費はこっち持ちです。 / 供物はご自由に、経費は私の口座から落とします。 |
|
||||
| 1868 | jp | 不自然 | 天下大势,分久必合,合久必分。 | 天下の大勢、分かれば必ず合し、合すれば必ず分かる。 → 天下の大勢、分かれて久しければ必ず合し、合して久しければ必ず分かれる。 |
|
||||
| 1901 | jp | 不自然 | 老身可不与棋盘外的尘埃为伍。 | 老身は盤外の塵とを共にはせぬぞ。 → 老身は盤外の塵と共にはせぬぞ。 / 老身は盤外の塵と連れ立つことはせぬぞ。 |
|
||||
| 2068 | kr | 不自然 | 林生 | 림생 → 숲에서 태어남 / 숲의 자식 / 임생 |
|
||||
| 2471 | kr | 不自然 | 每回合开始时,自动将地块转化为**<红雾领地>**。 | 턴당 시작 시 자동으로 타일을 **<홍무 영지>**로 전환한다. → 매 턴 시작 시 자동으로 타일을 **<홍무 영지>**로 전환한다. |
|
||||
| 2473 | kr | 不自然 | 代替军营,每回合开始时,自动将地块转化为**<红雾领地>**。 | 병영을 대체하며, 턴당 시작 시 자동으로 타일을 **<홍무 영지>**로 전환한다. → 병영을 대체하며, 매 턴 시작 시 자동으로 타일을 **<홍무 영지>**로 전환한다. |
|
||||
| 16700 | jp | 不自然 | 科技变革之神 | 科学変革の神 → 技術変革の神 / 科学技術変革の神 |
|
||||
| 16795 | kr | 不自然 | 回合开始时失去**<移动>**机会 | 턴당 시작 시 **<이동>** 기회 상실 → 턴 시작 시 **<이동>** 기회 상실 |
|
||||
| 16841 | kr | 不自然 | 以御柱为权杖 | 어주를 권장 삼아 → 온바시라를 권장 삼아 |
|
||||
| 17157 | en | 不自然 | 土豆大王与核能尊神 | The Potato King and the Nuclear Deity → 当前可接受(自然) |
|
||||
| 17318 | jp | 不自然 / 漏译 | 狂犬断噬 | 狂犬断噬 → 狂犬の断噬 / 狂犬断ち噬み 等 |
|
||||
| 17589 | kr | 不自然 | 屠龙 | 용 도살 → 용 사냥꾼 / 드래곤 슬레이어 |
|
||||
| 17605 | jp | 不自然 / 漏本地化 | 强敌终结! | 強敵終結 → 強敵討伐! / 強敵撃破! |
|
||||
| 17857 | kr | 不自然 / 歧义 | 和荒连理 | 화혼과 황혼의 연리 → 화혼과 황혼의 연리(和魂と荒魂의 連理) / 니기미타마와 아라미타마의 연리 |
|
||||
| 19044 | jp | 不自然 | 埃德兹纳 | エツナ → エズナ |
|
||||
| 19119 | jp | 不自然 | 扶南城 | 扶南城 → ヴャーダプラ / 扶南(フナン) |
|
||||
| 19134 | jp | 不自然 | 暖粒 | ヌオンルー → ニアックルン / ニアク・ルン |
|
||||
| 19134 | kr | 不自然 | 暖粒 | 누온립 → 닉릉 / 니악르엉 |
|
||||
| 19362 | en | 不自然 | 帝国的全能神 | Imperial Almighty → Imperial Almighty God / The Almighty |
|
||||
| 19272 | kr | 不自然 | 阿空 | 아쿤 → 오쿠우 / 우츠호 |
|
||||
| 19441 | jp | 不自然 | 使得来自**<射命丸文>**的溅射伤害降低,每层乘以0.5,最低1点 | **<射命丸文>**からのスプラッシュダメージを軽減し、各層ごとに0.5倍となり、最低1ポイント → **<射命丸文>**からのスプラッシュダメージを軽減し、スタックごとに0.5倍となり、最低1ポイント |
|
||||
| 19560 | en | 不自然 | 对敌方不可见。敌方移动至该单位所处位置,或主动消耗行动点时,破除该状态。 | Invisible to enemies. Breaking invisibility when enemies mov → Invisible to enemies. Invisibility is broken when enemies mo |
|
||||
| 19672 | jp | 不自然 | 前往 | 移動 → 移動 或 アクセス |
|
||||
| 19829 | kr | 不自然 | 特别鸣谢 | 스페셜 땡스 → 특별 감사(或 스페셜 땡스 保留作品风格) |
|
||||
|
||||
## P1-C10 专名问题(非核心角色) (16 条)
|
||||
**修复方式**: 按 VERIFIED_TERMS 或东方圈通用译法修正
|
||||
|
||||
| ID | lang | 类型/Code | 中文 | 当前 → 建议 |
|
||||
|---|---|---|---|---|
|
||||
| 480 | kr | 专名错(语序/敬语助词) | 丰聪耳神子 | 토요사토미미노 미코 → 토요사토미미노 미코(确认)/ 或与日文对照保持 |
|
||||
| 1073 | kr | 错译(专名读音) | 崩山彩极炮 | 붕산채극포 → 붕산채극포 / 마운틴 크러시 레인보우 캐논(保留) |
|
||||
| 1546 | jp | 专名错位 | **<[后]职阶英雄>** | **<[后]クラスの英雄>** → **<[クイーン]クラスの英雄>** / **<[后(クイーン)]クラスの英雄>** |
|
||||
| 1847 | jp | 错译 / 专名(南无三) | 南无三!愿与贵国结为善缘。 | 南無三!貴国と良き縁を結ばせていただきたい。 → 保留 |
|
||||
| 2092 | kr | 专名错 | 就把你送给芙兰当做新玩具吧! | 너를 프랑의 새로운 장난감으로 선물해주마! → 너를 플란의 새로운 장난감으로 선물해주마! (或 플란드르) |
|
||||
| 16742 | kr | 专名错 | 和荒连理 | 화혼과 황혼의 연리 → 와고-아라가의 연리 / 화혼과 황혼의 연리(保持一致即可) |
|
||||
| 17043 | tw | 专名错 | 八坂神奈子端坐于妖怪山的钢铁王座之上 | 八阪神奈子端坐於妖怪山的鋼鐵王座之上 → 八坂神奈子端坐於妖怪山的鋼鐵王座之上 |
|
||||
| 17440 | tw | 专名错 / 简繁错转 | 御柱古战场 | 禦柱古戰場 → 御柱古戰場 |
|
||||
| 17441 | tw | 专名错 / 简繁错转 | 解除古战场 | 解除古戰場 → 解除古戰場 |
|
||||
| 17442 | tw | 专名错 / 简繁错转 | 从御柱古战场形态恢复为普通状态 | 從**<禦柱古戰場>**形態恢復為普通狀態 → 從**<御柱古戰場>**形態恢復為普通狀態 |
|
||||
| 17517 | en | 专名错 / 错译 | 花果子念报 | Kakashi Spirit News → Hanagasshi Spirit News / Hanagashi News |
|
||||
| 17517 | en | 专名错 / 错译 | 花果子念报 | Kakashi Spirit News → Hanagasshi Spirit News / Hanagashi News |
|
||||
| 17889 | tw | 专名错 / 简繁错转 | 帝国的全能神:八坂神奈子 | 帝國的全能神:八阪神奈子 → 帝國的全能神:八坂神奈子 |
|
||||
| 17891 | tw | 专名错 / 简繁错转 | [能力:御射宫司大人的作祟] | [能力:禦射宮司大人的作祟] → [能力:御射宮司大人的作祟] |
|
||||
| 17884 | tw | 专名错 / 简繁错转 | [能力:御柱古战场] | [能力:禦柱古戰場] → [能力:御柱古戰場] |
|
||||
| 19286 | en | 专名错 | 日白残无(木偶) | Zanmu Nippaku (Puppet) → 保持 |
|
||||
|
||||
## P1-C11 错译/漏译/添字 (34 条)
|
||||
**修复方式**: 逐条重译
|
||||
|
||||
| ID | lang | 类型/Code | 中文 | 当前 → 建议 |
|
||||
|---|---|---|---|---|
|
||||
| 523 | jp | 错译/不准确 | 帝国陨落! | 帝国崩壊 → 帝国の崩壊! |
|
||||
| 670 | tw | 错译/地名不规范 | 艾哈迈达巴德 | 艾哈默德巴德 → 艾哈邁達巴德 |
|
||||
| 675 | tw | 错译 | 瓦多达拉 | 瓦爾道拉 → 瓦多達拉 |
|
||||
| 684 | tw | 错译 | 布巴内斯瓦尔 | 巴布內斯瓦爾 → 布巴內斯瓦爾 |
|
||||
| 687 | tw | 错译 | 卑尔根 | 貝根 → 卑爾根 |
|
||||
| 961 | en | 错译 / 添字 | 让我们用拳头进行佛法的交流吧。 | Let us exchange Buddhist teachings with our **original** fis → Let us exchange Buddhist teachings with our fists. |
|
||||
| 1080 | jp | 错译 | 协和广场出差 | コンコルド広場出張 → コンコルド広場へ出張 |
|
||||
| 1099 | jp | 漏译 | 异星穿越 | 異星穿越 → 異星間航行 / インターステラー |
|
||||
| 1231 | jp | 错译 | 将**<庄稼>**建造为**<农田>** | **<穀物>**を**<農地>**に建設すると → 保留(语义可通:"把谷物变成农地建设")。 |
|
||||
| 1437 | en | 错译(逻辑混乱) | 可建造**<伐木场>**或改造森林。 | Logging Camp can be built or **<Logging Camp>** can be trans → **<Logging Camp>** can be built, or Forests can be transform |
|
||||
| 1521 | jp | 漏译 | 对周围2格单位造成溅射伤害。 | 周囲2マスのユニットにダメージを与える → 周囲2マスのユニットにスプラッシュダメージを与える。 |
|
||||
| 1526 | jp | 漏译 | 对周围3格单位造成溅射伤害 | 周囲3マスのユニットにダメージを与える → 周囲3マスのユニットにスプラッシュダメージを与える。 |
|
||||
| 1583 | jp | 错译 / 信息丢失 | 可同时存在最多2个该单位。 | 最大2体まで同時に存在できる → 同一ユニットを最大2体まで同時に存在できる。 |
|
||||
| 16764 | en | 错译 | 天狗报当日截稿 | Bunbunmaru Today's Deadline → Bunbunmaru: Today's Deadline / Bunbunmaru Daily Deadline |
|
||||
| 16843 | en | 错译 | 吉,便是凯旋的和风,凶,则是毁灭的风暴 | fortune brings winds of triumph, misfortune summons storms o → 当前可接受 |
|
||||
| 17042 | jp | 错译 | 建造财富奇观,提供3点城市经验 | 富の遺産を建設し、都市経験値3を提供 → 富のワンダーを建設し、都市経験値3を提供 / 富の奇跡を建設し... |
|
||||
| 17042 | kr | 错译 | 建造财富奇观 | 부의 유산 건설 → 부의 불가사의 건설 |
|
||||
| 17036 | zh | 错译 | 守矢帝国是一个拥科特色山脉技树和骑兵科技的强大势力。 | 拥**科**特色山脉技树和骑兵科技 → 拥**有**特色山脉技树和骑兵科技 |
|
||||
| 17096 | kr | 错译 | 从今天起,我就是"铁血风祝"了! | 오늘부터 난 '철혈의 코치야'다! → 오늘부터 난 '철혈의 풍축'이다! / '철혈의 무녀' |
|
||||
| 17151 | en | 错译 | 染红月光的阿尔科莱 | Arcole Stained by Moonlight → Arcole that Stained the Moonlight / Moonlight Stained by Arc |
|
||||
| 17151 | jp | 错译 | 染红月光的阿尔科莱 | 月光を染めるアルコレ → 当前可接受 |
|
||||
| 17157 | jp | 错译 | 土豆大王与核能尊神 | 芋大王と核能尊神 → ジャガイモ大王と核の神(核エネルギーの尊神) |
|
||||
| 17201 | tw | 错译 | 天文王朝卡西尼 | 天文王朝凱西尼 → 天文王朝卡西尼 |
|
||||
| 18688 | zh | 错译 / 漏字(typo) | ...等再次被恋恋抱出来时已然身处比塞现场的聚光灯下。 | ...已然身处比塞现场的聚光灯下。 → ...已然身处比赛现场的聚光灯下。 |
|
||||
| 18688 | tw | 错译 / 漏字(typo) | ...等再次被恋恋抱出来时已然身处比塞现场的聚光灯下。 | ...已然身處比塞現場的聚光燈下。 → ...已然身處比賽現場的聚光燈下。 |
|
||||
| 18688 | jp | 错译(typo 跟随) | 再次被恋恋抱出来时已然身处比塞现场的聚光灯下 | 再び恋恋に抱き出された時にはすでに比塞の現場のスポットライトの下にいた → 再び恋恋に抱き出された時にはすでに試合会場のスポットライトの下にいた |
|
||||
| 18695 | en | 错译 | 万名僧侣与学者在此研习 | Ten thousand monks and Arcanists studied here → Ten thousand monks and scholars studied here |
|
||||
| 19023 | zh | 错译 | 努斯 | 努斯 → 努齐 |
|
||||
| 19209 | tw | 错译 | 阿力麻里 | 阿力麻裡 → 阿力麻里 |
|
||||
| 19231 | tw | 错译 | 达兰扎达嘎德 | 達蘭紮達嘎德 → 達蘭扎達嘎德 |
|
||||
| 19589 | zh | 漏译 | More Language | More Language → 更多语言 |
|
||||
| 19589 | tw | 漏译 | More Language | More Language → 更多語言 |
|
||||
| 19673 | all | 漏译 | UploadHint | 5种语言都是 `UploadHint` → 中文应填实际提示文本;其他语言相应翻译 |
|
||||
| 19746 | en | 漏译 | 14.修复了溅射伤害不会 | 末尾截断在 "Eternal Night Retu",仅翻译到第 2 条修复 → 翻译完整 14 条修复 |
|
||||
|
||||
## P1-C99 其他未归类 (26 条)
|
||||
**修复方式**: 逐条人工
|
||||
|
||||
| ID | lang | 类型/Code | 中文 | 当前 → 建议 |
|
||||
|---|---|---|---|---|
|
||||
| 437 | zh | 错字 | 占领一个村庄或者城市,该城市**奖**纳入您的领土! | 该城市奖纳入您的领土 → 该城市**将**纳入您的领土 |
|
||||
| 437 | tw | 错字(跟随蓝本) | 占领一个村庄或者城市,该城市奖纳入您的领土! | 該城市獎納入您的領土 → 該城市將納入您的領土 |
|
||||
| 607 | tw | 错字 | 鲁昂 | 盧昂 → 魯昂 |
|
||||
| 667 | tw | 错字 | 乌甲因 | 烏甲因 → 烏賈因 |
|
||||
| 667 | zh | 错字(蓝本) | 乌甲因 | 乌甲因 → 乌贾因 |
|
||||
| 767 | tw | 错字 | 内沙布尔 | 內沙布林 → 內沙布爾 |
|
||||
| 929 | tw | 错字 | 输了?今晚没饭吃了哦,铃仙~ | 輸了?今晚沒飯**喫**了哦,鈴仙~ → 輸了?今晚沒飯**吃**了哦,鈴仙~ |
|
||||
| 1385 | kr | 漏字(标点) | 可以建造**<军港>**所有单位获得海洋防御 | **<군항>** 건설 가능 모든 유닛이 해양 방어를 획득한다 → **<군항>** 건설 가능. 모든 유닛이 해양 방어를 획득한다. |
|
||||
| 1865 | jp | 漏字(汉字) | 看来,不动用金刚之怒,是无法点化你了!南无三! | どうやら、金刚の怒りを奮わなければ、あなたを教化することはできぬようだな!南無三! → どうやら、金剛の怒りを奮わなければ、あなたを教化することはできぬようだな!南無三! |
|
||||
| 2151 | zh | 漏字 | 主动技能。可在与首通联通的城市之间传送。 | (中文原文) → 可在与首都联通的城市之间传送。 |
|
||||
| 16773 | en | 漏字 | 消耗一层**<天狗的立风露>**,立刻获得一次移动机会 | Consume 1 stack of **<Tengu's Standing Windblast>** to immed → Consume 1 stack of **<Tengu's Standing Windblast>** to immed |
|
||||
| 17131 | kr | | | |
|
||||
| 17897 | tw | 简繁错转 | [能力:御神签] | [能力:禦神簽] → [能力:御神籤] |
|
||||
| 18305 | zh | 漏字 | 蕾米莉亚斯卡雷特 | 蕾米莉亚斯卡雷特 → 蕾米莉亚·斯卡雷特 |
|
||||
| 18305 | tw | 漏字 | 蕾米莉亚斯卡雷特 | 蕾米莉亞斯卡雷特 → 蕾米莉亞·斯卡雷特 |
|
||||
| 18307 | zh | 漏字 | 芙兰朵露斯卡雷特 | 芙兰朵露斯卡雷特 → 芙兰朵露·斯卡雷特 |
|
||||
| 18307 | tw | 漏字 | 芙兰朵露斯卡雷特 | 芙蘭朵露斯卡雷特 → 芙蘭朵露·斯卡雷特 |
|
||||
| 18558 | zh | 漏字 | 帝国的狂气之瞳 铃仙·优昙华院·因幡 | 帝国的狂气之瞳 铃仙·优昙华院·因幡 → 帝国的狂气之瞳:铃仙·优昙华院·因幡 |
|
||||
| 18558 | tw | 漏字 | 帝国的狂气之瞳 铃仙·优昙华院·因幡 | 帝國的狂氣之瞳 鈴仙·優曇華院·因幡 → 帝國的狂氣之瞳:鈴仙·優曇華院·因幡 |
|
||||
| 18558 | en | 漏字 | 帝国的狂气之瞳 铃仙·优昙华院·因幡 | Imperial Eye of Madness: Reisen Udongein Inaba → 保持现有 EN(已用冒号),核对中文/繁中修复后维持 |
|
||||
| 18778 | jp | 漏字 / typo | 莫卧儿的星空 | ムガルの星空き → ムガルの星空 |
|
||||
| 18779 | zh | 错字 | 北纬27的日晱之王 | 北纬27的日晱之王 → 北纬27度的日晷之王 |
|
||||
| 18779 | tw | 错字 | 北纬27的日晱之王 | 北緯27的日晱之王 → 北緯27度的日晷之王 |
|
||||
| 19788 | zh | 漏字 | 角色立绘//主KV | 角色立绘//主KV → 角色立绘/主KV |
|
||||
| 19755 | zh | 漏字 | 炮兵于步兵一样,也能施加**<协同标的>** | 炮兵于步兵一样 → 炮兵与步兵一样 |
|
||||
| 19755 | tw | 漏字 | 炮兵于步兵一样 | 炮兵於步兵一樣 → 炮兵與步兵一樣 |
|
||||
113
Tools/Multilingual_P1_Mechanical_Fix_Report.md
Normal file
113
Tools/Multilingual_P1_Mechanical_Fix_Report.md
Normal file
@ -0,0 +1,113 @@
|
||||
# Multilingual.xlsx P1 机械修复报告 (2026-05-14 23:09:17)
|
||||
|
||||
- 备份:`Multilingual.before_p1_2026-05-14.bak.xlsx`
|
||||
- 决策依据:`multilingual_check/decisions_p1.md` 中所有 [✅] 项(不含 C09/C99)
|
||||
- 成功修改:**83** 条
|
||||
- 跳过(NOOP):**13** 条
|
||||
- 失败:**0** 条
|
||||
|
||||
## 成功列表
|
||||
|
||||
| 决策 | ID | 语言 | 修改前(摘要) | 修改后(摘要) | 说明 |
|
||||
|---|---|---|---|---|---|
|
||||
| C05 | 2391 | EN | gains **<Mana Stone {Fire}>**: ATK +1. Max Sta | gains **<Mana Stone {火}>**: ATK +1. Max Sta | C05 五行占位符 EN |
|
||||
| C05 | 17366 | EN | gain **<Mana Stone {Fire}>**: Attack +1. Stam | gain **<Mana Stone {火}>**: Attack +1. Stam | C05 五行占位符 EN |
|
||||
| C05 | 18538 | EN | Mana Stone {Fire} | Mana Stone {火} | C05 五行占位符 EN |
|
||||
| C05 | 18613 | EN | Mana Stone {Fire} | Mana Stone {火} | C05 五行占位符 EN |
|
||||
| C05 | 2391 | EN | gains **<Mana Stone {Wood}>**: MOV +2. In enem | gains **<Mana Stone {木}>**: MOV +2. In enem | C05 五行占位符 EN |
|
||||
| C05 | 17366 | EN | gain **<Mana Stone {Wood}>**: Movement +2. In | gain **<Mana Stone {木}>**: Movement +2. In | C05 五行占位符 EN |
|
||||
| C05 | 18539 | EN | Mana Stone {Wood} | Mana Stone {木} | C05 五行占位符 EN |
|
||||
| C05 | 18614 | EN | Mana Stone {Wood} | Mana Stone {木} | C05 五行占位符 EN |
|
||||
| C05 | 2391 | EN | gains **<Mana Stone {Water}>**: blocks 1 instan | gains **<Mana Stone {水}>**: blocks 1 instan | C05 五行占位符 EN |
|
||||
| C05 | 17366 | EN | gain **<Mana Stone {Water}>**: blocks 1 instan | gain **<Mana Stone {水}>**: blocks 1 instan | C05 五行占位符 EN |
|
||||
| C05 | 18542 | EN | Mana Stone {Water} | Mana Stone {水} | C05 五行占位符 EN |
|
||||
| C05 | 2391 | EN | gains **<Mana Stone {Metal}>**: Range +1. Each | gains **<Mana Stone {金}>**: Range +1. Each | C05 五行占位符 EN |
|
||||
| C05 | 17366 | EN | gain **<Mana Stone {Metal}>**: Range +1. Each | gain **<Mana Stone {金}>**: Range +1. Each | C05 五行占位符 EN |
|
||||
| C05 | 18541 | EN | Mana Stone {Metal} | Mana Stone {金} | C05 五行占位符 EN |
|
||||
| C05 | 18615 | EN | Mana Stone {Metal} | Mana Stone {金} | C05 五行占位符 EN |
|
||||
| C05 | 2391 | EN | gains **<Mana Stone {Earth}>**: heals 5HP for a | gains **<Mana Stone {土}>**: heals 5HP for a | C05 五行占位符 EN |
|
||||
| C05 | 17366 | EN | gain **<Mana Stone {Earth}>**: heals an ally f | gain **<Mana Stone {土}>**: heals an ally f | C05 五行占位符 EN |
|
||||
| C05 | 18543 | EN | Mana Stone {Earth} | Mana Stone {土} | C05 五行占位符 EN |
|
||||
| C05 | 2391 | KR | . 적 영토에서는 추가로 **<마법석{화}>** 추가 획득:공격+1. 체력 상 | . 적 영토에서는 추가로 **<마법석{火}>** 추가 획득:공격+1. 체력 상 | C05 五行占位符 KR |
|
||||
| C05 | 17366 | KR | . 적 영토에서는 추가로 **<마력석{화}>**:공격 +1 획득. 체력 상한이 | . 적 영토에서는 추가로 **<마력석{火}>**:공격 +1 획득. 체력 상한이 | C05 五行占位符 KR |
|
||||
| C05 | 18538 | KR | 마력석{화} | 마력석{火} | C05 五行占位符 KR |
|
||||
| C05 | 18613 | KR | 마법석{화} | 마법석{火} | C05 五行占位符 KR |
|
||||
| C05 | 2391 | KR | 강화. 숲에서는 추가로 **<마법석{목}>** 획득: 이동력+2. 적 영토에 | 강화. 숲에서는 추가로 **<마법석{木}>** 획득: 이동력+2. 적 영토에 | C05 五行占位符 KR |
|
||||
| C05 | 17366 | KR | 강화, 숲에서는 추가로 **<마력석{목}>**:이동력 +2 획득. 적 영토에 | 강화, 숲에서는 추가로 **<마력석{木}>**:이동력 +2 획득. 적 영토에 | C05 五行占位符 KR |
|
||||
| C05 | 18539 | KR | 마력석{목} | 마력석{木} | C05 五行占位符 KR |
|
||||
| C05 | 18614 | KR | 마법석{목} | 마법석{木} | C05 五行占位符 KR |
|
||||
| C05 | 2391 | KR | 지가 해안일 경우 추가로 **<마력석{수}>** 획득: 1회 피해 방어. 육지 | 지가 해안일 경우 추가로 **<마력석{水}>** 획득: 1회 피해 방어. 육지 | C05 五行占位符 KR |
|
||||
| C05 | 17366 | KR | 지가 해안인 경우 추가로 **<마력석{수}>**:1회 피해 차단; 육지가 산맥 | 지가 해안인 경우 추가로 **<마력석{水}>**:1회 피해 차단; 육지가 산맥 | C05 五行占位符 KR |
|
||||
| C05 | 18542 | KR | 마력석{수} | 마력석{水} | C05 五行占位符 KR |
|
||||
| C05 | 2391 | KR | 지가 산맥일 경우 추가로 **<마법석{금}>** 추가 획득:사거리+1. 각 마 | 지가 산맥일 경우 추가로 **<마법석{金}>** 추가 획득:사거리+1. 각 마 | C05 五行占位符 KR |
|
||||
| C05 | 17366 | KR | 지가 산맥인 경우 추가로 **<마력석{금}>**:사거리 +1. 각 마력석은 1 | 지가 산맥인 경우 추가로 **<마력석{金}>**:사거리 +1. 각 마력석은 1 | C05 五行占位符 KR |
|
||||
| C05 | 18541 | KR | 마력석{금} | 마력석{金} | C05 五行占位符 KR |
|
||||
| C05 | 18615 | KR | 마법석{금} | 마법석{金} | C05 五行占位符 KR |
|
||||
| C05 | 2391 | KR | 마력석 획득. 육지에서는 **<마력석{토}>** 획득: 아군 5HP 치료 가능 | 마력석 획득. 육지에서는 **<마력석{土}>** 획득: 아군 5HP 치료 가능 | C05 五行占位符 KR |
|
||||
| C05 | 17366 | KR | 마력석 획득. 육지에서는 **<마력석{토}>**:아군 5HP 치료 가능; 육지 | 마력석 획득. 육지에서는 **<마력석{土}>**:아군 5HP 치료 가능; 육지 | C05 五行占位符 KR |
|
||||
| C05 | 18543 | KR | 마력석{토} | 마력석{土} | C05 五行占位符 KR |
|
||||
| C07 | 17036 | JP | <size=36><b>[新陣営追加] ドイツ文明――守矢帝国</b></size> 古の土着神がその礎を築き、変革の風雨神が産業の歯車を回す。八坂神奈子は妖怪山の鋼鉄の玉座に鎮座し、技術と信仰を帝国の鉄と血に鋳造する。ドイツの鷲はすでに翼を広げ、幻想郷の新秩序の到来を告げている。 守矢帝国は独自の特色ある山脈技術ツリーと騎兵科学技術を持つ強大な勢力である。 建設面では、守矢帝国は**<山神信 | <size=36><b>[新陣営追加] ドイツ文明――守矢帝国</b></size> 古の土着神がその礎を築き、変革の風雨神が産業の歯車を回す。八坂神奈子は妖怪山の鋼鉄の玉座に鎮座し、技術と信仰を帝国の鉄と血に鋳造する。ドイツの鷲はすでに翼を広げ、幻想郷の新秩序の到来を告げている。 守矢帝国は独自の特色ある山脈技術ツリーと騎兵科学技術を持つ強大な勢力である。 建設面では、守矢帝国は**<山神信 | JP 多余 <br>,对齐 ZH/EN/KR |
|
||||
| C07 | 17329 | EN | **<No Entry>** to the target for 1 turn, preventing movement | o Entry>** to the target for 1 turn, preventing movement<br> | EN 末尾缺 <br>,对齐 ZH/JP/KR |
|
||||
| C07 | 17370 | EN | ted Target>** when attacking heroes is increased to 2 times. | Target>** when attacking heroes is increased to 2 times.<br> | EN 末尾缺 <br>,对齐 ZH/JP/KR |
|
||||
| C08-神像 | 809 | JP | 馬の神像 | ナイトの神像 | 马之神像 JP 外来语化 |
|
||||
| C08-神像 | 809 | KR | 기사의 신상 | 나이트의 신상 | 马之神像 KR 外来语化 |
|
||||
| C08-神像 | 810 | JP | 車の神像 | ルークの神像 | 车之神像 JP 外来语化 |
|
||||
| C08-雕像 | 18127 | JP | 后の彫像 | クイーンの彫像 | 后之雕像 JP 外来语化 |
|
||||
| C08-雕像 | 18127 | KR | 후의 조각상 | 퀸의 조각상 | 后之雕像 KR 外来语化 |
|
||||
| C08-雕像 | 18133 | JP | 車の彫像 | ルークの彫像 | 车之雕像 JP 外来语化 |
|
||||
| C08-雕像 | 18133 | KR | 전차 조각상 | 룩의 조각상 | 车之雕像 KR 外来语化 |
|
||||
| C08-雕像 | 18138 | JP | 馬の彫像 | ナイトの彫像 | 马之雕像 JP 外来语化 |
|
||||
| C08-雕像 | 18138 | KR | 기마 조각상 | 나이트의 조각상 | 马之雕像 KR 外来语化 |
|
||||
| C08-雕像 | 18128 | JP | **<森林>**に**<后の彫像>**を建造可能 | **<森林>**に**<クイーンの彫像>**を建造可能 | 18128 JP 内嵌 token 同步 |
|
||||
| C08-雕像 | 18128 | KR | **<숲>**에 **<후의 조각상>** 건설 가능 | **<숲>**에 **<퀸의 조각상>** 건설 가능 | 18128 KR 内嵌 token 同步 |
|
||||
| C08-雕像 | 18131 | JP | **<浅瀬>**に**<相の彫像>**を建造可能 | **<浅瀬>**に**<ビショップの彫像>**を建造可能 | 18131 JP 内嵌 token 同步 |
|
||||
| C08-雕像 | 18131 | KR | **<천해>**에 **<상의 조각상>** 건설 가능 | **<천해>**에 **<비숍의 조각상>** 건설 가능 | 18131 KR 内嵌 token 同步 |
|
||||
| C08-雕像 | 18134 | JP | **<山脈>**に**<車の彫像>**を建造可能 | **<山脈>**に**<ルークの彫像>**を建造可能 | 18134 JP 内嵌 token 同步 |
|
||||
| C08-雕像 | 18134 | KR | **<산맥>**에 **<전차 조각상>** 건설 가능 | **<산맥>**에 **<룩의 조각상>** 건설 가능 | 18134 KR 内嵌 token 同步 |
|
||||
| C08-雕像 | 18139 | JP | **<平原>**に**<馬の彫像>**を建造可能 | **<平原>**に**<ナイトの彫像>**を建造可能 | 18139 JP 内嵌 token 同步 |
|
||||
| C08-雕像 | 18139 | KR | **<평원>**에 **<기마 조각상>** 건설 가능 | **<평원>**에 **<나이트의 조각상>** 건설 가능 | 18139 KR 内嵌 token 同步 |
|
||||
| C08-雕像EN | 18707 | EN | Build Horse God Statue | Build Statue of the Knight | 18707 EN 统一 Statue of the X |
|
||||
| C08-雕像EN | 18710 | EN | Build Queen God Statue | Build Statue of the Queen | 18710 EN 统一 Statue of the X |
|
||||
| C08-雕像EN | 18717 | EN | Divine Statue of Kings | Statue of the King | 18717 EN 统一 Statue of the X |
|
||||
| C08-火焰猫燐 | 203 | EN | Kaenbyou Rin | Rin Kaenbyou | 姓名→名姓 |
|
||||
| C08-护法帆船 | 18739 | EN | Guardian Sailboat | Dharma Guardian Sailboat | 补 Dharma |
|
||||
| C08-护法帆船 | 18740 | EN | Upgrades **<Sailboat>** to **<Guardian Sailboat>**. Komeiji's unique naval ranged unit. | Upgrades **<Sailboat>** to **<Dharma Guardian Sailboat>**. Komeiji's unique naval ranged unit. | 18740 EN 内嵌 token 同步 |
|
||||
| C08-1016 | 1016 | EN | **<Mine>** treasures for a chance to gain massive wealth, powerful units, or a random technology. | **<Excavate>** treasures for a chance to gain massive wealth, powerful units, or a random technology. | 挖掘术语 EN |
|
||||
| C08-1016 | 1016 | JP | 宝を**<採掘>**すると、莫大な富、強力なユニット、またはランダムな技術を獲得できる可能性がある | 宝を**<発掘>**すると、莫大な富、強力なユニット、またはランダムな技術を獲得できる可能性がある | 挖掘术语 JP |
|
||||
| C08-1016 | 1016 | KR | 보물을 **<채굴>**하면 막대한 재화, 강력한 유닛 또는 무작위 기술을 획득할 확률이 있다. | 보물을 **<발굴>**하면 막대한 재화, 강력한 유닛 또는 무작위 기술을 획득할 확률이 있다. | 挖掘术语 KR |
|
||||
| C08-1247 | 1247 | EN | **<Ocean>** provides additional Defense | **<Deep Sea>** provides additional Defense | 深海术语 Ocean→Deep Sea |
|
||||
| C08-17309 | 17309 | JP | 神聖なる追撃 | 神聖追猟 | 神圣追猎 JP 统一 |
|
||||
| C08-17309 | 17309 | KR | 신성한 추격 | 신성한 추적 | 神圣追猎 KR 统一 |
|
||||
| C08-祟神 | 16846 | KR | 스와코가 통솔하는 타타리가미. 스와코 근처에서 **<합성>**하여 진화를 완료할 수 있다. | 스와코가 통솔하는 저주신. 스와코 근처에서 **<합성>**하여 진화를 완료할 수 있다. | 祟神韩文意译 |
|
||||
| C08-祟神 | 16847 | KR | 모리야 신사 휘하의 강력한 타타리가미, 높은 기동성을 가지며 **<탈출>** 스킬 보유. | 모리야 신사 휘하의 강력한 저주신, 높은 기동성을 가지며 **<탈출>** 스킬 보유. | 祟神韩文意译 |
|
||||
| C08-祟神 | 16848 | KR | 모리야 신사 휘하의 강력한 타타리가미, 스와코 근처에서 **<합성>**하여 진화를 완료할 수 있다. | 모리야 신사 휘하의 강력한 저주신, 스와코 근처에서 **<합성>**하여 진화를 완료할 수 있다. | 祟神韩文意译 |
|
||||
| C08-勇仪 | 18886 | KR | **<[차] 클래스 영웅>**. 전장에 1명의 **<호시구마 유우기>**만 존재할 수 있다. 사망 후 3턴 동안 재출전 불가. | **<[차] 클래스 영웅>**. 전장에 1명의 **<호시구마 유기>**만 존재할 수 있다. 사망 후 3턴 동안 재출전 불가. | 星熊勇仪韩文 |
|
||||
| C08-正法 | 17831 | EN | Dharma | True Dharma | 正法→True Dharma |
|
||||
| C08-先导 | 17304 | KR | 사루타히코의 선도자 | 사루타히코의 선도 | 韩文:선도자→선도 |
|
||||
| C08-竹林 | 18563 | KR | [능력:대나무숲의 기만자-격안관화] | [능력:죽림의 기만자-격안관화] | 竹林韩文统一 |
|
||||
| C10 | 1546 | JP | **<[后]クラスの英雄>**。場に**<パチュリー・ノーレッジ>**は1体のみ存在可能。死亡後3ターン以内は再出撃不可 | **<[クイーン]クラスの英雄>**。場に**<パチュリー・ノーレッジ>**は1体のみ存在可能。死亡後3ターン以内は再出撃不可 | 1546 JP [后]→[クイーン] |
|
||||
| C10 | 2092 | KR | 너를 프랑의 새로운 장난감으로 선물해주마! | 너를 플랑드르의 새로운 장난감으로 선물해주마! | 2092 KR 芙兰→完整名 |
|
||||
| C10 | 17043 | TW | 古老的土著神奠其根基,變革的風雨神轉動工業的齒輪。八阪神奈子端坐於妖怪山的鋼鐵王座之上,將技術與信仰熔鑄為帝國的鐵與血。德意志的雄鷹已然展翅,宣告著幻想鄉新秩序的降臨。 | 古老的土著神奠其根基,變革的風雨神轉動工業的齒輪。八坂神奈子端坐於妖怪山的鋼鐵王座之上,將技術與信仰熔鑄為帝國的鐵與血。德意志的雄鷹已然展翅,宣告著幻想鄉新秩序的降臨。 | 17043 TW 八阪→八坂 |
|
||||
| C11 | 670 | TW | 艾哈默德巴德 | 艾哈邁達巴德 | Ahmedabad TW 修正 |
|
||||
| C11 | 675 | TW | 瓦爾道拉 | 瓦多達拉 | Vadodara TW 修正 |
|
||||
| C11 | 684 | TW | 巴布內斯瓦爾 | 布巴內斯瓦爾 | Bhubaneswar TW 修正 |
|
||||
| C11 | 687 | TW | 貝根 | 卑爾根 | Bergen TW 修正 |
|
||||
| C11 | 961 | EN | Let us exchange Buddhist teachings with our original fists. | Let us exchange Buddhist teachings with our fists. | 961 EN 删去 original |
|
||||
|
||||
## NOOP / SKIPPED 列表
|
||||
|
||||
| 决策 | ID | 语言 | 原因 |
|
||||
|---|---|---|---|
|
||||
| C06 | 1112 | EN | EN 已含 threefold,合理表达 |
|
||||
| C06 | 1114 | EN | EN 已含 quadruple,合理表达 |
|
||||
| C06 | 1282 | EN | 任务指示保持 nine versus five |
|
||||
| C06 | 18084 | EN | EN 已含 once,合理表达 |
|
||||
| C08-神像 | 810 | KR | 值已等于目标 "룩의 신상",跳过 |
|
||||
| C08-神像 | 811 | JP | 值已等于目标 "クイーンの神像",跳过 |
|
||||
| C08-神像 | 811 | KR | 值已等于目标 "퀸의 신상",跳过 |
|
||||
| C08-神像 | 812 | JP | 值已等于目标 "ビショップの神像",跳过 |
|
||||
| C08-神像 | 812 | KR | 值已等于目标 "비숍의 신상",跳过 |
|
||||
| C08-雕像EN | 18715 | EN | token 已是 Statue of the Bishop,主宾结构不在本次范围 |
|
||||
| C08-奇迹 | 17657 | JP | 17657 JP 已为「奇跡の時代」,title 字段无 desc |
|
||||
| C08-酒馆 | 16703 | JP | 16703 JP 已为「天狗酒場」 |
|
||||
| C10 | 480 | KR | 480 KR 已为「토요사토미미노 미코」标准译名 |
|
||||
77
Tools/Multilingual_P1_Retranslate_Report.md
Normal file
77
Tools/Multilingual_P1_Retranslate_Report.md
Normal file
@ -0,0 +1,77 @@
|
||||
# Multilingual.xlsx P1 重译/润色报告 (C09 + C99) — 2026-05-15 00:06:24
|
||||
|
||||
- 备份:`Multilingual.before_p1_2026-05-14.bak.xlsx`
|
||||
- 任务:P1-C09 (机翻味/不自然 34条) + P1-C99 (其他未归类 26条)
|
||||
- 成功修改:**55** 条
|
||||
- 跳过(NOOP):**5** 条
|
||||
- 失败:**0** 条
|
||||
|
||||
## 成功列表
|
||||
|
||||
| 簇 | ID | 语言 | 修改前 | 修改后 | 说明 |
|
||||
|---|---|---|---|---|---|
|
||||
| C09 | 963 | JP | 負けは何も恐ろしくない。 | 敗北など恐るるに足りぬ。 | JP 重译,"恐るるに足りぬ"更自然有气势 |
|
||||
| C09 | 976 | JP | 情け容赦ないことを責めるなよ。 | 情け容赦せぬが、恨むでないぞ。 | JP 重译,老者口吻+自然 |
|
||||
| C09 | 1058 | JP | 血の川が流れるのを見せてやる! | 血の海を見せてやろう! | JP 重译,更地道有威慑感 |
|
||||
| C09 | 1072 | EN | I'll take on 10 of you | I can take on ten of them! | EN 重译,更有玩家自嘲/挑衅味 |
|
||||
| C09 | 1244 | EN | Can move on **<Water>** | Can move on **<Shallow Water>** | EN 浅海术语精化为 Shallow Water |
|
||||
| C09 | 1613 | JP | 遺産**<{param}>**を獲得しました。平原または浅瀬エリアに遺産を建造しましょう | 遺産**<{param}>**を獲得しました。平原または浅瀬エリアに遺産を建造しましょう! | JP 末尾补感叹号,与中文EN对齐 |
|
||||
| C09 | 1718 | JP | **<{param}>**行動お待ちください | **<{param}>**の行動をお待ちください... | JP 加助词「の」「を」,并补省略号 |
|
||||
| C09 | 1768 | JP | さあ、勝者側に立って、風光明媚な景色を眺めましょう。 | さあ、勝者の側に立てば、栄光は思いのままだ。 | JP 重译,"風光明媚な景色を眺めましょう"是字面直译,原意是"风光"=荣耀 |
|
||||
| C09 | 1770 | JP | 供物はご自由に、経費は私が負担します。 | 供物はご自由に、経費はこちら持ちで結構。 | JP 重译,"こちら持ち"更自然口语化 |
|
||||
| C09 | 1868 | JP | 天下の大勢、分かれば必ず合し、合すれば必ず分かる。 | 天下の大勢、分かれて久しければ必ず合し、合して久しければ必ず分かれる。 | JP 重译,三国演义原句的日文标准译法 |
|
||||
| C09 | 1901 | JP | 老身は盤外の塵とを共にはせぬぞ。 | 老身は盤外の塵と連れ立つことはせぬ。 | JP 重译,删冗余助词,更自然 |
|
||||
| C09 | 2068 | KR | 림생 | 숲의 아이 | KR 重译,림생汉字音直译,"숲의 아이"更自然有诗意 |
|
||||
| C09 | 2471 | KR | **<레밀리아 별궁>**을 건설한다. 턴당 시작 시 자동으로 타일을 **<홍무 영지>**로 전환한다. 군사 유닛 생산 가능하며, 추가 방어를 제공한다. 평원에만 건설 가능하다. | **<레밀리아 별궁>**을 건설한다. 매 턴 시작 시 자동으로 타일을 **<홍무 영지>**로 전환한다. 군사 유닛 생산 가능하며, 추가 방어를 제공한다. 평원에만 건설 가능하다. | KR 修正:턴당 시작 시 → 매 턴 시작 시(更自然) |
|
||||
| C09 | 2473 | KR | 병영을 대체하며, 턴당 시작 시 자동으로 타일을 **<홍무 영지>**로 전환한다. 군사 유닛 생산 가능하며, 추가 방어를 제공한다. 평원에만 건설 가능하다. | 병영을 대체하며, 매 턴 시작 시 자동으로 타일을 **<홍무 영지>**로 전환한다. 군사 유닛 생산 가능하며, 추가 방어를 제공한다. 평원에만 건설 가능하다. | KR 修正:턴당 시작 시 → 매 턴 시작 시 |
|
||||
| C09 | 16700 | JP | 科学変革の神 | 科学技術変革の神 | JP 修正:科技=科学技術,与EN "Technological" 对齐 |
|
||||
| C09 | 16795 | KR | 턴당 시작 시 **<이동>** 기회 상실 | 턴 시작 시 **<이동>** 기회 상실 | KR 修正:턴당 시작 시 → 턴 시작 시 |
|
||||
| C09 | 16841 | KR | **<왕>** 클래스 영웅. 제국의 산신, 군신, 풍우신이자 변혁의 신. 신앙을 철혈 홍류로 전환하여 어주를 권장 삼아, 거포를 휘두르며 변혁을 선포한다. | **<왕>** 클래스 영웅. 제국의 산신, 군신, 풍우신이자 변혁의 신. 신앙을 철혈 홍류로 전환하여 온바시라를 신표로 삼아, 거포를 휘두르며 변혁을 선포한다. | KR 修正:御柱 어주(汉字音) → 온바시라(音译) + 권장=权杖 改 신표(神物)更贴文化 |
|
||||
| C09 | 17318 | JP | 狂犬断噬 | 狂犬断ち噬み | JP 重译:原条目漏本地化,给出日语化读法 |
|
||||
| C09 | 17589 | KR | 용 도살 | 드래곤 슬레이어 | KR 重译:용 도살(屠杀)语感差,沿用EN同款外来语 |
|
||||
| C09 | 17605 | JP | 強敵終結 | 強敵撃破! | JP 重译:強敵終結是直译,"撃破"是日语游戏术语标准 |
|
||||
| C09 | 17857 | KR | 화혼과 황혼의 연리 | 니기미타마와 아라미타마의 연리 | KR 重译:和魂(和荒)=니기미타마, 荒魂=아라미타마(神道术语音译) |
|
||||
| C09 | 19044 | JP | エツナ | エズナ | JP 修正:玛雅城 Edzna 标准日文音译 エズナ |
|
||||
| C09 | 19119 | JP | 扶南城 | 扶南(フナン) | JP 重译:扶南标准日文标读法 |
|
||||
| C09 | 19134 | JP | ヌオンルー | ニアック・ルン | JP 重译:柬埔寨 Neak Leung 标准日文音译 |
|
||||
| C09 | 19134 | KR | 누온립 | 닉릉 | KR 重译:Neak Leung 韩文常用音译 |
|
||||
| C09 | 19362 | EN | Imperial Almighty | Imperial Almighty God | EN 补 God,更完整有称号感 |
|
||||
| C09 | 19272 | KR | 아쿤, 태우면 안 돼~ | 오쿠우, 태우면 안 돼~ | KR 修正:阿空=お空(おくう),韩文应是 오쿠우 |
|
||||
| C09 | 19441 | JP | **<射命丸文>**からのスプラッシュダメージを軽減し、各層ごとに0.5倍となり、最低1ポイント | **<射命丸文>**からのスプラッシュダメージを軽減し、スタックごとに0.5倍となり、最低1ポイント | JP 修正:層=stack 在游戏圈用 スタック |
|
||||
| C09 | 19560 | EN | Invisible to enemies. Breaking invisibility when enemies move to this unit's location or actively spend action points. | Invisible to enemies. Invisibility is broken when an enemy moves to this unit's location or this unit actively spends action points. | EN 重译:分词改主谓结构,更自然 |
|
||||
| C09 | 19672 | JP | 移動 | 向かう | JP 重译:前往=向かう,比"移動"更贴UI按钮含义 |
|
||||
| C09 | 19829 | KR | 스페셜 땡스 | 특별 감사 | KR 重译:스페셜 땡스=俚语,鸣谢页应用 특별 감사 |
|
||||
| C99 | 437 | ZH | 占领一个村庄或者城市,该城市奖纳入您的领土! | 占领一个村庄或者城市,该城市将纳入您的领土! | ZH 错字 奖→将 |
|
||||
| C99 | 437 | TW | 佔領一個村莊或者城市,該城市獎納入您的領土! | 佔領一個村莊或者城市,該城市將納入您的領土! | TW 错字 獎→將 |
|
||||
| C99 | 607 | TW | 盧昂 | 魯昂 | TW 错字:盧→魯(与简中"鲁昂"对应繁体) |
|
||||
| C99 | 667 | TW | 烏甲因 | 烏賈因 | TW 修正 Ujjain 正确译名 |
|
||||
| C99 | 667 | ZH | 乌甲因 | 乌贾因 | ZH 修正 Ujjain 正确译名 |
|
||||
| C99 | 767 | TW | 內沙布林 | 內沙布爾 | TW 错字:布林→布爾 |
|
||||
| C99 | 929 | TW | 輸了?今晚沒飯喫了哦,鈴仙~ | 輸了?今晚沒飯吃了哦,鈴仙~ | TW 错字 喫→吃 |
|
||||
| C99 | 1385 | KR | **<군항>** 건설 가능 모든 유닛이 해양 방어를 획득한다 | **<군항>** 건설 가능. 모든 유닛이 해양 방어를 획득한다. | KR 加句号断句 |
|
||||
| C99 | 1865 | JP | どうやら、金刚の怒りを奮わなければ、あなたを教化することはできぬようだな!南無三! | どうやら、金剛の怒りを奮わなければ、あなたを教化することはできぬようだな!南無三! | JP 简化字 刚→剛 |
|
||||
| C99 | 2151 | ZH | 主动技能。可在与首通联通的城市之间传送。 | 主动技能。可在与首都联通的城市之间传送。 | ZH 错字 首通→首都 |
|
||||
| C99 | 16773 | EN | Consume 1 stack of **<Tengu's Standing Windblast>** to immediately gain 1 opportunity | Consume 1 stack of **<Tengu's Standing Windblast>** to immediately gain 1 movement opportunity | EN 补完整:1 movement opportunity |
|
||||
| C99 | 17897 | TW | [能力:禦神簽] | [能力:御神籤] | TW 简繁错转 禦→御、簽→籤 |
|
||||
| C99 | 18305 | ZH | 蕾米莉亚斯卡雷特 | 蕾米莉亚·斯卡雷特 | ZH 加间隔号· |
|
||||
| C99 | 18305 | TW | 蕾米莉亞斯卡雷特 | 蕾米莉亞·斯卡雷特 | TW 加间隔号· |
|
||||
| C99 | 18307 | ZH | 芙兰朵露斯卡雷特 | 芙兰朵露·斯卡雷特 | ZH 加间隔号· |
|
||||
| C99 | 18307 | TW | 芙蘭朵露斯卡雷特 | 芙蘭朵露·斯卡雷特 | TW 加间隔号· |
|
||||
| C99 | 18558 | ZH | 帝国的狂气之瞳 铃仙·优昙华院·因幡 | 帝国的狂气之瞳:铃仙·优昙华院·因幡 | ZH 空格→冒号 |
|
||||
| C99 | 18558 | TW | 帝國的狂氣之瞳 鈴仙·優曇華院·因幡 | 帝國的狂氣之瞳:鈴仙·優曇華院·因幡 | TW 空格→冒号 |
|
||||
| C99 | 18778 | JP | ムガルの星空き | ムガルの星空 | JP typo:星空き→星空 (多了个 き) |
|
||||
| C99 | 18779 | ZH | 北纬27的日晱之王 | 北纬27度的日晷之王 | ZH 错字:补"度"+晱→晷(sundial) |
|
||||
| C99 | 18779 | TW | 北緯27的日晱之王 | 北緯27度的日晷之王 | TW 错字:补"度"+晱→晷 |
|
||||
| C99 | 19788 | ZH | 角色立绘//主KV | 角色立绘/主KV | ZH 双斜杠→单斜杠 |
|
||||
| C99 | 19755 | ZH | 炮兵于步兵一样,也能施加**<协同标的>**,并在攻击时获得攻击力加成。 | 炮兵与步兵一样,也能施加**<协同标的>**,并在攻击时获得攻击力加成。 | ZH 错字 于→与 |
|
||||
| C99 | 19755 | TW | 炮兵於步兵一樣,也能施加**<協同標的>**,並在攻擊時獲得攻擊力加成。 | 炮兵與步兵一樣,也能施加**<協同標的>**,並在攻擊時獲得攻擊力加成。 | TW 错字 於→與 |
|
||||
|
||||
## NOOP / 跳过
|
||||
|
||||
| 簇 | ID | 语言 | 原因 |
|
||||
|---|---|---|---|
|
||||
| C09 | 1635 | JP | 蓬莱山帝国 JP 保留(专名) |
|
||||
| C09 | 1756 | JP | 建议保留,当前已自然 |
|
||||
| C09 | 17157 | EN | 当前 EN 表达自然,保留 |
|
||||
| C99 | 17131 | KR | ID 17131 不在表中,跳过 |
|
||||
| C99 | 18558 | EN | EN 已用冒号,保留 |
|
||||
185
Tools/Multilingual_P2_Clusters_For_Review.md
Normal file
185
Tools/Multilingual_P2_Clusters_For_Review.md
Normal file
@ -0,0 +1,185 @@
|
||||
# P2 修改提案(聚类版)
|
||||
|
||||
**总 P2 数**: 209
|
||||
|
||||
## P2-D01 风格/敬语/语气 (27 条)
|
||||
**修复方式**: 统一/优化
|
||||
|
||||
| ID | lang | code | 中文 | 当前 → 建议 |
|
||||
|---|---|---|---|---|
|
||||
| 16769 | en | 风格 | 天狗的立风露 | Tengu's Standing Windblast → Tengu's Standing Wind Dew / Tengu's Standing Breez |
|
||||
| 16835 | jp | 风格 | 真理,只在御柱的射程之内。 | 真理は、ただ御柱の射程の内にのみある → 真理は、御柱の射程の内にしか存在しない |
|
||||
| 16844 | kr | 风格 | 帝国的最速记者 | 제국의 최속 기자 → 제국 최고 속도의 기자 / 제국 최속의 기자 |
|
||||
| 16969 | kr | 风格 | {param}解除了与您的结盟关系 | 解除(해제) → 当前可接受 |
|
||||
| 16966 | en | 风格 | 遇到新的文明 | New Civilization Encountered → 当前可接受 |
|
||||
| 17050 | en | 风格 | 在**<御柱古战场>**状态下,所有处于山脉上的**<我方英雄>**...均纳入 | Under **<Onbashira Battlefield>** status, all **<O → ... all **<allied heroes>** / **<your heroes>** .. |
|
||||
| 17079 | en | 风格 | 不过大小姐是不会死的吧 | But Milady won't ever die → 当前可接受(Milady 符合规则) |
|
||||
| 17097 | jp | 风格 | 鸦天狗 | 鴉天狗 → 当前可接受 |
|
||||
| 17107 | tw | 风格 | 深藏于阿拜多斯圣地 | 深藏于阿拜多斯聖地 → 深藏於阿拜多斯聖地 |
|
||||
| 17108 | tw | 风格 | 拿破仑于此告别王座 | 拿破崙于此告別王座 → 拿破崙於此告別王座 |
|
||||
| 17115 | tw | 风格 | 法兰西文明探索奇观 | 法蘭西文明探索奇觀 → 同当前 |
|
||||
| 17123 | tw | 风格 | 其名源于齐柏林飞艇 | 其名源于齊柏林飛艇 → 其名源於齊柏林飛艇 |
|
||||
| 17135 | en | 风格 | 让·拉纳元帅 | Marshal Jean Lannes → 当前可接受 |
|
||||
| 17151 | kr | 风格 | 染红月光的阿尔科莱 | 달빛에 물든 아르콜레 → 달빛을 붉게 물들이는 아르콜레 |
|
||||
| 17158 | kr | 风格 | 蒂尔西特土著神 | 틸지트 토착신 → 当前可接受 |
|
||||
| 17170 | kr | 风格 | 南方的闺房 | 남방의 규방 → 当前可接受 |
|
||||
| 17192 | kr | 风格 | 拿破仑博物馆 | 나폴레옹 박물관 → 当前可接受 |
|
||||
| 17207 | kr | 风格 | 德意志的第一束光 | 도이칠란트의 첫 번째 빛 → 독일의 첫 번째 빛 |
|
||||
| 17222 | kr | 风格 | 博登湖畔日夜轰鸣 | 보덴 호수가 밤낮으로 울부짖다 → 보덴 호숫가에서 밤낮으로 울부짖다 |
|
||||
| 17226 | kr | 风格 | 文那家伙 | 아야 그 녀석 → 当前可接受 |
|
||||
| 17440 | kr | 不一致 / 风格 | 御柱古战场 | 온바시라 고전장 → 온바시라 고전장 (维持) |
|
||||
| 17527 | kr | 风格 / 偏好 | 日白残无 | 닛파쿠 잔무 → 닛파쿠 잔무 (维持) |
|
||||
| 17500 | en | 不自然 / 风格偏移 | 抱歉<br>贫僧略懂外交 | Sorry<br>Diplomacy is my passive skill → Sorry<br>This humble monk dabbles in diplomacy |
|
||||
| 17501 | en | 不一致 / 风格 | 本神略懂经营 | Sorry<br>This God specializes in Management → Sorry<br>Management is my main spec |
|
||||
| 17873 | kr | 不自然 / 风格 | 后 | 후 → 퀸 / 후(왕비) |
|
||||
| 17876 | kr | 不自然 / 风格 | 车 | 차 → 룩 |
|
||||
| 17865 | jp | 风格 (确认) | 神签 | おみくじ → おみくじ (维持) |
|
||||
|
||||
## P2-D02 翻译微调/不自然但可接受 (116 条)
|
||||
**修复方式**: 可商榷
|
||||
|
||||
| ID | lang | code | 中文 | 当前 → 建议 |
|
||||
|---|---|---|---|---|
|
||||
| 434 | kr | 不自然 | 在己方领土上则额外恢复2点生命值。 | 아군 영토에서는 HP 2를 추가로 회복한다. → 자국 영토에서는 추가로 HP를 2 회복한다. |
|
||||
| 519 | jp | 不自然 | 遇到新的文明! | 新文明と遭遇 → 新たな文明と遭遇! |
|
||||
| 765 | kr | 不自然(可商榷) | 赞詹 | 잔잔 → 잔잔 或 잔잔(确认) |
|
||||
| 924 | jp | 不自然 | 关门!放铃仙! | 閉めろ!レイセンを解き放て! → 門を閉めろ!レイセンを放て! |
|
||||
| 924 | kr | 不自然 | 关门!放铃仙! | 문 잠궈! 레이센, 가라! → 문 닫아! 레이센, 나가라! / 문 잠가! 레이센, 가라! |
|
||||
| 932 | kr | 不自然(可商榷) | 可别挡了山神的路。 | 산신의 길을 막지 않는 게 좋을걸. → 산신의 앞길을 막지 마라. |
|
||||
| 938 | kr | 不自然 | 这游戏应该允许我直接胜利。 | 이 게임은 나를 즉시 승리시켜 줘야 해. → 이 게임, 나한테 즉시 승리를 허용해야지. |
|
||||
| 943 | kr | 不自然 | 这个世界,忘记了山神的重量…… | 이 세계는 산신의 무게를 잊어버린 모양이군... → 이 세계는 산신의 무게를 잊어버렸군... |
|
||||
| 975 | en | 不自然 | 来得正好,让老身活动活动筋骨。 | You've come at the perfect time, let this old body → You've come at the perfect time. Let this old body |
|
||||
| 976 | kr | 不自然 | 别怪老身不留情面。 | 사정 봐주지 않아도 원망치 마라. → 사정 봐주지 않을 테니 원망 말거라. |
|
||||
| 1066 | jp | 不自然 | 又见面了,大小姐 | また会いましたね、お嬢様 → またお会いしましたね、お嬢様 |
|
||||
| 1085 | en | 不自然 | 普塔创世 | Ptah's Creation → The Creation of Ptah / Ptah Creates the World |
|
||||
| 1091 | jp | 不自然 | 努比亚你怕不怕? | ヌビア、怖いか? → ヌビア、ビビってんのか? |
|
||||
| 1166 | jp | 不自然 / 用词 | 可以训练卡拉克,可以进入深海区域 | カラックを生産可能、外洋に進入可能 → 保留 / カラック船を生産可能 |
|
||||
| 1194 | en | 不自然 | 获得10金币的奖励 | Grants a reward of 10 Gold → 保留 |
|
||||
| 1228 | en | 不自然 | 学习**<捕鱼>**科技后可执行。收获**<鱼群>**资源 | Available after researching **<Fish>** technology. → Available after researching **<Fishing>** technolo |
|
||||
| 1229 | tw | 不自然 | 收获**<蔬果>**资源 | 收穫**<蔬果>**資源 → 收穫**<蔬果>**資源 (OK) / 收穫**<蔬果>** |
|
||||
| 1264 | jp | 不自然 | 游骑兵 | → 偵察騎兵 / ライダー |
|
||||
| 1279 | jp | 不自然 / 漏译梗 | 咲夜,把我的意大利炮搬上来! | さくや、私のあのイタリア砲を持ってきなさい! → 咲夜、私のイタリア砲を持ってきなさい! |
|
||||
| 1280 | jp | 不自然 | 啧,冥王什么的真不吉利呢。 | ちっ、冥王なんて縁起が悪いわね。 → 保留 |
|
||||
| 1284 | en | 不自然 / 文化语境 | 喝十瓶国士无双你也赢不了哦~ | Drink ten bottles of "Nation's Best" and you still → Drink ten bottles of Kokushi Musou and you still w |
|
||||
| 1284 | kr | 不自然 | 喝十瓶国士无双你也赢不了哦~ | 국사무쌍을 열 병 마셔도 넌 못 이겨~ → 保留 |
|
||||
| 1297 | jp | 不自然 | 你们可别得意忘形了! | 調子に乗るんじゃない! → 保留 |
|
||||
| 1416 | jp | 不自然 | 可使得陆地单位在浅海上行走。 | 陸上ユニットが浅瀬を移動できるようにする → 陸上ユニットが浅瀬を移動できるようになる。 |
|
||||
| 1421 | jp | 不自然 | 可捕获鲸鱼获得金钱。需**<战舰>**科技。 | 鯨を捕獲して金銭を獲得できる。**<戦艦>**科学が必要 → 鯨を捕獲してゴールドを獲得できる。**<戦艦>**科技が必要。 |
|
||||
| 1393 | kr | 不自然 | 重玩本回合 | 재시작 → 이번 턴 다시 시작 / 턴 재시작 |
|
||||
| 1396 | jp | 不自然 | 修复了科技树点击的若干bug | 科学ツリーのクリックに関する複数のバグ → テクノロジーツリーのクリックに関する複数のバグ |
|
||||
| 1457 | jp | 不自然 | 无主领土 | 未領有地 → 未占領地 / 無主の地 |
|
||||
| 1527 | tw | 不自然 | 彩光莲华掌 | 彩光蓮華掌 → 保留 |
|
||||
| 1532 | jp | 不自然 / 用词 | 移动时失去2点生命。 | 移動時にHPを2ポイント失う。 → 移動時にHP2を失う。 |
|
||||
| 1550 | jp | 不自然 | 移动到友方伟人附近后可再攻击一次。 | 味方の偉人の近くに移動後、もう一度攻撃可能。 → 保留 |
|
||||
| 1606 | en | 不自然 | 保持5回合不主动攻击 | Maintain 5 turns without initiating attacks → Go 5 turns without initiating an attack |
|
||||
| 1611 | jp | 不自然 | 拥有一座6级及以上的城市 | Lv.6以上の都市を1つ所有すれば → 保留 |
|
||||
| 1666 | jp | 不一致 / 不自然 | 敌视 | 敵視 → 保留 |
|
||||
| 1683 | kr | 不自然 / 漏字 | 强制跳过本回合 | 강제로 건너뜁니다 → 강제로 이번 턴을 건너뜁니다 / 강제로 본 턴을 건너뜁니다 |
|
||||
| 1736 | jp | 不自然 | 观望 | 様子見 → 保留 |
|
||||
| 1738 | kr | 不自然 | 游戏结束了哦。这个剧本我玩腻了。 | 게임은 끝났어. 이 시나리오는 이제 질렸거든. → 保留 |
|
||||
| 1742 | jp | 不自然 | 谁都将化作尘土——除非你与"永远"同行。 | 誰もが塵となる――"永遠"と共に行かない限りはね。 → 誰もが塵となる――"永遠"と共に歩まぬ限りはな。 |
|
||||
| 1743 | kr | 不自然 | 准了。这是你的荣幸。 | 허가하마. 너에겐 영광인 줄 알아라. → 보존 |
|
||||
| 1746 | jp | 不自然 | 须臾之物,也妄图染指永恒? | 束の間の者よ、永遠に手を染めようというのか? → 束の間の者が、永遠に手を出そうというのか? / 束の間の存在が、永遠を汚そうというのか? |
|
||||
| 1755 | jp | 不自然 | 至少比路边的杂草多了几分看头。 | せめて道端の雑草よりは幾分か見応えがあるな。 → 保留 |
|
||||
| 1763 | kr | 不自然 | 给你们见识一下月之贤者的"款待"吧。 | 달의 현자의 '대접'을 보여주지. → 달의 현자의 '환대'를 보여주지. |
|
||||
| 1763 | jp | 不自然 | 让你们见识一下月之贤者的"款待"吧。 | 月の賢者の『もてなし』を味わわせてやろう。 → 保留 |
|
||||
| 1767 | jp | 不自然 / 角色音 | 为了大多数人的利益,总要有人被'优化'掉的。 | 大多数の利益のためには、誰かが「最適化」されなければならないのです。 → 保留 |
|
||||
| 1772 | jp | 不自然 | 明智的决定。让我们来谈谈下一步的'产业升级'吧。 | 賢明な判断です。さて、次の「産業アップグレード」について話をしましょう。 → 保留 |
|
||||
| 1781 | jp | 不自然 | 这基建的速度……我得派河童们来贵国学习交流一下。 | このインフラ整備の速度……私は我が国の河童たちを派遣し、貴国で学び交流させなければなりません。 → このインフラの速度……うちの河童たちを貴国に派遣して、学ばせなきゃね。 |
|
||||
| 1790 | jp | 不自然 | 我正在规划下一代御柱的发射轨道,正好你首都上空挺空旷的。 | 私は次世代の御柱の射出軌道を計画中だ。ちょうどお前の首都の上空が空いてるね。 → 保留 |
|
||||
| 1791 | kr | 不自然 | 别挣扎了。我的信仰是核聚变驱动的,你的呢? | 발버둥 치지 마. 내 신앙은 핵융합으로 구동되는데, 당신 건 어떤가? → 保留 |
|
||||
| 1792 | jp | 不自然 | 我们的思想已经分岔,同盟就到此为止吧。 | 我々の思想は分岐した。同盟はここまでだ。 → 保留 |
|
||||
| 1817 | jp | 不自然 | 抱歉啦,维持幻想乡的平衡更重要呢。 | ごめんね、幻想郷のバランスを保つのが大事だから。 → 保留 |
|
||||
|
||||
(还有 66 条未列出)
|
||||
|
||||
|
||||
## P2-D03 术语同义词替换(不一致但都可接受) (36 条)
|
||||
**修复方式**: 统一术语
|
||||
|
||||
| ID | lang | code | 中文 | 当前 → 建议 |
|
||||
|---|---|---|---|---|
|
||||
| 395 | kr | 不一致(潜在) | 巨人 | 거인 → 거인(保留) |
|
||||
| 486 | jp | 不一致 | 采矿 | 採鉱 → 採鉱(保留) |
|
||||
| 620 | tw | 不一致(地名用字) | 布雷斯特 | 布列斯特 → 布雷斯特 |
|
||||
| 695 | tw | 不一致 | 博德 | 博多 → 博德 |
|
||||
| 695 | tw | 不一致(参见 seg_004 也已记录) | 博德 | 博多 → 博德 |
|
||||
| 717 | tw | 不一致 | 伯明翰 | 伯明罕 → 伯明翰 |
|
||||
| 738 | tw | 不一致(人名/地名选字) | 阿伯丁 | 亞伯丁 → 阿伯丁 |
|
||||
| 785 | kr | 不一致 | 哈德良堡 | 에디르네 → 아드리아노폴리스(保持) 或 에디르네(保留) |
|
||||
| 846 | jp | 不一致(标签内部) | ...**<冲刺>**和**<城防>**... | **<ダッシュ>**と**<城防>** → 不审查(按规则跳过<...>内部) |
|
||||
| 1356 | 所有 | 信息冲突(与游戏阶段不一致) | DEMO | DEMO |
|
||||
| 2104 | kr | 不一致 | 竹林欺诈师-劫富济贫 | 대나무 숲의 사기꾼 - 부자에게서 빼앗아 가난한 자에게 → 대나무 숲 사기꾼 - 부자에게서 빼앗아 가난한 자에게 |
|
||||
| 16850 | tw | 不一致 | 海上超强远程单位 | 海上超強遠端單位 → 海上超強遠程單位 / 海上超強遠距離單位 |
|
||||
| 16944 | tw | 不一致 | 远程单位 | 遠端單位 → 遠程單位 / 遠距離單位 |
|
||||
| 16940 | jp | 不一致 | 仅水域 | 水域のみ → 当前可接受 |
|
||||
| 17304 | en | 不一致 | 猿田彦的先导 | Herald of Sarutahiko → Sarutahiko's Guidance |
|
||||
| 17876 | kr | 不一致 | 车 | 차 → 룩 (或维持现有 차) |
|
||||
| 17475 | kr | 不一致 | 我们守矢 | 우리 모리야 → 우리 모리야 신사 |
|
||||
| 17638 | jp | 不一致 | 冶炼区 | 製錬区 → 製錬区 (维持) 但需与 17426/Forge 上下文核对 |
|
||||
| 17831 | kr | 不一致 | 正法 | 정법 → 정법 (维持) 或 진정한 다르마 |
|
||||
| 18526 | kr | 不一致 | [能力:咲夜的世界] | [능력:사쿠야의 세계] → (无需改) |
|
||||
| 18698 | en | 不一致 | 印度文明战争奇观 | India War Wonder → Indian civilization War Wonder |
|
||||
| 18699 | en | 不一致 | 印度文明文化奇观 | India Culture Wonder → Indian civilization Culture Wonder |
|
||||
| 18717 | kr | 不一致 | 王之神像 | 왕의 신상 → 保持 |
|
||||
| 18828 | kr | 不一致 | 古明地帝国特色重骑兵单位。拥有特色能力**<三界沉沦>**。 | 코메이지 제국 특색 중기병 유닛. 특색 능력 **<삼계침륜>** 보유 → 末尾补「.」 |
|
||||
| 18937 | jp | 不一致 | 博丽灵梦(木偶) | 博麗霊夢(人形) → 保持 |
|
||||
| 18937 | en | 不一致(次要) | 博丽灵梦(木偶) Lv.2 | Reimu Hakurei (Puppet) Lv.2 → 保持 |
|
||||
| 19068 | tw | 不一致 | 巴马科 | 巴馬科 → 巴馬科 |
|
||||
| 19074 | tw | 不一致 | 库利科罗 | 庫利柯洛 → 庫利科羅 |
|
||||
| 19101 | tw | 不一致 | 迈索尼 | 邁索尼 → 邁索尼(保持)/ 美索尼 |
|
||||
| 19215 | tw | 不一致 | 乌里雅苏台 | 烏里雅蘇臺 → 烏里雅蘇臺(可接受) |
|
||||
| 19273 | kr | 不一致 | 阿燐 | 오린 → 保持 오린(火焰猫燐 = 카엔뵤 린 / 오린爱称可接) |
|
||||
| 19563 | en | 不一致 | 每回合首次移动后,获得**<无意识的脚步>** | Gain **<Unconscious Steps>** after first move each → (核查)确认 `<无意识的脚步>` 在英文里的统一译名是 `Unconscious Steps`。 |
|
||||
| 19618 | kr | 不一致 | 点击查询创意工坊 | 클릭하여 스팀 창작마당 조회 → 클릭하여 스팀 창작마당 검색 |
|
||||
| 19663 | jp | 不一致 | 上传MOD | MODをアップロード → MODをアップロード(OK) |
|
||||
| 19851 | en | 不一致 | Confirm | Confirm → Confirm(OK) |
|
||||
| 19853 | tw | 不一致 | <color=orange>自定义模式</color> | <color=orange>自訂模式</color> → 自訂模式(OK,台湾本地化) |
|
||||
|
||||
## P2-D05 边缘错译/添字/漏字 (11 条)
|
||||
**修复方式**: 逐条看
|
||||
|
||||
| ID | lang | code | 中文 | 当前 → 建议 |
|
||||
|---|---|---|---|---|
|
||||
| 1045 | zh | 添字 / 信息冲突 | 饰演<color=red>阿努比斯</color>的人类少女。她本是红魔馆服侍蕾 | 见原文(角色为咲夜) |
|
||||
| 1110 | kr | 漏译(角色名缩写) | ...为了那座"高雅"的冠军奖杯而参赛。 | '우아한' 우승 트로피를 위해 참전했다. → 保留 |
|
||||
| 16934 | tw | 错译 | 着重于城市生产效率 | 着重於城市生產效率 → 著重於城市生產效率 |
|
||||
| 17181 | tw | 错译 | 阿拜多斯王表 | 阿拜多斯王表 → 阿拜多斯王名表 / 阿拜多斯王表(保留亦可) |
|
||||
| 18514 | kr | 错译 | [能力:四重存在] | [능력:사중 존재] → 保持现状 |
|
||||
| 19788 | en | 添字 | 角色立绘//主KV | Character Art // Main Key Visual → Character Art / Main Key Visual |
|
||||
| 19788 | jp | 添字 | 角色立绘//主KV | キャラクター立ち絵 // メインキービジュアル → キャラクター立ち絵 / メインキービジュアル |
|
||||
| 19788 | kr | 添字 | 角色立绘//主KV | 캐릭터 일러스트 // 메인 키 비주얼 → 캐릭터 일러스트 / 메인 키 비주얼 |
|
||||
| 19759 | all | 漏译 | Shenlan | 5 种语言都是 `Shenlan` → 若为内部调试 Action,保留可接受;否则按语言音译 |
|
||||
| 19760 | all | 漏译 | Toggle Shenlan visual skill on/off | 5 种语言都是英文 → 同 19759,若内部调试可保留,否则翻译 |
|
||||
| 19821 | all | 漏译 | X | 5 种语言都是 `X` → 这是关闭按钮符号,保留 `X` 即可 |
|
||||
|
||||
## P2-D06 繁中(简繁/台湾本地化) (5 条)
|
||||
**修复方式**: 台湾本地化
|
||||
|
||||
| ID | lang | code | 中文 | 当前 → 建议 |
|
||||
|---|---|---|---|---|
|
||||
| 771 | tw | 错字(参考) | 博鲁杰尔德 | 博魯傑爾德 → 博魯傑爾德(保留) |
|
||||
| 17238 | tw | 重复条目 | 哼哼,这可是我重金买通裁判选到的最强阵营……你说我被骗了?不、不可能! | 与 17077 内容几乎相同 → 跨条目无翻译错误,仅注意是同一台词的两处使用,应保持完全一致。 |
|
||||
| 17561 | tw | 漏字 | 关闭窗口 | 關閉 → 關閉視窗 |
|
||||
| 17527 | tw | 漏字 | 日白残无 | 日白殘無 → 日白殘無 (确认) |
|
||||
| 17715 | tw | 简繁错转 | 古明地觉 | 古明地覺 → 古明地覺 (确认 OK) |
|
||||
|
||||
## P2-D99 其他未归类 (14 条)
|
||||
**修复方式**: 逐条
|
||||
|
||||
| ID | lang | code | 中文 | 当前 → 建议 |
|
||||
|---|---|---|---|---|
|
||||
| 984 | jp | 漏字(句末标点) | 这是一片平原区域。解锁高阶科技完成更多建设活动。 | これは平原エリアである。高度な技術を解放し、より多くの建設活動を行おう → 句末加「。」 |
|
||||
| 1011 | jp | 漏字(标点) | 需要恢复! | 回復が必要 → 回復が必要! |
|
||||
| 1330 | jp | 漏字(标点) | 基础海上单位。拥有2移动力,无法攻击。 | 基本的な海上ユニット。移動力2を持ち、攻撃不可 → 句末加「。」 |
|
||||
| 1385 | zh | 漏字(标点) | 可以建造**<军港>**所有单位获得海洋防御 | → 可以建造**<军港>**。所有单位获得海洋防御。 |
|
||||
| 1622 | 所有 | 非翻译内容(Debug 调试文本) | | DebugText |
|
||||
| 1623 | 所有 | 非翻译内容(测试 UI) | | 测试新版UI系统 |
|
||||
| 1618 | 所有 | 非翻译内容(Debug 文本) | | CID=11 PID=11 CIV=0 PW=20... |
|
||||
| 16624 | all | 漏字 | 妖怪兔近卫队忠诚可靠,妖怪兔近卫队忠诚可靠,……(11次重复) | 各语言均忠实重复 11 次「妖怪兔近卫队忠诚可靠」 → 确认中文原文是否为测试占位文本;如果是正式文案应改写 |
|
||||
| 9706 | zh | 漏字 | 守矢冶炼业 | 守矢冶炼业 / 守矢冶鍊業 → 无须修改,但 9707 中"冶炼场"与 1929/2180 等位置的"冶炼厂"不一致 |
|
||||
| 17741 | all | 占位文本(已知) | ...[能力:待定]占位文本... | 各语言均原样翻译"占位文本"/"Placeholder text"/"占位文本"/"점유 텍스트" → 上线前应填入真实技能描述,否则会暴露开发占位符 |
|
||||
| 19042 | zh | 漏字 | 米拉多尔 | 米拉多爾(含繁中) → 埃尔米拉多尔 / 艾爾米拉多爾 |
|
||||
| 19283 | jp | 漏字 | 大赛主办方提供的代理木偶。 | 大会主催者が提供する代理人形 → 大会主催者が提供する代理人形。 |
|
||||
| 19435 | jp | 漏字 | 获得随机科技! | ランダムな科学技術を獲得 → ランダムな科学技術を獲得! |
|
||||
| 19439 | jp | 漏字 | 首都获得3点城市发展度! | 首都が3ポイントの都市発展度を獲得 → 首都が3ポイントの都市発展度を獲得! |
|
||||
96
Tools/Multilingual_P2_Mechanical_Fix_Report.md
Normal file
96
Tools/Multilingual_P2_Mechanical_Fix_Report.md
Normal file
@ -0,0 +1,96 @@
|
||||
# TH1 多语言 P2 阶段 - 第一批机械修复报告
|
||||
|
||||
- 日期:2026-05-15
|
||||
- 范围:`decisions_p2.md` 中标记为 [✅] 的机械修复(D03 / D05 / D99)
|
||||
- 排除:D01(27 条风格/敬语重译)、D02(116 条翻译微调),由另一个 agent 处理
|
||||
- 脚本:`C:\TH1\TH1\Tools\multilingual_check\apply_p2_mechanical.py`
|
||||
- 目标表:`C:\TH1\TH1\Tools\Multilingual.xlsx`
|
||||
- 备份:`C:\TH1\TH1\Tools\Multilingual.before_p2_2026-05-15.bak.xlsx`
|
||||
|
||||
---
|
||||
|
||||
## 统计
|
||||
|
||||
| 状态 | 数量 |
|
||||
|---|---|
|
||||
| SUCCESS | 15 |
|
||||
| NOOP | 0 |
|
||||
| FAIL | 0 |
|
||||
| **TOTAL** | **15** |
|
||||
|
||||
按分类:
|
||||
|
||||
| 分类 | 计划 | SUCCESS | NOOP | FAIL |
|
||||
|---|---|---|---|---|
|
||||
| D03 繁中术语/地名 | 5 | 5 | 0 | 0 |
|
||||
| D05 分隔符 `//` → `/` | 3 | 3 | 0 | 0 |
|
||||
| D99 标点(JP/ZH 补 。/!) | 7 | 7 | 0 | 0 |
|
||||
|
||||
---
|
||||
|
||||
## 详细变更
|
||||
|
||||
### D03 繁中术语/地名(TW 列,5 条)
|
||||
|
||||
| # | ID | row | before | after | 说明 |
|
||||
|---|---|---|---|---|---|
|
||||
| 1 | 16850 | 1554 | `海上超強遠端單位。擁有2移動力3.5攻擊力3射程和**<濺射>**技能。無法反擊。` | `海上超強遠距離單位。擁有2移動力3.5攻擊力3射程和**<濺射>**技能。無法反擊。` | 遠端 → 遠距離(Ranged 在繁中惯用「遠距離」) |
|
||||
| 2 | 16944 | 1643 | `遠端單位,擁有2射程和**<移動攻擊>**、**<城防>**技能。` | `遠距離單位,擁有2射程和**<移動攻擊>**、**<城防>**技能。` | 同上 |
|
||||
| 3 | 717 | 347 | `伯明罕` | `伯明翰` | 英国 Birmingham 繁中惯例 |
|
||||
| 4 | 738 | 368 | `亞伯丁` | `阿伯丁` | 苏格兰 Aberdeen 繁中惯例 |
|
||||
| 5 | 695 | 325 | `博多` | `博德` | 挪威 Bodø;与 ZH 列「博德」一致 |
|
||||
|
||||
### D05 分隔符 `//` → `/`(ID=19788,3 列)
|
||||
|
||||
| # | ID | 列 | before | after |
|
||||
|---|---|---|---|---|
|
||||
| 6 | 19788 | EN | `Character Art // Main Key Visual` | `Character Art / Main Key Visual` |
|
||||
| 7 | 19788 | JP | `キャラクター立ち絵 // メインキービジュアル` | `キャラクター立ち絵 / メインキービジュアル` |
|
||||
| 8 | 19788 | KR | `캐릭터 일러스트 // 메인 키 비주얼` | `캐릭터 일러스트 / 메인 키 비주얼` |
|
||||
|
||||
### D99 标点(JP 6 条 + ZH 1 条 = 7 条)
|
||||
|
||||
| # | ID | 列 | before | after |
|
||||
|---|---|---|---|---|
|
||||
| 9 | 984 | JP | `これは平原エリアである。高度な技術を解放し、より多くの建設活動を行おう` | `これは平原エリアである。高度な技術を解放し、より多くの建設活動を行おう。` |
|
||||
| 10 | 1011 | JP | `回復が必要` | `回復が必要!` |
|
||||
| 11 | 1330 | JP | `基本的な海上ユニット。移動力2を持ち、攻撃不可` | `基本的な海上ユニット。移動力2を持ち、攻撃不可。` |
|
||||
| 12 | 19283 | JP | `大会主催者が提供する代理人形` | `大会主催者が提供する代理人形。` |
|
||||
| 13 | 19435 | JP | `ランダムな科学技術を獲得` | `ランダムな科学技術を獲得!` |
|
||||
| 14 | 19439 | JP | `首都が3ポイントの都市発展度を獲得` | `首都が3ポイントの都市発展度を獲得!` |
|
||||
| 15 | 1385 | ZH | `可以建造**<军港>**所有单位获得海洋防御` | `可以建造**<军港>**。所有单位获得海洋防御。` |
|
||||
|
||||
---
|
||||
|
||||
## 安全策略
|
||||
|
||||
脚本对每条任务采用了**精确匹配**的写入策略,避免误伤:
|
||||
|
||||
- `replace_substr` 类(D03):在原文中查找指定子串,找不到则 NOOP,绝不改动其他字符。
|
||||
- `set_exact` 类(D05、ID=1011/1385 等):要求当前单元格值与预期 before 完全相等,否则报 FAIL;防止上游已被改动的内容被覆盖。
|
||||
- `append` 类(D99 句末加 。/!):先判断是否已以目标后缀结尾,避免重复追加。
|
||||
|
||||
所有 `**<...>**` 标签均保留未动。
|
||||
|
||||
---
|
||||
|
||||
## 副观察(未处理,留给后续决策)
|
||||
|
||||
执行过程中发现以下"同结构异语"的问题,但**不在 decisions_p2.md 的勾选清单内**,故按指令严格执行未处理。建议后续走 D01/D02 重译或单独决策:
|
||||
|
||||
1. **ID=1385 同样问题存在于 TW/EN/JP/KR**:均为「可以建造 **<X>** 后面紧接子句但缺分隔标点」的结构。
|
||||
- TW: `可以建造**<軍港>**所有單位獲得海洋防禦`
|
||||
- EN: `Can construct **<Naval Port>**, all units gain Naval Defense`(逗号但缺句末句号)
|
||||
- JP: `**<軍港>**を建造可能。全ユニットが海洋防御を獲得`(末尾缺句号)
|
||||
- KR: `**<군항>** 건설 가능. 모든 유닛이 해양 방어를 획득한다.`(已 OK)
|
||||
|
||||
2. **ID=19788 TW 列同样含 `//`**:`角色立繪//主KV` —— 决策只列了 EN/JP/KR 三条,未改 TW。
|
||||
|
||||
3. ID=695 KR `보되` 拼写存疑(标准应为 `보되` 或 `보드`,Bodø),不在本批范围。
|
||||
|
||||
---
|
||||
|
||||
## 后续步骤
|
||||
|
||||
- D01(27 条)+ D02(116 条)的重译批由另一个 agent 处理。
|
||||
- 全部 P2 完成后建议跑一次多语言导表校验,检查 `**<...>**` 标签、`{0}/{1}` 占位符是否完整。
|
||||
167
Tools/Multilingual_P2_Retranslate_Report.md
Normal file
167
Tools/Multilingual_P2_Retranslate_Report.md
Normal file
@ -0,0 +1,167 @@
|
||||
# P2 重译/润色报告
|
||||
|
||||
**生成时间**: 2026-05-15
|
||||
**输入**: P2 D01(27) + D02(116) = 143 条候选
|
||||
**xlsx**: `Multilingual.xlsx`
|
||||
**备份**: `Multilingual.before_p2_2026-05-15.bak.xlsx`
|
||||
|
||||
## 统计
|
||||
|
||||
- SUCCESS : 48
|
||||
- SKIP : 95
|
||||
- NOOP : 0
|
||||
- FAIL : 0
|
||||
- TOTAL : 143
|
||||
|
||||
## SUCCESS (48 条)
|
||||
|
||||
| # | ID | bucket | lang | before | after | note |
|
||||
|---|---|---|---|---|---|---|
|
||||
| 2 | 16835 | D01 | JP | 真理は、ただ御柱の射程の内にのみある | 真理は、御柱の射程の内にしか存在しない | のみある结构生硬,改しか存在しない |
|
||||
| 3 | 16844 | D01 | KR | **<마>**클래스 영웅. 제국의 최속 기자. 전쟁은 곧 취재의 연장선—그녀는 범인이 따를 수 없는 속도로 | **<마>**클래스 영웅. 제국 최속의 기자. 전쟁은 곧 취재의 연장선—그녀는 범인이 따를 수 없는 속도로 | 최속 独立使用偏生,加 의 更自然 |
|
||||
| 9 | 17107 | D01 | TW | 埃及文明探索奇觀,提供3點城市發展值。<br> 冥神奧西里斯的象徵性陵墓,深藏于阿拜多斯聖地。<br> 其建築風格遠超所 | 埃及文明探索奇觀,提供3點城市發展值。<br> 冥神奧西里斯的象徵性陵墓,深藏於阿拜多斯聖地。<br> 其建築風格遠超所 | 繁中: 深藏于→深藏於 |
|
||||
| 10 | 17108 | D01 | TW | 法蘭西文明和平奇觀,提供3點城市發展值。<br> 歷代法國君主的狩獵行宮,遠離塵囂的權力別院。<br> 一個戰爭時代在此 | 法蘭西文明和平奇觀,提供3點城市發展值。<br> 歷代法國君主的狩獵行宮,遠離塵囂的權力別院。<br> 一個戰爭時代在此 | 繁中: 于此→於此 |
|
||||
| 12 | 17123 | D01 | TW | 德意志文明探索奇觀,提供3點城市發展值。<br> 其名源于齊柏林飛艇,人類早期航空探索的先驅。<br> 代表著那個征服天 | 德意志文明探索奇觀,提供3點城市發展值。<br> 其名源於齊柏林飛艇,人類早期航空探索的先驅。<br> 代表著那個征服天 | 繁中: 源于→源於 |
|
||||
| 14 | 17151 | D01 | KR | 달빛에 물든 아르콜레 | 달빛을 붉게 물들이는 아르콜레 | 被动→主动,原意是"染红月光" |
|
||||
| 18 | 17207 | D01 | KR | 도이칠란트의 첫 번째 빛 | 독일의 첫 번째 빛 | 韩文一般用 독일 |
|
||||
| 19 | 17222 | D01 | KR | 보덴 호수가 밤낮으로 울부짖다 | 보덴 호숫가에서 밤낮으로 울부짖다 | 호수가(主格助词)与 호숫가(湖畔)区别 |
|
||||
| 23 | 17500 | D01 | EN | Sorry<br>Diplomacy is my passive skill | Sorry<br>This humble monk dabbles in diplomacy | 保留 贫僧 角色身份 |
|
||||
| 24 | 17501 | D01 | EN | Sorry<br>This God specializes in Management | Sorry<br>Management is my main spec | 与 17499/17500 游戏术语自嘲风格统一 |
|
||||
| 29 | 434 | D02 | KR | HP 2 회복. 아군 영토에서는 HP 2를 추가로 회복한다. | HP 2 회복. 자국 영토에서는 추가로 HP를 2 회복한다. | 자국 영토 在策略游戏中更常见 |
|
||||
| 30 | 519 | D02 | JP | 新文明と遭遇 | 新たな文明と遭遇! | 补感叹号,与其他语言一致 |
|
||||
| 32 | 924 | D02 | JP | 閉めろ!レイセンを解き放て! | 門を閉めろ!レイセンを放て! | 補门,解き放て改放て更轻松调皮 |
|
||||
| 33 | 924 | D02 | KR | 문 잠궈! 레이센, 가라! | 문 잠가! 레이센, 나가라! | 잠궈拼写错误→잠가 |
|
||||
| 34 | 932 | D02 | KR | 산신의 길을 막지 않는 게 좋을걸. | 산신의 앞길을 막지 마라. | 增加山神威严感 |
|
||||
| 36 | 943 | D02 | KR | 이 세계는 산신의 무게를 잊어버린 모양이군... | 이 세계는 산신의 무게를 잊어버렸군... | 山神不该用推测语气 |
|
||||
| 37 | 975 | D02 | EN | You've come at the perfect time, let this old body move its | You've come at the perfect time. Let this old body stretch i | move its joints 生硬,改 stretch its bones |
|
||||
| 38 | 976 | D02 | KR | 사정 봐주지 않아도 원망치 마라. | 사정 봐주지 않을 테니 원망 말거라. | 逻辑改顺 |
|
||||
| 39 | 1066 | D02 | JP | また会いましたね、お嬢様 | またお会いしましたね、お嬢様 | 对大小姐用敬体(咲夜口吻) |
|
||||
| 40 | 1085 | D02 | EN | Ptah's Creation | The Creation of Ptah | 避免误读为"普塔的造物" |
|
||||
| 41 | 1091 | D02 | JP | ヌビア、怖いか? | ヌビア、ビビってんのか? | 增加挑衅口语感 |
|
||||
| 46 | 1264 | D02 | JP | 遊撃騎兵 | ライダー | 统一为 ライダー(与 1147/1173 一致) |
|
||||
| 47 | 1279 | D02 | JP | さくや、私のあのイタリア砲を持ってきなさい! | 咲夜、私のイタリア砲を持ってきなさい! | 角色名统一汉字 咲夜 |
|
||||
| 49 | 1284 | D02 | EN | Drink ten bottles of "Nation's Best" and you still won't win | Drink ten bottles of Kokushi Musou and you still won't win~ | 国士无双=Kokushi Musou音译,保留梗 |
|
||||
| 52 | 1416 | D02 | JP | 陸上ユニットが浅瀬を移動できるようにする | 陸上ユニットが浅瀬を移動できるようになる。 | 使役→自动 + 句末加。 |
|
||||
| 53 | 1421 | D02 | JP | 鯨を捕獲して金銭を獲得できる。**<戦艦>**科学が必要 | 鯨を捕獲してゴールドを獲得できる。**<戦艦>**科技が必要。 | 金銭→ゴールド,科学→科技 统一,加句号 |
|
||||
| 54 | 1393 | D02 | KR | 재시작 | 턴 재시작 | 补"턴"信息 |
|
||||
| 56 | 1457 | D02 | JP | 未領有地 | 未占領地 | 未領有偏古文 |
|
||||
| 58 | 1532 | D02 | JP | **<不動の大図書館>**:パッシブスキル。移動時にHPを2ポイント失う。**<アカデミー>**または**<都市中心>* | **<不動の大図書館>**:パッシブスキル。移動時にHP2を失う。**<アカデミー>**または**<都市中心>**にいる | 2ポイント冗长,统一简化 |
|
||||
| 60 | 1606 | D02 | EN | Complete the task to obtain the wonder **<{param}>**. Mainta | Complete the task to obtain the wonder **<{param}>**. Go 5 t | 更地道 |
|
||||
| 66 | 1742 | D02 | JP | 誰もが塵となる――“永遠”と共に行かない限りはね。 | 誰もが塵となる――“永遠”と共に歩まぬ限りはな。 | 蕾米古风威严 |
|
||||
| 68 | 1746 | D02 | JP | 束の間の者よ、永遠に手を染めようというのか? | 束の間の者が、永遠に手を出そうというのか? | 手を染める语义偏 |
|
||||
| 70 | 1763 | D02 | KR | 달의 현자의 ‘대접’을 보여주지. | 달의 현자의 ‘환대’를 보여주지. | 款待→환대更合适,助词 을→를 |
|
||||
| 74 | 1781 | D02 | JP | このインフラ整備の速度……私は我が国の河童たちを派遣し、貴国で学び交流させなければなりません。 | このインフラの速度……うちの河童たちを貴国に派遣して、学ばせなきゃね。 | 诹访子口吻稍随意 |
|
||||
| 90 | 1868 | D02 | KR | 천하의 형세란 나누어지면 합쳐지고, 합쳐지면 나누어지는 법. | 천하의 형세란 나뉜 지 오래면 반드시 합쳐지고, 합쳐진 지 오래면 반드시 나누어지는 법. | 补三国演义梗"久" |
|
||||
| 93 | 1872 | D02 | JP | 用事があれば直に我が名を呼べ、直ちに駆けつける。 | 用事があれば直に我が名を呼べ、本道、披風を翻して即刻参上する。 | 补"本道披风"梗 |
|
||||
| 95 | 2071 | D02 | KR | 감사의 표시로, 너를 위해 피날레의 셉텟을 연주해 주지. | 감사의 표시로, 너를 위해 종곡 7중주를 연주해 주지. | 避免双重外来语堆叠 |
|
||||
| 96 | 2057 | D02 | KR | 요괴토끼 근위는 충성스럽고 믿음직하며, 대나무숲 늑대 대령은 철같은 군기를 세우고, 제국 원수들은 용맹하게 | 요괴토끼 근위는 충성스럽고 믿음직하며, 대나무숲 늑대 대령은 철같은 군기를 세우고, 제국 원수들은 용맹하게 | 永夜=영야 与 1952 一致 |
|
||||
| 97 | 2200 | D02 | KR | 지면 오늘 저녁은 없는 줄 알아, 레이센~ | 지면 오늘 저녁은 없는 줄 알아, 레이센쨩~ | 补昵称色彩 |
|
||||
| 98 | 2151 | D02 | KR | 액티브 스킬. 수도와 연결된 도시 간을 텔레포트할 수 있다. | 액티브 스킬. 수도와 연결된 도시 사이로 텔레포트할 수 있다. | 도시 간을 텔레포트 助词搭配不当 |
|
||||
| 110 | 17467 | D02 | EN | I pray we may share our wisdom and seek the Tao together. | I pray we may share our thoughts and seek the Path beyond to | Tao 偏窄,神子非道家 |
|
||||
| 111 | 17517 | D02 | KR | 화과자 염보<br>비신, 동자까지 팔아넘기며 게임 입찰?!<br>새로운 현자 참전, 혼돈의 카오스!<br> | 하나가시 신문<br>비신, 동자까지 팔아넘기며 게임 입찰?!<br>새로운 현자 참전, 혼돈의 카오스!<br> | 避免被误解为日式甜点;改音译+신문 |
|
||||
| 113 | 17555 | D02 | JP | 公開設定 | プライバシー設定 | 私密性 ≠ 公开设置 |
|
||||
| 114 | 17600 | D02 | EN | War God possessed! | Channeling the War God! | possessed 被动负面感 |
|
||||
| 116 | 18094 | D02 | EN | Imperial Blood Monarch | Blood Monarch of the Empire | 避免被误读为"皇家血统" |
|
||||
| 117 | 18238 | D02 | KR | **<후>** 클래스 영웅. 제국의 본아. 세상을 노니는 크리슈나로, 천진난만한 모습으로 겹겹이 환영을 만들 | **<후>** 클래스 영웅. 제국의 이드. 세상을 노니는 크리슈나로, 천진난만한 모습으로 겹겹이 환영을 만들 | 本我Freud id 韩文常用 이드 |
|
||||
| 121 | 18695 | D02 | JP | インド文明の知識奇観、都市発展値3を提供<br>世界最古の大学の一つであり、仏教学術の頂点たる聖地<br>万の僧侶と賢者 | インド文明の知識奇観、都市発展値3を提供<br>世界最古の大学の一つであり、仏教学術の頂点たる聖地<br>万の僧侶と学者 | 学者更贴史实 |
|
||||
| 122 | 18695 | D02 | KR | 인도 문명 지식 불가사의, 도시 발전 수치 3점 제공.<br>세계 최초의 대학 중 하나로, 불교 학문의 정점 | 인도 문명 지식 불가사의, 도시 발전 수치 3점 제공.<br>세계 최초의 대학 중 하나로, 불교 학문의 정점 | 学者更贴史实 |
|
||||
|
||||
## SKIP (95 条)
|
||||
|
||||
| # | ID | bucket | lang | 跳过理由 |
|
||||
|---|---|---|---|---|
|
||||
| 1 | 16769 | D01 | EN | Windblast 可保留(东方原作术语) |
|
||||
| 4 | 16969 | D01 | KR | 当前可接受 |
|
||||
| 5 | 16966 | D01 | EN | 当前可接受 |
|
||||
| 6 | 17050 | D01 | EN | **<Our Hero>** 全表统一 UI 词,需在 UI 总表统一修改 |
|
||||
| 7 | 17079 | D01 | EN | Milady 符合规则 |
|
||||
| 8 | 17097 | D01 | JP | 鴉天狗 OK |
|
||||
| 11 | 17115 | D01 | TW | 同当前可接受 |
|
||||
| 13 | 17135 | D01 | EN | Marshal Jean Lannes 正确 |
|
||||
| 15 | 17158 | D01 | KR | 当前可接受 |
|
||||
| 16 | 17170 | D01 | KR | 当前可接受 |
|
||||
| 17 | 17192 | D01 | KR | 当前可接受 |
|
||||
| 20 | 17226 | D01 | KR | 当前可接受 |
|
||||
| 21 | 17440 | D01 | KR | 维持现状 |
|
||||
| 22 | 17527 | D01 | KR | 与权威规则一致 |
|
||||
| 25 | 17873 | D01 | KR | 单字风格统一,可接受 |
|
||||
| 26 | 17873 | D02 | KR | 与 D01 同一条目,已跳过 |
|
||||
| 27 | 17876 | D01 | KR | 单字风格统一,可接受 |
|
||||
| 28 | 17865 | D01 | JP | 维持 |
|
||||
| 31 | 765 | D02 | KR | 잔잔 正确 |
|
||||
| 35 | 938 | D02 | KR | 可保留(P2偏好) |
|
||||
| 42 | 1166 | D02 | JP | 可保留 |
|
||||
| 43 | 1194 | D02 | EN | OK |
|
||||
| 44 | 1228 | D02 | EN | **<Fish>** 是全表统一科技名,全表引用一致;保留 |
|
||||
| 45 | 1229 | D02 | TW | OK |
|
||||
| 48 | 1280 | D02 | JP | OK |
|
||||
| 50 | 1284 | D02 | KR | OK |
|
||||
| 51 | 1297 | D02 | JP | OK |
|
||||
| 55 | 1396 | D02 | JP | 表中已为 テクノロジーツリー,无需修改 |
|
||||
| 57 | 1527 | D02 | TW | OK |
|
||||
| 59 | 1550 | D02 | JP | OK |
|
||||
| 61 | 1611 | D02 | JP | OK |
|
||||
| 62 | 1666 | D02 | JP | OK |
|
||||
| 63 | 1683 | D02 | KR | 已含信息,撤回 |
|
||||
| 64 | 1736 | D02 | JP | OK |
|
||||
| 65 | 1738 | D02 | KR | OK |
|
||||
| 67 | 1743 | D02 | KR | OK |
|
||||
| 69 | 1755 | D02 | JP | OK |
|
||||
| 71 | 1763 | D02 | JP | OK |
|
||||
| 72 | 1767 | D02 | JP | OK |
|
||||
| 73 | 1772 | D02 | JP | OK |
|
||||
| 75 | 1790 | D02 | JP | OK |
|
||||
| 76 | 1791 | D02 | KR | OK |
|
||||
| 77 | 1792 | D02 | JP | OK |
|
||||
| 78 | 1817 | D02 | JP | OK |
|
||||
| 79 | 1818 | D02 | JP | OK |
|
||||
| 80 | 1820 | D02 | JP | OK |
|
||||
| 81 | 1822 | D02 | JP | OK |
|
||||
| 82 | 1830 | D02 | KR | OK |
|
||||
| 83 | 1841 | D02 | JP | OK |
|
||||
| 84 | 1843 | D02 | JP | OK |
|
||||
| 85 | 1848 | D02 | EN | OK |
|
||||
| 86 | 1853 | D02 | JP | OK |
|
||||
| 87 | 1854 | D02 | KR | OK |
|
||||
| 88 | 1857 | D02 | JP | OK |
|
||||
| 89 | 1866 | D02 | JP | OK |
|
||||
| 91 | 1869 | D02 | JP | OK |
|
||||
| 92 | 1871 | D02 | JP | OK |
|
||||
| 94 | 1872 | D02 | KR | OK 已保留披风梗 |
|
||||
| 99 | 16617 | D02 | ALL | UI 长度测试占位,留给策划 |
|
||||
| 100 | 16839 | D02 | KR | 可接受 |
|
||||
| 101 | 16970 | D02 | JP | 可接受 |
|
||||
| 102 | 17051 | D02 | KR | OK |
|
||||
| 103 | 17084 | D02 | KR | OK |
|
||||
| 104 | 17097 | D02 | KR | OK |
|
||||
| 105 | 17163 | D02 | TW | OK |
|
||||
| 106 | 17174 | D02 | JP | OK |
|
||||
| 107 | 17222 | D02 | TW | OK |
|
||||
| 108 | 17226 | D02 | JP | OK |
|
||||
| 109 | 17229 | D02 | EN | OK |
|
||||
| 112 | 17509 | D02 | ZH | 中文蓝本歧义,留给策划 |
|
||||
| 115 | 17647 | D02 | KR | 可接受 |
|
||||
| 118 | 18525 | D02 | EN | 保留 Perfect & Elegant Maid(与日文原作一致) |
|
||||
| 119 | 18688 | D02 | KR | 撤回 |
|
||||
| 120 | 18697 | D02 | EN | D03 同系列条目不修,单改会破坏一致性 |
|
||||
| 123 | 18696 | D02 | JP | 撤回 |
|
||||
| 124 | 18761 | D02 | ZH | 撤回 |
|
||||
| 125 | 18745 | D02 | JP | OK |
|
||||
| 126 | 18937 | D02 | KR | OK |
|
||||
| 127 | 18941 | D02 | JP | OK |
|
||||
| 128 | 18954 | D02 | ALL | 疑似 placeholder/demo,留给策划 |
|
||||
| 129 | 18996 | D02 | JP | 撤回 |
|
||||
| 130 | 19000 | D02 | KR | OK |
|
||||
| 131 | 19383 | D02 | JP | OK |
|
||||
| 132 | 19564 | D02 | KR | OK |
|
||||
| 133 | 19592 | D02 | JP | OK |
|
||||
| 134 | 19599 | D02 | JP | OK |
|
||||
| 135 | 19604 | D02 | JP | OK |
|
||||
| 136 | 19682 | D02 | JP | OK |
|
||||
| 137 | 19684 | D02 | JP | 可保留 |
|
||||
| 138 | 19808 | D02 | ALL | P2偏好题,保留现状更通顺 |
|
||||
| 139 | 19836 | D02 | JP | 风格偏好 |
|
||||
| 140 | 19792 | D02 | JP | OK |
|
||||
| 141 | 19853 | D02 | JP | OK |
|
||||
| 142 | 19845 | D02 | EN | OK |
|
||||
| 143 | 19845 | D02 | JP | OK |
|
||||
105
Tools/Multilingual_Verified_Issues.md
Normal file
105
Tools/Multilingual_Verified_Issues.md
Normal file
@ -0,0 +1,105 @@
|
||||
# 基于 VERIFIED_TERMS 的专名扫描报告
|
||||
|
||||
**生成时间**: 2026-05-14
|
||||
**总问题**: 57 P0=19 P1=38
|
||||
|
||||
## P0 按语言
|
||||
- 英文: 0
|
||||
- 日文: 0
|
||||
- 韩文: 19
|
||||
|
||||
## P0 高频错误译法 (Top 20)
|
||||
|
||||
| 中文术语 | 数量 |
|
||||
|---|---|
|
||||
| 因幡帝 | 11 |
|
||||
| 日白残无 | 10 |
|
||||
| 小恶魔 | 10 |
|
||||
| 红美铃 | 5 |
|
||||
| 赤口 | 4 |
|
||||
| 芙兰朵露 | 3 |
|
||||
| 西行寺幽幽子 | 2 |
|
||||
| 火焰猫燐 | 2 |
|
||||
| 古明地恋 | 2 |
|
||||
| 蓬莱山辉夜 | 2 |
|
||||
| 蕾米莉亚 | 1 |
|
||||
| 咲夜 | 1 |
|
||||
| 御射宫司 | 1 |
|
||||
| 雾雨魔理沙 | 1 |
|
||||
| 十六夜咲夜 | 1 |
|
||||
| 古明地觉 | 1 |
|
||||
|
||||
---
|
||||
|
||||
## P0 清单(必修,机械替换零风险)
|
||||
|
||||
共 19 条
|
||||
|
||||
| ID | 语言 | 术语 | 错误译法 → 正确译法 |
|
||||
|---|---|---|---|
|
||||
| 35 | 韩文 | 芙兰朵露 | `플란드르` → `플랑드르` |
|
||||
| 173 | 韩文 | 因幡帝 | `이나바 테이` → `이나바 테위` |
|
||||
| 2330 | 韩文 | 红美铃 | `홍미령` → `홍 메이링` |
|
||||
| 2391 | 韩文 | 芙兰朵露 | `플란드르` → `플랑드르` |
|
||||
| 2391 | 韩文 | 红美铃 | `홍미령` → `홍 메이링` |
|
||||
| 16842 | 韩文 | 赤口 | `적구` → `미샤구지` |
|
||||
| 16889 | 韩文 | 因幡帝 | `이나바 테이` → `이나바 테위` |
|
||||
| 16890 | 韩文 | 因幡帝 | `이나바 테이` → `이나바 테위` |
|
||||
| 16891 | 韩文 | 因幡帝 | `이나바 테이` → `이나바 테위` |
|
||||
| 16892 | 韩文 | 因幡帝 | `이나바 테이` → `이나바 테위` |
|
||||
| 17230 | 韩文 | 因幡帝 | `이나바 테이` → `이나바 테위` |
|
||||
| 17247 | 韩文 | 因幡帝 | `이나바 테이` → `이나바 테위` |
|
||||
| 17328 | 韩文 | 芙兰朵露 | `플란드르` → `플랑드르` |
|
||||
| 17329 | 韩文 | 红美铃 | `홍미령` → `홍 메이링` |
|
||||
| 18531 | 韩文 | 红美铃 | `홍미령` → `홍 메이링` |
|
||||
| 18535 | 韩文 | 红美铃 | `홍미령` → `홍 메이링` |
|
||||
| 18565 | 韩文 | 因幡帝 | `이나바 테이` → `이나바 테위` |
|
||||
| 19414 | 韩文 | 西行寺幽幽子 | `사이교지 유유코` → `사이교우지 유유코` |
|
||||
| 19830 | 韩文 | 蕾米莉亚 | `레미리아` → `레밀리아` |
|
||||
|
||||
---
|
||||
|
||||
## P1 清单(同义词/未用权威译法,可能误报)
|
||||
|
||||
共 38 条(数量大,按 ID 排序,仅前 200 条)
|
||||
|
||||
| ID | 语言 | 术语 | 当前 | 权威 |
|
||||
|---|---|---|---|---|
|
||||
| 203 | 英文 | 火焰猫燐 | Kaenbyou Rin | Rin Kaenbyou |
|
||||
| 482 | 日文 | 日白残无 | 日白残無 | 日白残夢 |
|
||||
| 1279 | 日文 | 咲夜 | さくや、私のあのイタリア砲を持ってきなさい! | 咲夜 |
|
||||
| 2383 | 英文 | 小恶魔 | Lesser Demon Priest | Koakuma |
|
||||
| 2383 | 韩文 | 小恶魔 | 소악마 사제 | 코아쿠마 |
|
||||
| 2384 | 英文 | 小恶魔 | The divine power of Bastet dwells within the body of a lesser demon. Among the s | Koakuma |
|
||||
| 2384 | 韩文 | 小恶魔 | 바스테트의 신성한 위력이 소악마의 몸에 깃들었다. 고요한 서재 속에서 그녀는 지식과 안식을 바치는 온순한 고양이지만, 주인의 명령이 떨어지면 잠 | 코아쿠마 |
|
||||
| 2391 | 英文 | 小恶魔 | V1.5.0 Patch Notes <size=36><b>[New Faction] Scarlet Empire</b></size> The sca | Koakuma |
|
||||
| 2391 | 韩文 | 小恶魔 | V1.5.0 패치 노트 <size=36><b>[신규 진영] 스칼렛 제국</b></size> 홍무가 나일 강 양안을 뒤덮고, 신들이 제국의 방 | 코아쿠마 |
|
||||
| 16724 | 韩文 | 赤口 | 아카구치님의 저주 | 미샤구지 |
|
||||
| 16726 | 韩文 | 赤口 | 아카구치님께 맡겨! | 미샤구지 |
|
||||
| 16842 | 英文 | 赤口 | **<Queen>** class hero. The Imperial Earth God. She is rooted in the deepest sha | Mishaguji |
|
||||
| 17009 | 英文 | 小恶魔 | Summon Lesser Devil Priest | Koakuma |
|
||||
| 17009 | 韩文 | 小恶魔 | 소악마 사제 소환 | 코아쿠마 |
|
||||
| 17010 | 英文 | 小恶魔 | When a Lv.4+ City levels up, you may choose to summon the Empire's unique Giant | Koakuma |
|
||||
| 17010 | 韩文 | 小恶魔 | Lv.4 이상 도시 레벨 업 시, 제국 특색 거인 유닛 **<소악마 사제>** 소환 선택 가능. 고양이신 형태로 아군을 치료하며, 사망 시 사자 | 코아쿠마 |
|
||||
| 17013 | 英文 | 御射宫司 | Summon Lord Mishot Gūji | Mishaguji |
|
||||
| 17527 | 英文 | 日白残无 | Nippaku Zanmu<br>Entry Confirmed! | Zanmu Nippaku |
|
||||
| 17527 | 日文 | 日白残无 | 日白残無<br>参戦確認! | 日白残夢 |
|
||||
| 17841 | 英文 | 古明地恋 | At the start of each turn, if the total number of Koishi and her avatars on the | Koishi Komeiji |
|
||||
| 18627 | 日文 | 日白残无 | ----[新規キャラ立ち絵]----日白残無 | 日白残夢 |
|
||||
| 18887 | 英文 | 火焰猫燐 | **<[Bishop] Class Hero>**. Only one **<Kaenbyou Rin>** can exist on the field. C | Rin Kaenbyou |
|
||||
| 18907 | 日文 | 蓬莱山辉夜 | 蓬萊山輝夜が永夜法典を発布し、永夜が全土を覆う領土内の全ての**<森林>**が**<竹林>**に転化され、**<動物>**は**<妖怪兎>**に転化される首都4 | 蓬莱山輝夜 |
|
||||
| 18964 | 日文 | 日白残无 | 日白残無(人形) Lv.1 | 日白残夢 |
|
||||
| 18965 | 日文 | 日白残无 | 日白残無(人形) Lv.2 | 日白残夢 |
|
||||
| 18966 | 日文 | 日白残无 | 日白残無(人形) Lv.3 | 日白残夢 |
|
||||
| 18967 | 日文 | 日白残无 | 日白残無(人形) Lv.4 | 日白残夢 |
|
||||
| 19286 | 日文 | 日白残无 | 日白残無(人形) | 日白残夢 |
|
||||
| 19388 | 英文 | 因幡帝 | Raising the lucky white flag, Tewi inspires the entire army with wonderful lies, | Tewi Inaba |
|
||||
| 19388 | 日文 | 因幡帝 | 幸運の白旗を掲げ、因幡帝が巧みな嘘で全軍を鼓舞し、1マス範囲内のすべての味方に1ターンの**<戦場連携>**・**<帝国の栄光>**・**<移動力アップ>**を | 因幡てゐ |
|
||||
| 19388 | 韩文 | 因幡帝 | 행운의 백기를 들어올리며, 이나바테이가 아름다운 거짓말로 전군을 고무시켜 1칸 범위 내 모든 아군에게 1턴간 **<전장 협동>**, **<제국의 | 이나바 테위 |
|
||||
| 19414 | 英文 | 西行寺幽幽子 | Saigyouji Yuyuko | Yuyuko Saigyouji |
|
||||
| 19429 | 英文 | 雾雨魔理沙 | Kirisame Marisa | Marisa Kirisame |
|
||||
| 19746 | 英文 | 十六夜咲夜 | [Beta 0.7.1g] Release Date: 2026.5.11 ------- [New Content] ------- 1. New BGM: | Sakuya Izayoi |
|
||||
| 19746 | 英文 | 蓬莱山辉夜 | [Beta 0.7.1g] Release Date: 2026.5.11 ------- [New Content] ------- 1. New BGM: | Kaguya Houraisan |
|
||||
| 19746 | 英文 | 古明地觉 | [Beta 0.7.1g] Release Date: 2026.5.11 ------- [New Content] ------- 1. New BGM: | Satori Komeiji |
|
||||
| 19746 | 英文 | 古明地恋 | [Beta 0.7.1g] Release Date: 2026.5.11 ------- [New Content] ------- 1. New BGM: | Koishi Komeiji |
|
||||
| 19746 | 英文 | 日白残无 | [Beta 0.7.1g] Release Date: 2026.5.11 ------- [New Content] ------- 1. New BGM: | Zanmu Nippaku |
|
||||
File diff suppressed because one or more lines are too long
86
Tools/multilingual_check/VERIFIED_TERMS.md
Normal file
86
Tools/multilingual_check/VERIFIED_TERMS.md
Normal file
@ -0,0 +1,86 @@
|
||||
# 已验证的东方专名清单(2026-05-14)
|
||||
|
||||
每条都附验证源 URL。本表是审查 Multilingual.xlsx 的**唯一权威**,不依赖项目内任何 xlsx。
|
||||
|
||||
## 红魔馆
|
||||
|
||||
| 中文 | English | 日本語 | 한국어 | 验证 |
|
||||
|---|---|---|---|---|
|
||||
| 芙兰朵露·斯卡雷特 | Flandre Scarlet | フランドール・スカーレット | **플랑드르 스칼렛** | https://ko.wikipedia.org/wiki/플랑드르_스칼렛 |
|
||||
| 蕾米莉亚·斯卡雷特 | Remilia Scarlet | レミリア・スカーレット | **레밀리아 스칼렛** | https://namu.wiki/w/레밀리아_스칼렛 |
|
||||
| 红美铃 | Hong Meiling | 紅美鈴 | **홍 메이링** | https://namu.wiki/w/홍_메이링 |
|
||||
| 帕秋莉·诺蕾姬 | Patchouli Knowledge | パチュリー・ノーレッジ | **파츄리 널리지** 或 파츄리 널릿지 都官方 | namu.wiki + 正版东方萌月抄/文化帖 |
|
||||
| 十六夜咲夜 | Sakuya Izayoi | 十六夜咲夜 | **이자요이 사쿠야** | https://namu.wiki/w/이자요이_사쿠야 |
|
||||
| 小恶魔 | Koakuma | 小悪魔 | **코아쿠마** | namu.wiki 通用 |
|
||||
|
||||
## 博丽神社 / 主角组
|
||||
|
||||
| 中文 | English | 日本語 | 한국어 | 验证 |
|
||||
|---|---|---|---|---|
|
||||
| 博丽灵梦 | Reimu Hakurei | 博麗霊夢 | **하쿠레이 레이무** | https://namu.wiki/w/하쿠레이_레이무 |
|
||||
| 雾雨魔理沙 | Marisa Kirisame | 霧雨魔理沙 | **키리사메 마리사** | https://namu.wiki/w/키리사메_마리사 |
|
||||
| 八云紫 | Yukari Yakumo | 八雲紫 | **야쿠모 유카리** | https://namu.wiki/w/야쿠모_유카리 |
|
||||
|
||||
## 永远亭
|
||||
|
||||
| 中文 | English | 日本語 | 한국어 | 验证 |
|
||||
|---|---|---|---|---|
|
||||
| 八意永琳 | Eirin Yagokoro | 八意永琳 | **야고코로 에이린** | https://namu.wiki/w/야고코로_에이린 |
|
||||
| 蓬莱山辉夜 | Kaguya Houraisan | 蓬莱山輝夜 | **호라이산 카구야** | https://namu.wiki/w/호라이산_카구야 |
|
||||
| 因幡帝 | Tewi Inaba | 因幡てゐ | **이나바 테위**(**不是** 테이) | https://namu.wiki/w/이나바_테위 |
|
||||
|
||||
## 守矢神社
|
||||
|
||||
| 中文 | English | 日本語 | 한국어 | 验证 |
|
||||
|---|---|---|---|---|
|
||||
| 八坂神奈子 | Kanako Yasaka | 八坂神奈子 | **야사카 카나코** | https://namu.wiki/w/야사카_카나코 |
|
||||
| 洩矢诹访子 | Suwako Moriya | 洩矢諏訪子 | **모리야 스와코** | https://namu.wiki/w/모리야_스와코 |
|
||||
|
||||
## 地灵殿
|
||||
|
||||
| 中文 | English | 日本語 | 한국어 | 验证 |
|
||||
|---|---|---|---|---|
|
||||
| 古明地觉 | Satori Komeiji | 古明地さとり | **코메이지 사토리** | https://namu.wiki/w/코메이지_사토리 |
|
||||
| 古明地恋 | Koishi Komeiji | 古明地こいし | **코메이지 코이시** | https://namu.wiki/w/코메이지_코이시 |
|
||||
| 火焰猫燐 | Rin Kaenbyou | 火焔猫燐 | **카엔뵤 린** | https://namu.wiki/w/카엔뵤_린 |
|
||||
|
||||
## 白玉楼
|
||||
|
||||
| 中文 | English | 日本語 | 한국어 | 验证 |
|
||||
|---|---|---|---|---|
|
||||
| 西行寺幽幽子 | Yuyuko Saigyouji | 西行寺幽々子 | **사이교우지 유유코**(**不是** 사이교지) | https://namu.wiki/w/사이교우지_유유코 |
|
||||
|
||||
## 地狱(TH19)
|
||||
|
||||
| 中文 | English | 日本語 | 한국어 | 验证 |
|
||||
|---|---|---|---|---|
|
||||
| 日白残无 | Zanmu Nippaku | 日白残夢 | **닛파쿠 잔무** | https://namu.wiki/w/닛파쿠_잔무 |
|
||||
|
||||
## 神祇
|
||||
|
||||
| 中文 | English | 日本語 | 한국어 | 验证 |
|
||||
|---|---|---|---|---|
|
||||
| 御射宫司大人=赤口大人 | Lord Mishaguji | ミシャグジ様/御射宮司様 | **미샤구지** | https://namu.wiki/w/신(동방_프로젝트) |
|
||||
|
||||
注:赤口(아카구치/Akaguchi)也是合法韩文/日文读法(pixiv 百科明确列出),但项目语境是诹访神(开发者已确认),统一为 Mishaguji 系列。
|
||||
|
||||
## 命名格式规律
|
||||
|
||||
- **英文**:日本人名一律「名 + 姓」(Marisa Kirisame / Reimu Hakurei / Yuyuko Saigyouji)
|
||||
- **韩文**:日本人名「姓 + 名」(키리사메 마리사 / 하쿠레이 레이무 / 사이교우지 유유코)
|
||||
- **中国人名**(仅红美铃):拼音(Hong Meiling),韩文音译加空格(홍 메이링)
|
||||
|
||||
## 项目内"专有名词表"已知错误(必修)
|
||||
|
||||
| 表行ID | 列 | 错误 | 正确 |
|
||||
|---|---|---|---|
|
||||
| 35 | 韩文 | 플란드르 | 플랑드르 |
|
||||
|
||||
## 此前规则文件 REVIEW_RULES.md 已知错误(已修正)
|
||||
|
||||
| 项目 | 错误 | 正确 |
|
||||
|---|---|---|
|
||||
| 芙兰朵露 韩文 | 플란드르 | 플랑드르 |
|
||||
| 蕾米莉亚 韩文 | 레미리아 | 레밀리아 |
|
||||
| 因幡帝 韩文 | 이나바 테이 | 이나바 테위 |
|
||||
| 西行寺幽幽子 韩文 | 사이교지 유유코 | 사이교우지 유유코 |
|
||||
Binary file not shown.
588
Tools/multilingual_check/all_rows_dump.txt
Normal file
588
Tools/multilingual_check/all_rows_dump.txt
Normal file
@ -0,0 +1,588 @@
|
||||
max_row=11, max_col=17
|
||||
|
||||
Header: ['ID', '活跃文本', '中文', '繁中', '英文', '日文', '韩文', '次要文案', '专有翻译', '台词', '台词说话者', '无需翻译', '自定义条目', '专有名词', '颜色', '图标', '备注']
|
||||
|
||||
|
||||
========= ROW 2 =========
|
||||
[1] ID: len=6
|
||||
19855
|
||||
---
|
||||
[2] 活跃文本: len=4
|
||||
True
|
||||
---
|
||||
[3] 中文: len=8
|
||||
蕾米莉亚斯卡雷特
|
||||
---
|
||||
[4] 繁中: None
|
||||
[5] 英文: None
|
||||
[6] 日文: None
|
||||
[7] 韩文: None
|
||||
[8] 次要文案: len=5
|
||||
False
|
||||
---
|
||||
[9] 专有翻译: len=5
|
||||
False
|
||||
---
|
||||
[10] 台词: len=5
|
||||
False
|
||||
---
|
||||
[11] 台词说话者: None
|
||||
[12] 无需翻译: len=5
|
||||
False
|
||||
---
|
||||
[13] 自定义条目: len=5
|
||||
False
|
||||
---
|
||||
[14] 专有名词: len=4
|
||||
True
|
||||
---
|
||||
[15] 颜色: None
|
||||
[16] 图标: None
|
||||
[17] 备注: None
|
||||
|
||||
========= ROW 3 =========
|
||||
[1] ID: len=5
|
||||
19857
|
||||
---
|
||||
[2] 活跃文本: len=4
|
||||
True
|
||||
---
|
||||
[3] 中文: len=8
|
||||
芙兰朵露斯卡雷特
|
||||
---
|
||||
[4] 繁中: None
|
||||
[5] 英文: None
|
||||
[6] 日文: None
|
||||
[7] 韩文: None
|
||||
[8] 次要文案: len=5
|
||||
False
|
||||
---
|
||||
[9] 专有翻译: len=5
|
||||
False
|
||||
---
|
||||
[10] 台词: len=5
|
||||
False
|
||||
---
|
||||
[11] 台词说话者: None
|
||||
[12] 无需翻译: len=5
|
||||
False
|
||||
---
|
||||
[13] 自定义条目: len=5
|
||||
False
|
||||
---
|
||||
[14] 专有名词: len=4
|
||||
True
|
||||
---
|
||||
[15] 颜色: None
|
||||
[16] 图标: None
|
||||
[17] 备注: None
|
||||
|
||||
========= ROW 4 =========
|
||||
[1] ID: len=5
|
||||
19862
|
||||
---
|
||||
[2] 活跃文本: len=4
|
||||
True
|
||||
---
|
||||
[3] 中文: len=3
|
||||
乌甲因
|
||||
---
|
||||
[4] 繁中: None
|
||||
[5] 英文: None
|
||||
[6] 日文: None
|
||||
[7] 韩文: None
|
||||
[8] 次要文案: len=5
|
||||
False
|
||||
---
|
||||
[9] 专有翻译: len=5
|
||||
False
|
||||
---
|
||||
[10] 台词: len=5
|
||||
False
|
||||
---
|
||||
[11] 台词说话者: None
|
||||
[12] 无需翻译: len=5
|
||||
False
|
||||
---
|
||||
[13] 自定义条目: len=5
|
||||
False
|
||||
---
|
||||
[14] 专有名词: len=5
|
||||
False
|
||||
---
|
||||
[15] 颜色: None
|
||||
[16] 图标: None
|
||||
[17] 备注: len=60
|
||||
CivDataAssets : CivDataList[3] : CityInfoList[11] : CityName
|
||||
---
|
||||
|
||||
========= ROW 5 =========
|
||||
[1] ID: len=5
|
||||
19869
|
||||
---
|
||||
[2] 活跃文本: len=4
|
||||
True
|
||||
---
|
||||
[3] 中文: len=18
|
||||
帝国的狂气之瞳 铃仙·优昙华院·因幡
|
||||
---
|
||||
[4] 繁中: None
|
||||
[5] 英文: None
|
||||
[6] 日文: None
|
||||
[7] 韩文: None
|
||||
[8] 次要文案: len=5
|
||||
False
|
||||
---
|
||||
[9] 专有翻译: len=5
|
||||
False
|
||||
---
|
||||
[10] 台词: len=5
|
||||
False
|
||||
---
|
||||
[11] 台词说话者: None
|
||||
[12] 无需翻译: len=5
|
||||
False
|
||||
---
|
||||
[13] 自定义条目: len=5
|
||||
False
|
||||
---
|
||||
[14] 专有名词: len=4
|
||||
True
|
||||
---
|
||||
[15] 颜色: None
|
||||
[16] 图标: None
|
||||
[17] 备注: None
|
||||
|
||||
========= ROW 6 =========
|
||||
[1] ID: len=5
|
||||
19871
|
||||
---
|
||||
[2] 活跃文本: len=4
|
||||
True
|
||||
---
|
||||
[3] 中文: len=4936
|
||||
[功能版本] V1.4.0
|
||||
发布日期:25.9.20
|
||||
|
||||
|
||||
|
||||
--------- [新增内容] -------- 蓬莱山帝国
|
||||
|
||||
妖怪兔近卫队忠诚可靠,竹林狼上校铁纪如山,帝国元帅们勇往无前。
|
||||
蓬莱山辉夜正傲立于凯旋门前,执剑写下最强陆军的传说。
|
||||
永夜的辉光交织法兰西的荣耀,一同为她加冕。
|
||||
|
||||
蓬莱山帝国是一个拥有特色科技树的强大势力。
|
||||
在建设方面,**<优昙华庭院>**可以帮助帝国于早期快速完成经济积累;
|
||||
在军事方面,**<妖怪兔近卫>**配合拥有**<步炮协同>**能力的步兵和炮兵,能够完成极为强大的陆地火力覆盖和单点突破能力,稳步推进战线;
|
||||
在扩张方面,**<永夜法典>**将所有帝国领土纳入永夜治下,能够快速转化妖怪兔近卫,并借助**<竹林驿站>**将竹林转化为防御屏障和道路。
|
||||
特色巨人单位**<竹林狼上校>**配合能够野外种树的**<竹林养护>**能力,让所有中立领土都如同帝国领土一般易于掌控。
|
||||
|
||||
|
||||
|
||||
--------- [新增内容] -------- 蓬莱山帝国:蓬莱山辉夜
|
||||
**<帝国的永恒:蓬莱山辉夜>**<br>
|
||||
**<王>**职阶英雄。她将**<永恒>**的力量注入帝国。帝国卫队为她守护永夜的荣耀,元帅们为她续写法兰西的辉煌。
|
||||
**<-------- Lv.0 -------->**<br>
|
||||
**<[基础属性]>**15HP/2攻/1防/1移动力/2射程<br>
|
||||
**<[能力:游击]>**攻击后可再次移动<br>
|
||||
**<-------- Lv.1 -------->**<br>
|
||||
**<[基础属性]>**25HP/3攻/1防/1移动力/2射程<br>
|
||||
**<[能力:蓬莱玉枝]>**攻击时可选择友方单位,使其获得一层**<永恒>**。每层**<永恒>**可为该单位抵挡一次致命伤害并保留1点HP。<br>
|
||||
**<-------- Lv.2 -------->**<br>
|
||||
**<[基础属性]>**30HP/3攻/2防/1移动力/2射程<br>
|
||||
**<[能力:蓬莱树海]>**主动技能。使得1格范围内所有友方单位获得一层**<永恒>**。<br>
|
||||
**<-------- Lv.3 -------->**<br>
|
||||
**<[基础属性]>**35HP/3攻/2防/1移动力/3射程<br>
|
||||
**<[能力:须臾永远]>**攻击时可选中友方单位,使其获得9层**<永恒>**。<br>
|
||||
|
||||
--------- [新增内容] -------- 蓬莱山帝国:八意永琳
|
||||
**<帝国的月之头脑:八意永琳>**<br>
|
||||
**<后>**职阶英雄。帝国的至高智慧。治愈或者死亡,不过是壶中演算的筹码。她用生命游戏操纵着战场的潮汐。
|
||||
**<-------- Lv.0 -------->**<br>
|
||||
**<[基础属性]>**10HP/1攻/2防/1移动力/2射程<br>
|
||||
**<[能力:飞行]>**移动无视任何地形<br>
|
||||
**<-------- Lv.1 -------->**<br>
|
||||
**<[基础属性]>**20HP/2攻/2防/1移动力/2射程<br>
|
||||
**<[能力:战地协同]>**攻击单位时将施加一层**<协同标的>**,持续1回合。攻击带有**<协同标的>**的目标时,每层使得本次攻击力提升0.5。<br>
|
||||
**<[能力:生命游戏]>**击杀敌方单位后,为目标1格范围内的所有友军恢复3HP<br>
|
||||
**<-------- Lv.2 -------->**<br>
|
||||
**<[基础属性]>**25HP/2攻/3防/1移动力/2射程<br>
|
||||
**<[能力:复苏游戏]>**攻击时可选中己方单位,赋予1回合**<战地协同>**的能力并恢复生命。如恢复溢出,则额外赋予1回合**<移动力提升>**能力。<br>
|
||||
**<-------- Lv.3 ---------->**<br>
|
||||
**<[基础属性]>**30HP/3攻/3防/2移动力/2射程<br>
|
||||
**<[能力:国士无双之药]>**八意永琳技能对英雄的治疗增加到3倍,攻击英雄时因群袭获得的攻击力加成增加到2倍。<br>
|
||||
|
||||
--------- [新增内容] -------- 蓬莱山帝国:因幡帝
|
||||
**<帝国的欺诈师:因幡帝>**<br>
|
||||
**<相>**职阶英雄。帝国首席欺诈师。她榨取情报与财富,窥伺战机,关键时刻更能亲率兔群发动致命奇袭。
|
||||
**<-------- Lv.0 -------->**<br>
|
||||
**<[基础属性]>**10HP/1攻/2防/2移动力/1射程<br>
|
||||
**<[能力:瞭望]>**拥有2格范围的视野<br>
|
||||
**<[能力:水域通行]>**解锁对应科技后,无需通过港口即可在水域通行<br>
|
||||
**<[能力:幸运的白兔]>**消除4格范围内所有遗迹的迷雾<br>
|
||||
**<-------- Lv.1 -------->**<br>
|
||||
**<[基础属性]>**20HP/2攻/2防/2移动力/2射程<br>
|
||||
**<[能力:竹林的欺诈师-隔岸观火]>**2格范围内有单位阵亡时,获得等同于该单位训练成本50%的金币<br>
|
||||
**<-------- Lv.2 -------->**<br>
|
||||
**<[基础属性]>**30HP/2攻/3防/2移动力/2射程<br>
|
||||
**<[能力:竹林的欺诈师-劫富济贫]>**1格范围内有单位发起攻击时(包括自己),获得1金币<br>
|
||||
**<[能力:竹林的欺诈师-落井下石]>**帝击杀单位时,获得等同于该单位训练成本100%的金币。<br>
|
||||
**<------- Lv.3 -------->**<br>
|
||||
**<[基础属性]>**40HP/3攻/3防/2移动力/2射程<br>
|
||||
**<[能力:帝国荣耀]>**主动技能。帝发起号召,令一格范围内的所有友军获得一回合**<战地协同>**和一回合**<移动力提升>**<br>
|
||||
|
||||
--------- [新增内容] -------- 蓬莱山帝国:铃仙·优昙华院·因幡
|
||||
**<帝国的狂气之瞳 铃仙·优昙华院·因幡>**<br>
|
||||
**<马>**职阶英雄。公主的利刃,战场的狂气之瞳。她以月兔幻象扰乱阵线,其诡谲的身影,一人便可成为一支军队。
|
||||
**<-------- Lv.0 -------->**<br>
|
||||
**<[基础属性]>**10HP/2攻/1防/2移动力/2射程<br>
|
||||
**<[能力:战地协同]>**攻击单位时将施加一层**<协同标的>**,持续1回合。攻击带有**<协同标的>**的目标时,每层使得本次攻击力提升0.5。<br>
|
||||
**<-------- Lv.1 -------->**<br>
|
||||
**<[基础属性]>**15HP/2攻/2防/2移动力/2射程<br>
|
||||
**<[能力:幻视调率]>**击杀敌方单位时,在其位置生成1个看似与铃仙完全相同的**<月兔幻象>**。幻象继承铃仙的**<战地协同>**能力,但无法造成伤害 ,并且受到任意攻击后立刻阵亡。<br>
|
||||
**<-------- Lv.2 -------->**<br>
|
||||
**<[基础属性]>**20HP/3攻/2防/2移动力/2射程<br>
|
||||
**<[能力:幻象视差]>**铃仙攻击目标前,附近所有**<月兔幻象>**会对该目标进行一轮齐射。<br>
|
||||
**<-------- Lv.3 -------->**<br>
|
||||
**<[基础属性]>**30HP/4攻/3防/2移动力/2射程<br>
|
||||
**<[能力:狂视调率]>**所有**<月兔幻象>**具有本体50%的攻击力。幻象消灭单位时,也可以创造新的**<月兔幻想>**。<br>
|
||||
|
||||
--------- [新增内容] -------- 蓬莱山帝国:藤原妹红
|
||||
**<帝国的不死鸟:藤原妹红>**<br>
|
||||
**<车>**职阶英雄。她是横贯一切的不死鸟烈焰。驱动她的并非忠诚,而是足以将皇权也一并烧尽的执念。
|
||||
**<--------- Lv.0 --------->**<br>
|
||||
**<[基础属性]>**20HP/3攻/2防/1移动力/1射程<br>
|
||||
**<--------- Lv.1 --------->**<br>
|
||||
**<[基础属性]>**30HP/4攻/2防/1移动力/1射程<br>
|
||||
**<[能力:不死鸟重生]>**阵亡后变成火焰状态,不可攻击和反击,移动时对1格范围内所有单位造成溅射伤害。复活冷却结束后若火焰存活,藤原妹红在火焰处复活。<br>
|
||||
**<--------- Lv.2 --------->**<br>
|
||||
**<[基础属性]>**40HP/4攻/3防/1移动力/1射程<br>
|
||||
**<[能力:凤翼天翔]>**从火焰状态复活的妹红获得能力:**<移动力提升>**,**<射程提升>**与**<击杀再动>**<br>
|
||||
**<--------- Lv.3 --------->**<br>
|
||||
**<[基础属性]>**50HP/5攻/3防/1移动力/1射程<br>
|
||||
**<[能力:不死身的舍身击]>**对1格范围内的所有单位造成攻击力为10的伤害并阵亡。<br>
|
||||
|
||||
--------- [新增内容] -------- 蓬莱山帝国:妖怪兔近卫
|
||||
在蓬莱山帝国治下,竹林中的每一只妖怪兔都随时待命,化身帝国卫队为蓬莱山公主效力。
|
||||
可以将帝国领土中的妖怪兔转化为特色单位**<妖怪兔近卫>**。拥有能力**<战地协同>**。
|
||||
|
||||
|
||||
--------- [新增内容] -------- 蓬莱山帝国:竹林狼上校
|
||||
月轮未满之时,她们是迷途竹林中的纪律化身;银盘高悬之时,她们是帝国威仪的冰冷法典。
|
||||
当Lv.5及以上城市升级时,可以选择出战特色巨人单位**<竹林狼上校>**。拥有能力**<狼影>**。
|
||||
|
||||
|
||||
--------- [新增内容] -------- 英雄系统重做
|
||||
1. 英雄系统已与科技树剥离,成为独立的模块
|
||||
2. 每局游戏都拥有三个英雄槽位,可以选择最多三名英雄出战,每名英雄都有Lv.0~Lv.3的等级体系。
|
||||
3. 开局时解锁一个英雄槽位,可以自由选择一名Lv.0英雄。
|
||||
4. 当首次拥有Lv.1英雄的时候,开启第二个英雄槽位。当拥有Lv.2英雄的时候,开启第三个英雄槽位。
|
||||
5. 每个英雄都有特定的升级任务。只要完成升级任务,即可升级英雄。
|
||||
6. 如果英雄升级任务较难完成,也可以花费金币强制完成任务,具体费用随当前任务进度的增加而减少。
|
||||
|
||||
|
||||
-------- [新增角色立绘]-------- 丰聪耳神子
|
||||
波斯文明-丰聪耳帝国的领袖——丰聪耳神子,立绘已实装。
|
||||
继承“不朽之魂”阿努希尔万尊名的神子,头戴萨珊的新月王冠,正俯瞰着泰西封的万家灯火。
|
||||
她将以圣人的智慧与暴君的铁腕,将同时响起的十种欲望熔铸为帝国的唯一律法,成为幻想乡唯一的——“哲人王”。
|
||||
|
||||
--------- [优化] --------
|
||||
1. 地图初始资源优化,现在每个阵营拥有不同的初始资源配置,保证开局的资源下限
|
||||
2. 地图生成方案优化。连片的大陆中将拥有类似河流的水资源地块分布。
|
||||
3. 保护区调整:保护区不再提供基于建筑等级的回合金币,转而提供基于建筑等级的回合科技点。当保护区与市场相邻时,能够为市场提供额外的建筑等级(回合金币)。
|
||||
4. 市场调整:当市场与保护区相邻时,保护区可以为市场提供额外的建筑等级(回合金币)。市场的等级上限为8。
|
||||
|
||||
|
||||
-------- [bug修复] --------
|
||||
1. 学者攻击炮兵伤害显示错误的bug
|
||||
2. 修复了城市建立时出现重复名字的bug
|
||||
3. 修复了攻击/治疗/技能特效丢失的bug
|
||||
4. 修复了外交面板帝国名字显示错误的bug
|
||||
|
||||
[待修复重要模块]
|
||||
1. 随着永远亭的英雄系统改版,红魔馆阵营的设计与英雄已经不够具备特色及平衡性,将在下个版本回炉重做放出
|
||||
2. 专家提示模块(左侧信息栏咲夜的提示部分)回炉重做,目前暂时隐去,将在下个版本重新放出
|
||||
3. 部分动画丢失、吞伤害,以及交互画面错误的问题,将在之后的版本中,随着UI界面重做和动画系统重做完成后,陆续迭代放出。
|
||||
---
|
||||
[4] 繁中: None
|
||||
[5] 英文: None
|
||||
[6] 日文: None
|
||||
[7] 韩文: None
|
||||
[8] 次要文案: len=4
|
||||
True
|
||||
---
|
||||
[9] 专有翻译: len=5
|
||||
False
|
||||
---
|
||||
[10] 台词: len=5
|
||||
False
|
||||
---
|
||||
[11] 台词说话者: None
|
||||
[12] 无需翻译: len=5
|
||||
False
|
||||
---
|
||||
[13] 自定义条目: len=5
|
||||
False
|
||||
---
|
||||
[14] 专有名词: len=5
|
||||
False
|
||||
---
|
||||
[15] 颜色: None
|
||||
[16] 图标: None
|
||||
[17] 备注: len=42
|
||||
VersionConfig : Versions[42] : Description
|
||||
---
|
||||
|
||||
========= ROW 7 =========
|
||||
[1] ID: len=5
|
||||
19872
|
||||
---
|
||||
[2] 活跃文本: len=4
|
||||
True
|
||||
---
|
||||
[3] 中文: len=75
|
||||
为处于**<军港>**的单位恢复1点**<通用行动点>**,每回合上限一次。提供额外防御。每座城市仅能建造一座**<军港>**,且仅能建造在港口附近。
|
||||
---
|
||||
[4] 繁中: None
|
||||
[5] 英文: None
|
||||
[6] 日文: None
|
||||
[7] 韩文: None
|
||||
[8] 次要文案: len=5
|
||||
False
|
||||
---
|
||||
[9] 专有翻译: len=5
|
||||
False
|
||||
---
|
||||
[10] 台词: len=5
|
||||
False
|
||||
---
|
||||
[11] 台词说话者: None
|
||||
[12] 无需翻译: len=5
|
||||
False
|
||||
---
|
||||
[13] 自定义条目: len=5
|
||||
False
|
||||
---
|
||||
[14] 专有名词: len=5
|
||||
False
|
||||
---
|
||||
[15] 颜色: None
|
||||
[16] 图标: None
|
||||
[17] 备注: len=63
|
||||
GridAndResourceDataAssets : ResourceInfoList[26] : ResourceDesc
|
||||
---
|
||||
|
||||
========= ROW 8 =========
|
||||
[1] ID: len=5
|
||||
19873
|
||||
---
|
||||
[2] 活跃文本: len=4
|
||||
True
|
||||
---
|
||||
[3] 中文: len=190
|
||||
[版本V0.7.1i]
|
||||
发布日期 26.5.15
|
||||
|
||||
------- [重要bug修复] -------
|
||||
1.修复了联机可能卡档并且无法继续游戏的bug
|
||||
2.修复了在视野外被我方击杀的单位可能错误残留图像的bug
|
||||
|
||||
------- [其他优化] -------
|
||||
1.修复了大量翻译问题
|
||||
2.完善了军港描述(必须建造在港口附近)
|
||||
3.修复了日白残无(木偶)Lv.3拥有能力错误的bug
|
||||
---
|
||||
[4] 繁中: len=190
|
||||
[版本V0.7.1i]
|
||||
發佈日期 26.5.15
|
||||
|
||||
------- [重要bug修復] -------
|
||||
1.修復了連線可能卡檔並且無法繼續遊戲的bug
|
||||
2.修復了在視野外被我方擊殺的單位可能錯誤殘留圖像的bug
|
||||
|
||||
------- [其他優化] -------
|
||||
1.修復了大量翻譯問題
|
||||
2.完善了軍港描述(必須建造在港口附近)
|
||||
3.修復了日白殘無(木偶)Lv.3擁有能力錯誤的bug
|
||||
---
|
||||
[5] 英文: len=487
|
||||
[Version V0.7.1i]
|
||||
Release Date: 2026/5/15
|
||||
|
||||
------- [Critical Bug Fixes] -------
|
||||
1. Fixed a bug where multiplayer sessions could stall and prevent continuing the game
|
||||
2. Fixed a bug where units killed by your side outside your vision could leave incorrect lingering images
|
||||
|
||||
------- [Other Improvements] -------
|
||||
1. Fixed numerous translation issues
|
||||
2. Refined the Naval Port description (must be built near a harbor)
|
||||
3. Fixed a bug where Zanmu Nippaku (Puppet) Lv.3 had incorrect abilities
|
||||
---
|
||||
[6] 日文: len=231
|
||||
[バージョン V0.7.1i]
|
||||
リリース日:2026/5/15
|
||||
|
||||
------- [重大バグ修正] -------
|
||||
1. マルチプレイで進行不能になりゲームを継続できなくなるバグを修正
|
||||
2. 視界外で味方に撃破されたユニットの画像が誤って残留するバグを修正
|
||||
|
||||
------- [その他の最適化] -------
|
||||
1. 大量の翻訳問題を修正
|
||||
2. 軍港の説明を改善(港の近くに建設する必要がある)
|
||||
3. ニッパク・ザンム(人形)Lv.3の能力が誤っていたバグを修正
|
||||
---
|
||||
[7] 韩文: len=231
|
||||
[버전 V0.7.1i]
|
||||
출시일: 2026/5/15
|
||||
|
||||
------- [중요 버그 수정] -------
|
||||
1. 멀티플레이가 멈춰 게임을 계속할 수 없게 되는 버그 수정
|
||||
2. 시야 밖에서 아군에게 처치된 유닛의 이미지가 잘못 남는 버그 수정
|
||||
|
||||
------- [기타 최적화] -------
|
||||
1. 다수의 번역 문제 수정
|
||||
2. 군항 설명 보완 (항구 근처에 건설해야 함)
|
||||
3. 닛파쿠 잔무(인형) Lv.3 능력 오류 버그 수정
|
||||
---
|
||||
[8] 次要文案: len=4
|
||||
True
|
||||
---
|
||||
[9] 专有翻译: len=5
|
||||
False
|
||||
---
|
||||
[10] 台词: len=5
|
||||
False
|
||||
---
|
||||
[11] 台词说话者: None
|
||||
[12] 无需翻译: len=5
|
||||
False
|
||||
---
|
||||
[13] 自定义条目: len=5
|
||||
False
|
||||
---
|
||||
[14] 专有名词: len=5
|
||||
False
|
||||
---
|
||||
[15] 颜色: None
|
||||
[16] 图标: None
|
||||
[17] 备注: len=41
|
||||
VersionConfig : Versions[0] : Description
|
||||
---
|
||||
|
||||
========= ROW 9 =========
|
||||
[1] ID: len=5
|
||||
19874
|
||||
---
|
||||
[2] 活跃文本: len=4
|
||||
True
|
||||
---
|
||||
[3] 中文: len=9
|
||||
北纬27的日晷之王
|
||||
---
|
||||
[4] 繁中: None
|
||||
[5] 英文: None
|
||||
[6] 日文: None
|
||||
[7] 韩文: None
|
||||
[8] 次要文案: len=5
|
||||
False
|
||||
---
|
||||
[9] 专有翻译: len=5
|
||||
False
|
||||
---
|
||||
[10] 台词: len=5
|
||||
False
|
||||
---
|
||||
[11] 台词说话者: None
|
||||
[12] 无需翻译: len=5
|
||||
False
|
||||
---
|
||||
[13] 自定义条目: len=5
|
||||
False
|
||||
---
|
||||
[14] 专有名词: len=5
|
||||
False
|
||||
---
|
||||
[15] 颜色: None
|
||||
[16] 图标: None
|
||||
[17] 备注: len=53
|
||||
AchievementAsset : Data : AchievementList[178] : Name
|
||||
---
|
||||
|
||||
========= ROW 10 =========
|
||||
[1] ID: len=5
|
||||
19875
|
||||
---
|
||||
[2] 活跃文本: len=4
|
||||
True
|
||||
---
|
||||
[3] 中文: len=23
|
||||
可以建造**<军港>**。所有单位获得海洋防御
|
||||
---
|
||||
[4] 繁中: None
|
||||
[5] 英文: None
|
||||
[6] 日文: None
|
||||
[7] 韩文: None
|
||||
[8] 次要文案: len=5
|
||||
False
|
||||
---
|
||||
[9] 专有翻译: len=5
|
||||
False
|
||||
---
|
||||
[10] 台词: len=5
|
||||
False
|
||||
---
|
||||
[11] 台词说话者: None
|
||||
[12] 无需翻译: len=5
|
||||
False
|
||||
---
|
||||
[13] 自定义条目: len=5
|
||||
False
|
||||
---
|
||||
[14] 专有名词: len=5
|
||||
False
|
||||
---
|
||||
[15] 颜色: None
|
||||
[16] 图标: None
|
||||
[17] 备注: len=43
|
||||
TechDataAssets : TechList[24] : Description
|
||||
---
|
||||
|
||||
========= ROW 11 =========
|
||||
[1] ID: len=5
|
||||
19876
|
||||
---
|
||||
[2] 活跃文本: len=4
|
||||
True
|
||||
---
|
||||
[3] 中文: len=609
|
||||
**<帝国的狂气之瞳:铃仙·优昙华院·因幡>**<br> **<-------- Lv.1 -------->**<br> **<[基础属性]>**10HP/2攻/1防/2移动力/2射程<br> **<[能力:战地协同]>**攻击单位时将施加一层**<协同标的>**,持续1回合。攻击带有**<协同标的>**的目标时,每层使得本次攻击力提升0.5。<br> **<-------- Lv.2 -------->**<br> **<[基础属性]>**15HP/2攻/2防/2移动力/2射程<br> **<[能力:幻视调率]>**击杀敌方单位时,在其位置生成1个看似与铃仙完全相同的**<月兔幻象>**。幻象继承铃仙的**<战地协同>**能力,但无法造成伤害 ,并且受到任意攻击后立刻阵亡。<br> **<-------- Lv.3 -------->**<br> **<[基础属性]>**20HP/3攻/2防/2移动力/2射程<br> **<[能力:幻想视差]>**铃仙攻击目标前,附近所有**<月兔幻象>**会对该目标进行一轮齐射。<br> **<-------- Lv.4 -------->**<br> **<[基础属性]>**30HP/4攻/3防/2移动力/2射程<br> **<[能力:狂视调率]>**所有**<月兔幻象>**具有本体50%的攻击力。幻象消灭单位时,也可以创造新的**<月兔幻象>**。<br>
|
||||
---
|
||||
[4] 繁中: None
|
||||
[5] 英文: None
|
||||
[6] 日文: None
|
||||
[7] 韩文: None
|
||||
[8] 次要文案: len=5
|
||||
False
|
||||
---
|
||||
[9] 专有翻译: len=5
|
||||
False
|
||||
---
|
||||
[10] 台词: len=5
|
||||
False
|
||||
---
|
||||
[11] 台词说话者: None
|
||||
[12] 无需翻译: len=5
|
||||
False
|
||||
---
|
||||
[13] 自定义条目: len=5
|
||||
False
|
||||
---
|
||||
[14] 专有名词: len=5
|
||||
False
|
||||
---
|
||||
[15] 颜色: None
|
||||
[16] 图标: None
|
||||
[17] 备注: len=54
|
||||
TextDataAssets : GiantUpgradeTextList[6] : UpgradeText
|
||||
---
|
||||
549
Tools/multilingual_check/apply_fixes.py
Normal file
549
Tools/multilingual_check/apply_fixes.py
Normal file
@ -0,0 +1,549 @@
|
||||
"""
|
||||
TH1 多语言修复批处理脚本
|
||||
====================================
|
||||
按 decisions.md 已确认的 [✅] 项批量修改 Multilingual.xlsx。
|
||||
备份在 Multilingual.before_fix_2026-05-14.bak.xlsx。
|
||||
|
||||
列布局:
|
||||
A=ID, B=活跃文本, C=中文, D=繁中, E=英文, F=日文, G=韩文, Q=备注
|
||||
|
||||
输出:
|
||||
- 修改后的 Multilingual.xlsx
|
||||
- Multilingual_Fix_Report_2026-05-14.md 对照表
|
||||
- 控制台打印 success/failure
|
||||
"""
|
||||
|
||||
import openpyxl
|
||||
from openpyxl import load_workbook
|
||||
from datetime import datetime
|
||||
import io
|
||||
import sys
|
||||
|
||||
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
|
||||
|
||||
XLSX = r'C:\TH1\TH1\Tools\Multilingual.xlsx'
|
||||
REPORT = r'C:\TH1\TH1\Tools\Multilingual_Fix_Report_2026-05-14.md'
|
||||
|
||||
# 列号常量
|
||||
COL_ID = 1
|
||||
COL_ZH = 3
|
||||
COL_TW = 4
|
||||
COL_EN = 5
|
||||
COL_JP = 6
|
||||
COL_KR = 7
|
||||
COL_NOTE = 17
|
||||
|
||||
LANG_COL = {'ZH': COL_ZH, 'TW': COL_TW, 'EN': COL_EN, 'JP': COL_JP, 'KR': COL_KR}
|
||||
|
||||
# ============================================================
|
||||
# 修改记录:[(decision_id, target_id, lang, original_excerpt, new_value_or_replacements), ...]
|
||||
# 类型:
|
||||
# - 'set' 直接整段替换:('set', new_full_text)
|
||||
# - 'replace_in' 字段内 substring 替换:('replace_in', old_sub, new_sub)
|
||||
# - 'replace_in_all' 全表该语言列的 substring 替换:('replace_in_all', old_sub, new_sub)
|
||||
# ============================================================
|
||||
|
||||
records = []
|
||||
# (decision_code, target_id_or_'*', lang, op, *args, comment)
|
||||
|
||||
# ---- A 组:韩文专名集群(全表替换) ----
|
||||
records.append(('A1', '*', 'KR', 'replace_in_all', '이나바 테이', '이나바 테위', '因幡帝韩文统一'))
|
||||
records.append(('A2', '*', 'KR', 'replace_in_all', '홍미령', '홍 메이링', '红美铃韩文统一'))
|
||||
records.append(('A3', '*', 'KR', 'replace_in_all', '플란드르', '플랑드르', '芙兰朵露韩文统一'))
|
||||
# A4: 仅 ID=16842 韩文「적구」→「미샤구지」
|
||||
records.append(('A4', '16842', 'KR', 'replace_in', '적구', '미샤구지', '赤口→米沙古吉(仅16842)'))
|
||||
# A5: 仅 ID=19414 韩文
|
||||
records.append(('A5', '19414', 'KR', 'set', '사이교우지 유유코', '西行寺幽幽子韩文修正'))
|
||||
# A6: 仅 ID=19830 韩文「레미리아」→「레밀리아」(局部,整段重写)
|
||||
# 19830 整体 KR 含「레미리아 사령부」需要改为「레밀리아」
|
||||
records.append(('A6', '19830', 'KR', 'replace_in', '레미리아', '레밀리아', '蕾米莉亚拼写修正'))
|
||||
|
||||
# ---- C 组:英文 Build X on Y 主宾颠倒 ----
|
||||
# C1 ID=1233/1234/1235/1236/1250
|
||||
records.append(('C1', '1233', 'EN',
|
||||
'set',
|
||||
'Build **<Logging Camp>** on **<Forest>**, provides 1 City EXP. Note: Will remove animals in the forest',
|
||||
'主宾颠倒修复'))
|
||||
records.append(('C1', '1234', 'EN',
|
||||
'set',
|
||||
'Build **<Harbor>** on **<Water>**, provides 1 City EXP. Enables Conversion of regular units into naval units, and allows establishing **<Ocean Trade Route>**',
|
||||
'主宾颠倒修复'))
|
||||
records.append(('C1', '1235', 'EN',
|
||||
'set',
|
||||
'Build **<Bridge>** on **<Water>**. Forms **<Trade Route>** and provides Movement bonus',
|
||||
'主宾颠倒修复'))
|
||||
records.append(('C1', '1236', 'EN',
|
||||
'set',
|
||||
'Build **<Road>** on **<Plains>**. Forms **<Trade Route>** and provides Movement bonus',
|
||||
'主宾颠倒修复'))
|
||||
records.append(('C1', '1250', 'EN',
|
||||
'set',
|
||||
'Plant a **<Forest>** on **<Plains>**',
|
||||
'主宾颠倒修复'))
|
||||
|
||||
# C4 seg_031 报告点名的 18128/18131/18134/18139
|
||||
records.append(('C4', '18128', 'EN',
|
||||
'set',
|
||||
'Allows construction of **<Statue of the Queen>** in **<Forest>** tiles',
|
||||
'主宾颠倒修复'))
|
||||
records.append(('C4', '18131', 'EN',
|
||||
'set',
|
||||
'Allows construction of **<Statue of the Bishop>** in **<Shallow Water>** tiles',
|
||||
'主宾颠倒修复;浅海用 Shallow Water'))
|
||||
records.append(('C4', '18134', 'EN',
|
||||
'set',
|
||||
'Allows construction of **<Statue of the Rook>** in **<Mountain>** tiles',
|
||||
'主宾颠倒修复'))
|
||||
records.append(('C4', '18139', 'EN',
|
||||
'set',
|
||||
'Allows construction of **<Statue of the Knight>** in **<Plains>** tiles',
|
||||
'主宾颠倒修复'))
|
||||
|
||||
# ---- D 组:日文模板字符串破损 ----
|
||||
# D1 ID=1014 JP
|
||||
records.append(('D1', '1014', 'JP',
|
||||
'set',
|
||||
'他者の**<占領>**や村を占領することは、発展のために必要なステップである',
|
||||
'日文语序修复'))
|
||||
# 注:1014 中文有 **<占领>** tag,原 JP「他者の占領や村をすることは」存在结构错乱
|
||||
# 重写:他者の都市や村を占領することは…
|
||||
# 但 ZH 用 **<占领>** 标签包住"占领",JP 保留 tag 同 ZH
|
||||
records.append(('D1', '1014', 'JP',
|
||||
'set',
|
||||
'他者の都市や村を**<占領>**することは、発展のために必要なステップである',
|
||||
'日文语序修复(覆盖)'))
|
||||
|
||||
# D2 ID=1155 JP「製材所」→「伐採場」
|
||||
records.append(('D2', '1155', 'JP',
|
||||
'replace_in', '製材所', '伐採場',
|
||||
'伐木场(1155)与锯木厂(1158)区分'))
|
||||
|
||||
# D3 ID=1503 JP 补「アップグレード」
|
||||
records.append(('D3', '1503', 'JP',
|
||||
'set',
|
||||
'英雄神像をアップグレードし、より多くの英雄経験値を提供',
|
||||
'补充アップグレード动词'))
|
||||
# D3 ID=1504 JP 「力3・力3・力3」→「移動力3・攻撃3・防御3」
|
||||
records.append(('D3', '1504', 'JP',
|
||||
'replace_in', '力3・力3・力3', '移動力3・攻撃3・防御3',
|
||||
'补充属性名'))
|
||||
# D3 ID=1506 JP 「力5・力4」→「攻撃5・防御4」
|
||||
records.append(('D3', '1506', 'JP',
|
||||
'replace_in', '力5・力4', '攻撃5・防御4',
|
||||
'补充属性名'))
|
||||
# D3 ID=1508 JP 「力4・力4」→「攻撃4・防御4」
|
||||
records.append(('D3', '1508', 'JP',
|
||||
'replace_in', '力4・力4', '攻撃4・防御4',
|
||||
'补充属性名'))
|
||||
|
||||
# D4 ID=2253 JP 在「特殊な灌漑整備」前补「平原に」
|
||||
# 原文:**<穀物>**を**<農地>**に改造でき、特殊な**<灌漑整備>**にを建設できる
|
||||
# 改为:**<穀物>**を**<農地>**に改造でき、特殊な平原に**<灌漑整備>**を建設できる
|
||||
records.append(('D4', '2253', 'JP',
|
||||
'set',
|
||||
'**<穀物>**を**<農地>**に改造でき、特殊な平原に**<灌漑整備>**を建設できる',
|
||||
'补充平原+清除尾巴的に'))
|
||||
|
||||
# D5 ID=2294 KR
|
||||
# 原 KR:사쿠야가 유닛을 처치 시, 다시 **<은의 도약>**하고 을 사용할 수 있다.
|
||||
# 中文:咲夜击杀单位时,可以再次进行移动并使用**<银之跳跃>**
|
||||
records.append(('D5', '2294', 'KR',
|
||||
'set',
|
||||
'사쿠야가 유닛을 처치 시, 다시 이동하고 **<은의 도약>**을 사용할 수 있다.',
|
||||
'补充이동+修助词'))
|
||||
# 同时修 JP(用户决策只点 KR,但 JP 也漏了「移動」):
|
||||
# 原 JP:「咲夜がユニットを撃破した時、再度**<銀の跳躍>**しを使用できる」
|
||||
# 用户决策清单未点 D5 JP——按 D5 保守只改 KR
|
||||
|
||||
# D6 ID=16652 JP
|
||||
# 当前:「**<帆船>**を**<遠洋帆船>**に強化する。海上遠距離ユニット。**<巡航>**力3、**<再行動>**2、と再動スキルを持つ」
|
||||
# 中文:海上远程单位。拥有3移动力2射程和**<巡洋>****<再动>**技能
|
||||
records.append(('D6', '16652', 'JP',
|
||||
'set',
|
||||
'**<帆船>**を**<遠洋帆船>**に強化する。海上遠距離ユニット。移動力3、射程2、**<巡航>**と**<再行動>**スキルを持つ',
|
||||
'语序+属性名修复'))
|
||||
|
||||
# D6 ID=16654 JP
|
||||
# 当前:「の遺産を建設し、経験値3を獲得」(缺主语「贸易」)
|
||||
# 中文:建造贸易奇观,提供3点城市经验
|
||||
records.append(('D6', '16654', 'JP',
|
||||
'set',
|
||||
'貿易の遺産を建設し、都市経験値3を獲得',
|
||||
'补充贸易+城市'))
|
||||
# 注:F2 是韩文统一不影响日文「遺産」,日文奇观本就是「遺産」
|
||||
|
||||
# D6 ID=16672 JP
|
||||
# 当前:「プトレマイオス朝時代のに建設され」缺「エジプト」(埃及);「経験値3を提供」缺「都市」
|
||||
records.append(('D6', '16672', 'JP',
|
||||
'set',
|
||||
'古代世界最大かつ最も著名な図書館であり、プトレマイオス朝時代のエジプトに建設され、天下の全ての知識を収蔵することを目的としていた。後に戦火と政治的混乱により何度も焼失した。都市経験値3を提供',
|
||||
'补充埃及+都市'))
|
||||
|
||||
# D7 ID=19580 EN
|
||||
# 中文:可以移动至任意**<己方英雄>**1格范围内,并使**<1格范围内>**的**<己方英雄>**获得**<女仆长护佑>**。同回合内多次使用会累计层数。每次**<银之跳跃>**都会叠加与当前层数相同的**<疲劳>**
|
||||
records.append(('D7', '19580', 'EN',
|
||||
'set',
|
||||
'Can move within 1 tile of any **<Friendly Hero>**, granting **<Chief Maid\'s Blessing>** to **<Friendly Hero>** within **<Within 1 Tile>**. Stacks if used multiple times in the same turn. Each **<Silver Leap>** accumulates **<Fatigue>** equal to the current stack count.',
|
||||
'4-token 错位重写'))
|
||||
|
||||
# D7 ID=19734 EN
|
||||
# 中文:可以移动至任意**<己方英雄>**1格范围内,并使**<1格范围内>**的**<己方英雄>**获得**<女仆长护佑>**和1点**<攻击行动点>**。同回合内多次使用会累计层数。每次**<银之跳跃>**都会叠加与当前层数相同的**<疲劳>**
|
||||
records.append(('D7', '19734', 'EN',
|
||||
'set',
|
||||
'Can move within 1 tile of any **<Friendly Hero>**, granting **<Chief Maid\'s Blessing>** and 1 **<Attack Action Points>** to **<Friendly Hero>** within **<Within 1 Tile>**. Stacks if used multiple times in the same turn. Each **<Silver Leap>** accumulates **<Fatigue>** equal to the current stack count.',
|
||||
'4-token 错位重写'))
|
||||
|
||||
# ---- E 组:单点严重错译 ----
|
||||
# E1 ID=17849 JP「消散ではなく死亡」→「死亡ではなく消散」
|
||||
records.append(('E1', '17849', 'JP',
|
||||
'replace_in', '**<消散>**ではなく**<死亡>**', '**<死亡>**ではなく**<消散>**',
|
||||
'反义错译修正'))
|
||||
|
||||
# E2 ID=580 JP/KR
|
||||
records.append(('E2', '580', 'JP',
|
||||
'set', 'ラマダーン10日目市',
|
||||
'斋月十日城日文修正'))
|
||||
records.append(('E2', '580', 'KR',
|
||||
'set', '라마단 10일째 시',
|
||||
'斋月十日城韩文修正'))
|
||||
|
||||
# E3 ID=704 EN
|
||||
records.append(('E3', '704', 'EN',
|
||||
'set', 'Sandefjord',
|
||||
'Sannessjøen 错位 → Sandefjord'))
|
||||
|
||||
# E4 ID=18752 EN「Train」→「Kasha」
|
||||
records.append(('E4', '18752', 'EN',
|
||||
'set', 'Kasha of Kurukshetra',
|
||||
'俱卢之野的火车=Kasha 非 Train'))
|
||||
|
||||
# E5 ID=18755 EN Satori → Okuu
|
||||
records.append(('E5', '18755', 'EN',
|
||||
'replace_in', 'Satori', 'Okuu',
|
||||
'阿空非觉(Satori)'))
|
||||
|
||||
# E6+G13 ID=17013 EN 统一为 "Summon Lord Mishaguji"
|
||||
records.append(('E6', '17013', 'EN',
|
||||
'set', 'Summon Lord Mishaguji',
|
||||
'Mishot Gūji → Lord Mishaguji'))
|
||||
|
||||
# E7 ID=17890 JP/KR(当前都已是 ミシャグチ/미샤구지님,决策记录修复——保险起见做幂等替换)
|
||||
# 当前 JP: [能力:ミシャグチ様に任せて!]
|
||||
# 当前 KR: [능력:미샤구지님께 맡겨!]
|
||||
# 用户决策 E7:JP 赤口様→ミシャグチ様; KR 적구→미샤구지
|
||||
# 看上去早已正确,做幂等 replace 即可(如不变也无害)
|
||||
records.append(('E7', '17890', 'JP',
|
||||
'replace_in', '赤口様', 'ミシャグチ様',
|
||||
'E7 幂等检查(若已正确则 noop)'))
|
||||
records.append(('E7', '17890', 'KR',
|
||||
'replace_in', '적구', '미샤구지',
|
||||
'E7 幂等检查(若已正确则 noop)'))
|
||||
|
||||
# E8 ID=18127 EN Successor → Queen(当前已是 Statue of the Queen,幂等 replace 不会错)
|
||||
records.append(('E8', '18127', 'EN',
|
||||
'replace_in', 'Statue of the Successor', 'Statue of the Queen',
|
||||
'E8 幂等检查(若已正确则 noop)'))
|
||||
|
||||
# E9+E10 ID=17013 已通过 E6 整体替换为 "Summon Lord Mishaguji" 完成
|
||||
# E10 ID=17009 EN 当前 "Summon Lesser Devil Priest" → "Summon Koakuma Priestess"
|
||||
records.append(('E10', '17009', 'EN',
|
||||
'set', 'Summon Koakuma Priestess',
|
||||
'Lesser Devil Priest → Koakuma Priestess'))
|
||||
|
||||
# ---- F 组:术语全表统一 ----
|
||||
# F1 韩文 주홍 안개 → 홍무(全表)
|
||||
records.append(('F1', '*', 'KR', 'replace_in_all', '주홍 안개', '홍무', '红雾韩文统一'))
|
||||
|
||||
# F2 韩文 유산 → 불가사의 仅奇观语境
|
||||
# 改的 7 条:461, 1211, 1213, 1214, 1215, 16654, 17042
|
||||
# 不改:1093(World Heritage), 16681(cultural heritage 真语境)
|
||||
F2_TARGETS = ['461', '1211', '1213', '1214', '1215', '16654', '17042']
|
||||
for tid in F2_TARGETS:
|
||||
records.append(('F2', tid, 'KR', 'replace_in', '유산', '불가사의', '奇观→불가사의'))
|
||||
|
||||
# F3 帕秋莉韩文:实查当前已经是 "널리지",无需修改
|
||||
# decisions 中 F3 说 "널릿지→널리지",但全表扫描 "널릿지" 命中 0 行。F3 NOOP。
|
||||
# 仍记录决定但不执行
|
||||
records.append(('F3', '*', 'KR', 'noop', '', '', '当前已为 널리지,无 널릿지 命中,NOOP'))
|
||||
|
||||
# ---- G 组:其他单点 P0 ----
|
||||
# G2 ID=289/290/293/294/295 TW 空翻译(繁中复制中文/英文并做台湾本地化)
|
||||
records.append(('G2', '289', 'TW', 'set', '關注我們', '台繁补全'))
|
||||
records.append(('G2', '290', 'TW', 'set', 'YouTube', '台繁补全'))
|
||||
records.append(('G2', '293', 'TW', 'set', 'Bilibili', '台繁补全'))
|
||||
records.append(('G2', '294', 'TW', 'set', 'Discord', '台繁补全'))
|
||||
records.append(('G2', '295', 'TW', 'set', '官方網站', '台繁补全'))
|
||||
|
||||
# G3 ID=435 KR「유적 광산 시」→「유적 발굴 시」
|
||||
records.append(('G3', '435', 'KR',
|
||||
'replace_in', '유적 광산 시', '유적 발굴 시',
|
||||
'挖掘遗迹重译'))
|
||||
|
||||
# G4 ID=461 KR 已包含在 F2 内(重复声明无害但跳过避免日志冗余)
|
||||
# 不重复添加
|
||||
|
||||
# G5 ID=17017 EN 当前是 "Humph, as expected of me!"——这是 WinChatBubble 文本,不含 Lesser Demon
|
||||
# 但 decisions 提到 17017/17009/17010 EN 小恶魔→Koakuma。17009/17010 EN 都修
|
||||
# 17017 EN 实际无 Lesser Demon 字串(确认 dump 无相关字段),跳过
|
||||
# 17009 已在 E10 处理;下面处理 17010
|
||||
records.append(('G5', '17010', 'EN',
|
||||
'replace_in', 'Lesser Demon Priest', 'Koakuma Priestess',
|
||||
'小恶魔→Koakuma'))
|
||||
|
||||
# G7 ID=16797 EN 动词丢失「the attacker s 2」
|
||||
records.append(('G7', '16797', 'EN',
|
||||
'set', 'When attacked, the attacker recovers 2 HP',
|
||||
'补丢失动词 recovers'))
|
||||
records.append(('G7', '16800', 'EN',
|
||||
'set', 'When killed, the killer recovers all action opportunities',
|
||||
'补丢失动词 recovers'))
|
||||
|
||||
# G8 ID=16987 KR 미조우 → 未遇见正确韩语
|
||||
records.append(('G8', '16987', 'KR',
|
||||
'set', '미조우(未遭遇)',
|
||||
'미조우是音译错;改回意译'))
|
||||
# 改主意——미조우 看起来是「未遭遇」的音读乱标,正确意译应为「미조우」其实就是日文「未遭遇」的韩文音读
|
||||
# 韩语外交术语标准是「미조우」其实不对。决策"重译为符合中文语义"——中文是"未遇见/未遭遇"
|
||||
# 韩语外交标准用语:「만나지 않음」(未见过) 或「미조우(未遭遇)」
|
||||
# 用户决策清单写「미조우 → 重译为韩语意思」。最稳妥的是改为「만나지 않음」
|
||||
# 重新覆盖前面这条
|
||||
records[-1] = ('G8', '16987', 'KR',
|
||||
'set', '만나지 않음',
|
||||
'미조우(日式音读)→韩语意译 "만나지 않음"')
|
||||
|
||||
# G9 ID=17078 KR「로열 플레어 도서관」→「황실 도서관」
|
||||
records.append(('G9', '17078', 'KR',
|
||||
'replace_in', '로열 플레어 도서관', '황실 도서관',
|
||||
'皇家图书馆韩文修正'))
|
||||
|
||||
# G10 ID=17245/17246/17247 Lv.3/4 描述截断 → 看上去当前 dump 完整,
|
||||
# 不过原审查报告标记为"截断",让我比较 ZH 与 EN/JP/KR 长度来确认。
|
||||
# 我手动核对了 dump:17245、17246、17247 当前 EN/JP/KR 均完整覆盖 Lv.1~Lv.4。
|
||||
# 因此 G10 无需修改(NOOP)。
|
||||
records.append(('G10', '17245', '*', 'noop', '', '', '当前已完整,NOOP'))
|
||||
records.append(('G10', '17246', '*', 'noop', '', '', '当前已完整,NOOP'))
|
||||
records.append(('G10', '17247', '*', 'noop', '', '', '当前已完整,NOOP'))
|
||||
|
||||
# G11 ID=17661 KR 점석성금! → 미다스의 손!
|
||||
records.append(('G11', '17661', 'KR',
|
||||
'set', '미다스의 손!',
|
||||
'点石成金韩文成语化'))
|
||||
|
||||
# G12 ID=17520 KR 엔 → 원
|
||||
records.append(('G12', '17520', 'KR',
|
||||
'replace_in', '엔', '원',
|
||||
'货币:日元→韩元'))
|
||||
|
||||
# G13 ID=17890 EN 当前已是 "Lord Mishaguji",幂等 replace
|
||||
records.append(('G13', '17890', 'EN',
|
||||
'replace_in', 'Mishot Gūji', 'Lord Mishaguji',
|
||||
'G13 幂等检查'))
|
||||
|
||||
# G14 ID=19298 JP「[后]クラス」→「[クイーン]クラス」; KR「[후]」→「[퀸]」
|
||||
records.append(('G14', '19298', 'JP',
|
||||
'replace_in', '**<[后]クラスの英雄>**', '**<[クイーン]クラスの英雄>**',
|
||||
'[后]→[クイーン]'))
|
||||
records.append(('G14', '19298', 'KR',
|
||||
'replace_in', '**<[후] 클래스 영웅>**', '**<[퀸] 클래스 영웅>**',
|
||||
'[후]→[퀸]'))
|
||||
|
||||
# G15 ID=19414 EN Saigyouji Yuyuko → Yuyuko Saigyouji
|
||||
records.append(('G15', '19414', 'EN',
|
||||
'set', 'Yuyuko Saigyouji',
|
||||
'姓名→名姓'))
|
||||
|
||||
# G16 ID=19429 EN Kirisame Marisa → Marisa Kirisame
|
||||
records.append(('G16', '19429', 'EN',
|
||||
'set', 'Marisa Kirisame',
|
||||
'姓名→名姓'))
|
||||
# ID=19427 Kijin Seija → Seija Kijin
|
||||
records.append(('G16', '19427', 'EN',
|
||||
'set', 'Seija Kijin',
|
||||
'姓名→名姓'))
|
||||
# ID=19418 Iizunamaru Megumu → Megumu Iizunamaru
|
||||
records.append(('G16', '19418', 'EN',
|
||||
'set', 'Megumu Iizunamaru',
|
||||
'姓名→名姓'))
|
||||
|
||||
# G17 ID=19423/19709 EN Hinananawi → Hinanawi
|
||||
records.append(('G17', '19423', 'EN',
|
||||
'replace_in', 'Hinananawi', 'Hinanawi',
|
||||
'比那名居拼写'))
|
||||
records.append(('G17', '19709', 'EN',
|
||||
'replace_in', 'Hinananawi', 'Hinanawi',
|
||||
'比那名居拼写'))
|
||||
|
||||
# G19 ID=19228 JP/KR Baruun-Urt 音译(不跟错误的中文「西」)
|
||||
records.append(('G19', '19228', 'JP',
|
||||
'set', 'バルーン・ウルト',
|
||||
'蒙古城市 Baruun-Urt 音译'))
|
||||
records.append(('G19', '19228', 'KR',
|
||||
'set', '바룬우르트',
|
||||
'蒙古城市 Baruun-Urt 音译'))
|
||||
|
||||
# G20 ID=19108 KR 가우가멜라 → 아르벨라
|
||||
records.append(('G20', '19108', 'KR',
|
||||
'set', '아르벨라',
|
||||
'Arbela韩文'))
|
||||
|
||||
# G21 ID=19123 KR 바푸온 → 바바푸라
|
||||
records.append(('G21', '19123', 'KR',
|
||||
'set', '바바푸라',
|
||||
'Bhavapura韩文'))
|
||||
|
||||
# G22 ID=19117 JP/KR Koh Ker
|
||||
records.append(('G22', '19117', 'JP',
|
||||
'set', 'コー・ケー',
|
||||
'Koh Ker 日文音译'))
|
||||
records.append(('G22', '19117', 'KR',
|
||||
'set', '코케르',
|
||||
'Koh Ker 韩文音译'))
|
||||
|
||||
# G24 ID=19257 TW 突尼西亞 → 突尼斯
|
||||
records.append(('G24', '19257', 'TW',
|
||||
'set', '突尼斯',
|
||||
'台繁也用突尼斯'))
|
||||
|
||||
# G26 ID=19768 EN my Lady → Milady
|
||||
records.append(('G26', '19768', 'EN',
|
||||
'replace_in', "my Lady's skill", "Milady's skill",
|
||||
'大小姐口吻'))
|
||||
|
||||
# G28 ID=19837 KR 修助词「청과을→청과를、농지으로→농지로」
|
||||
# 看 dump:当前 KR 实际包含
|
||||
# "**<청과>** 타일을 선택하여 **<청과>**을 채집해"
|
||||
# "**<청과>**을" 应改为 "**<청과>**를"(청과 末音节 '과' 是开音节用 를)
|
||||
records.append(('G28', '19837', 'KR',
|
||||
'replace_in', '**<청과>**을', '**<청과>**를',
|
||||
'修助词 을→를'))
|
||||
# G28 ID=19841 KR
|
||||
# "**<농지>**으로 개조하여" 改为 "**<농지>**로 개조하여" (농지 末音 '지'是开音节用 로)
|
||||
records.append(('G28', '19841', 'KR',
|
||||
'replace_in', '**<농지>**으로', '**<농지>**로',
|
||||
'修助词 으로→로'))
|
||||
|
||||
|
||||
# ============================================================
|
||||
# 执行修改
|
||||
# ============================================================
|
||||
|
||||
def main():
|
||||
wb = load_workbook(XLSX, data_only=False)
|
||||
ws = wb.active
|
||||
|
||||
# 建立 ID -> 行号 映射
|
||||
id_to_row = {}
|
||||
for r in range(2, ws.max_row + 1):
|
||||
v = ws.cell(row=r, column=COL_ID).value
|
||||
if v is None:
|
||||
continue
|
||||
s = str(v).replace('', '').strip()
|
||||
id_to_row[s] = r
|
||||
|
||||
success = [] # (code, tid, lang, before, after, comment)
|
||||
failures = [] # (code, tid, lang, reason)
|
||||
noops = [] # (code, tid, lang, reason)
|
||||
|
||||
for rec in records:
|
||||
code = rec[0]
|
||||
tid = rec[1]
|
||||
lang = rec[2]
|
||||
op = rec[3]
|
||||
|
||||
if op == 'noop':
|
||||
noops.append((code, tid, lang, rec[6] if len(rec) > 6 else ''))
|
||||
continue
|
||||
|
||||
if op == 'replace_in_all':
|
||||
old_sub, new_sub, comment = rec[4], rec[5], rec[6]
|
||||
col = LANG_COL[lang]
|
||||
count = 0
|
||||
for r in range(2, ws.max_row + 1):
|
||||
v = ws.cell(row=r, column=col).value
|
||||
if v is None:
|
||||
continue
|
||||
vs = str(v)
|
||||
if old_sub in vs:
|
||||
rid = str(ws.cell(row=r, column=COL_ID).value).replace('', '').strip()
|
||||
new_v = vs.replace(old_sub, new_sub)
|
||||
ws.cell(row=r, column=col).value = new_v
|
||||
success.append((code, rid, lang, vs[:120], new_v[:120], comment))
|
||||
count += 1
|
||||
if count == 0:
|
||||
failures.append((code, '*', lang, f'未在全表 {lang} 列找到 "{old_sub}"'))
|
||||
continue
|
||||
|
||||
# 以下操作需要按 tid 定位单行
|
||||
if tid not in id_to_row:
|
||||
failures.append((code, tid, lang, f'ID 不存在'))
|
||||
continue
|
||||
r = id_to_row[tid]
|
||||
col = LANG_COL[lang]
|
||||
before = ws.cell(row=r, column=col).value
|
||||
before_s = str(before) if before is not None else ''
|
||||
|
||||
if op == 'set':
|
||||
new_val, comment = rec[4], rec[5]
|
||||
if before_s == new_val:
|
||||
noops.append((code, tid, lang, '值已等于目标,跳过'))
|
||||
else:
|
||||
ws.cell(row=r, column=col).value = new_val
|
||||
success.append((code, tid, lang, before_s, new_val, comment))
|
||||
elif op == 'replace_in':
|
||||
old_sub, new_sub, comment = rec[4], rec[5], rec[6]
|
||||
if old_sub not in before_s:
|
||||
# 检查是否已经是目标态
|
||||
if new_sub in before_s:
|
||||
noops.append((code, tid, lang, f'已含 "{new_sub}",无 "{old_sub}",跳过'))
|
||||
else:
|
||||
failures.append((code, tid, lang, f'未找到子串 "{old_sub}"'))
|
||||
else:
|
||||
new_val = before_s.replace(old_sub, new_sub)
|
||||
ws.cell(row=r, column=col).value = new_val
|
||||
success.append((code, tid, lang, before_s, new_val, comment))
|
||||
|
||||
# 保存
|
||||
wb.save(XLSX)
|
||||
|
||||
# 生成报告
|
||||
with open(REPORT, 'w', encoding='utf-8') as f:
|
||||
f.write(f'# Multilingual.xlsx 修复报告 ({datetime.now().strftime("%Y-%m-%d %H:%M:%S")})\n\n')
|
||||
f.write(f'- 备份:`Multilingual.before_fix_2026-05-14.bak.xlsx`\n')
|
||||
f.write(f'- 成功修改:**{len(success)}** 条\n')
|
||||
f.write(f'- 跳过(NOOP):**{len(noops)}** 条\n')
|
||||
f.write(f'- 失败:**{len(failures)}** 条\n\n')
|
||||
|
||||
f.write('## 成功列表\n\n')
|
||||
f.write('| 决策 | ID | 语言 | 修改前 | 修改后 | 说明 |\n')
|
||||
f.write('|---|---|---|---|---|---|\n')
|
||||
for code, tid, lang, before, after, comment in success:
|
||||
b = before.replace('\n', ' ').replace('|', '\\|')[:200]
|
||||
a = after.replace('\n', ' ').replace('|', '\\|')[:200]
|
||||
c = comment.replace('|', '\\|')
|
||||
f.write(f'| {code} | {tid} | {lang} | {b} | {a} | {c} |\n')
|
||||
|
||||
if noops:
|
||||
f.write('\n## NOOP 列表(已是目标态或决策为 NOOP)\n\n')
|
||||
f.write('| 决策 | ID | 语言 | 原因 |\n')
|
||||
f.write('|---|---|---|---|\n')
|
||||
for code, tid, lang, reason in noops:
|
||||
f.write(f'| {code} | {tid} | {lang} | {reason} |\n')
|
||||
|
||||
if failures:
|
||||
f.write('\n## 失败列表\n\n')
|
||||
f.write('| 决策 | ID | 语言 | 原因 |\n')
|
||||
f.write('|---|---|---|---|\n')
|
||||
for code, tid, lang, reason in failures:
|
||||
f.write(f'| {code} | {tid} | {lang} | {reason} |\n')
|
||||
|
||||
print(f'成功修改 {len(success)} 条')
|
||||
print(f'NOOP {len(noops)} 条')
|
||||
print(f'失败 {len(failures)} 条')
|
||||
if failures:
|
||||
print('\n失败详情:')
|
||||
for code, tid, lang, reason in failures:
|
||||
print(f' [{code}] ID={tid} {lang}: {reason}')
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
418
Tools/multilingual_check/apply_p1_fixes.py
Normal file
418
Tools/multilingual_check/apply_p1_fixes.py
Normal file
@ -0,0 +1,418 @@
|
||||
"""
|
||||
TH1 多语言 P1 修复批处理脚本
|
||||
====================================
|
||||
按 decisions_p1.md 已确认的 [✅] 项批量修改 Multilingual.xlsx。
|
||||
备份在 Multilingual.before_p1_2026-05-14.bak.xlsx。
|
||||
|
||||
列布局:
|
||||
A=ID, B=活跃文本, C=中文, D=繁中, E=英文, F=日文, G=韩文
|
||||
|
||||
输出:
|
||||
- 修改后的 Multilingual.xlsx
|
||||
- Multilingual_P1_Mechanical_Fix_Report.md 对照表
|
||||
"""
|
||||
|
||||
import openpyxl
|
||||
from openpyxl import load_workbook
|
||||
from datetime import datetime
|
||||
import io
|
||||
import sys
|
||||
|
||||
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
|
||||
|
||||
XLSX = r'C:\TH1\TH1\Tools\Multilingual.xlsx'
|
||||
REPORT = r'C:\TH1\TH1\Tools\Multilingual_P1_Mechanical_Fix_Report.md'
|
||||
|
||||
# 列号常量
|
||||
COL_ID = 1
|
||||
COL_ZH = 3
|
||||
COL_TW = 4
|
||||
COL_EN = 5
|
||||
COL_JP = 6
|
||||
COL_KR = 7
|
||||
|
||||
LANG_COL = {'ZH': COL_ZH, 'TW': COL_TW, 'EN': COL_EN, 'JP': COL_JP, 'KR': COL_KR}
|
||||
|
||||
# ============================================================
|
||||
# 修改记录格式
|
||||
# - 'set':单元格完全替换。 (code, tid, lang, 'set', new_val, comment)
|
||||
# - 'replace_in':单格内 substring 替换。 (code, tid, lang, 'replace_in', old, new, comment)
|
||||
# - 'replace_in_all':全表该语言列的 substring 替换。 (code, '*', lang, 'replace_in_all', old, new, comment)
|
||||
# - 'append':在末尾追加字符串。 (code, tid, lang, 'append', suffix, comment)
|
||||
# - 'noop':(code, tid, lang, 'noop', '', '', reason)
|
||||
# ============================================================
|
||||
|
||||
records = []
|
||||
|
||||
# =====================================================================
|
||||
# C05:{五行} 占位符 全表统一为 {火}{木}{水}{金}{土}
|
||||
# =====================================================================
|
||||
# EN 列:{Fire}/{Wood}/{Water}/{Metal}/{Earth} → 中文版
|
||||
records.append(('C05', '*', 'EN', 'replace_in_all', '{Fire}', '{火}', 'C05 五行占位符 EN'))
|
||||
records.append(('C05', '*', 'EN', 'replace_in_all', '{Wood}', '{木}', 'C05 五行占位符 EN'))
|
||||
records.append(('C05', '*', 'EN', 'replace_in_all', '{Water}', '{水}', 'C05 五行占位符 EN'))
|
||||
records.append(('C05', '*', 'EN', 'replace_in_all', '{Metal}', '{金}', 'C05 五行占位符 EN'))
|
||||
records.append(('C05', '*', 'EN', 'replace_in_all', '{Earth}', '{土}', 'C05 五行占位符 EN'))
|
||||
|
||||
# KR 列:{화}/{목}/{수}/{금}/{토} → 中文版
|
||||
records.append(('C05', '*', 'KR', 'replace_in_all', '{화}', '{火}', 'C05 五行占位符 KR'))
|
||||
records.append(('C05', '*', 'KR', 'replace_in_all', '{목}', '{木}', 'C05 五行占位符 KR'))
|
||||
records.append(('C05', '*', 'KR', 'replace_in_all', '{수}', '{水}', 'C05 五行占位符 KR'))
|
||||
records.append(('C05', '*', 'KR', 'replace_in_all', '{금}', '{金}', 'C05 五行占位符 KR'))
|
||||
records.append(('C05', '*', 'KR', 'replace_in_all', '{토}', '{土}', 'C05 五行占位符 KR'))
|
||||
|
||||
# =====================================================================
|
||||
# C06:数字漏译 — 实查 EN 已合理表达,全 NOOP
|
||||
# =====================================================================
|
||||
# 1112 EN 已含 "threefold"(合理表达"3倍"),NOOP
|
||||
# 1114 EN 已含 "quadruple"(合理表达"4倍"),NOOP
|
||||
# 1282 任务指定保持,NOOP
|
||||
# 18084 EN 含 "once"(合理),NOOP
|
||||
records.append(('C06', '1112', 'EN', 'noop', '', '', 'EN 已含 threefold,合理表达'))
|
||||
records.append(('C06', '1114', 'EN', 'noop', '', '', 'EN 已含 quadruple,合理表达'))
|
||||
records.append(('C06', '1282', 'EN', 'noop', '', '', '任务指示保持 nine versus five'))
|
||||
records.append(('C06', '18084', 'EN', 'noop', '', '', 'EN 已含 once,合理表达'))
|
||||
|
||||
# =====================================================================
|
||||
# C07:标签 (<br>) 数不匹配
|
||||
# =====================================================================
|
||||
# 17036 JP:在「召喚できる <br>\n**<-------- Lv.2 -------->**」处多了一个 <br>,删之
|
||||
records.append(('C07', '17036', 'JP',
|
||||
'replace_in',
|
||||
'召喚できる <br>\n**<-------- Lv.2 -------->**',
|
||||
'召喚できる\n**<-------- Lv.2 -------->**',
|
||||
'JP 多余 <br>,对齐 ZH/EN/KR'))
|
||||
|
||||
# 17329 EN:末尾缺 <br>,追加
|
||||
records.append(('C07', '17329', 'EN',
|
||||
'append', '<br>',
|
||||
'EN 末尾缺 <br>,对齐 ZH/JP/KR'))
|
||||
|
||||
# 17370 EN:末尾缺 <br>,追加
|
||||
records.append(('C07', '17370', 'EN',
|
||||
'append', '<br>',
|
||||
'EN 末尾缺 <br>,对齐 ZH/JP/KR'))
|
||||
|
||||
# =====================================================================
|
||||
# C08-神像系列(雕像/神像 JP/KR 外来语统一)
|
||||
# =====================================================================
|
||||
# 神像(标题字段 single token)
|
||||
records.append(('C08-神像', '809', 'JP', 'set', 'ナイトの神像', '马之神像 JP 外来语化'))
|
||||
records.append(('C08-神像', '809', 'KR', 'set', '나이트의 신상', '马之神像 KR 外来语化'))
|
||||
records.append(('C08-神像', '810', 'JP', 'set', 'ルークの神像', '车之神像 JP 外来语化'))
|
||||
records.append(('C08-神像', '810', 'KR', 'set', '룩의 신상', '车之神像 KR(已是 룩,幂等)'))
|
||||
records.append(('C08-神像', '811', 'JP', 'set', 'クイーンの神像', '后之神像 JP(已是 クイーン,幂等)'))
|
||||
records.append(('C08-神像', '811', 'KR', 'set', '퀸의 신상', '后之神像 KR(已是 퀸,幂等)'))
|
||||
records.append(('C08-神像', '812', 'JP', 'set', 'ビショップの神像', '相之神像 JP(已是 ビショップ,幂等)'))
|
||||
records.append(('C08-神像', '812', 'KR', 'set', '비숍의 신상', '相之神像 KR(已是 비숍,幂等)'))
|
||||
|
||||
# 雕像(标题字段)
|
||||
records.append(('C08-雕像', '18127', 'JP', 'set', 'クイーンの彫像', '后之雕像 JP 外来语化'))
|
||||
records.append(('C08-雕像', '18127', 'KR', 'set', '퀸의 조각상', '后之雕像 KR 外来语化'))
|
||||
records.append(('C08-雕像', '18133', 'JP', 'set', 'ルークの彫像', '车之雕像 JP 外来语化'))
|
||||
records.append(('C08-雕像', '18133', 'KR', 'set', '룩의 조각상', '车之雕像 KR 外来语化'))
|
||||
records.append(('C08-雕像', '18138', 'JP', 'set', 'ナイトの彫像', '马之雕像 JP 外来语化'))
|
||||
records.append(('C08-雕像', '18138', 'KR', 'set', '나이트의 조각상', '马之雕像 KR 外来语化'))
|
||||
|
||||
# 18128 / 18131 / 18134 / 18139 描述句中 token 也同步替换
|
||||
records.append(('C08-雕像', '18128', 'JP',
|
||||
'replace_in', '**<后の彫像>**', '**<クイーンの彫像>**',
|
||||
'18128 JP 内嵌 token 同步'))
|
||||
records.append(('C08-雕像', '18128', 'KR',
|
||||
'replace_in', '**<후의 조각상>**', '**<퀸의 조각상>**',
|
||||
'18128 KR 内嵌 token 同步'))
|
||||
records.append(('C08-雕像', '18131', 'JP',
|
||||
'replace_in', '**<相の彫像>**', '**<ビショップの彫像>**',
|
||||
'18131 JP 内嵌 token 同步'))
|
||||
records.append(('C08-雕像', '18131', 'KR',
|
||||
'replace_in', '**<상의 조각상>**', '**<비숍의 조각상>**',
|
||||
'18131 KR 内嵌 token 同步'))
|
||||
records.append(('C08-雕像', '18134', 'JP',
|
||||
'replace_in', '**<車の彫像>**', '**<ルークの彫像>**',
|
||||
'18134 JP 内嵌 token 同步'))
|
||||
records.append(('C08-雕像', '18134', 'KR',
|
||||
'replace_in', '**<전차 조각상>**', '**<룩의 조각상>**',
|
||||
'18134 KR 内嵌 token 同步'))
|
||||
records.append(('C08-雕像', '18139', 'JP',
|
||||
'replace_in', '**<馬の彫像>**', '**<ナイトの彫像>**',
|
||||
'18139 JP 内嵌 token 同步'))
|
||||
records.append(('C08-雕像', '18139', 'KR',
|
||||
'replace_in', '**<기마 조각상>**', '**<나이트의 조각상>**',
|
||||
'18139 KR 内嵌 token 同步'))
|
||||
|
||||
# =====================================================================
|
||||
# C08-雕像系列 EN 18707/18710/18715/18717 — Statue of the X 格式
|
||||
# =====================================================================
|
||||
# 18707 EN: "Build Horse God Statue" → "Build Statue of the Knight"
|
||||
records.append(('C08-雕像EN', '18707', 'EN', 'set',
|
||||
'Build Statue of the Knight',
|
||||
'18707 EN 统一 Statue of the X'))
|
||||
# 18710 EN: "Build Queen God Statue" → "Build Statue of the Queen"
|
||||
records.append(('C08-雕像EN', '18710', 'EN', 'set',
|
||||
'Build Statue of the Queen',
|
||||
'18710 EN 统一 Statue of the X'))
|
||||
# 18717 EN: "Divine Statue of Kings" → "Statue of the King"
|
||||
records.append(('C08-雕像EN', '18717', 'EN', 'set',
|
||||
'Statue of the King',
|
||||
'18717 EN 统一 Statue of the X'))
|
||||
# 18715 EN:已含 **<Statue of the Bishop>**,但句子主宾颠倒(属 P0 类问题),任务文字"统一为 Statue of the X 格式"
|
||||
# → 既然 token 已是目标,且任务未明确动主宾结构,NOOP
|
||||
records.append(('C08-雕像EN', '18715', 'EN', 'noop', '', '',
|
||||
'token 已是 Statue of the Bishop,主宾结构不在本次范围'))
|
||||
|
||||
# =====================================================================
|
||||
# C08-火焰猫燐 203 EN
|
||||
# =====================================================================
|
||||
records.append(('C08-火焰猫燐', '203', 'EN', 'set', 'Rin Kaenbyou', '姓名→名姓'))
|
||||
|
||||
# =====================================================================
|
||||
# C08-护法帆船 18739/18740 EN
|
||||
# =====================================================================
|
||||
records.append(('C08-护法帆船', '18739', 'EN', 'set', 'Dharma Guardian Sailboat', '补 Dharma'))
|
||||
records.append(('C08-护法帆船', '18740', 'EN',
|
||||
'replace_in', '**<Guardian Sailboat>**', '**<Dharma Guardian Sailboat>**',
|
||||
'18740 EN 内嵌 token 同步'))
|
||||
|
||||
# =====================================================================
|
||||
# C08-术语 1016 挖掘
|
||||
# =====================================================================
|
||||
records.append(('C08-1016', '1016', 'EN',
|
||||
'replace_in', '**<Mine>**', '**<Excavate>**',
|
||||
'挖掘术语 EN'))
|
||||
records.append(('C08-1016', '1016', 'JP',
|
||||
'replace_in', '**<採掘>**', '**<発掘>**',
|
||||
'挖掘术语 JP'))
|
||||
records.append(('C08-1016', '1016', 'KR',
|
||||
'replace_in', '**<채굴>**', '**<발굴>**',
|
||||
'挖掘术语 KR'))
|
||||
|
||||
# =====================================================================
|
||||
# C08-术语 1247 深海 EN — Ocean → Deep Sea
|
||||
# =====================================================================
|
||||
records.append(('C08-1247', '1247', 'EN',
|
||||
'replace_in', '**<Ocean>**', '**<Deep Sea>**',
|
||||
'深海术语 Ocean→Deep Sea'))
|
||||
|
||||
# =====================================================================
|
||||
# C08-术语 17309 神圣追猎 多语统一
|
||||
# =====================================================================
|
||||
# EN 已是 Divine Hunt,保持
|
||||
records.append(('C08-17309', '17309', 'JP', 'set', '神聖追猟', '神圣追猎 JP 统一'))
|
||||
records.append(('C08-17309', '17309', 'KR', 'set', '신성한 추적', '神圣追猎 KR 统一'))
|
||||
|
||||
# =====================================================================
|
||||
# C08-祟神 16846/16847/16848 KR 타타리가미 → 저주신
|
||||
# =====================================================================
|
||||
records.append(('C08-祟神', '16846', 'KR',
|
||||
'replace_in', '타타리가미', '저주신', '祟神韩文意译'))
|
||||
records.append(('C08-祟神', '16847', 'KR',
|
||||
'replace_in', '타타리가미', '저주신', '祟神韩文意译'))
|
||||
records.append(('C08-祟神', '16848', 'KR',
|
||||
'replace_in', '타타리가미', '저주신', '祟神韩文意译'))
|
||||
|
||||
# =====================================================================
|
||||
# C08-星熊勇仪 18886 KR 유우기 → 유기
|
||||
# =====================================================================
|
||||
records.append(('C08-勇仪', '18886', 'KR',
|
||||
'replace_in', '유우기', '유기', '星熊勇仪韩文'))
|
||||
|
||||
# =====================================================================
|
||||
# C08-正法 17831 EN Dharma → True Dharma
|
||||
# =====================================================================
|
||||
records.append(('C08-正法', '17831', 'EN', 'set', 'True Dharma', '正法→True Dharma'))
|
||||
|
||||
# =====================================================================
|
||||
# C08-奇迹时代 17657 JP
|
||||
# =====================================================================
|
||||
# 17657 当前 JP 已是「奇跡の時代」(标题),且无 desc,NOOP
|
||||
records.append(('C08-奇迹', '17657', 'JP', 'noop', '', '',
|
||||
'17657 JP 已为「奇跡の時代」,title 字段无 desc'))
|
||||
|
||||
# =====================================================================
|
||||
# C08-天狗酒馆 16703 JP — 已是「天狗酒場」NOOP
|
||||
# =====================================================================
|
||||
records.append(('C08-酒馆', '16703', 'JP', 'noop', '', '',
|
||||
'16703 JP 已为「天狗酒場」'))
|
||||
|
||||
# =====================================================================
|
||||
# C08-猿田彦的先导 17304 KR
|
||||
# =====================================================================
|
||||
records.append(('C08-先导', '17304', 'KR', 'set', '사루타히코의 선도', '韩文:선도자→선도'))
|
||||
|
||||
# =====================================================================
|
||||
# C08-竹林 18563 KR 대나무숲 → 죽림
|
||||
# =====================================================================
|
||||
records.append(('C08-竹林', '18563', 'KR',
|
||||
'replace_in', '대나무숲', '죽림', '竹林韩文统一'))
|
||||
|
||||
# =====================================================================
|
||||
# C10 二级专名
|
||||
# =====================================================================
|
||||
# 1546 JP: [后]クラス → [クイーン]クラス
|
||||
records.append(('C10', '1546', 'JP',
|
||||
'replace_in', '**<[后]クラスの英雄>**', '**<[クイーン]クラスの英雄>**',
|
||||
'1546 JP [后]→[クイーン]'))
|
||||
# 480 KR: 토요사토미미노 미코 已是标准译名,NOOP
|
||||
records.append(('C10', '480', 'KR', 'noop', '', '',
|
||||
'480 KR 已为「토요사토미미노 미코」标准译名'))
|
||||
# 2092 KR: 프랑 → 플랑드르
|
||||
records.append(('C10', '2092', 'KR',
|
||||
'replace_in', '프랑', '플랑드르',
|
||||
'2092 KR 芙兰→完整名'))
|
||||
# 17043 TW: 八阪→八坂
|
||||
records.append(('C10', '17043', 'TW',
|
||||
'replace_in', '八阪神奈子', '八坂神奈子',
|
||||
'17043 TW 八阪→八坂'))
|
||||
|
||||
# =====================================================================
|
||||
# C11 错译
|
||||
# =====================================================================
|
||||
records.append(('C11', '670', 'TW', 'set', '艾哈邁達巴德', 'Ahmedabad TW 修正'))
|
||||
records.append(('C11', '675', 'TW', 'set', '瓦多達拉', 'Vadodara TW 修正'))
|
||||
records.append(('C11', '684', 'TW', 'set', '布巴內斯瓦爾', 'Bhubaneswar TW 修正'))
|
||||
records.append(('C11', '687', 'TW', 'set', '卑爾根', 'Bergen TW 修正'))
|
||||
records.append(('C11', '961', 'EN',
|
||||
'replace_in', 'our original fists', 'our fists',
|
||||
'961 EN 删去 original'))
|
||||
|
||||
|
||||
# ============================================================
|
||||
# 执行修改
|
||||
# ============================================================
|
||||
|
||||
def main():
|
||||
wb = load_workbook(XLSX, data_only=False)
|
||||
ws = wb.active
|
||||
|
||||
# 建立 ID -> 行号 映射
|
||||
id_to_row = {}
|
||||
for r in range(2, ws.max_row + 1):
|
||||
v = ws.cell(row=r, column=COL_ID).value
|
||||
if v is None:
|
||||
continue
|
||||
s = str(v).replace('', '').strip()
|
||||
id_to_row[s] = r
|
||||
|
||||
success = [] # (code, tid, lang, before, after, comment)
|
||||
failures = [] # (code, tid, lang, reason)
|
||||
noops = [] # (code, tid, lang, reason)
|
||||
|
||||
for rec in records:
|
||||
code = rec[0]
|
||||
tid = rec[1]
|
||||
lang = rec[2]
|
||||
op = rec[3]
|
||||
|
||||
if op == 'noop':
|
||||
reason = rec[6] if len(rec) > 6 else (rec[4] if len(rec) > 4 else '')
|
||||
noops.append((code, tid, lang, reason))
|
||||
continue
|
||||
|
||||
if op == 'replace_in_all':
|
||||
old_sub, new_sub, comment = rec[4], rec[5], rec[6]
|
||||
col = LANG_COL[lang]
|
||||
count = 0
|
||||
for r in range(2, ws.max_row + 1):
|
||||
v = ws.cell(row=r, column=col).value
|
||||
if v is None:
|
||||
continue
|
||||
vs = str(v)
|
||||
if old_sub in vs:
|
||||
rid = str(ws.cell(row=r, column=COL_ID).value).replace('', '').strip()
|
||||
new_v = vs.replace(old_sub, new_sub)
|
||||
ws.cell(row=r, column=col).value = new_v
|
||||
# 摘要原值/新值(取出现位置上下文)
|
||||
idx = vs.find(old_sub)
|
||||
ctx_before = vs[max(0, idx-20): idx + len(old_sub) + 20]
|
||||
idx2 = new_v.find(new_sub)
|
||||
ctx_after = new_v[max(0, idx2-20): idx2 + len(new_sub) + 20]
|
||||
success.append((code, rid, lang, ctx_before, ctx_after, comment))
|
||||
count += 1
|
||||
if count == 0:
|
||||
noops.append((code, '*', lang, f'未在全表 {lang} 列找到 "{old_sub}"'))
|
||||
continue
|
||||
|
||||
# 以下操作需要按 tid 定位单行
|
||||
if tid not in id_to_row:
|
||||
failures.append((code, tid, lang, f'ID 不存在'))
|
||||
continue
|
||||
r = id_to_row[tid]
|
||||
col = LANG_COL[lang]
|
||||
before = ws.cell(row=r, column=col).value
|
||||
before_s = str(before) if before is not None else ''
|
||||
|
||||
if op == 'set':
|
||||
new_val, comment = rec[4], rec[5]
|
||||
if before_s == new_val:
|
||||
noops.append((code, tid, lang, f'值已等于目标 "{new_val[:60]}",跳过'))
|
||||
else:
|
||||
ws.cell(row=r, column=col).value = new_val
|
||||
success.append((code, tid, lang, before_s, new_val, comment))
|
||||
elif op == 'replace_in':
|
||||
old_sub, new_sub, comment = rec[4], rec[5], rec[6]
|
||||
if old_sub not in before_s:
|
||||
if new_sub in before_s:
|
||||
noops.append((code, tid, lang, f'已含目标子串 "{new_sub[:40]}"'))
|
||||
else:
|
||||
failures.append((code, tid, lang, f'未找到子串 "{old_sub[:60]}"'))
|
||||
else:
|
||||
new_val = before_s.replace(old_sub, new_sub)
|
||||
ws.cell(row=r, column=col).value = new_val
|
||||
success.append((code, tid, lang, before_s, new_val, comment))
|
||||
elif op == 'append':
|
||||
suffix, comment = rec[4], rec[5]
|
||||
if before_s.endswith(suffix):
|
||||
noops.append((code, tid, lang, f'末尾已是 "{suffix}"'))
|
||||
else:
|
||||
new_val = before_s + suffix
|
||||
ws.cell(row=r, column=col).value = new_val
|
||||
success.append((code, tid, lang, before_s[-60:], new_val[-60:], comment))
|
||||
|
||||
# 保存
|
||||
wb.save(XLSX)
|
||||
|
||||
# 生成报告
|
||||
with open(REPORT, 'w', encoding='utf-8') as f:
|
||||
f.write(f'# Multilingual.xlsx P1 机械修复报告 ({datetime.now().strftime("%Y-%m-%d %H:%M:%S")})\n\n')
|
||||
f.write(f'- 备份:`Multilingual.before_p1_2026-05-14.bak.xlsx`\n')
|
||||
f.write(f'- 决策依据:`multilingual_check/decisions_p1.md` 中所有 [✅] 项(不含 C09/C99)\n')
|
||||
f.write(f'- 成功修改:**{len(success)}** 条\n')
|
||||
f.write(f'- 跳过(NOOP):**{len(noops)}** 条\n')
|
||||
f.write(f'- 失败:**{len(failures)}** 条\n\n')
|
||||
|
||||
f.write('## 成功列表\n\n')
|
||||
f.write('| 决策 | ID | 语言 | 修改前(摘要) | 修改后(摘要) | 说明 |\n')
|
||||
f.write('|---|---|---|---|---|---|\n')
|
||||
for code, tid, lang, before, after, comment in success:
|
||||
b = before.replace('\n', ' ').replace('|', '\\|')[:200]
|
||||
a = after.replace('\n', ' ').replace('|', '\\|')[:200]
|
||||
c = comment.replace('|', '\\|')
|
||||
f.write(f'| {code} | {tid} | {lang} | {b} | {a} | {c} |\n')
|
||||
|
||||
if noops:
|
||||
f.write('\n## NOOP / SKIPPED 列表\n\n')
|
||||
f.write('| 决策 | ID | 语言 | 原因 |\n')
|
||||
f.write('|---|---|---|---|\n')
|
||||
for code, tid, lang, reason in noops:
|
||||
r = reason.replace('\n', ' ').replace('|', '\\|')
|
||||
f.write(f'| {code} | {tid} | {lang} | {r} |\n')
|
||||
|
||||
if failures:
|
||||
f.write('\n## 失败列表\n\n')
|
||||
f.write('| 决策 | ID | 语言 | 原因 |\n')
|
||||
f.write('|---|---|---|---|\n')
|
||||
for code, tid, lang, reason in failures:
|
||||
r = reason.replace('\n', ' ').replace('|', '\\|')
|
||||
f.write(f'| {code} | {tid} | {lang} | {r} |\n')
|
||||
|
||||
print(f'成功修改 {len(success)} 条')
|
||||
print(f'NOOP {len(noops)} 条')
|
||||
print(f'失败 {len(failures)} 条')
|
||||
if failures:
|
||||
print('\n失败详情:')
|
||||
for code, tid, lang, reason in failures:
|
||||
print(f' [{code}] ID={tid} {lang}: {reason}')
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
441
Tools/multilingual_check/apply_p1_retranslate.py
Normal file
441
Tools/multilingual_check/apply_p1_retranslate.py
Normal file
@ -0,0 +1,441 @@
|
||||
"""
|
||||
TH1 多语言 P1 重译/润色脚本(C09 + C99)
|
||||
====================================
|
||||
针对 Multilingual_P1_Clusters_For_Review.md 中 P1-C09 (机翻味/不自然 34 条)
|
||||
和 P1-C99 (其他未归类 26 条) 做语义重译/润色。
|
||||
|
||||
列布局:A=ID, B=活跃, C=ZH, D=TW, E=EN, F=JP, G=KR
|
||||
|
||||
操作:
|
||||
- ('set', tid, lang, new_val, comment)
|
||||
- ('replace_in', tid, lang, old, new, comment)
|
||||
- ('noop', tid, lang, reason)
|
||||
|
||||
原则:
|
||||
- 保留 **<...>** 标签数量+位置;不动 {param} 占位符;不动换行符
|
||||
- 日文:避免直译,地道
|
||||
- 英文:玩家话用口语化,系统提示用简洁
|
||||
- 韩文:避免汉字音直译
|
||||
- 东方专名遵守 VERIFIED_TERMS(플랑드르/레밀리아/사이교우지 等不要动)
|
||||
"""
|
||||
|
||||
import openpyxl
|
||||
from openpyxl import load_workbook
|
||||
from datetime import datetime
|
||||
import io
|
||||
import sys
|
||||
|
||||
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
|
||||
|
||||
XLSX = r'C:\TH1\TH1\Tools\Multilingual.xlsx'
|
||||
REPORT = r'C:\TH1\TH1\Tools\Multilingual_P1_Retranslate_Report.md'
|
||||
|
||||
COL_ID = 1
|
||||
COL_ZH = 3
|
||||
COL_TW = 4
|
||||
COL_EN = 5
|
||||
COL_JP = 6
|
||||
COL_KR = 7
|
||||
|
||||
LANG_COL = {'ZH': COL_ZH, 'TW': COL_TW, 'EN': COL_EN, 'JP': COL_JP, 'KR': COL_KR}
|
||||
|
||||
# ========================================================================
|
||||
# 修改记录定义
|
||||
# ========================================================================
|
||||
# 每条形如:(cluster, tid, lang, op, ...args, comment)
|
||||
# op == 'set' : args = (new_val, comment)
|
||||
# op == 'replace_in' : args = (old, new, comment)
|
||||
# op == 'noop' : args = (comment,)
|
||||
# ========================================================================
|
||||
|
||||
R = []
|
||||
|
||||
# ============================== C09 不自然/机翻味 (34 条) ==============================
|
||||
|
||||
# --- 1. ID=963 JP "败北并不可怕。" 当前: 負けは何も恐ろしくない。 ---
|
||||
# 自然化:「敗北は恐るるに足りぬ。」更有老练角色感
|
||||
R.append(('C09', 963, 'JP', 'set', '敗北など恐るるに足りぬ。', 'JP 重译,"恐るるに足りぬ"更自然有气势'))
|
||||
|
||||
# --- 2. ID=976 JP "别怪老身不留情面。" 当前: 情け容赦ないことを責めるなよ。 ---
|
||||
R.append(('C09', 976, 'JP', 'set', '情け容赦せぬが、恨むでないぞ。', 'JP 重译,老者口吻+自然'))
|
||||
|
||||
# --- 3. ID=1058 JP "我要看到血流成河!" 当前: 血の川が流れるのを見せてやる! ---
|
||||
R.append(('C09', 1058, 'JP', 'set', '血の海を見せてやろう!', 'JP 重译,更地道有威慑感'))
|
||||
|
||||
# --- 4. ID=1072 EN "我要打10个" 当前: I'll take on 10 of you ---
|
||||
# 中文是李小龙的梗"我能打十个"。EN 玩家话风格
|
||||
R.append(('C09', 1072, 'EN', 'set', "I can take on ten of them!", 'EN 重译,更有玩家自嘲/挑衅味'))
|
||||
|
||||
# --- 5. ID=1244 EN "可以在**<浅海>**移动" 当前: Can move on **<Water>** ---
|
||||
# 浅海与深海要区分;当前 Water 太泛。改 Shallow Water
|
||||
R.append(('C09', 1244, 'EN', 'replace_in', '**<Water>**', '**<Shallow Water>**',
|
||||
'EN 浅海术语精化为 Shallow Water'))
|
||||
|
||||
# --- 6. ID=1613 JP 当前末尾缺感叹号 ---
|
||||
R.append(('C09', 1613, 'JP', 'replace_in',
|
||||
'平原または浅瀬エリアに遺産を建造しましょう',
|
||||
'平原または浅瀬エリアに遺産を建造しましょう!',
|
||||
'JP 末尾补感叹号,与中文EN对齐'))
|
||||
|
||||
# --- 7. ID=1635 JP "蓬莱山帝国" ---
|
||||
# 建议:保留。NOOP
|
||||
R.append(('C09', 1635, 'JP', 'noop', '蓬莱山帝国 JP 保留(专名)'))
|
||||
|
||||
# --- 8. ID=1718 JP "请等待**<{param}>**行动..." 当前: **<{param}>**行動お待ちください ---
|
||||
R.append(('C09', 1718, 'JP', 'set', '**<{param}>**の行動をお待ちください...',
|
||||
'JP 加助词「の」「を」,并补省略号'))
|
||||
|
||||
# --- 9. ID=1756 JP "无聊。铃仙,这把你来打。" ---
|
||||
# 建议:保留。NOOP
|
||||
R.append(('C09', 1756, 'JP', 'noop', '建议保留,当前已自然'))
|
||||
|
||||
# --- 10. ID=1768 JP "来吧,站在胜利者这边,风光无限。" ---
|
||||
R.append(('C09', 1768, 'JP', 'set', 'さあ、勝者の側に立てば、栄光は思いのままだ。',
|
||||
'JP 重译,"風光明媚な景色を眺めましょう"是字面直译,原意是"风光"=荣耀'))
|
||||
|
||||
# --- 11. ID=1770 JP "供品随便拿,报销走我账。" ---
|
||||
R.append(('C09', 1770, 'JP', 'set', '供物はご自由に、経費はこちら持ちで結構。',
|
||||
'JP 重译,"こちら持ち"更自然口语化'))
|
||||
|
||||
# --- 12. ID=1868 JP "天下大势,分久必合,合久必分。" ---
|
||||
R.append(('C09', 1868, 'JP', 'set',
|
||||
'天下の大勢、分かれて久しければ必ず合し、合して久しければ必ず分かれる。',
|
||||
'JP 重译,三国演义原句的日文标准译法'))
|
||||
|
||||
# --- 13. ID=1901 JP "老身可不与棋盘外的尘埃为伍。" 当前: ...塵とを共にはせぬぞ ---
|
||||
# "とを"是助词冗余;改为标准
|
||||
R.append(('C09', 1901, 'JP', 'set', '老身は盤外の塵と連れ立つことはせぬ。',
|
||||
'JP 重译,删冗余助词,更自然'))
|
||||
|
||||
# --- 14. ID=2068 KR "林生" 当前: 림생 ---
|
||||
# 这是角色名(妖怪山的天狗大将的别名? 不确定,但"林生"看起来像人名/称号)
|
||||
# 当前韩文 림생 是汉字直接朝鲜语读音,不自然
|
||||
# 改为 "숲의 자식" (森林之子) 更有诗意;保留人名感
|
||||
R.append(('C09', 2068, 'KR', 'set', '숲의 아이',
|
||||
'KR 重译,림생汉字音直译,"숲의 아이"更自然有诗意'))
|
||||
|
||||
# --- 15. ID=2471 KR "...每回合开始时..." 当前: 턴당 시작 시 ---
|
||||
R.append(('C09', 2471, 'KR', 'replace_in', '턴당 시작 시', '매 턴 시작 시',
|
||||
'KR 修正:턴당 시작 시 → 매 턴 시작 시(更自然)'))
|
||||
|
||||
# --- 16. ID=2473 KR 同上 ---
|
||||
R.append(('C09', 2473, 'KR', 'replace_in', '턴당 시작 시', '매 턴 시작 시',
|
||||
'KR 修正:턴당 시작 시 → 매 턴 시작 시'))
|
||||
|
||||
# --- 17. ID=16700 JP "科技变革之神" 当前: 科学変革の神 ---
|
||||
# 中文是"科技"(=Tech)不是"科学"(Science)
|
||||
R.append(('C09', 16700, 'JP', 'set', '科学技術変革の神',
|
||||
'JP 修正:科技=科学技術,与EN "Technological" 对齐'))
|
||||
|
||||
# --- 18. ID=16795 KR "回合开始时失去**<移动>**机会" ---
|
||||
R.append(('C09', 16795, 'KR', 'replace_in', '턴당 시작 시', '턴 시작 시',
|
||||
'KR 修正:턴당 시작 시 → 턴 시작 시'))
|
||||
|
||||
# --- 19. ID=16841 KR "以御柱为权杖" 当前: 어주를 권장 삼아 ---
|
||||
# "어주"是御柱汉字音,但御柱(おんばしら)在韩文圈通常音译为 온바시라
|
||||
R.append(('C09', 16841, 'KR', 'replace_in', '어주를 권장 삼아', '온바시라를 신표로 삼아',
|
||||
'KR 修正:御柱 어주(汉字音) → 온바시라(音译) + 권장=权杖 改 신표(神物)更贴文化'))
|
||||
|
||||
# --- 20. ID=17157 EN "土豆大王与核能尊神" ---
|
||||
# 建议:当前可接受。NOOP
|
||||
R.append(('C09', 17157, 'EN', 'noop', '当前 EN 表达自然,保留'))
|
||||
|
||||
# --- 21. ID=17318 JP "狂犬断噬" 当前: 狂犬断噬(无假名/漏译) ---
|
||||
R.append(('C09', 17318, 'JP', 'set', '狂犬断ち噬み',
|
||||
'JP 重译:原条目漏本地化,给出日语化读法'))
|
||||
|
||||
# --- 22. ID=17589 KR "屠龙" 当前: 용 도살 ---
|
||||
# "용 도살"=屠杀龙,太血腥;游戏术语应该是"屠龙者/驱龙者"
|
||||
R.append(('C09', 17589, 'KR', 'set', '드래곤 슬레이어',
|
||||
'KR 重译:용 도살(屠杀)语感差,沿用EN同款外来语'))
|
||||
|
||||
# --- 23. ID=17605 JP "强敌终结!" 当前: 強敵終結(漏感叹号+生硬) ---
|
||||
R.append(('C09', 17605, 'JP', 'set', '強敵撃破!',
|
||||
'JP 重译:強敵終結是直译,"撃破"是日语游戏术语标准'))
|
||||
|
||||
# --- 24. ID=17857 KR "和荒连理" 当前: 화혼과 황혼의 연리 ---
|
||||
# "화혼과 황혼"是字面音;但日语本来是「和魂と荒魂の連理」(和魂荒魂),非"和昏(婚)"
|
||||
# 改为更自然的音译注释式
|
||||
R.append(('C09', 17857, 'KR', 'set', '니기미타마와 아라미타마의 연리',
|
||||
'KR 重译:和魂(和荒)=니기미타마, 荒魂=아라미타마(神道术语音译)'))
|
||||
|
||||
# --- 25. ID=19044 JP "埃德兹纳" Edzna(墨西哥玛雅城) 当前: エツナ ---
|
||||
R.append(('C09', 19044, 'JP', 'set', 'エズナ',
|
||||
'JP 修正:玛雅城 Edzna 标准日文音译 エズナ'))
|
||||
|
||||
# --- 26. ID=19119 JP "扶南城" Vyadhapura 当前: 扶南城(汉字直接没本地化) ---
|
||||
R.append(('C09', 19119, 'JP', 'set', '扶南(フナン)',
|
||||
'JP 重译:扶南标准日文标读法'))
|
||||
|
||||
# --- 27. ID=19134 JP "暖粒" Neak Leung 当前: ヌオンルー ---
|
||||
R.append(('C09', 19134, 'JP', 'set', 'ニアック・ルン',
|
||||
'JP 重译:柬埔寨 Neak Leung 标准日文音译'))
|
||||
|
||||
# --- 28. ID=19134 KR "暖粒" Neak Leung 当前: 누온립 ---
|
||||
R.append(('C09', 19134, 'KR', 'set', '닉릉',
|
||||
'KR 重译:Neak Leung 韩文常用音译'))
|
||||
|
||||
# --- 29. ID=19362 EN "帝国的全能神" 当前: Imperial Almighty ---
|
||||
R.append(('C09', 19362, 'EN', 'set', 'Imperial Almighty God',
|
||||
'EN 补 God,更完整有称号感'))
|
||||
|
||||
# --- 30. ID=19272 KR "阿空,不可以烧哦~" 当前: 아쿤 ---
|
||||
# 阿空=お空=Utsuho 古明地の妹。韩文圈常用 오쿠우(お空 音读)
|
||||
R.append(('C09', 19272, 'KR', 'replace_in', '아쿤', '오쿠우',
|
||||
'KR 修正:阿空=お空(おくう),韩文应是 오쿠우'))
|
||||
|
||||
# --- 31. ID=19441 JP "...每层乘以0.5..." 当前: 各層ごとに0.5倍 ---
|
||||
R.append(('C09', 19441, 'JP', 'replace_in', '各層ごとに0.5倍', 'スタックごとに0.5倍',
|
||||
'JP 修正:層=stack 在游戏圈用 スタック'))
|
||||
|
||||
# --- 32. ID=19560 EN ---
|
||||
# 当前: "Breaking invisibility when enemies move..." 语法别扭(动词形式不对)
|
||||
R.append(('C09', 19560, 'EN', 'set',
|
||||
"Invisible to enemies. Invisibility is broken when an enemy moves to this unit's location or this unit actively spends action points.",
|
||||
'EN 重译:分词改主谓结构,更自然'))
|
||||
|
||||
# --- 33. ID=19672 JP "前往" 当前: 移動 ---
|
||||
# 当前是"移动",按 ZH 中文意思是"前往(去某处)",UI 按钮
|
||||
R.append(('C09', 19672, 'JP', 'set', '向かう',
|
||||
'JP 重译:前往=向かう,比"移動"更贴UI按钮含义'))
|
||||
|
||||
# --- 34. ID=19829 KR "特别鸣谢" 当前: 스페셜 땡스 ---
|
||||
# "땡스"是 thanks 谐音俗语,credits 屏不太合适;改 특별 감사
|
||||
R.append(('C09', 19829, 'KR', 'set', '특별 감사',
|
||||
'KR 重译:스페셜 땡스=俚语,鸣谢页应用 특별 감사'))
|
||||
|
||||
|
||||
# ============================== C99 其他未归类 (26 条) ==============================
|
||||
|
||||
# --- 1. ID=437 ZH "该城市奖纳入" 错字 奖→将 ---
|
||||
R.append(('C99', 437, 'ZH', 'replace_in', '该城市奖纳入', '该城市将纳入',
|
||||
'ZH 错字 奖→将'))
|
||||
|
||||
# --- 2. ID=437 TW 同上 ---
|
||||
R.append(('C99', 437, 'TW', 'replace_in', '該城市獎納入', '該城市將納入',
|
||||
'TW 错字 獎→將'))
|
||||
|
||||
# --- 3. ID=607 TW "鲁昂" Rouen 当前: 盧昂 ---
|
||||
R.append(('C99', 607, 'TW', 'set', '魯昂', 'TW 错字:盧→魯(与简中"鲁昂"对应繁体)'))
|
||||
|
||||
# --- 4. ID=667 TW "乌甲因" Ujjain 当前: 烏甲因 ---
|
||||
R.append(('C99', 667, 'TW', 'set', '烏賈因', 'TW 修正 Ujjain 正确译名'))
|
||||
|
||||
# --- 5. ID=667 ZH "乌甲因" 错字 ---
|
||||
R.append(('C99', 667, 'ZH', 'set', '乌贾因', 'ZH 修正 Ujjain 正确译名'))
|
||||
|
||||
# --- 6. ID=767 TW "内沙布尔" 当前: 內沙布林 ---
|
||||
R.append(('C99', 767, 'TW', 'set', '內沙布爾', 'TW 错字:布林→布爾'))
|
||||
|
||||
# --- 7. ID=929 TW "今晚没饭喫了" 错字 喫→吃 ---
|
||||
R.append(('C99', 929, 'TW', 'replace_in', '沒飯喫了', '沒飯吃了',
|
||||
'TW 错字 喫→吃'))
|
||||
|
||||
# --- 8. ID=1385 KR 标点缺失 ---
|
||||
R.append(('C99', 1385, 'KR', 'set',
|
||||
'**<군항>** 건설 가능. 모든 유닛이 해양 방어를 획득한다.',
|
||||
'KR 加句号断句'))
|
||||
|
||||
# --- 9. ID=1865 JP "金刚" 简体字 金刚 → 繁体 金剛 ---
|
||||
R.append(('C99', 1865, 'JP', 'replace_in', '金刚の怒り', '金剛の怒り',
|
||||
'JP 简化字 刚→剛'))
|
||||
|
||||
# --- 10. ID=2151 ZH "首通" → "首都" ---
|
||||
R.append(('C99', 2151, 'ZH', 'replace_in', '首通联通', '首都联通',
|
||||
'ZH 错字 首通→首都'))
|
||||
|
||||
# --- 11. ID=16773 EN 末尾缺词 "1 opportunity" 应该是 "1 movement opportunity" ---
|
||||
R.append(('C99', 16773, 'EN', 'replace_in',
|
||||
'immediately gain 1 opportunity',
|
||||
'immediately gain 1 movement opportunity',
|
||||
'EN 补完整:1 movement opportunity'))
|
||||
|
||||
# --- 12. ID=17131 KR 不存在 ---
|
||||
R.append(('C99', 17131, 'KR', 'noop', 'ID 17131 不在表中,跳过'))
|
||||
|
||||
# --- 13. ID=17897 TW "禦神簽" → "御神籤" ---
|
||||
R.append(('C99', 17897, 'TW', 'set', '[能力:御神籤]',
|
||||
'TW 简繁错转 禦→御、簽→籤'))
|
||||
|
||||
# --- 14. ID=18305 ZH "蕾米莉亚斯卡雷特" → 加间隔号 ---
|
||||
R.append(('C99', 18305, 'ZH', 'set', '蕾米莉亚·斯卡雷特',
|
||||
'ZH 加间隔号·'))
|
||||
|
||||
# --- 15. ID=18305 TW 同上 ---
|
||||
R.append(('C99', 18305, 'TW', 'set', '蕾米莉亞·斯卡雷特',
|
||||
'TW 加间隔号·'))
|
||||
|
||||
# --- 16. ID=18307 ZH "芙兰朵露斯卡雷特" → 加间隔号 ---
|
||||
R.append(('C99', 18307, 'ZH', 'set', '芙兰朵露·斯卡雷特',
|
||||
'ZH 加间隔号·'))
|
||||
|
||||
# --- 17. ID=18307 TW 同上 ---
|
||||
R.append(('C99', 18307, 'TW', 'set', '芙蘭朵露·斯卡雷特',
|
||||
'TW 加间隔号·'))
|
||||
|
||||
# --- 18. ID=18558 ZH 空格 → 冒号 ---
|
||||
R.append(('C99', 18558, 'ZH', 'set',
|
||||
'帝国的狂气之瞳:铃仙·优昙华院·因幡',
|
||||
'ZH 空格→冒号'))
|
||||
|
||||
# --- 19. ID=18558 TW 空格 → 冒号 ---
|
||||
R.append(('C99', 18558, 'TW', 'set',
|
||||
'帝國的狂氣之瞳:鈴仙·優曇華院·因幡',
|
||||
'TW 空格→冒号'))
|
||||
|
||||
# --- 20. ID=18558 EN 已是冒号,NOOP ---
|
||||
R.append(('C99', 18558, 'EN', 'noop', 'EN 已用冒号,保留'))
|
||||
|
||||
# --- 21. ID=18778 JP "ムガルの星空き" → "ムガルの星空" ---
|
||||
R.append(('C99', 18778, 'JP', 'set', 'ムガルの星空',
|
||||
'JP typo:星空き→星空 (多了个 き)'))
|
||||
|
||||
# --- 22. ID=18779 ZH "北纬27的日晱之王" → "北纬27度的日晷之王" ---
|
||||
R.append(('C99', 18779, 'ZH', 'set', '北纬27度的日晷之王',
|
||||
'ZH 错字:补"度"+晱→晷(sundial)'))
|
||||
|
||||
# --- 23. ID=18779 TW 同上 ---
|
||||
R.append(('C99', 18779, 'TW', 'set', '北緯27度的日晷之王',
|
||||
'TW 错字:补"度"+晱→晷'))
|
||||
|
||||
# --- 24. ID=19788 ZH "角色立绘//主KV" 双斜杠 → 单斜杠 ---
|
||||
R.append(('C99', 19788, 'ZH', 'set', '角色立绘/主KV',
|
||||
'ZH 双斜杠→单斜杠'))
|
||||
|
||||
# --- 25. ID=19755 ZH "炮兵于步兵" → "炮兵与步兵" ---
|
||||
R.append(('C99', 19755, 'ZH', 'replace_in', '炮兵于步兵', '炮兵与步兵',
|
||||
'ZH 错字 于→与'))
|
||||
|
||||
# --- 26. ID=19755 TW 同上 ---
|
||||
R.append(('C99', 19755, 'TW', 'replace_in', '炮兵於步兵', '炮兵與步兵',
|
||||
'TW 错字 於→與'))
|
||||
|
||||
|
||||
# ============================================================
|
||||
# 执行
|
||||
# ============================================================
|
||||
|
||||
def main():
|
||||
wb = load_workbook(XLSX, data_only=False)
|
||||
ws = wb.active
|
||||
|
||||
# ID → 行号
|
||||
id_to_row = {}
|
||||
for r in range(2, ws.max_row + 1):
|
||||
v = ws.cell(row=r, column=COL_ID).value
|
||||
if v is None:
|
||||
continue
|
||||
s = str(v).replace('', '').strip()
|
||||
id_to_row[s] = r
|
||||
|
||||
success = [] # (cluster, tid, lang, before, after, comment)
|
||||
noops = [] # (cluster, tid, lang, reason)
|
||||
failures = [] # (cluster, tid, lang, reason)
|
||||
|
||||
for rec in R:
|
||||
cluster = rec[0]
|
||||
tid = rec[1]
|
||||
lang = rec[2]
|
||||
op = rec[3]
|
||||
|
||||
if op == 'noop':
|
||||
reason = rec[4]
|
||||
noops.append((cluster, tid, lang, reason))
|
||||
continue
|
||||
|
||||
if str(tid) not in id_to_row:
|
||||
failures.append((cluster, tid, lang, 'ID 不在表中'))
|
||||
continue
|
||||
|
||||
r = id_to_row[str(tid)]
|
||||
col = LANG_COL[lang]
|
||||
before = ws.cell(row=r, column=col).value
|
||||
before_s = str(before) if before is not None else ''
|
||||
|
||||
if op == 'set':
|
||||
new_val, comment = rec[4], rec[5]
|
||||
if before_s == new_val:
|
||||
noops.append((cluster, tid, lang, f'值已等于目标,跳过'))
|
||||
else:
|
||||
# 安全检查:**<...>** 数量
|
||||
if before_s.count('**<') != new_val.count('**<'):
|
||||
failures.append((cluster, tid, lang,
|
||||
f'**<...>** 标签数变化: before={before_s.count("**<")} after={new_val.count("**<")}'))
|
||||
continue
|
||||
if before_s.count('**<') != new_val.count('>**'):
|
||||
failures.append((cluster, tid, lang,
|
||||
f'**<...>** 起始与结束不匹配: open={new_val.count("**<")} close={new_val.count(">**")}'))
|
||||
continue
|
||||
# 占位符 {param} 数量
|
||||
if before_s.count('{param}') != new_val.count('{param}'):
|
||||
failures.append((cluster, tid, lang,
|
||||
f'{{param}} 占位符数变化'))
|
||||
continue
|
||||
ws.cell(row=r, column=col).value = new_val
|
||||
success.append((cluster, tid, lang, before_s, new_val, comment))
|
||||
|
||||
elif op == 'replace_in':
|
||||
old_sub, new_sub, comment = rec[4], rec[5], rec[6]
|
||||
if old_sub not in before_s:
|
||||
if new_sub in before_s:
|
||||
noops.append((cluster, tid, lang, f'已含目标子串'))
|
||||
else:
|
||||
failures.append((cluster, tid, lang, f'未找到子串 "{old_sub[:60]}"'))
|
||||
else:
|
||||
new_val = before_s.replace(old_sub, new_sub)
|
||||
# 占位符校验
|
||||
if before_s.count('{param}') != new_val.count('{param}'):
|
||||
failures.append((cluster, tid, lang, f'{{param}} 占位符变化'))
|
||||
continue
|
||||
if before_s.count('**<') != new_val.count('**<'):
|
||||
failures.append((cluster, tid, lang, f'**<...>** 标签数变化'))
|
||||
continue
|
||||
ws.cell(row=r, column=col).value = new_val
|
||||
success.append((cluster, tid, lang, before_s, new_val, comment))
|
||||
|
||||
wb.save(XLSX)
|
||||
|
||||
# 报告
|
||||
with open(REPORT, 'w', encoding='utf-8') as f:
|
||||
f.write(f'# Multilingual.xlsx P1 重译/润色报告 (C09 + C99) — {datetime.now().strftime("%Y-%m-%d %H:%M:%S")}\n\n')
|
||||
f.write(f'- 备份:`Multilingual.before_p1_2026-05-14.bak.xlsx`\n')
|
||||
f.write(f'- 任务:P1-C09 (机翻味/不自然 34条) + P1-C99 (其他未归类 26条)\n')
|
||||
f.write(f'- 成功修改:**{len(success)}** 条\n')
|
||||
f.write(f'- 跳过(NOOP):**{len(noops)}** 条\n')
|
||||
f.write(f'- 失败:**{len(failures)}** 条\n\n')
|
||||
|
||||
# 按 cluster 分组成功
|
||||
f.write('## 成功列表\n\n')
|
||||
f.write('| 簇 | ID | 语言 | 修改前 | 修改后 | 说明 |\n')
|
||||
f.write('|---|---|---|---|---|---|\n')
|
||||
for cluster, tid, lang, before, after, comment in success:
|
||||
b = before.replace('\n', '\\n').replace('|', '\\|')[:300]
|
||||
a = after.replace('\n', '\\n').replace('|', '\\|')[:300]
|
||||
c = comment.replace('|', '\\|')
|
||||
f.write(f'| {cluster} | {tid} | {lang} | {b} | {a} | {c} |\n')
|
||||
|
||||
if noops:
|
||||
f.write('\n## NOOP / 跳过\n\n')
|
||||
f.write('| 簇 | ID | 语言 | 原因 |\n')
|
||||
f.write('|---|---|---|---|\n')
|
||||
for cluster, tid, lang, reason in noops:
|
||||
r2 = reason.replace('\n', ' ').replace('|', '\\|')
|
||||
f.write(f'| {cluster} | {tid} | {lang} | {r2} |\n')
|
||||
|
||||
if failures:
|
||||
f.write('\n## 失败\n\n')
|
||||
f.write('| 簇 | ID | 语言 | 原因 |\n')
|
||||
f.write('|---|---|---|---|\n')
|
||||
for cluster, tid, lang, reason in failures:
|
||||
r2 = reason.replace('\n', ' ').replace('|', '\\|')
|
||||
f.write(f'| {cluster} | {tid} | {lang} | {r2} |\n')
|
||||
|
||||
print(f'成功 {len(success)} / NOOP {len(noops)} / 失败 {len(failures)}')
|
||||
if failures:
|
||||
print('\n失败明细:')
|
||||
for c, t, l, rs in failures:
|
||||
print(f' [{c}] ID={t} {l}: {rs}')
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
265
Tools/multilingual_check/apply_p2_mechanical.py
Normal file
265
Tools/multilingual_check/apply_p2_mechanical.py
Normal file
@ -0,0 +1,265 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
TH1 多语言 P2 阶段第一批机械修复
|
||||
- D03 繁中术语/地名 (5 条)
|
||||
- D05 分隔符 // -> / (3 条, 同 ID 不同语言)
|
||||
- D99 标点 (8 条: 7 JP + 1 ZH)
|
||||
|
||||
仅处理决策文件 decisions_p2.md 中标 [✅] 的机械修复部分。
|
||||
不动 D01/D02 (重译,另一个 agent 处理)。
|
||||
|
||||
列顺序: A=ID, B=活跃文本, C=中文, D=繁中, E=英文, F=日文, G=韩文
|
||||
"""
|
||||
import sys
|
||||
import io
|
||||
import shutil
|
||||
from pathlib import Path
|
||||
from openpyxl import load_workbook
|
||||
|
||||
# 强制 stdout UTF-8
|
||||
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
|
||||
|
||||
XLSX = Path(r"C:\TH1\TH1\Tools\Multilingual.xlsx")
|
||||
BACKUP = Path(r"C:\TH1\TH1\Tools\Multilingual.before_p2_2026-05-15.bak.xlsx")
|
||||
|
||||
# 列索引 (1-based)
|
||||
COL_ID = 1
|
||||
COL_ZH = 3
|
||||
COL_TW = 4
|
||||
COL_EN = 5
|
||||
COL_JP = 6
|
||||
COL_KR = 7
|
||||
|
||||
LANG_NAMES = {COL_ZH: 'ZH', COL_TW: 'TW', COL_EN: 'EN', COL_JP: 'JP', COL_KR: 'KR'}
|
||||
|
||||
|
||||
# ===== 修复任务定义 =====
|
||||
# 每条任务: (id_str, category, lang_col, kind, expected_before, new_value_or_substring_pair, note)
|
||||
# kind:
|
||||
# 'replace_substr' : 在原文中查找 old 子串并替换为 new;若找不到 old 则 NOOP
|
||||
# 'set_exact' : 期望当前值精确等于 expected_before,替换为新值;不等则 NOOP
|
||||
# 'append' : 在原文末尾追加 suffix;若已以 suffix 结尾则 NOOP
|
||||
|
||||
TASKS = [
|
||||
# ---- D03 繁中地名/术语 ----
|
||||
{
|
||||
'id': '16850', 'cat': 'D03', 'col': COL_TW, 'kind': 'replace_substr',
|
||||
'old': '遠端', 'new': '遠距離',
|
||||
'note': '繁中术语: 遠端 -> 遠距離 (Ranged)',
|
||||
},
|
||||
{
|
||||
'id': '16944', 'cat': 'D03', 'col': COL_TW, 'kind': 'replace_substr',
|
||||
'old': '遠端', 'new': '遠距離',
|
||||
'note': '繁中术语: 遠端 -> 遠距離 (Ranged)',
|
||||
},
|
||||
{
|
||||
'id': '717', 'cat': 'D03', 'col': COL_TW, 'kind': 'replace_substr',
|
||||
'old': '伯明罕', 'new': '伯明翰',
|
||||
'note': '繁中地名: Birmingham',
|
||||
},
|
||||
{
|
||||
'id': '738', 'cat': 'D03', 'col': COL_TW, 'kind': 'replace_substr',
|
||||
'old': '亞伯丁', 'new': '阿伯丁',
|
||||
'note': '繁中地名: Aberdeen',
|
||||
},
|
||||
{
|
||||
'id': '695', 'cat': 'D03', 'col': COL_TW, 'kind': 'replace_substr',
|
||||
'old': '博多', 'new': '博德',
|
||||
'note': '繁中地名: Bodø',
|
||||
},
|
||||
|
||||
# ---- D05 分隔符 // -> / ----
|
||||
{
|
||||
'id': '19788', 'cat': 'D05', 'col': COL_EN, 'kind': 'set_exact',
|
||||
'expected': 'Character Art // Main Key Visual',
|
||||
'new': 'Character Art / Main Key Visual',
|
||||
'note': 'EN 分隔符: // -> /',
|
||||
},
|
||||
{
|
||||
'id': '19788', 'cat': 'D05', 'col': COL_JP, 'kind': 'set_exact',
|
||||
'expected': 'キャラクター立ち絵 // メインキービジュアル',
|
||||
'new': 'キャラクター立ち絵 / メインキービジュアル',
|
||||
'note': 'JP 分隔符: // -> /',
|
||||
},
|
||||
{
|
||||
'id': '19788', 'cat': 'D05', 'col': COL_KR, 'kind': 'set_exact',
|
||||
'expected': '캐릭터 일러스트 // 메인 키 비주얼',
|
||||
'new': '캐릭터 일러스트 / 메인 키 비주얼',
|
||||
'note': 'KR 分隔符: // -> /',
|
||||
},
|
||||
|
||||
# ---- D99 标点 ----
|
||||
{
|
||||
'id': '984', 'cat': 'D99', 'col': COL_JP, 'kind': 'append',
|
||||
'suffix': '。',
|
||||
'note': 'JP 句末加。',
|
||||
},
|
||||
{
|
||||
'id': '1011', 'cat': 'D99', 'col': COL_JP, 'kind': 'set_exact',
|
||||
'expected': '回復が必要',
|
||||
'new': '回復が必要!',
|
||||
'note': 'JP 句末加!',
|
||||
},
|
||||
{
|
||||
'id': '1330', 'cat': 'D99', 'col': COL_JP, 'kind': 'append',
|
||||
'suffix': '。',
|
||||
'note': 'JP 句末加。',
|
||||
},
|
||||
{
|
||||
'id': '19283', 'cat': 'D99', 'col': COL_JP, 'kind': 'append',
|
||||
'suffix': '。',
|
||||
'note': 'JP 句末加。 (代理人形 -> 代理人形。)',
|
||||
},
|
||||
{
|
||||
'id': '19435', 'cat': 'D99', 'col': COL_JP, 'kind': 'append',
|
||||
'suffix': '!',
|
||||
'note': 'JP 句末加! (獲得 -> 獲得!)',
|
||||
},
|
||||
{
|
||||
'id': '19439', 'cat': 'D99', 'col': COL_JP, 'kind': 'append',
|
||||
'suffix': '!',
|
||||
'note': 'JP 句末加! (獲得 -> 獲得!)',
|
||||
},
|
||||
# ID=1385 ZH: 当前 '可以建造**<军港>**所有单位获得海洋防御'
|
||||
# 期望: '可以建造**<军港>**。所有单位获得海洋防御。'
|
||||
# 即在 **<军港>** 后插入 。 并在末尾追加 。
|
||||
{
|
||||
'id': '1385', 'cat': 'D99', 'col': COL_ZH, 'kind': 'set_exact',
|
||||
'expected': '可以建造**<军港>**所有单位获得海洋防御',
|
||||
'new': '可以建造**<军港>**。所有单位获得海洋防御。',
|
||||
'note': 'ZH 两处补句号: <军港> 之后 + 末尾',
|
||||
},
|
||||
]
|
||||
|
||||
|
||||
def normalize_id(v):
|
||||
"""规范化 ID 字段: 去 BOM/空白, 转 str."""
|
||||
if v is None:
|
||||
return None
|
||||
s = str(v).lstrip('').strip()
|
||||
return s
|
||||
|
||||
|
||||
def main():
|
||||
# 0. 确认备份存在
|
||||
if not BACKUP.exists():
|
||||
print(f"[WARN] 备份不存在,自动创建: {BACKUP}")
|
||||
shutil.copy2(XLSX, BACKUP)
|
||||
else:
|
||||
print(f"[OK] 备份已就绪: {BACKUP}")
|
||||
|
||||
# 1. 建立 ID -> row 索引
|
||||
print(f"[INFO] 打开 {XLSX}")
|
||||
wb = load_workbook(XLSX)
|
||||
ws = wb.active
|
||||
|
||||
id_to_row = {}
|
||||
for r in range(2, ws.max_row + 1):
|
||||
rid = normalize_id(ws.cell(row=r, column=COL_ID).value)
|
||||
if rid is None or rid == '':
|
||||
continue
|
||||
# 同 ID 重复时只记第一次 (本表预期 ID 唯一)
|
||||
id_to_row.setdefault(rid, r)
|
||||
|
||||
print(f"[INFO] 共扫描到 {len(id_to_row)} 个 ID")
|
||||
|
||||
# 2. 逐条应用
|
||||
results = [] # list of (task_idx, id, cat, lang, status, before, after, note)
|
||||
counter = {'SUCCESS': 0, 'NOOP': 0, 'FAIL': 0}
|
||||
|
||||
for idx, task in enumerate(TASKS, 1):
|
||||
tid = task['id']
|
||||
cat = task['cat']
|
||||
col = task['col']
|
||||
lang = LANG_NAMES[col]
|
||||
note = task['note']
|
||||
|
||||
if tid not in id_to_row:
|
||||
status = 'FAIL'
|
||||
results.append((idx, tid, cat, lang, status, '<not found>', '<not found>', note + ' | ID 不存在'))
|
||||
counter[status] += 1
|
||||
print(f"[FAIL] #{idx} ID={tid} {cat}/{lang}: ID 在表中找不到")
|
||||
continue
|
||||
|
||||
row = id_to_row[tid]
|
||||
cell = ws.cell(row=row, column=col)
|
||||
before = cell.value
|
||||
before_str = '' if before is None else str(before)
|
||||
|
||||
kind = task['kind']
|
||||
new_val = None
|
||||
status = None
|
||||
reason = ''
|
||||
|
||||
if kind == 'replace_substr':
|
||||
old = task['old']
|
||||
new = task['new']
|
||||
if old not in before_str:
|
||||
status = 'NOOP'
|
||||
reason = f"未在原文中找到子串「{old}」"
|
||||
else:
|
||||
new_val = before_str.replace(old, new)
|
||||
if new_val == before_str:
|
||||
status = 'NOOP'
|
||||
reason = '替换后值未变化'
|
||||
else:
|
||||
status = 'SUCCESS'
|
||||
|
||||
elif kind == 'set_exact':
|
||||
expected = task['expected']
|
||||
new = task['new']
|
||||
if before_str != expected:
|
||||
status = 'FAIL'
|
||||
reason = f"原文不匹配 expected: 实际=<{before_str!r}>, 期望=<{expected!r}>"
|
||||
elif before_str == new:
|
||||
status = 'NOOP'
|
||||
reason = '原文已为目标值'
|
||||
else:
|
||||
new_val = new
|
||||
status = 'SUCCESS'
|
||||
|
||||
elif kind == 'append':
|
||||
suffix = task['suffix']
|
||||
if before_str.endswith(suffix):
|
||||
status = 'NOOP'
|
||||
reason = f'已以「{suffix}」结尾'
|
||||
else:
|
||||
new_val = before_str + suffix
|
||||
status = 'SUCCESS'
|
||||
|
||||
else:
|
||||
status = 'FAIL'
|
||||
reason = f'未知 kind: {kind}'
|
||||
|
||||
# 写入
|
||||
if status == 'SUCCESS':
|
||||
cell.value = new_val
|
||||
results.append((idx, tid, cat, lang, status, before_str, new_val, note))
|
||||
print(f"[SUCCESS] #{idx} ID={tid} {cat}/{lang} (row {row})")
|
||||
print(f" before: {before_str!r}")
|
||||
print(f" after : {new_val!r}")
|
||||
else:
|
||||
results.append((idx, tid, cat, lang, status, before_str, before_str, f"{note} | {reason}"))
|
||||
print(f"[{status}] #{idx} ID={tid} {cat}/{lang} (row {row}): {reason}")
|
||||
|
||||
counter[status] += 1
|
||||
|
||||
# 3. 保存
|
||||
print()
|
||||
print(f"[INFO] 保存 {XLSX}")
|
||||
wb.save(XLSX)
|
||||
print("[OK] 保存完成")
|
||||
|
||||
# 4. 输出统计
|
||||
print()
|
||||
print("===== 统计 =====")
|
||||
print(f"SUCCESS: {counter['SUCCESS']}")
|
||||
print(f"NOOP : {counter['NOOP']}")
|
||||
print(f"FAIL : {counter['FAIL']}")
|
||||
print(f"TOTAL : {len(TASKS)}")
|
||||
|
||||
return results, counter
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
894
Tools/multilingual_check/apply_p2_retranslate.py
Normal file
894
Tools/multilingual_check/apply_p2_retranslate.py
Normal file
@ -0,0 +1,894 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
TH1 多语言 P2-D01/D02 重译/润色脚本
|
||||
|
||||
输入: C:\\TH1\\TH1\\Tools\\multilingual_check\\p2_d01_d02.json (143 条)
|
||||
输出: 修改 C:\\TH1\\TH1\\Tools\\Multilingual.xlsx
|
||||
报告: C:\\TH1\\TH1\\Tools\\Multilingual_P2_Retranslate_Report.md
|
||||
|
||||
策略:
|
||||
- 每条决策硬编码 (rid, lang, action='apply'|'skip', expected_before, new_value, note)
|
||||
- apply: 检查当前值 == expected_before 才覆盖;否则记 FAIL
|
||||
- skip: 跳过,记理由
|
||||
- 列顺序: A=ID, B=活跃文本, C=中文, D=繁中, E=英文, F=日文, G=韩文
|
||||
|
||||
禁忌(脚本拒绝执行的反向修改):
|
||||
- 플랑드르 -> 플란드르
|
||||
- 레밀리아 -> 레미리아
|
||||
- 이나바 테위 -> 이나바 테이
|
||||
- 사이교우지 -> 사이교지
|
||||
- 已统一名字 (Yuyuko Saigyouji / Marisa Kirisame 等)
|
||||
- **<...>** 标签结构变动
|
||||
"""
|
||||
import sys
|
||||
import io
|
||||
import json
|
||||
import re
|
||||
import shutil
|
||||
from pathlib import Path
|
||||
from openpyxl import load_workbook
|
||||
|
||||
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
|
||||
|
||||
XLSX = Path(r"C:\TH1\TH1\Tools\Multilingual.xlsx")
|
||||
BACKUP = Path(r"C:\TH1\TH1\Tools\Multilingual.before_p2_2026-05-15.bak.xlsx")
|
||||
JSON_IN = Path(r"C:\TH1\TH1\Tools\multilingual_check\p2_d01_d02.json")
|
||||
REPORT = Path(r"C:\TH1\TH1\Tools\Multilingual_P2_Retranslate_Report.md")
|
||||
|
||||
LANG_COL = {'zh': 3, 'tw': 4, 'en': 5, 'jp': 6, 'kr': 7}
|
||||
LANG_NAMES = {3: 'ZH', 4: 'TW', 5: 'EN', 6: 'JP', 7: 'KR'}
|
||||
|
||||
|
||||
# ===== 任务定义 =====
|
||||
# 每条: dict(rid, lang, bucket, action, expected, new, note)
|
||||
# action='apply':检查 cell.value == expected,相等则改为 new
|
||||
# action='skip' :不动,note 写跳过理由
|
||||
# 注意 expected 是当前 cell 完整文本(用 JSON 的 current 字段),new 是替换后完整文本
|
||||
|
||||
TASKS = [
|
||||
# =========================
|
||||
# D01 风格/敬语/语气 (27 条)
|
||||
# =========================
|
||||
# 16769 EN 当前可接受
|
||||
dict(rid='16769', lang='en', bucket='D01', action='skip',
|
||||
note='Windblast 可保留(东方原作术语)'),
|
||||
|
||||
# 16835 JP 改:のみある → しか存在しない
|
||||
dict(rid='16835', lang='jp', bucket='D01', action='apply',
|
||||
expected='真理は、ただ御柱の射程の内にのみある',
|
||||
new='真理は、御柱の射程の内にしか存在しない',
|
||||
note='のみある结构生硬,改しか存在しない'),
|
||||
|
||||
# 16844 KR 改:제국의 최속 기자 → 제국 최속의 기자(子串替换,因 cell 是完整段落)
|
||||
dict(rid='16844', lang='kr', bucket='D01', action='substr_replace',
|
||||
old='제국의 최속 기자', new='제국 최속의 기자',
|
||||
note='최속 独立使用偏生,加 의 更自然'),
|
||||
|
||||
# 16969 KR OK
|
||||
dict(rid='16969', lang='kr', bucket='D01', action='skip', note='当前可接受'),
|
||||
|
||||
# 16966 EN OK
|
||||
dict(rid='16966', lang='en', bucket='D01', action='skip', note='当前可接受'),
|
||||
|
||||
# 17050 EN 跳过:**<Our Hero>** 是全表统一 UI 词(17686/17862 也用),单改一处会引起跨条目不一致
|
||||
dict(rid='17050', lang='en', bucket='D01', action='skip',
|
||||
note='**<Our Hero>** 全表统一 UI 词,需在 UI 总表统一修改'),
|
||||
|
||||
# 17079 EN OK
|
||||
dict(rid='17079', lang='en', bucket='D01', action='skip', note='Milady 符合规则'),
|
||||
|
||||
# 17097 JP 当前 OK
|
||||
dict(rid='17097', lang='jp', bucket='D01', action='skip', note='鴉天狗 OK'),
|
||||
|
||||
# 17107 TW 改:深藏于 → 深藏於
|
||||
dict(rid='17107', lang='tw', bucket='D01', action='substr_replace',
|
||||
old='深藏于', new='深藏於',
|
||||
note='繁中: 深藏于→深藏於'),
|
||||
|
||||
# 17108 TW 改:于此 → 於此
|
||||
dict(rid='17108', lang='tw', bucket='D01', action='substr_replace',
|
||||
old='于此', new='於此',
|
||||
note='繁中: 于此→於此'),
|
||||
|
||||
# 17115 TW 同当前
|
||||
dict(rid='17115', lang='tw', bucket='D01', action='skip', note='同当前可接受'),
|
||||
|
||||
# 17123 TW 改:源于 → 源於
|
||||
dict(rid='17123', lang='tw', bucket='D01', action='substr_replace',
|
||||
old='源于', new='源於',
|
||||
note='繁中: 源于→源於'),
|
||||
|
||||
# 17135 EN OK
|
||||
dict(rid='17135', lang='en', bucket='D01', action='skip', note='Marshal Jean Lannes 正确'),
|
||||
|
||||
# 17151 KR 改:달빛에 물든 → 달빛을 붉게 물들이는(语义颠倒)
|
||||
dict(rid='17151', lang='kr', bucket='D01', action='apply',
|
||||
expected='달빛에 물든 아르콜레',
|
||||
new='달빛을 붉게 물들이는 아르콜레',
|
||||
note='被动→主动,原意是"染红月光"'),
|
||||
|
||||
# 17158 KR OK
|
||||
dict(rid='17158', lang='kr', bucket='D01', action='skip', note='当前可接受'),
|
||||
|
||||
# 17170 KR OK
|
||||
dict(rid='17170', lang='kr', bucket='D01', action='skip', note='当前可接受'),
|
||||
|
||||
# 17192 KR OK
|
||||
dict(rid='17192', lang='kr', bucket='D01', action='skip', note='当前可接受'),
|
||||
|
||||
# 17207 KR 改:도이칠란트 → 독일
|
||||
dict(rid='17207', lang='kr', bucket='D01', action='substr_replace',
|
||||
old='도이칠란트', new='독일',
|
||||
note='韩文一般用 독일'),
|
||||
|
||||
# 17222 KR 改:호수가 → 호숫가에서
|
||||
dict(rid='17222', lang='kr', bucket='D01', action='apply',
|
||||
expected='보덴 호수가 밤낮으로 울부짖다',
|
||||
new='보덴 호숫가에서 밤낮으로 울부짖다',
|
||||
note='호수가(主格助词)与 호숫가(湖畔)区别'),
|
||||
|
||||
# 17226 KR 文那家伙 OK
|
||||
dict(rid='17226', lang='kr', bucket='D01', action='skip', note='当前可接受'),
|
||||
|
||||
# 17440 KR 维持
|
||||
dict(rid='17440', lang='kr', bucket='D01', action='skip', note='维持现状'),
|
||||
|
||||
# 17527 KR 维持
|
||||
dict(rid='17527', lang='kr', bucket='D01', action='skip', note='与权威规则一致'),
|
||||
|
||||
# 17500 EN 改:passive skill → this humble monk dabbles in diplomacy
|
||||
dict(rid='17500', lang='en', bucket='D01', action='apply',
|
||||
expected='Sorry<br>Diplomacy is my passive skill',
|
||||
new='Sorry<br>This humble monk dabbles in diplomacy',
|
||||
note='保留 贫僧 角色身份'),
|
||||
|
||||
# 17501 EN 改:specializes in Management → Management is my main spec
|
||||
dict(rid='17501', lang='en', bucket='D01', action='apply',
|
||||
expected='Sorry<br>This God specializes in Management',
|
||||
new='Sorry<br>Management is my main spec',
|
||||
note='与 17499/17500 游戏术语自嘲风格统一'),
|
||||
|
||||
# 17873 KR 后 可接受
|
||||
dict(rid='17873', lang='kr', bucket='D01', action='skip',
|
||||
note='单字风格统一,可接受'),
|
||||
|
||||
# 17873 KR 也出现在 D02 中(来源不同),同样跳过
|
||||
dict(rid='17873', lang='kr', bucket='D02', action='skip',
|
||||
note='与 D01 同一条目,已跳过'),
|
||||
|
||||
# 17876 KR 车 可接受
|
||||
dict(rid='17876', lang='kr', bucket='D01', action='skip',
|
||||
note='单字风格统一,可接受'),
|
||||
|
||||
# 17865 JP おみくじ 维持
|
||||
dict(rid='17865', lang='jp', bucket='D01', action='skip', note='维持'),
|
||||
|
||||
|
||||
# =========================
|
||||
# D02 翻译微调/不自然 (116 条)
|
||||
# =========================
|
||||
|
||||
# 434 KR 改:자국 영토(子串替换)
|
||||
dict(rid='434', lang='kr', bucket='D02', action='substr_replace',
|
||||
old='아군 영토에서는 HP 2를 추가로 회복한다.',
|
||||
new='자국 영토에서는 추가로 HP를 2 회복한다.',
|
||||
note='자국 영토 在策略游戏中更常见'),
|
||||
|
||||
# 519 JP 改:新文明と遭遇 → 新たな文明と遭遇!
|
||||
dict(rid='519', lang='jp', bucket='D02', action='apply',
|
||||
expected='新文明と遭遇',
|
||||
new='新たな文明と遭遇!',
|
||||
note='补感叹号,与其他语言一致'),
|
||||
|
||||
# 765 KR 잔잔 确认 OK
|
||||
dict(rid='765', lang='kr', bucket='D02', action='skip', note='잔잔 正确'),
|
||||
|
||||
# 924 JP 改:閉めろ!レイセンを解き放て! → 門を閉めろ!レイセンを放て!
|
||||
dict(rid='924', lang='jp', bucket='D02', action='apply',
|
||||
expected='閉めろ!レイセンを解き放て!',
|
||||
new='門を閉めろ!レイセンを放て!',
|
||||
note='補门,解き放て改放て更轻松调皮'),
|
||||
|
||||
# 924 KR 改:잠궈→잠가,가라→나가라
|
||||
dict(rid='924', lang='kr', bucket='D02', action='apply',
|
||||
expected='문 잠궈! 레이센, 가라!',
|
||||
new='문 잠가! 레이센, 나가라!',
|
||||
note='잠궈拼写错误→잠가'),
|
||||
|
||||
# 932 KR 改 增加威严
|
||||
dict(rid='932', lang='kr', bucket='D02', action='apply',
|
||||
expected='산신의 길을 막지 않는 게 좋을걸.',
|
||||
new='산신의 앞길을 막지 마라.',
|
||||
note='增加山神威严感'),
|
||||
|
||||
# 938 KR 当前可接受,跳过
|
||||
dict(rid='938', lang='kr', bucket='D02', action='skip', note='可保留(P2偏好)'),
|
||||
|
||||
# 943 KR 改:잊어버린 모양이군 → 잊어버렸군
|
||||
dict(rid='943', lang='kr', bucket='D02', action='apply',
|
||||
expected='이 세계는 산신의 무게를 잊어버린 모양이군...',
|
||||
new='이 세계는 산신의 무게를 잊어버렸군...',
|
||||
note='山神不该用推测语气'),
|
||||
|
||||
# 975 EN 改:move its joints → stretch its bones / 加句号
|
||||
dict(rid='975', lang='en', bucket='D02', action='apply',
|
||||
expected="You've come at the perfect time, let this old body move its joints.",
|
||||
new="You've come at the perfect time. Let this old body stretch its bones.",
|
||||
note='move its joints 生硬,改 stretch its bones'),
|
||||
|
||||
# 976 KR 改:原望치 마라 → 원망 말거라
|
||||
dict(rid='976', lang='kr', bucket='D02', action='apply',
|
||||
expected='사정 봐주지 않아도 원망치 마라.',
|
||||
new='사정 봐주지 않을 테니 원망 말거라.',
|
||||
note='逻辑改顺'),
|
||||
|
||||
# 1066 JP 改:会いましたね → お会いしましたね
|
||||
dict(rid='1066', lang='jp', bucket='D02', action='apply',
|
||||
expected='また会いましたね、お嬢様',
|
||||
new='またお会いしましたね、お嬢様',
|
||||
note='对大小姐用敬体(咲夜口吻)'),
|
||||
|
||||
# 1085 EN 改:Ptah's Creation → The Creation of Ptah
|
||||
dict(rid='1085', lang='en', bucket='D02', action='apply',
|
||||
expected="Ptah's Creation",
|
||||
new='The Creation of Ptah',
|
||||
note='避免误读为"普塔的造物"'),
|
||||
|
||||
# 1091 JP 改:怖いか → ビビってんのか
|
||||
dict(rid='1091', lang='jp', bucket='D02', action='apply',
|
||||
expected='ヌビア、怖いか?',
|
||||
new='ヌビア、ビビってんのか?',
|
||||
note='增加挑衅口语感'),
|
||||
|
||||
# 1166 JP 保留
|
||||
dict(rid='1166', lang='jp', bucket='D02', action='skip', note='可保留'),
|
||||
|
||||
# 1194 EN 保留
|
||||
dict(rid='1194', lang='en', bucket='D02', action='skip', note='OK'),
|
||||
|
||||
# 1228 EN 跳过:**<Fish>** 是全表统一的科技名标签,单改一处会与其他位置不一致
|
||||
dict(rid='1228', lang='en', bucket='D02', action='skip',
|
||||
note='**<Fish>** 是全表统一科技名,全表引用一致;保留'),
|
||||
|
||||
# 1229 TW OK
|
||||
dict(rid='1229', lang='tw', bucket='D02', action='skip', note='OK'),
|
||||
|
||||
# 1264 JP 改:当前用 遊撃騎兵 ,但需统一为 ライダー(与 1147/1173 一致)
|
||||
# 这条 current 字段为空,需要先查表
|
||||
dict(rid='1264', lang='jp', bucket='D02', action='set_value',
|
||||
new='ライダー',
|
||||
note='统一为 ライダー(与 1147/1173 一致)'),
|
||||
|
||||
# 1279 JP 改:さくや → 咲夜
|
||||
dict(rid='1279', lang='jp', bucket='D02', action='apply',
|
||||
expected='さくや、私のあのイタリア砲を持ってきなさい!',
|
||||
new='咲夜、私のイタリア砲を持ってきなさい!',
|
||||
note='角色名统一汉字 咲夜'),
|
||||
|
||||
# 1280 JP 保留
|
||||
dict(rid='1280', lang='jp', bucket='D02', action='skip', note='OK'),
|
||||
|
||||
# 1284 EN 改:Nation's Best → Kokushi Musou
|
||||
dict(rid='1284', lang='en', bucket='D02', action='apply',
|
||||
expected='Drink ten bottles of "Nation\'s Best" and you still won\'t win~',
|
||||
new='Drink ten bottles of Kokushi Musou and you still won\'t win~',
|
||||
note='国士无双=Kokushi Musou音译,保留梗'),
|
||||
|
||||
# 1284 KR 保留
|
||||
dict(rid='1284', lang='kr', bucket='D02', action='skip', note='OK'),
|
||||
|
||||
# 1297 JP 保留
|
||||
dict(rid='1297', lang='jp', bucket='D02', action='skip', note='OK'),
|
||||
|
||||
# 1416 JP 改 + 句号
|
||||
dict(rid='1416', lang='jp', bucket='D02', action='apply',
|
||||
expected='陸上ユニットが浅瀬を移動できるようにする',
|
||||
new='陸上ユニットが浅瀬を移動できるようになる。',
|
||||
note='使役→自动 + 句末加。'),
|
||||
|
||||
# 1421 JP 改
|
||||
dict(rid='1421', lang='jp', bucket='D02', action='apply',
|
||||
expected='鯨を捕獲して金銭を獲得できる。**<戦艦>**科学が必要',
|
||||
new='鯨を捕獲してゴールドを獲得できる。**<戦艦>**科技が必要。',
|
||||
note='金銭→ゴールド,科学→科技 统一,加句号'),
|
||||
|
||||
# 1393 KR 改 简化按钮但补主语
|
||||
dict(rid='1393', lang='kr', bucket='D02', action='apply',
|
||||
expected='재시작',
|
||||
new='턴 재시작',
|
||||
note='补"턴"信息'),
|
||||
|
||||
# 1396 JP 表中实际已是 テクノロジーツリー(与 JSON 报告不一致),跳过
|
||||
dict(rid='1396', lang='jp', bucket='D02', action='skip',
|
||||
note='表中已为 テクノロジーツリー,无需修改'),
|
||||
|
||||
# 1457 JP 改:未領有地 → 未占領地
|
||||
dict(rid='1457', lang='jp', bucket='D02', action='apply',
|
||||
expected='未領有地',
|
||||
new='未占領地',
|
||||
note='未領有偏古文'),
|
||||
|
||||
# 1527 TW 保留
|
||||
dict(rid='1527', lang='tw', bucket='D02', action='skip', note='OK'),
|
||||
|
||||
# 1532 JP 改:HPを2ポイント失う → HP2を失う(同时替换两处「HPを2ポイント」)
|
||||
dict(rid='1532', lang='jp', bucket='D02', action='substr_replace',
|
||||
old='HPを2ポイント失う', new='HP2を失う',
|
||||
note='2ポイント冗长,统一简化'),
|
||||
|
||||
# 1550 JP 保留
|
||||
dict(rid='1550', lang='jp', bucket='D02', action='skip', note='OK'),
|
||||
|
||||
# 1606 EN 改:Maintain 5 turns → Go 5 turns(子串替换)
|
||||
dict(rid='1606', lang='en', bucket='D02', action='substr_replace',
|
||||
old='Maintain 5 turns without initiating attacks',
|
||||
new='Go 5 turns without initiating an attack',
|
||||
note='更地道'),
|
||||
|
||||
# 1611 JP 保留
|
||||
dict(rid='1611', lang='jp', bucket='D02', action='skip', note='OK'),
|
||||
|
||||
# 1666 JP 保留
|
||||
dict(rid='1666', lang='jp', bucket='D02', action='skip', note='OK'),
|
||||
|
||||
# 1683 KR reason 显示已含信息,撤回
|
||||
dict(rid='1683', lang='kr', bucket='D02', action='skip', note='已含信息,撤回'),
|
||||
|
||||
# 1736 JP 保留
|
||||
dict(rid='1736', lang='jp', bucket='D02', action='skip', note='OK'),
|
||||
|
||||
# 1738 KR 保留
|
||||
dict(rid='1738', lang='kr', bucket='D02', action='skip', note='OK'),
|
||||
|
||||
# 1742 JP 改:行かない限りはね → 歩まぬ限りはな(注意表中是中文引号")
|
||||
dict(rid='1742', lang='jp', bucket='D02', action='substr_replace',
|
||||
old='と共に行かない限りはね',
|
||||
new='と共に歩まぬ限りはな',
|
||||
note='蕾米古风威严'),
|
||||
|
||||
# 1743 KR 保留
|
||||
dict(rid='1743', lang='kr', bucket='D02', action='skip', note='OK'),
|
||||
|
||||
# 1746 JP 改:手を染めよう → 手を出そう
|
||||
dict(rid='1746', lang='jp', bucket='D02', action='apply',
|
||||
expected='束の間の者よ、永遠に手を染めようというのか?',
|
||||
new='束の間の者が、永遠に手を出そうというのか?',
|
||||
note='手を染める语义偏'),
|
||||
|
||||
# 1755 JP 保留
|
||||
dict(rid='1755', lang='jp', bucket='D02', action='skip', note='OK'),
|
||||
|
||||
# 1763 KR 改:대접 → 환대(表中是中文引号 '',且 '환대'을 → '환대'를 韩文助词应跟随收音)
|
||||
dict(rid='1763', lang='kr', bucket='D02', action='substr_replace',
|
||||
old="‘대접’을",
|
||||
new="‘환대’를",
|
||||
note='款待→환대更合适,助词 을→를'),
|
||||
|
||||
# 1763 JP 保留
|
||||
dict(rid='1763', lang='jp', bucket='D02', action='skip', note='OK'),
|
||||
|
||||
# 1767 JP 保留
|
||||
dict(rid='1767', lang='jp', bucket='D02', action='skip', note='OK'),
|
||||
|
||||
# 1772 JP 保留
|
||||
dict(rid='1772', lang='jp', bucket='D02', action='skip', note='OK'),
|
||||
|
||||
# 1781 JP 改:书面化→稍随意
|
||||
dict(rid='1781', lang='jp', bucket='D02', action='apply',
|
||||
expected='このインフラ整備の速度……私は我が国の河童たちを派遣し、貴国で学び交流させなければなりません。',
|
||||
new='このインフラの速度……うちの河童たちを貴国に派遣して、学ばせなきゃね。',
|
||||
note='诹访子口吻稍随意'),
|
||||
|
||||
# 1790 JP 保留
|
||||
dict(rid='1790', lang='jp', bucket='D02', action='skip', note='OK'),
|
||||
|
||||
# 1791 KR 保留
|
||||
dict(rid='1791', lang='kr', bucket='D02', action='skip', note='OK'),
|
||||
|
||||
# 1792 JP 保留
|
||||
dict(rid='1792', lang='jp', bucket='D02', action='skip', note='OK'),
|
||||
|
||||
# 1817 JP 保留
|
||||
dict(rid='1817', lang='jp', bucket='D02', action='skip', note='OK'),
|
||||
# 1818
|
||||
dict(rid='1818', lang='jp', bucket='D02', action='skip', note='OK'),
|
||||
# 1820
|
||||
dict(rid='1820', lang='jp', bucket='D02', action='skip', note='OK'),
|
||||
# 1822
|
||||
dict(rid='1822', lang='jp', bucket='D02', action='skip', note='OK'),
|
||||
# 1830 KR 保留
|
||||
dict(rid='1830', lang='kr', bucket='D02', action='skip', note='OK'),
|
||||
# 1841 JP 保留
|
||||
dict(rid='1841', lang='jp', bucket='D02', action='skip', note='OK'),
|
||||
# 1843 JP 保留
|
||||
dict(rid='1843', lang='jp', bucket='D02', action='skip', note='OK'),
|
||||
# 1848 EN 保留
|
||||
dict(rid='1848', lang='en', bucket='D02', action='skip', note='OK'),
|
||||
# 1853 JP 保留
|
||||
dict(rid='1853', lang='jp', bucket='D02', action='skip', note='OK'),
|
||||
# 1854 KR 保留
|
||||
dict(rid='1854', lang='kr', bucket='D02', action='skip', note='OK'),
|
||||
# 1857 JP 保留
|
||||
dict(rid='1857', lang='jp', bucket='D02', action='skip', note='OK'),
|
||||
# 1866 JP 保留
|
||||
dict(rid='1866', lang='jp', bucket='D02', action='skip', note='OK'),
|
||||
|
||||
# 1868 KR 改 补"久"
|
||||
dict(rid='1868', lang='kr', bucket='D02', action='apply',
|
||||
expected='천하의 형세란 나누어지면 합쳐지고, 합쳐지면 나누어지는 법.',
|
||||
new='천하의 형세란 나뉜 지 오래면 반드시 합쳐지고, 합쳐진 지 오래면 반드시 나누어지는 법.',
|
||||
note='补三国演义梗"久"'),
|
||||
|
||||
# 1869 JP 保留
|
||||
dict(rid='1869', lang='jp', bucket='D02', action='skip', note='OK'),
|
||||
# 1871 JP 保留
|
||||
dict(rid='1871', lang='jp', bucket='D02', action='skip', note='OK'),
|
||||
|
||||
# 1872 JP 改:补披风梗
|
||||
dict(rid='1872', lang='jp', bucket='D02', action='apply',
|
||||
expected='用事があれば直に我が名を呼べ、直ちに駆けつける。',
|
||||
new='用事があれば直に我が名を呼べ、本道、披風を翻して即刻参上する。',
|
||||
note='补"本道披风"梗'),
|
||||
|
||||
# 1872 KR 保留
|
||||
dict(rid='1872', lang='kr', bucket='D02', action='skip', note='OK 已保留披风梗'),
|
||||
|
||||
# 2071 KR 改:피날레의 셉텟 → 종곡 7중주
|
||||
dict(rid='2071', lang='kr', bucket='D02', action='apply',
|
||||
expected='감사의 표시로, 너를 위해 피날레의 셉텟을 연주해 주지.',
|
||||
new='감사의 표시로, 너를 위해 종곡 7중주를 연주해 주지.',
|
||||
note='避免双重外来语堆叠'),
|
||||
|
||||
# 2057 KR 改:영원한 밤의 빛 → 영야의 빛(子串替换)
|
||||
dict(rid='2057', lang='kr', bucket='D02', action='substr_replace',
|
||||
old='영원한 밤의 빛',
|
||||
new='영야의 빛',
|
||||
note='永夜=영야 与 1952 一致'),
|
||||
|
||||
# 2200 KR 改:레이센 → 레이센쨩
|
||||
dict(rid='2200', lang='kr', bucket='D02', action='apply',
|
||||
expected='지면 오늘 저녁은 없는 줄 알아, 레이센~',
|
||||
new='지면 오늘 저녁은 없는 줄 알아, 레이센쨩~',
|
||||
note='补昵称色彩'),
|
||||
|
||||
# 2151 KR 改:도시 간을 → 도시 사이로
|
||||
dict(rid='2151', lang='kr', bucket='D02', action='substr_replace',
|
||||
old='도시 간을 텔레포트',
|
||||
new='도시 사이로 텔레포트',
|
||||
note='도시 간을 텔레포트 助词搭配不当'),
|
||||
|
||||
# 16617 all 占位文本 - 留给策划,跳过
|
||||
dict(rid='16617', lang='all', bucket='D02', action='skip',
|
||||
note='UI 长度测试占位,留给策划'),
|
||||
|
||||
# 16839 KR 当前可接受
|
||||
dict(rid='16839', lang='kr', bucket='D02', action='skip', note='可接受'),
|
||||
|
||||
# 16970 JP 风格记录
|
||||
dict(rid='16970', lang='jp', bucket='D02', action='skip', note='可接受'),
|
||||
|
||||
# 17051 KR 当前可接受
|
||||
dict(rid='17051', lang='kr', bucket='D02', action='skip', note='OK'),
|
||||
|
||||
# 17084 KR OK
|
||||
dict(rid='17084', lang='kr', bucket='D02', action='skip', note='OK'),
|
||||
|
||||
# 17097 KR OK
|
||||
dict(rid='17097', lang='kr', bucket='D02', action='skip', note='OK'),
|
||||
|
||||
# 17163 TW OK
|
||||
dict(rid='17163', lang='tw', bucket='D02', action='skip', note='OK'),
|
||||
|
||||
# 17174 JP OK
|
||||
dict(rid='17174', lang='jp', bucket='D02', action='skip', note='OK'),
|
||||
|
||||
# 17222 TW OK
|
||||
dict(rid='17222', lang='tw', bucket='D02', action='skip', note='OK'),
|
||||
|
||||
# 17226 JP OK
|
||||
dict(rid='17226', lang='jp', bucket='D02', action='skip', note='OK'),
|
||||
|
||||
# 17229 EN OK
|
||||
dict(rid='17229', lang='en', bucket='D02', action='skip', note='OK'),
|
||||
|
||||
# 17467 EN 改:Tao → Path beyond
|
||||
dict(rid='17467', lang='en', bucket='D02', action='apply',
|
||||
expected='I pray we may share our wisdom and seek the Tao together.',
|
||||
new='I pray we may share our thoughts and seek the Path beyond together.',
|
||||
note='Tao 偏窄,神子非道家'),
|
||||
|
||||
# 17517 KR 改:화과자 염보 → 하나가시 신문(子串替换;只替换标题部分)
|
||||
dict(rid='17517', lang='kr', bucket='D02', action='substr_replace',
|
||||
old='화과자 염보',
|
||||
new='하나가시 신문',
|
||||
note='避免被误解为日式甜点;改音译+신문'),
|
||||
|
||||
# 17509 ZH(原文歧义留给策划,跳过)
|
||||
dict(rid='17509', lang='zh', bucket='D02', action='skip',
|
||||
note='中文蓝本歧义,留给策划'),
|
||||
|
||||
# 17555 JP 改:公開設定 → プライバシー設定
|
||||
dict(rid='17555', lang='jp', bucket='D02', action='apply',
|
||||
expected='公開設定',
|
||||
new='プライバシー設定',
|
||||
note='私密性 ≠ 公开设置'),
|
||||
|
||||
# 17600 EN 改:War God possessed! → Channeling the War God!
|
||||
dict(rid='17600', lang='en', bucket='D02', action='apply',
|
||||
expected='War God possessed!',
|
||||
new='Channeling the War God!',
|
||||
note='possessed 被动负面感'),
|
||||
|
||||
# 17647 KR 当前可接受
|
||||
dict(rid='17647', lang='kr', bucket='D02', action='skip', note='可接受'),
|
||||
|
||||
# 18094 EN 改:Imperial Blood Monarch → Blood Monarch of the Empire
|
||||
dict(rid='18094', lang='en', bucket='D02', action='apply',
|
||||
expected='Imperial Blood Monarch',
|
||||
new='Blood Monarch of the Empire',
|
||||
note='避免被误读为"皇家血统"'),
|
||||
|
||||
# 18238 KR 改:본아 → 이드
|
||||
dict(rid='18238', lang='kr', bucket='D02', action='substr_replace',
|
||||
old='제국의 본아', new='제국의 이드',
|
||||
note='本我Freud id 韩文常用 이드'),
|
||||
|
||||
# 18525 EN 保留(与日文原作一致)
|
||||
dict(rid='18525', lang='en', bucket='D02', action='skip',
|
||||
note='保留 Perfect & Elegant Maid(与日文原作一致)'),
|
||||
|
||||
# 18688 KR 撤回
|
||||
dict(rid='18688', lang='kr', bucket='D02', action='skip', note='撤回'),
|
||||
|
||||
# 18697 EN 跳过:D03 决策 18698/18699 不修,单改 18697 反而破坏一致性
|
||||
dict(rid='18697', lang='en', bucket='D02', action='skip',
|
||||
note='D03 同系列条目不修,单改会破坏一致性'),
|
||||
|
||||
# 18695 JP 改:賢者 → 学者(子串替换)
|
||||
dict(rid='18695', lang='jp', bucket='D02', action='substr_replace',
|
||||
old='万の僧侶と賢者',
|
||||
new='万の僧侶と学者',
|
||||
note='学者更贴史实'),
|
||||
|
||||
# 18695 KR 改:현자 → 학자
|
||||
dict(rid='18695', lang='kr', bucket='D02', action='substr_replace',
|
||||
old='만 명의 승려와 현자',
|
||||
new='만 명의 승려와 학자',
|
||||
note='学者更贴史实'),
|
||||
|
||||
# 18696 JP 撤回
|
||||
dict(rid='18696', lang='jp', bucket='D02', action='skip', note='撤回'),
|
||||
|
||||
# 18761 ZH 撤回
|
||||
dict(rid='18761', lang='zh', bucket='D02', action='skip', note='撤回'),
|
||||
|
||||
# 18745 JP 保留
|
||||
dict(rid='18745', lang='jp', bucket='D02', action='skip', note='OK'),
|
||||
|
||||
# 18937 KR 保持
|
||||
dict(rid='18937', lang='kr', bucket='D02', action='skip', note='OK'),
|
||||
|
||||
# 18941 JP 保持
|
||||
dict(rid='18941', lang='jp', bucket='D02', action='skip', note='OK'),
|
||||
|
||||
# 18954 all 跳过 - 留给策划
|
||||
dict(rid='18954', lang='all', bucket='D02', action='skip',
|
||||
note='疑似 placeholder/demo,留给策划'),
|
||||
|
||||
# 18996 JP 撤回
|
||||
dict(rid='18996', lang='jp', bucket='D02', action='skip', note='撤回'),
|
||||
|
||||
# 19000 KR 撤回
|
||||
dict(rid='19000', lang='kr', bucket='D02', action='skip', note='OK'),
|
||||
|
||||
# 19383 JP 保持
|
||||
dict(rid='19383', lang='jp', bucket='D02', action='skip', note='OK'),
|
||||
|
||||
# 19564 KR OK
|
||||
dict(rid='19564', lang='kr', bucket='D02', action='skip', note='OK'),
|
||||
|
||||
# 19592 JP OK
|
||||
dict(rid='19592', lang='jp', bucket='D02', action='skip', note='OK'),
|
||||
|
||||
# 19599 JP OK
|
||||
dict(rid='19599', lang='jp', bucket='D02', action='skip', note='OK'),
|
||||
|
||||
# 19604 JP OK
|
||||
dict(rid='19604', lang='jp', bucket='D02', action='skip', note='OK'),
|
||||
|
||||
# 19682 JP OK
|
||||
dict(rid='19682', lang='jp', bucket='D02', action='skip', note='OK'),
|
||||
|
||||
# 19684 JP OK(保留)
|
||||
dict(rid='19684', lang='jp', bucket='D02', action='skip', note='可保留'),
|
||||
|
||||
# 19808 all 跳过
|
||||
dict(rid='19808', lang='all', bucket='D02', action='skip',
|
||||
note='P2偏好题,保留现状更通顺'),
|
||||
|
||||
# 19836 JP OK
|
||||
dict(rid='19836', lang='jp', bucket='D02', action='skip', note='风格偏好'),
|
||||
|
||||
# 19792 JP OK
|
||||
dict(rid='19792', lang='jp', bucket='D02', action='skip', note='OK'),
|
||||
|
||||
# 19853 JP OK
|
||||
dict(rid='19853', lang='jp', bucket='D02', action='skip', note='OK'),
|
||||
|
||||
# 19845 EN OK
|
||||
dict(rid='19845', lang='en', bucket='D02', action='skip', note='OK'),
|
||||
|
||||
# 19845 JP OK
|
||||
dict(rid='19845', lang='jp', bucket='D02', action='skip', note='OK'),
|
||||
]
|
||||
|
||||
|
||||
# ===== 禁忌检测 =====
|
||||
TABOO_PATTERNS = [
|
||||
('플랑드르', '플란드르'), # new 不能含 플란드르
|
||||
('레밀리아', '레미리아'),
|
||||
('이나바 테위', '이나바 테이'),
|
||||
('사이교우지', '사이교지'),
|
||||
]
|
||||
|
||||
|
||||
def check_taboo(new_val: str):
|
||||
"""检查 new 值是否含违禁词"""
|
||||
if not new_val:
|
||||
return None
|
||||
for ok, bad in TABOO_PATTERNS:
|
||||
if bad in new_val and ok not in new_val:
|
||||
return f'违禁词: 含 {bad} 但缺 {ok}'
|
||||
return None
|
||||
|
||||
|
||||
def normalize_id(v):
|
||||
if v is None:
|
||||
return None
|
||||
return str(v).lstrip('').strip()
|
||||
|
||||
|
||||
def main():
|
||||
# 1. 确认备份
|
||||
if not BACKUP.exists():
|
||||
print(f'[WARN] 备份不存在,自动创建')
|
||||
shutil.copy2(XLSX, BACKUP)
|
||||
else:
|
||||
print(f'[OK] 备份: {BACKUP.name}')
|
||||
|
||||
# 2. 打开 xlsx
|
||||
print(f'[INFO] 打开 {XLSX.name}')
|
||||
wb = load_workbook(XLSX)
|
||||
ws = wb.active
|
||||
|
||||
# 3. 建立 ID -> row 索引
|
||||
id_to_row = {}
|
||||
for r in range(2, ws.max_row + 1):
|
||||
rid = normalize_id(ws.cell(row=r, column=1).value)
|
||||
if not rid:
|
||||
continue
|
||||
id_to_row.setdefault(rid, r)
|
||||
print(f'[INFO] 共 {len(id_to_row)} 个 ID')
|
||||
|
||||
# 4. 加载 JSON 用于 cross-check
|
||||
p2_data = json.loads(JSON_IN.read_text(encoding='utf-8'))
|
||||
p2_by_key = {(e['rid'], e['lang']): e for e in p2_data}
|
||||
|
||||
# 5. 应用 TASKS
|
||||
results = []
|
||||
counter = {'SUCCESS': 0, 'SKIP': 0, 'FAIL': 0, 'NOOP': 0}
|
||||
|
||||
for idx, task in enumerate(TASKS, 1):
|
||||
rid = task['rid']
|
||||
lang = task['lang']
|
||||
bucket = task['bucket']
|
||||
action = task['action']
|
||||
note = task.get('note', '')
|
||||
|
||||
# all/zh 类不在 LANG_COL 标准5列里
|
||||
if lang == 'all':
|
||||
# 这类条目都是 skip
|
||||
results.append((idx, rid, lang, bucket, 'SKIP', '', '', note))
|
||||
counter['SKIP'] += 1
|
||||
print(f'[SKIP] #{idx} ID={rid} {bucket}/{lang}: {note}')
|
||||
continue
|
||||
|
||||
if lang not in LANG_COL:
|
||||
results.append((idx, rid, lang, bucket, 'FAIL', '', '', f'未知 lang: {lang}'))
|
||||
counter['FAIL'] += 1
|
||||
print(f'[FAIL] #{idx} ID={rid} {bucket}/{lang}: 未知 lang')
|
||||
continue
|
||||
|
||||
col = LANG_COL[lang]
|
||||
|
||||
if rid not in id_to_row:
|
||||
results.append((idx, rid, lang, bucket, 'FAIL', '<not found>', '', 'ID 不存在'))
|
||||
counter['FAIL'] += 1
|
||||
print(f'[FAIL] #{idx} ID={rid} {bucket}/{lang.upper()}: ID 不存在')
|
||||
continue
|
||||
|
||||
row = id_to_row[rid]
|
||||
cell = ws.cell(row=row, column=col)
|
||||
before = cell.value
|
||||
before_str = '' if before is None else str(before)
|
||||
|
||||
if action == 'skip':
|
||||
results.append((idx, rid, lang, bucket, 'SKIP', before_str, before_str, note))
|
||||
counter['SKIP'] += 1
|
||||
print(f'[SKIP] #{idx} ID={rid} {bucket}/{lang.upper()}: {note}')
|
||||
continue
|
||||
|
||||
new_val = None
|
||||
status = None
|
||||
reason = ''
|
||||
|
||||
if action == 'apply':
|
||||
expected = task['expected']
|
||||
new = task['new']
|
||||
if before_str != expected:
|
||||
status = 'FAIL'
|
||||
reason = f'当前值与 expected 不符: 实际=<{before_str[:80]!r}>, 期望=<{expected[:80]!r}>'
|
||||
elif before_str == new:
|
||||
status = 'NOOP'
|
||||
reason = '当前已为目标值'
|
||||
else:
|
||||
# 标签结构保护
|
||||
old_tags = re.findall(r'\*\*<[^>]+>\*\*', before_str)
|
||||
new_tags = re.findall(r'\*\*<[^>]+>\*\*', new)
|
||||
if len(old_tags) != len(new_tags):
|
||||
status = 'FAIL'
|
||||
reason = f'**<...>** 标签数量变化: {len(old_tags)} -> {len(new_tags)}'
|
||||
else:
|
||||
taboo = check_taboo(new)
|
||||
if taboo:
|
||||
status = 'FAIL'
|
||||
reason = f'禁忌检测: {taboo}'
|
||||
else:
|
||||
new_val = new
|
||||
status = 'SUCCESS'
|
||||
|
||||
elif action == 'substr_replace':
|
||||
old = task['old']
|
||||
new = task['new']
|
||||
if old not in before_str:
|
||||
status = 'FAIL'
|
||||
reason = f'未找到子串 {old!r}'
|
||||
else:
|
||||
candidate = before_str.replace(old, new)
|
||||
if candidate == before_str:
|
||||
status = 'NOOP'
|
||||
reason = '替换后未变化'
|
||||
else:
|
||||
old_tags = re.findall(r'\*\*<[^>]+>\*\*', before_str)
|
||||
new_tags = re.findall(r'\*\*<[^>]+>\*\*', candidate)
|
||||
if len(old_tags) != len(new_tags):
|
||||
status = 'FAIL'
|
||||
reason = f'**<...>** 标签数量变化: {len(old_tags)} -> {len(new_tags)}'
|
||||
else:
|
||||
taboo = check_taboo(candidate)
|
||||
if taboo:
|
||||
status = 'FAIL'
|
||||
reason = f'禁忌检测: {taboo}'
|
||||
else:
|
||||
new_val = candidate
|
||||
status = 'SUCCESS'
|
||||
|
||||
elif action == 'replace_in_tag':
|
||||
old_tag = task['old_tag']
|
||||
new_tag = task['new_tag']
|
||||
if old_tag not in before_str:
|
||||
status = 'FAIL'
|
||||
reason = f'未找到标签 {old_tag!r}'
|
||||
else:
|
||||
candidate = before_str.replace(old_tag, new_tag)
|
||||
taboo = check_taboo(candidate)
|
||||
if taboo:
|
||||
status = 'FAIL'
|
||||
reason = f'禁忌检测: {taboo}'
|
||||
else:
|
||||
new_val = candidate
|
||||
status = 'SUCCESS'
|
||||
|
||||
elif action == 'set_value':
|
||||
new = task['new']
|
||||
if before_str == new:
|
||||
status = 'NOOP'
|
||||
reason = '当前已为目标值'
|
||||
else:
|
||||
taboo = check_taboo(new)
|
||||
if taboo:
|
||||
status = 'FAIL'
|
||||
reason = f'禁忌检测: {taboo}'
|
||||
else:
|
||||
new_val = new
|
||||
status = 'SUCCESS'
|
||||
|
||||
else:
|
||||
status = 'FAIL'
|
||||
reason = f'未知 action: {action}'
|
||||
|
||||
if status == 'SUCCESS':
|
||||
cell.value = new_val
|
||||
results.append((idx, rid, lang, bucket, status, before_str, new_val, note))
|
||||
print(f'[SUCCESS] #{idx} ID={rid} {bucket}/{lang.upper()} (row {row})')
|
||||
else:
|
||||
results.append((idx, rid, lang, bucket, status, before_str, before_str if status != 'SUCCESS' else new_val, f'{note} | {reason}'))
|
||||
print(f'[{status}] #{idx} ID={rid} {bucket}/{lang.upper()}: {reason}')
|
||||
|
||||
counter[status] += 1
|
||||
|
||||
# 6. 保存
|
||||
print()
|
||||
print(f'[INFO] 保存 {XLSX.name}')
|
||||
wb.save(XLSX)
|
||||
print('[OK] 保存完成')
|
||||
|
||||
# 7. 输出统计
|
||||
print()
|
||||
print('===== 统计 =====')
|
||||
print(f"SUCCESS : {counter['SUCCESS']}")
|
||||
print(f"SKIP : {counter['SKIP']}")
|
||||
print(f"NOOP : {counter['NOOP']}")
|
||||
print(f"FAIL : {counter['FAIL']}")
|
||||
print(f"TOTAL : {len(TASKS)}")
|
||||
|
||||
# 8. 写报告
|
||||
write_report(results, counter)
|
||||
|
||||
return results, counter
|
||||
|
||||
|
||||
def write_report(results, counter):
|
||||
lines = []
|
||||
lines.append('# P2 重译/润色报告')
|
||||
lines.append('')
|
||||
lines.append(f'**生成时间**: 2026-05-15')
|
||||
lines.append(f'**输入**: P2 D01(27) + D02(116) = 143 条候选')
|
||||
lines.append(f'**xlsx**: `Multilingual.xlsx`')
|
||||
lines.append(f'**备份**: `Multilingual.before_p2_2026-05-15.bak.xlsx`')
|
||||
lines.append('')
|
||||
lines.append('## 统计')
|
||||
lines.append('')
|
||||
lines.append(f"- SUCCESS : {counter['SUCCESS']}")
|
||||
lines.append(f"- SKIP : {counter['SKIP']}")
|
||||
lines.append(f"- NOOP : {counter['NOOP']}")
|
||||
lines.append(f"- FAIL : {counter['FAIL']}")
|
||||
lines.append(f"- TOTAL : {len(results)}")
|
||||
lines.append('')
|
||||
|
||||
# 按状态分组
|
||||
for status in ['SUCCESS', 'FAIL', 'NOOP']:
|
||||
sub = [r for r in results if r[4] == status]
|
||||
if not sub:
|
||||
continue
|
||||
lines.append(f'## {status} ({len(sub)} 条)')
|
||||
lines.append('')
|
||||
lines.append('| # | ID | bucket | lang | before | after | note |')
|
||||
lines.append('|---|---|---|---|---|---|---|')
|
||||
for r in sub:
|
||||
idx, rid, lang, bucket, st, before, after, note = r
|
||||
b = (before or '').replace('|','\\|').replace('\n',' ')[:60]
|
||||
a = (after or '').replace('|','\\|').replace('\n',' ')[:60]
|
||||
n = (note or '').replace('|','\\|').replace('\n',' ')[:120]
|
||||
lines.append(f"| {idx} | {rid} | {bucket} | {lang.upper()} | {b} | {a} | {n} |")
|
||||
lines.append('')
|
||||
|
||||
# SKIP 单独列简表
|
||||
skip_sub = [r for r in results if r[4] == 'SKIP']
|
||||
if skip_sub:
|
||||
lines.append(f'## SKIP ({len(skip_sub)} 条)')
|
||||
lines.append('')
|
||||
lines.append('| # | ID | bucket | lang | 跳过理由 |')
|
||||
lines.append('|---|---|---|---|---|')
|
||||
for r in skip_sub:
|
||||
idx, rid, lang, bucket, st, before, after, note = r
|
||||
n = (note or '').replace('|','\\|').replace('\n',' ')[:120]
|
||||
lines.append(f"| {idx} | {rid} | {bucket} | {lang.upper()} | {n} |")
|
||||
lines.append('')
|
||||
|
||||
REPORT.write_text('\n'.join(lines), encoding='utf-8')
|
||||
print(f'-> 报告: {REPORT}')
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
36
Tools/multilingual_check/apply_supplemental.py
Normal file
36
Tools/multilingual_check/apply_supplemental.py
Normal file
@ -0,0 +1,36 @@
|
||||
"""补充修改:D5 JP (ID=2294) + E4 JP/KR (ID=18752)"""
|
||||
import openpyxl
|
||||
from pathlib import Path
|
||||
|
||||
XLSX = Path('C:/TH1/TH1/Tools/Multilingual.xlsx')
|
||||
|
||||
PATCHES = [
|
||||
# (ID, lang_col_idx, before_substring, after_substring, comment)
|
||||
('2294', 5, '再度**<銀の跳躍>**しを使用できる', '再度移動し、**<銀の跳躍>**を使用できる', 'D5补 JP 漏「移動」'),
|
||||
('18752', 5, '火車', 'カシャ', 'E4补 JP 火車→カシャ'),
|
||||
('18752', 6, '전차', '카샤', 'E4补 KR 전차→카샤'),
|
||||
]
|
||||
|
||||
wb = openpyxl.load_workbook(XLSX)
|
||||
ws = wb['Sheet']
|
||||
|
||||
changes = []
|
||||
for row in ws.iter_rows(min_row=2):
|
||||
rid = str(row[0].value or '').lstrip('').strip()
|
||||
for (pid, col, before, after, note) in PATCHES:
|
||||
if rid != pid:
|
||||
continue
|
||||
cell = row[col]
|
||||
old_v = cell.value or ''
|
||||
if before in old_v:
|
||||
new_v = old_v.replace(before, after)
|
||||
cell.value = new_v
|
||||
changes.append((pid, col, note, old_v, new_v))
|
||||
print(f'OK ID={pid} col={col} {note}')
|
||||
print(f' BEFORE: {old_v}')
|
||||
print(f' AFTER : {new_v}')
|
||||
else:
|
||||
print(f'NOOP ID={pid} col={col} {note} (before substring not found)')
|
||||
|
||||
wb.save(XLSX)
|
||||
print(f'\nTotal changes: {len(changes)}')
|
||||
359
Tools/multilingual_check/c09_c99_dump.txt
Normal file
359
Tools/multilingual_check/c09_c99_dump.txt
Normal file
@ -0,0 +1,359 @@
|
||||
|
||||
========== C09 ==========
|
||||
--- ID=963 target=jp ---
|
||||
ZH: '败北并不可怕。'
|
||||
TW: '敗北並不可怕。'
|
||||
EN: 'Defeat is nothing to be afraid of.'
|
||||
JP: '負けは何も恐ろしくない。'
|
||||
KR: '패배는 두렵지 않습니다.'
|
||||
--- ID=976 target=jp ---
|
||||
ZH: '别怪老身不留情面。'
|
||||
TW: '別怪老身不留情面。'
|
||||
EN: "Don't blame me for not holding back."
|
||||
JP: '情け容赦ないことを責めるなよ。'
|
||||
KR: '사정 봐주지 않아도 원망치 마라.'
|
||||
--- ID=1058 target=jp ---
|
||||
ZH: '我要看到血流成河!'
|
||||
TW: '我要看到血流成河!'
|
||||
EN: 'I want to see rivers of blood!'
|
||||
JP: '血の川が流れるのを見せてやる!'
|
||||
KR: '피의 강이 흐르는 것을 보여주겠어!'
|
||||
--- ID=1072 target=en ---
|
||||
ZH: '我要打10个'
|
||||
TW: '我要打10個'
|
||||
EN: "I'll take on 10 of you"
|
||||
JP: '10人相手にしてやる'
|
||||
KR: '10명은 상대해줄게'
|
||||
--- ID=1244 target=en ---
|
||||
ZH: '可以在**<浅海>**移动'
|
||||
TW: '可以在**<淺海>**移動'
|
||||
EN: 'Can move on **<Water>**'
|
||||
JP: '**<浅瀬>**で移動可能'
|
||||
KR: '**<천해>**에서 이동 가능'
|
||||
--- ID=1613 target=jp ---
|
||||
ZH: '您已获得了奇观**<{param}>**!在平原或者浅海地区建造您的奇观吧!'
|
||||
TW: '您已獲得了奇觀**<{param}>**!在平原或者淺海地區建造您的奇觀吧!'
|
||||
EN: 'You have obtained the wonder **<{param}>**! Build your wonder on Plains or Water!'
|
||||
JP: '遺産**<{param}>**を獲得しました。平原または浅瀬エリアに遺産を建造しましょう'
|
||||
KR: '불가사의 **<{param}>**을 획득했습니다! 평원 또는 천해 지역에 불가사의를 건설하세요!'
|
||||
--- ID=1635 target=jp ---
|
||||
ZH: '蓬莱山帝国'
|
||||
TW: '蓬萊山帝國'
|
||||
EN: 'Hourai Empire'
|
||||
JP: '蓬莱山帝国'
|
||||
KR: '호라이산 제국'
|
||||
--- ID=1718 target=jp ---
|
||||
ZH: '请等待**<{param}>**行动...'
|
||||
TW: '請等待**<{param}>**行動...'
|
||||
EN: 'Please wait for **<{param}>** to take action...'
|
||||
JP: '**<{param}>**行動お待ちください'
|
||||
KR: '**<{param}>**행동 대기 중...'
|
||||
--- ID=1756 target=jp ---
|
||||
ZH: '无聊。铃仙,这把你来打。'
|
||||
TW: '無聊。鈴仙,這把你來打。'
|
||||
EN: 'Boring. Reisen, take over this match.'
|
||||
JP: '退屈だ。鈴仙、この勝負はお前に任せる。'
|
||||
KR: '지루해. 레이센, 이번 판은 네가 쳐라.'
|
||||
--- ID=1768 target=jp ---
|
||||
ZH: '来吧,站在胜利者这边,风光无限。'
|
||||
TW: '來吧,站在勝利者這邊,風光無限。'
|
||||
EN: 'Come, stand with the victors. The future is bright.'
|
||||
JP: 'さあ、勝者側に立って、風光明媚な景色を眺めましょう。'
|
||||
KR: '자, 승리자의 편에 서렴. 영광이 끝없을 거야.'
|
||||
--- ID=1770 target=jp ---
|
||||
ZH: '供品随便拿,报销走我账。'
|
||||
TW: '供品隨便拿,報銷走我賬。'
|
||||
EN: 'Offerings are yours for the taking. Expenses on my tab.'
|
||||
JP: '供物はご自由に、経費は私が負担します。'
|
||||
KR: '공물은 마음껏 가져가, 비용은 내 장부로 처리할 테니.'
|
||||
--- ID=1868 target=jp ---
|
||||
ZH: '天下大势,分久必合,合久必分。'
|
||||
TW: '天下大勢,分久必合,合久必分。'
|
||||
EN: 'The empire, long divided, must unite; long united, must divide.'
|
||||
JP: '天下の大勢、分かれば必ず合し、合すれば必ず分かる。'
|
||||
KR: '천하의 형세란 나누어지면 합쳐지고, 합쳐지면 나누어지는 법.'
|
||||
--- ID=1901 target=jp ---
|
||||
ZH: '老身可不与棋盘外的尘埃为伍。'
|
||||
TW: '老身可不與棋盤外的塵埃為伍。'
|
||||
EN: 'I do not associate with the dust beyond the chessboard.'
|
||||
JP: '老身は盤外の塵とを共にはせぬぞ。'
|
||||
KR: '이 몸은 바둑판 밖의 먼지 따위와 어울리지 않는다네.'
|
||||
--- ID=2068 target=kr ---
|
||||
ZH: '林生'
|
||||
TW: '林生'
|
||||
EN: 'Forest Born'
|
||||
JP: '林生'
|
||||
KR: '림생'
|
||||
--- ID=2471 target=kr ---
|
||||
ZH: '建造**<蕾米莉亚行宫>**。每回合开始时,自动将地块转化为**<红雾领地>**。可以生产军事单位,可以提供额外防御。只能建造在平原上。'
|
||||
TW: '建造**<蕾米莉亞行宮>**。每回合開始時,自動將地塊轉化為**<紅霧領地>**。可以生產軍事單位,可以提供額外防禦。只能建造在平原上。'
|
||||
EN: "Build **<Remilia's Palace>**. At the start of each turn, automatically converts tiles into **<Scarlet Mist Territory>**. Can produce military units and provides additional defense. Can only be built on Plains."
|
||||
JP: '**<レミリア離宮>**を建造する。毎ターン開始時、自動的に地形を**<紅霧領地>**に転化する。軍事ユニットを生産でき、追加の防御を提供する。平原にのみ建造可能である'
|
||||
KR: '**<레밀리아 별궁>**을 건설한다. 턴당 시작 시 자동으로 타일을 **<홍무 영지>**로 전환한다. 군사 유닛 생산 가능하며, 추가 방어를 제공한다. 평원에만 건설 가능하다.'
|
||||
--- ID=2473 target=kr ---
|
||||
ZH: '代替军营,每回合开始时,自动将地块转化为**<红雾领地>**。可以生产军事单位,可以提供额外防御。只能建造在平原上。'
|
||||
TW: '代替軍營,每回合開始時,自動將地塊轉化為**<紅霧領地>**。可以生產軍事單位,可以提供額外防禦。只能建造在平原上。'
|
||||
EN: 'Replaces Barracks. At the start of each turn, automatically converts tiles into **<Scarlet Mist Territory>**. Can produce military units and provides additional defense. Can only be built on Plains.'
|
||||
JP: '兵舎の代わりとなり、毎ターン開始時、自動的に地形を**<紅霧領地>**に転化する。軍事ユニットを生産でき、追加の防御を提供する。平原にのみ建造可能である'
|
||||
KR: '병영을 대체하며, 턴당 시작 시 자동으로 타일을 **<홍무 영지>**로 전환한다. 군사 유닛 생산 가능하며, 추가 방어를 제공한다. 평원에만 건설 가능하다.'
|
||||
--- ID=16700 target=jp ---
|
||||
ZH: '科技变革之神'
|
||||
TW: '科技變革之神'
|
||||
EN: 'God of Technological Revolution'
|
||||
JP: '科学変革の神'
|
||||
KR: '기술 혁명의 신'
|
||||
--- ID=16795 target=kr ---
|
||||
ZH: '回合开始时失去**<移动>**机会'
|
||||
TW: '回合開始時失去**<移動>**機會'
|
||||
EN: 'Loses **<Movement>** opportunity at the start of turn'
|
||||
JP: 'ターン開始時に**<移動>**チャンスを失う'
|
||||
KR: '턴당 시작 시 **<이동>** 기회 상실'
|
||||
--- ID=16841 target=kr ---
|
||||
ZH: '**<王>**职阶英雄。 帝国的山神、战神、风雨神与变革之神。她将信仰化为铁血洪流,以御柱为权杖,挥斥巨炮,宣告变革。'
|
||||
TW: '**<王>**職階英雄。 帝國的山神、戰神、風雨神與變革之神。她將信仰化為鐵血洪流,以禦柱為權杖,揮斥巨炮,宣告變革。'
|
||||
EN: '**<King>** class hero. The Mountain God, War God, god of wind and rain, and deity of revolution for the Empire. She transforms faith into iron-blooded torrents, wielding Onbashira as her scepter and commanding mighty cannons to herald transformation'
|
||||
JP: '**<王>**クラスの英雄である。帝国の山神・軍神・風雨神にして変革の神。彼女は信仰を鉄血の奔流へと変え、御柱を権杖とし、巨砲を振るい、変革を宣告する'
|
||||
KR: '**<왕>** 클래스 영웅. 제국의 산신, 군신, 풍우신이자 변혁의 신. 신앙을 철혈 홍류로 전환하여 어주를 권장 삼아, 거포를 휘두르며 변혁을 선포한다.'
|
||||
--- ID=17157 target=en ---
|
||||
ZH: '土豆大王与核能尊神'
|
||||
TW: '馬鈴薯大王與核能尊神'
|
||||
EN: 'The Potato King and the Nuclear Deity'
|
||||
JP: '芋大王と核能尊神'
|
||||
KR: '감자 대왕과 핵능 존신'
|
||||
--- ID=17318 target=jp ---
|
||||
ZH: '狂犬断噬'
|
||||
TW: '狂犬斷噬'
|
||||
EN: 'Rabid Severing Bite'
|
||||
JP: '狂犬断噬'
|
||||
KR: '광견단식'
|
||||
--- ID=17589 target=kr ---
|
||||
ZH: '屠龙'
|
||||
TW: '屠龍'
|
||||
EN: 'Dragon Slayer'
|
||||
JP: 'ドラゴンスレイヤー'
|
||||
KR: '용 도살'
|
||||
--- ID=17605 target=jp ---
|
||||
ZH: '强敌终结!'
|
||||
TW: '強敵終結!'
|
||||
EN: 'Mighty Foe Eliminated!'
|
||||
JP: '強敵終結'
|
||||
KR: '강적 처치!'
|
||||
--- ID=17857 target=kr ---
|
||||
ZH: '和荒连理'
|
||||
TW: '和荒連理'
|
||||
EN: 'Wago-Araga Bond'
|
||||
JP: '和荒連理'
|
||||
KR: '화혼과 황혼의 연리'
|
||||
--- ID=19044 target=jp ---
|
||||
ZH: '埃德兹纳'
|
||||
TW: '埃德茲納'
|
||||
EN: 'Edzna'
|
||||
JP: 'エツナ'
|
||||
KR: '에드스나'
|
||||
--- ID=19119 target=jp ---
|
||||
ZH: '扶南城'
|
||||
TW: '扶南城'
|
||||
EN: 'Vyadhapura'
|
||||
JP: '扶南城'
|
||||
KR: '부남'
|
||||
--- ID=19134 target=jp ---
|
||||
ZH: '暖粒'
|
||||
TW: '暖粒'
|
||||
EN: 'Neak Leung'
|
||||
JP: 'ヌオンルー'
|
||||
KR: '누온립'
|
||||
--- ID=19134 target=kr ---
|
||||
ZH: '暖粒'
|
||||
TW: '暖粒'
|
||||
EN: 'Neak Leung'
|
||||
JP: 'ヌオンルー'
|
||||
KR: '누온립'
|
||||
--- ID=19362 target=en ---
|
||||
ZH: '帝国的全能神'
|
||||
TW: '帝國的全能神'
|
||||
EN: 'Imperial Almighty'
|
||||
JP: '帝国の全能神'
|
||||
KR: '제국의 전능신'
|
||||
--- ID=19272 target=kr ---
|
||||
ZH: '阿空,不可以烧哦~'
|
||||
TW: '阿空,不可以燒哦~'
|
||||
EN: 'Utsuho, no burning~'
|
||||
JP: 'お空、燃やしちゃダメだよ~'
|
||||
KR: '아쿤, 태우면 안 돼~'
|
||||
--- ID=19441 target=jp ---
|
||||
ZH: '使得来自**<射命丸文>**的溅射伤害降低,每层乘以0.5,最低1点'
|
||||
TW: '使得來自**<射命丸文>**的濺射傷害降低,每層乘以0.5,最低1點'
|
||||
EN: 'Reduces Splash Damage from **<Aya Shameimaru>**, each stack multiplies by 0.5, minimum 1 damage'
|
||||
JP: '**<射命丸文>**からのスプラッシュダメージを軽減し、各層ごとに0.5倍となり、最低1ポイント'
|
||||
KR: '**<샤메이마루 아야>**의 범위 공격 피해 감소, 중첩당 0.5배 적용, 최소 1'
|
||||
--- ID=19560 target=en ---
|
||||
ZH: '对敌方不可见。敌方移动至该单位所处位置,或主动消耗行动点时,破除该状态。'
|
||||
TW: '對敵方不可見。敵方移動至該單位所處位置,或主動消耗行動點時,破除該狀態。'
|
||||
EN: "Invisible to enemies. Breaking invisibility when enemies move to this unit's location or actively spend action points."
|
||||
JP: '敵に視認されない。敵が当該ユニットの位置に移動する、または能動的に行動ポイントを消費した際、この状態は解除される。'
|
||||
KR: '적에게 보이지 않습니다. 적이 이 유닛이 위치한 칸으로 이동하거나 능동적으로 행동력을 소비할 때 해당 상태가 해제됩니다.'
|
||||
--- ID=19672 target=jp ---
|
||||
ZH: '前往'
|
||||
TW: '前往'
|
||||
EN: 'Go'
|
||||
JP: '移動'
|
||||
KR: '이동'
|
||||
--- ID=19829 target=kr ---
|
||||
ZH: '特别鸣谢'
|
||||
TW: '特別鳴謝'
|
||||
EN: 'Special Thanks'
|
||||
JP: 'スペシャルサンクス'
|
||||
KR: '스페셜 땡스'
|
||||
|
||||
========== C99 ==========
|
||||
--- ID=437 target=zh ---
|
||||
ZH: '占领一个村庄或者城市,该城市奖纳入您的领土!'
|
||||
TW: '佔領一個村莊或者城市,該城市獎納入您的領土!'
|
||||
EN: 'Capture a Village or City to add it to your territory!'
|
||||
JP: '村または都市を占領し、その都市を領土に編入する'
|
||||
KR: '마을이나 도시를 점령하면 해당 도시가 당신의 영토에 편입된다!'
|
||||
--- ID=437 target=tw ---
|
||||
ZH: '占领一个村庄或者城市,该城市奖纳入您的领土!'
|
||||
TW: '佔領一個村莊或者城市,該城市獎納入您的領土!'
|
||||
EN: 'Capture a Village or City to add it to your territory!'
|
||||
JP: '村または都市を占領し、その都市を領土に編入する'
|
||||
KR: '마을이나 도시를 점령하면 해당 도시가 당신의 영토에 편입된다!'
|
||||
--- ID=607 target=tw ---
|
||||
ZH: '鲁昂'
|
||||
TW: '盧昂'
|
||||
EN: 'Rouen'
|
||||
JP: 'ルーアン'
|
||||
KR: '루앙'
|
||||
--- ID=667 target=tw ---
|
||||
ZH: '乌甲因'
|
||||
TW: '烏甲因'
|
||||
EN: 'Ujjain'
|
||||
JP: 'ウッジャイン'
|
||||
KR: '우잔'
|
||||
--- ID=667 target=zh ---
|
||||
ZH: '乌甲因'
|
||||
TW: '烏甲因'
|
||||
EN: 'Ujjain'
|
||||
JP: 'ウッジャイン'
|
||||
KR: '우잔'
|
||||
--- ID=767 target=tw ---
|
||||
ZH: '内沙布尔'
|
||||
TW: '內沙布林'
|
||||
EN: 'Neyshabur'
|
||||
JP: 'ニーシャープール'
|
||||
KR: '네이샤부르'
|
||||
--- ID=929 target=tw ---
|
||||
ZH: '输了?今晚没饭吃了哦,铃仙~'
|
||||
TW: '輸了?今晚沒飯喫了哦,鈴仙~'
|
||||
EN: 'Lost? No dinner for you tonight, Reisen~'
|
||||
JP: '負けた?今夜はご飯抜きだよ、レイセン~'
|
||||
KR: '졌다고? 오늘 저녁은 굶어야겠네, 레이센~'
|
||||
--- ID=1385 target=kr ---
|
||||
ZH: '可以建造**<军港>**所有单位获得海洋防御'
|
||||
TW: '可以建造**<軍港>**所有單位獲得海洋防禦'
|
||||
EN: 'Can construct **<Naval Port>**, all units gain Naval Defense'
|
||||
JP: '**<軍港>**を建造可能。全ユニットが海洋防御を獲得'
|
||||
KR: '**<군항>** 건설 가능 모든 유닛이 해양 방어를 획득한다'
|
||||
--- ID=1865 target=jp ---
|
||||
ZH: '看来,不动用金刚之怒,是无法点化你了!南无三!'
|
||||
TW: '看來,不動用金剛之怒,是無法點化你了!南無三!'
|
||||
EN: "It seems the Vajra's wrath is necessary to enlighten you! Homage to the Three Jewels!"
|
||||
JP: 'どうやら、金刚の怒りを奮わなければ、あなたを教化することはできぬようだな!南無三!'
|
||||
KR: '아무래도 금강의 진노를 쓰지 않고서는 당신을 깨우칠 수 없겠군! 나무삼!'
|
||||
--- ID=2151 target=zh ---
|
||||
ZH: '主动技能。可在与首通联通的城市之间传送。'
|
||||
TW: '主動技能。可在與首通聯通的城市之間傳送。'
|
||||
EN: 'Active Skill. Can teleport between cities connected to the capital.'
|
||||
JP: 'アクティブスキル。首都と接続されている都市間をテレポートできる'
|
||||
KR: '액티브 스킬. 수도와 연결된 도시 간을 텔레포트할 수 있다.'
|
||||
--- ID=16773 target=en ---
|
||||
ZH: '消耗一层**<天狗的立风露>**,立刻获得一次移动机会'
|
||||
TW: '消耗一層**<天狗的立風露>**,立刻獲得一次移動機會'
|
||||
EN: "Consume 1 stack of **<Tengu's Standing Windblast>** to immediately gain 1 opportunity"
|
||||
JP: '**<天狗の立風露>**を1層消費し、即座に移動チャンスを1回獲得する'
|
||||
KR: '**<텐구의 입풍로>** 1스택 소모 시, 즉시 이동 기회 1회 획득'
|
||||
[17131] kr -> ID NOT FOUND
|
||||
--- ID=17897 target=tw ---
|
||||
ZH: '[能力:御神签]'
|
||||
TW: '[能力:禦神簽]'
|
||||
EN: '[Ability: Omikuji]'
|
||||
JP: '[能力:おみくじ]'
|
||||
KR: '[능력:오미쿠지]'
|
||||
--- ID=18305 target=zh ---
|
||||
ZH: '蕾米莉亚斯卡雷特'
|
||||
TW: '蕾米莉亞斯卡雷特'
|
||||
EN: 'Remilia Scarlet'
|
||||
JP: 'レミリア・スカーレット'
|
||||
KR: '레밀리아 스칼렛'
|
||||
--- ID=18305 target=tw ---
|
||||
ZH: '蕾米莉亚斯卡雷特'
|
||||
TW: '蕾米莉亞斯卡雷特'
|
||||
EN: 'Remilia Scarlet'
|
||||
JP: 'レミリア・スカーレット'
|
||||
KR: '레밀리아 스칼렛'
|
||||
--- ID=18307 target=zh ---
|
||||
ZH: '芙兰朵露斯卡雷特'
|
||||
TW: '芙蘭朵露斯卡雷特'
|
||||
EN: 'Flandre Scarlet'
|
||||
JP: 'フランドール・スカーレット'
|
||||
KR: '플랑드르 스칼렛'
|
||||
--- ID=18307 target=tw ---
|
||||
ZH: '芙兰朵露斯卡雷特'
|
||||
TW: '芙蘭朵露斯卡雷特'
|
||||
EN: 'Flandre Scarlet'
|
||||
JP: 'フランドール・スカーレット'
|
||||
KR: '플랑드르 스칼렛'
|
||||
--- ID=18558 target=zh ---
|
||||
ZH: '帝国的狂气之瞳 铃仙·优昙华院·因幡'
|
||||
TW: '帝國的狂氣之瞳 鈴仙·優曇華院·因幡'
|
||||
EN: 'Imperial Eye of Madness: Reisen Udongein Inaba'
|
||||
JP: '帝国の狂気の瞳 鈴仙・優曇華院・イナバ'
|
||||
KR: '제국의 광기의 눈동자 레이센 우동게인 이나바'
|
||||
--- ID=18558 target=tw ---
|
||||
ZH: '帝国的狂气之瞳 铃仙·优昙华院·因幡'
|
||||
TW: '帝國的狂氣之瞳 鈴仙·優曇華院·因幡'
|
||||
EN: 'Imperial Eye of Madness: Reisen Udongein Inaba'
|
||||
JP: '帝国の狂気の瞳 鈴仙・優曇華院・イナバ'
|
||||
KR: '제국의 광기의 눈동자 레이센 우동게인 이나바'
|
||||
--- ID=18558 target=en ---
|
||||
ZH: '帝国的狂气之瞳 铃仙·优昙华院·因幡'
|
||||
TW: '帝國的狂氣之瞳 鈴仙·優曇華院·因幡'
|
||||
EN: 'Imperial Eye of Madness: Reisen Udongein Inaba'
|
||||
JP: '帝国の狂気の瞳 鈴仙・優曇華院・イナバ'
|
||||
KR: '제국의 광기의 눈동자 레이센 우동게인 이나바'
|
||||
--- ID=18778 target=jp ---
|
||||
ZH: '莫卧儿的星空'
|
||||
TW: '莫臥兒的星空'
|
||||
EN: 'Starry Sky of the Mughals'
|
||||
JP: 'ムガルの星空き'
|
||||
KR: '무굴의 별하늘'
|
||||
--- ID=18779 target=zh ---
|
||||
ZH: '北纬27的日晱之王'
|
||||
TW: '北緯27的日晱之王'
|
||||
EN: 'King of Sundials at 27° North Latitude'
|
||||
JP: '北緯27度の日時計の王'
|
||||
KR: '북위 27도의 일귀왕'
|
||||
--- ID=18779 target=tw ---
|
||||
ZH: '北纬27的日晱之王'
|
||||
TW: '北緯27的日晱之王'
|
||||
EN: 'King of Sundials at 27° North Latitude'
|
||||
JP: '北緯27度の日時計の王'
|
||||
KR: '북위 27도의 일귀왕'
|
||||
--- ID=19788 target=zh ---
|
||||
ZH: '角色立绘//主KV'
|
||||
TW: '角色立繪//主KV'
|
||||
EN: 'Character Art // Main Key Visual'
|
||||
JP: 'キャラクター立ち絵 // メインキービジュアル'
|
||||
KR: '캐릭터 일러스트 // 메인 키 비주얼'
|
||||
--- ID=19755 target=zh ---
|
||||
ZH: '炮兵于步兵一样,也能施加**<协同标的>**,并在攻击时获得攻击力加成。'
|
||||
TW: '炮兵於步兵一樣,也能施加**<協同標的>**,並在攻擊時獲得攻擊力加成。'
|
||||
EN: 'Like infantry, artillery can also apply **<Coordinated Target>**, and gain the attack bonus when attacking.'
|
||||
JP: '歩兵と同様、砲兵も**<協同標的>**を付与でき、攻撃時に攻撃力ボーナスを得る。'
|
||||
KR: '보병과 마찬가지로 포병도 **<협동 표적>**을 부여할 수 있으며, 공격 시 공격력 보너스를 얻는다.'
|
||||
--- ID=19755 target=tw ---
|
||||
ZH: '炮兵于步兵一样,也能施加**<协同标的>**,并在攻击时获得攻击力加成。'
|
||||
TW: '炮兵於步兵一樣,也能施加**<協同標的>**,並在攻擊時獲得攻擊力加成。'
|
||||
EN: 'Like infantry, artillery can also apply **<Coordinated Target>**, and gain the attack bonus when attacking.'
|
||||
JP: '歩兵と同様、砲兵も**<協同標的>**を付与でき、攻撃時に攻撃力ボーナスを得る。'
|
||||
KR: '보병과 마찬가지로 포병도 **<협동 표적>**을 부여할 수 있으며, 공격 시 공격력 보너스를 얻는다.'
|
||||
20
Tools/multilingual_check/check_sheets.py
Normal file
20
Tools/multilingual_check/check_sheets.py
Normal file
@ -0,0 +1,20 @@
|
||||
"""检查 xlsx 的所有 sheet 和真实行数。"""
|
||||
import openpyxl
|
||||
|
||||
XLSX = r"C:\TH1\TH1\Tools\Multilingual.xlsx"
|
||||
|
||||
wb = openpyxl.load_workbook(XLSX, data_only=True)
|
||||
print("Sheets:", wb.sheetnames)
|
||||
for sname in wb.sheetnames:
|
||||
s = wb[sname]
|
||||
print(f" {sname}: max_row={s.max_row}, max_col={s.max_column}")
|
||||
# 看前两行
|
||||
for r in range(1, min(3, s.max_row + 1)):
|
||||
row_vals = []
|
||||
for c in range(1, min(6, s.max_column + 1)):
|
||||
v = s.cell(row=r, column=c).value
|
||||
if v is None:
|
||||
row_vals.append("None")
|
||||
else:
|
||||
row_vals.append(str(v)[:30])
|
||||
print(f" row {r}: {row_vals}")
|
||||
90
Tools/multilingual_check/decisions.md
Normal file
90
Tools/multilingual_check/decisions.md
Normal file
@ -0,0 +1,90 @@
|
||||
# Multilingual.xlsx 修改决策记录
|
||||
|
||||
逐项确认中。所有决策汇总在此,最终交给修复 agent。
|
||||
|
||||
格式:`[决策] 编号 说明`
|
||||
|
||||
## A 组:韩文专名集群替换
|
||||
|
||||
- [✅] A1 韩文「이나바 테이」→「이나바 테위」(因幡帝, 8 条)
|
||||
- [✅] A2 韩文「홍미령」→「홍 메이링」(红美铃, 5 条)
|
||||
- [✅] A3 韩文「플란드르」→「플랑드르」(芙兰朵露, 3 条)
|
||||
- [✅] A4 韩文「적구」→「미샤구지」(赤口, 1 条 ID=16842)
|
||||
- [✅] A5 韩文「사이교지 유유코」→「사이교우지 유유코」(西行寺, ID=19414)
|
||||
- [✅] A6 韩文「레미리아」→「레밀리아」(蕾米莉亚, ID=19830)
|
||||
|
||||
## B 组:中文蓝本错字
|
||||
|
||||
- [❌] B1 ID=437 中文「奖纳入您的领土」→「将」(用户拒绝)
|
||||
- [❌] B2 ID=667 中文「乌甲因」→「乌贾因」(用户拒绝)
|
||||
- [❌] B3 ID=17036 中文「拥科」→「拥有」(用户拒绝)
|
||||
- [❌] B4 ID=19755 中文「炮兵于步兵一样」→「与」(用户拒绝)
|
||||
- [❌] B5 ID=19850/19851 中文残留 "More"/"Confirm" → 「更多」「确认」(用户拒绝)
|
||||
|
||||
## C 组:英文「Build X on Y」主宾颠倒
|
||||
|
||||
- [✅] C1 ID=1233/1234/1235/1236/1250 英文 Build A on B 颠倒
|
||||
- [❌] C2 ID=18707/18710/18717 神像群 EN 主宾颠倒(用户拒绝)
|
||||
- [❌] C3 ID=18713 五语全错为「马之神像」(用户拒绝)
|
||||
- [✅] C4 seg_031 其他 EN 主宾颠倒(让 fix agent 自动扫报告)
|
||||
|
||||
## D 组:日文模板字符串破损
|
||||
|
||||
- [✅] D1 ID=1014 JP 语序崩坏
|
||||
- [✅] D2 ID=1155 JP「伐木场=製材所」与 1158「锯木厂」冲突
|
||||
- [✅] D3 ID=1503/1504/1506/1508 JP 单位描述补动词+属性名(1503补アップグレード,1504/1506/1508补攻撃/防御/移動力)
|
||||
- [✅] D4 ID=2253 JP 漏「平原」
|
||||
- [✅] D5 ID=2294 KR 孤立助词漏「移动」
|
||||
- [✅] D6 ID=16652/16654/16672 JP 多处漏关键词
|
||||
- [✅] D7 ID=19580/19734 EN 女仆长银之跳跃 4 token 全乱
|
||||
|
||||
## E 组:单点严重错译
|
||||
|
||||
- [✅] E1 ID=17849 JP 反义错译(消散ではなく死亡 → 死亡ではなく消散)
|
||||
- [✅] E2 ID=580 JP/KR 斋月十日→10月6日 → 改回 Ramadan/라마단 第十日
|
||||
- [✅] E3 ID=704 EN Sandefjord→Sannessjøen → 改回 Sandefjord
|
||||
- [✅] E4 ID=18752 EN 火車→Train → 改为 Kasha of Kurukshetra
|
||||
- [✅] E5 ID=18755 EN 阿空→Satori → 改为 Okuu Can't Remember the Mantra
|
||||
- [✅] E6 ID=17013 EN Mishot Gūji → Lord Mishaguji
|
||||
- [✅] E7 ID=17890 JP/KR 赤口様/적구 → ミシャグチ様/미샤구지님
|
||||
- [✅] E8 ID=18127 EN「后之雕像」=Statue of the Successor → Statue of the Queen
|
||||
- [✅] E9 ID=17013 EN 小恶魔祭司→Lesser Demon Priest → Koakuma Priestess
|
||||
- [✅] E10 ID=17009 EN 召唤小恶魔祭司 → Summon Koakuma Priestess
|
||||
- [❌] E11 ID=19190 全 Hattusa 数据归到印加文明(用户拒绝,需策划确认)
|
||||
|
||||
## F 组:术语统一
|
||||
|
||||
- [✅] F1 韩文「红雾」统一为 홍무(替换 주홍 안개)
|
||||
- [✅] F2 韩文奇观统一为 불가사의(替换 유산)
|
||||
- [✅] F3 帕秋莉韩文统一为 널리지(替换 널릿지,2011东方萌月抄正版)
|
||||
|
||||
## G 组:其他单点 P0
|
||||
|
||||
- [❌] G1 ID=97 全 测试文字残留(留给策划)
|
||||
- [✅] G2 ID=289/290/293/294/295 TW 5 条空翻译
|
||||
- [✅] G3 ID=435 KR 挖掘遗迹错译
|
||||
- [✅] G4 ID=461 KR 财富奇观打破 불가사의
|
||||
- [✅] G5 ID=17017/17009/17010 EN 小恶魔 → Koakuma
|
||||
- [❌] G6 ID=16768 EN Splash Damage/Movement Path 位置互换(用户拒绝)
|
||||
- [✅] G7 ID=16797/16800 EN 动词丢失
|
||||
- [✅] G8 ID=16987 KR 미조우 → 重译为韩语意思
|
||||
- [✅] G9 ID=17078 KR 皇家图书馆 → 황실 도서관
|
||||
- [✅] G10 ID=17245/17246/17247 多语 Lv.3/4 描述截断 → 补全
|
||||
- [✅] G11 ID=17661 KR 점석성금 → 미다스의 손!
|
||||
- [✅] G12 ID=17520 KR 货币 엔 → 원
|
||||
- [✅] G13 ID=17890 全表统一为 Lord Mishaguji
|
||||
- [✅] G14 ID=19298 JP→クイーン / KR→퀸
|
||||
- [✅] G15 ID=19414 EN Saigyouji Yuyuko → Yuyuko Saigyouji
|
||||
- [✅] G16 ID=19429/19427/19418 EN 姓名顺序改名+姓
|
||||
- [✅] G17 ID=19423/19709 EN Hinananawi → Hinanawi
|
||||
- [❌] G18 ID=19211 设答剩(留给策划)
|
||||
- [✅] G19 ID=19228 JP/KR 修(中文保留) → 重译 Baruun-Urt 音译
|
||||
- [✅] G20 ID=19108 KR Arbela 写成 Gaugamela → 改 아르벨라
|
||||
- [✅] G21 ID=19123 KR Bhavapura → 바바푸라
|
||||
- [✅] G22 ID=19117 JP/KR Koh Ker 重译
|
||||
- [❌] G23 ID=19076 库佳拉/Koudougou(留给策划)
|
||||
- [✅] G24 ID=19257 TW 突尼西亞 → 突尼斯
|
||||
- [❌] G25 ID=19818/19852 EN 步兵=Warrior(用户拒绝)
|
||||
- [✅] G26 ID=19768 EN my Lady → Milady
|
||||
- [❌] G27 ID=19746 JP/KR 版本说明空白(用户拒绝)
|
||||
- [✅] G28 ID=19837/19841 KR 助词错误
|
||||
46
Tools/multilingual_check/decisions_p1.md
Normal file
46
Tools/multilingual_check/decisions_p1.md
Normal file
@ -0,0 +1,46 @@
|
||||
# P1 决策记录
|
||||
|
||||
## C01-C04 全部跳过(143 条)
|
||||
|
||||
- [❌] C01 换行符不一致 13 条 — 译文整理为一行是合理的
|
||||
- [❌] C02 日文汉字与中文相同 71 条 — 东方圈惯例保留汉字
|
||||
- [❌] C03 英文东方曲名保留日文 29 条 — 全球东方圈惯例
|
||||
- [❌] C04 韩文与中文相同 30 条 — 不修
|
||||
|
||||
## 待决策
|
||||
|
||||
- [✅] C05 {五行}占位符 16 条 — 统一为中文原文 {土}{木}{水}{火}{金}(EN: {Fire}→{火} 等;KR: {화}→{火} 等)
|
||||
- [✅] C06 数字漏译 4 条 — 修 ID=1112/1114/1282/18084
|
||||
- [❌] C06 其他 6 条 — 1401(Q群→Discord 有意改写)、19845(日期格式)
|
||||
## C08 集群(部分)
|
||||
|
||||
- [✅] C08-神像 8件神像 JP/KR 统一为外来语(ナイト/クイーン/ルーク/ビショップ;나이트/퀸/룩/비숍)
|
||||
- 涉及 ID: 809, 810, 811, 812 + 18133, 18138 等
|
||||
- [❌] C08-竹林驿站 ID=1939 与 9677 不统一 — 不修
|
||||
- [✅] C08-护法帆船 ID=18739/18740 EN 补 Dharma → Dharma Guardian Sailboat
|
||||
- [❌] C08-护法炮兵 ID=18186 EN Gunner vs Cannoneer 不统一 — 不修
|
||||
- [✅] C08-术语 1016 挖掘 全语言统一为 Excavate/発掘/발굴(不要 Mine/採掘/채굴)
|
||||
- [✅] C08-术语 1247 深海 EN — 按报告建议
|
||||
- [❌] C08-繁中地名/东方名 190/634 等 — 保留台湾习惯(不修)
|
||||
- [✅] C08-火焰猫燐 ID=203 EN Kaenbyou Rin → Rin Kaenbyou
|
||||
- [❌] C08-中文蓝本不一致 18093/18616/18624/18621 — 不修
|
||||
- [✅] C08-雕像系列 18707/18710/18715/18717 EN → Statue of the X 统一
|
||||
- [✅] C08-祟神 16846/16847/16848 KR 타타리가미 → 저주신
|
||||
- [✅] C08-星熊勇仪 18886 KR 유우기 → 유기
|
||||
- [✅] C08-正法 17831 EN Dharma → True Dharma
|
||||
- [✅] C08-奇迹时代 17657 JP title/desc 统一为 奇跡
|
||||
- [✅] C08-天狗酒馆 16703 JP 译名统一为 天狗酒場
|
||||
- [✅] C08-猿田彦的先导 17304 KR 선도자 → 선도
|
||||
- [✅] C08-竹林 18563 KR 대나무숲 → 죽림
|
||||
- [❌] C08 其余 ~10 条 — 不修
|
||||
|
||||
## C09 / C10 / C11 / C99
|
||||
|
||||
- [✅] C09 机翻味 34 条 — 起 agent 全部重译润色
|
||||
- [✅] C10 二级专名(4条)— 修 1546 [后] / 480 丰聪耳神子 / 2092 芙兰韩文 / 17043 上古繁中
|
||||
- [❌] C10 其余 12 条 — 不修
|
||||
- [✅] C11-繁中地名 — 670/675/684/687 修
|
||||
- [✅] C11-961 EN 错字 'original fists' 多余 → 删
|
||||
- [❌] C11 其余 ~28 条 — 不修
|
||||
- [✅] C99 其他未归类 26 条 — 起 agent 过一遍
|
||||
|
||||
29
Tools/multilingual_check/decisions_p2.md
Normal file
29
Tools/multilingual_check/decisions_p2.md
Normal file
@ -0,0 +1,29 @@
|
||||
# P2 决策记录
|
||||
|
||||
## D05 边缘错译
|
||||
- [❌] 16934 TW 着重→著重
|
||||
- [❌] 17561 TW 关闭→关闭视窗
|
||||
- [✅] 19788 EN/JP/KR 「//」→「/」3 条
|
||||
|
||||
## D06 繁中
|
||||
- [❌] 5 条不修
|
||||
|
||||
## D01 风格/敬语/语气
|
||||
- [✅] 全部 27 条 → agent 重译
|
||||
|
||||
## D02 翻译微调
|
||||
- [✅] 全部 116 条 → agent 重译
|
||||
|
||||
## D03 术语同义词
|
||||
- [✅] 16850 TW 「遠端單位」→「遠距離單位」
|
||||
- [✅] 16944 TW 「遠端單位」→「遠距離單位」
|
||||
- [✅] 717 TW 「伯明罕」→「伯明翰」
|
||||
- [✅] 738 TW 「亞伯丁」→「阿伯丁」
|
||||
- [✅] 695 TW 「博多」→「博德」
|
||||
- [❌] 其他 ~30 条不修
|
||||
|
||||
## D99 其他
|
||||
- [✅] 6 条标点(984/1011/1330/19283/19435/19439 JP 末尾加。或!)
|
||||
- [✅] 1385 ZH 句末加。
|
||||
- [❌] 测试/Debug 文本 (1622/1623/1618/16624/17741) — 留给策划
|
||||
- [❌] 19042 米拉多尔 — 不修
|
||||
91
Tools/multilingual_check/dryrun_p2.py
Normal file
91
Tools/multilingual_check/dryrun_p2.py
Normal file
@ -0,0 +1,91 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""dry-run,仅打印每条 apply 任务的 before 与 expected 对照,不写入"""
|
||||
import sys, io
|
||||
|
||||
# 1. 先设置 stdout
|
||||
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
|
||||
|
||||
# 2. 用 ast 提取 TASKS、LANG_COL 字面量定义而不是 exec
|
||||
import ast
|
||||
src = open(r'C:\TH1\TH1\Tools\multilingual_check\apply_p2_retranslate.py', 'r', encoding='utf-8').read()
|
||||
tree = ast.parse(src)
|
||||
|
||||
ns = {}
|
||||
for node in tree.body:
|
||||
if isinstance(node, ast.Assign):
|
||||
for tgt in node.targets:
|
||||
if isinstance(tgt, ast.Name) and tgt.id in ('TASKS', 'LANG_COL'):
|
||||
# 单独编译并 exec 这条赋值
|
||||
mod = ast.Module(body=[node], type_ignores=[])
|
||||
code = compile(mod, '<extract>', 'exec')
|
||||
exec(code, ns)
|
||||
|
||||
TASKS = ns['TASKS']
|
||||
LANG_COL = ns['LANG_COL']
|
||||
|
||||
from openpyxl import load_workbook
|
||||
from pathlib import Path
|
||||
|
||||
XLSX = Path(r'C:\TH1\TH1\Tools\Multilingual.xlsx')
|
||||
wb = load_workbook(XLSX)
|
||||
ws = wb.active
|
||||
|
||||
def norm_id(v):
|
||||
if v is None: return None
|
||||
return str(v).lstrip('').strip()
|
||||
|
||||
id_to_row = {}
|
||||
for r in range(2, ws.max_row + 1):
|
||||
rid = norm_id(ws.cell(row=r, column=1).value)
|
||||
if rid: id_to_row.setdefault(rid, r)
|
||||
|
||||
print(f'共 {len(id_to_row)} 个 ID, TASKS={len(TASKS)}')
|
||||
print()
|
||||
|
||||
mismatch = []
|
||||
for idx, task in enumerate(TASKS, 1):
|
||||
if task['action'] == 'skip':
|
||||
continue
|
||||
rid = task['rid']
|
||||
lang = task['lang']
|
||||
if lang == 'all' or lang not in LANG_COL:
|
||||
continue
|
||||
if rid not in id_to_row:
|
||||
print(f'[MISS-ID] #{idx} ID={rid} {lang}: ID 不在表中')
|
||||
mismatch.append(task)
|
||||
continue
|
||||
row = id_to_row[rid]
|
||||
col = LANG_COL[lang]
|
||||
before = ws.cell(row=row, column=col).value
|
||||
before_str = '' if before is None else str(before)
|
||||
|
||||
action = task['action']
|
||||
if action == 'apply':
|
||||
expected = task['expected']
|
||||
if before_str != expected:
|
||||
print(f'[DIFF] #{idx} ID={rid} {lang} action=apply')
|
||||
print(f' before : {before_str!r}')
|
||||
print(f' expected: {expected!r}')
|
||||
mismatch.append(task)
|
||||
elif action == 'substr_replace':
|
||||
old = task['old']
|
||||
if old not in before_str:
|
||||
print(f'[DIFF] #{idx} ID={rid} {lang} action=substr_replace')
|
||||
print(f' before: {before_str!r}')
|
||||
print(f' old not found: {old!r}')
|
||||
mismatch.append(task)
|
||||
elif action == 'replace_in_tag':
|
||||
old_tag = task['old_tag']
|
||||
if old_tag not in before_str:
|
||||
print(f'[DIFF] #{idx} ID={rid} {lang} action=replace_in_tag')
|
||||
print(f' before : {before_str!r}')
|
||||
print(f' old_tag: {old_tag!r}')
|
||||
mismatch.append(task)
|
||||
elif action == 'set_value':
|
||||
new = task['new']
|
||||
print(f'[INFO] #{idx} ID={rid} {lang} action=set_value')
|
||||
print(f' before: {before_str!r}')
|
||||
print(f' new : {new!r}')
|
||||
|
||||
print()
|
||||
print(f'TOTAL mismatch (apply/substr): {len(mismatch)}')
|
||||
31
Tools/multilingual_check/dump_19871.py
Normal file
31
Tools/multilingual_check/dump_19871.py
Normal file
@ -0,0 +1,31 @@
|
||||
"""把 ID=19871 的 ZH 列以 UTF-8 dump 到文件,避免 cmd 乱码。"""
|
||||
import openpyxl
|
||||
import re
|
||||
|
||||
XLSX = r"C:\TH1\TH1\Tools\Multilingual.xlsx"
|
||||
OUT = r"C:\TH1\TH1\Tools\multilingual_check\dump_19871_zh.txt"
|
||||
|
||||
wb = openpyxl.load_workbook(XLSX, data_only=True)
|
||||
ws = wb.active
|
||||
|
||||
target_row = None
|
||||
for row_idx in range(1, ws.max_row + 1):
|
||||
v = ws.cell(row=row_idx, column=1).value
|
||||
if v == 19871 or str(v) == "19871":
|
||||
target_row = row_idx
|
||||
break
|
||||
|
||||
zh = ws.cell(row=target_row, column=3).value
|
||||
en = ws.cell(row=target_row, column=5).value
|
||||
|
||||
with open(OUT, "w", encoding="utf-8") as f:
|
||||
f.write("=== ZH ===\n")
|
||||
f.write(str(zh))
|
||||
f.write("\n\n=== EN ===\n")
|
||||
f.write(str(en))
|
||||
|
||||
# 统计 **<...>** 标签
|
||||
tags = re.findall(r"\*\*<[^>]*>\*\*", zh)
|
||||
print(f"Total **<...>** tags in ZH: {len(tags)}")
|
||||
print(f"ZH length: {len(zh)}")
|
||||
print(f"Output: {OUT}")
|
||||
147
Tools/multilingual_check/dump_19871_zh.txt
Normal file
147
Tools/multilingual_check/dump_19871_zh.txt
Normal file
@ -0,0 +1,147 @@
|
||||
=== ZH ===
|
||||
[功能版本] V1.4.0
|
||||
发布日期:25.9.20
|
||||
|
||||
|
||||
|
||||
--------- [新增内容] -------- 蓬莱山帝国
|
||||
|
||||
妖怪兔近卫队忠诚可靠,竹林狼上校铁纪如山,帝国元帅们勇往无前。
|
||||
蓬莱山辉夜正傲立于凯旋门前,执剑写下最强陆军的传说。
|
||||
永夜的辉光交织法兰西的荣耀,一同为她加冕。
|
||||
|
||||
蓬莱山帝国是一个拥有特色科技树的强大势力。
|
||||
在建设方面,**<优昙华庭院>**可以帮助帝国于早期快速完成经济积累;
|
||||
在军事方面,**<妖怪兔近卫>**配合拥有**<步炮协同>**能力的步兵和炮兵,能够完成极为强大的陆地火力覆盖和单点突破能力,稳步推进战线;
|
||||
在扩张方面,**<永夜法典>**将所有帝国领土纳入永夜治下,能够快速转化妖怪兔近卫,并借助**<竹林驿站>**将竹林转化为防御屏障和道路。
|
||||
特色巨人单位**<竹林狼上校>**配合能够野外种树的**<竹林养护>**能力,让所有中立领土都如同帝国领土一般易于掌控。
|
||||
|
||||
|
||||
|
||||
--------- [新增内容] -------- 蓬莱山帝国:蓬莱山辉夜
|
||||
**<帝国的永恒:蓬莱山辉夜>**<br>
|
||||
**<王>**职阶英雄。她将**<永恒>**的力量注入帝国。帝国卫队为她守护永夜的荣耀,元帅们为她续写法兰西的辉煌。
|
||||
**<-------- Lv.0 -------->**<br>
|
||||
**<[基础属性]>**15HP/2攻/1防/1移动力/2射程<br>
|
||||
**<[能力:游击]>**攻击后可再次移动<br>
|
||||
**<-------- Lv.1 -------->**<br>
|
||||
**<[基础属性]>**25HP/3攻/1防/1移动力/2射程<br>
|
||||
**<[能力:蓬莱玉枝]>**攻击时可选择友方单位,使其获得一层**<永恒>**。每层**<永恒>**可为该单位抵挡一次致命伤害并保留1点HP。<br>
|
||||
**<-------- Lv.2 -------->**<br>
|
||||
**<[基础属性]>**30HP/3攻/2防/1移动力/2射程<br>
|
||||
**<[能力:蓬莱树海]>**主动技能。使得1格范围内所有友方单位获得一层**<永恒>**。<br>
|
||||
**<-------- Lv.3 -------->**<br>
|
||||
**<[基础属性]>**35HP/3攻/2防/1移动力/3射程<br>
|
||||
**<[能力:须臾永远]>**攻击时可选中友方单位,使其获得9层**<永恒>**。<br>
|
||||
|
||||
--------- [新增内容] -------- 蓬莱山帝国:八意永琳
|
||||
**<帝国的月之头脑:八意永琳>**<br>
|
||||
**<后>**职阶英雄。帝国的至高智慧。治愈或者死亡,不过是壶中演算的筹码。她用生命游戏操纵着战场的潮汐。
|
||||
**<-------- Lv.0 -------->**<br>
|
||||
**<[基础属性]>**10HP/1攻/2防/1移动力/2射程<br>
|
||||
**<[能力:飞行]>**移动无视任何地形<br>
|
||||
**<-------- Lv.1 -------->**<br>
|
||||
**<[基础属性]>**20HP/2攻/2防/1移动力/2射程<br>
|
||||
**<[能力:战地协同]>**攻击单位时将施加一层**<协同标的>**,持续1回合。攻击带有**<协同标的>**的目标时,每层使得本次攻击力提升0.5。<br>
|
||||
**<[能力:生命游戏]>**击杀敌方单位后,为目标1格范围内的所有友军恢复3HP<br>
|
||||
**<-------- Lv.2 -------->**<br>
|
||||
**<[基础属性]>**25HP/2攻/3防/1移动力/2射程<br>
|
||||
**<[能力:复苏游戏]>**攻击时可选中己方单位,赋予1回合**<战地协同>**的能力并恢复生命。如恢复溢出,则额外赋予1回合**<移动力提升>**能力。<br>
|
||||
**<-------- Lv.3 ---------->**<br>
|
||||
**<[基础属性]>**30HP/3攻/3防/2移动力/2射程<br>
|
||||
**<[能力:国士无双之药]>**八意永琳技能对英雄的治疗增加到3倍,攻击英雄时因群袭获得的攻击力加成增加到2倍。<br>
|
||||
|
||||
--------- [新增内容] -------- 蓬莱山帝国:因幡帝
|
||||
**<帝国的欺诈师:因幡帝>**<br>
|
||||
**<相>**职阶英雄。帝国首席欺诈师。她榨取情报与财富,窥伺战机,关键时刻更能亲率兔群发动致命奇袭。
|
||||
**<-------- Lv.0 -------->**<br>
|
||||
**<[基础属性]>**10HP/1攻/2防/2移动力/1射程<br>
|
||||
**<[能力:瞭望]>**拥有2格范围的视野<br>
|
||||
**<[能力:水域通行]>**解锁对应科技后,无需通过港口即可在水域通行<br>
|
||||
**<[能力:幸运的白兔]>**消除4格范围内所有遗迹的迷雾<br>
|
||||
**<-------- Lv.1 -------->**<br>
|
||||
**<[基础属性]>**20HP/2攻/2防/2移动力/2射程<br>
|
||||
**<[能力:竹林的欺诈师-隔岸观火]>**2格范围内有单位阵亡时,获得等同于该单位训练成本50%的金币<br>
|
||||
**<-------- Lv.2 -------->**<br>
|
||||
**<[基础属性]>**30HP/2攻/3防/2移动力/2射程<br>
|
||||
**<[能力:竹林的欺诈师-劫富济贫]>**1格范围内有单位发起攻击时(包括自己),获得1金币<br>
|
||||
**<[能力:竹林的欺诈师-落井下石]>**帝击杀单位时,获得等同于该单位训练成本100%的金币。<br>
|
||||
**<------- Lv.3 -------->**<br>
|
||||
**<[基础属性]>**40HP/3攻/3防/2移动力/2射程<br>
|
||||
**<[能力:帝国荣耀]>**主动技能。帝发起号召,令一格范围内的所有友军获得一回合**<战地协同>**和一回合**<移动力提升>**<br>
|
||||
|
||||
--------- [新增内容] -------- 蓬莱山帝国:铃仙·优昙华院·因幡
|
||||
**<帝国的狂气之瞳 铃仙·优昙华院·因幡>**<br>
|
||||
**<马>**职阶英雄。公主的利刃,战场的狂气之瞳。她以月兔幻象扰乱阵线,其诡谲的身影,一人便可成为一支军队。
|
||||
**<-------- Lv.0 -------->**<br>
|
||||
**<[基础属性]>**10HP/2攻/1防/2移动力/2射程<br>
|
||||
**<[能力:战地协同]>**攻击单位时将施加一层**<协同标的>**,持续1回合。攻击带有**<协同标的>**的目标时,每层使得本次攻击力提升0.5。<br>
|
||||
**<-------- Lv.1 -------->**<br>
|
||||
**<[基础属性]>**15HP/2攻/2防/2移动力/2射程<br>
|
||||
**<[能力:幻视调率]>**击杀敌方单位时,在其位置生成1个看似与铃仙完全相同的**<月兔幻象>**。幻象继承铃仙的**<战地协同>**能力,但无法造成伤害 ,并且受到任意攻击后立刻阵亡。<br>
|
||||
**<-------- Lv.2 -------->**<br>
|
||||
**<[基础属性]>**20HP/3攻/2防/2移动力/2射程<br>
|
||||
**<[能力:幻象视差]>**铃仙攻击目标前,附近所有**<月兔幻象>**会对该目标进行一轮齐射。<br>
|
||||
**<-------- Lv.3 -------->**<br>
|
||||
**<[基础属性]>**30HP/4攻/3防/2移动力/2射程<br>
|
||||
**<[能力:狂视调率]>**所有**<月兔幻象>**具有本体50%的攻击力。幻象消灭单位时,也可以创造新的**<月兔幻想>**。<br>
|
||||
|
||||
--------- [新增内容] -------- 蓬莱山帝国:藤原妹红
|
||||
**<帝国的不死鸟:藤原妹红>**<br>
|
||||
**<车>**职阶英雄。她是横贯一切的不死鸟烈焰。驱动她的并非忠诚,而是足以将皇权也一并烧尽的执念。
|
||||
**<--------- Lv.0 --------->**<br>
|
||||
**<[基础属性]>**20HP/3攻/2防/1移动力/1射程<br>
|
||||
**<--------- Lv.1 --------->**<br>
|
||||
**<[基础属性]>**30HP/4攻/2防/1移动力/1射程<br>
|
||||
**<[能力:不死鸟重生]>**阵亡后变成火焰状态,不可攻击和反击,移动时对1格范围内所有单位造成溅射伤害。复活冷却结束后若火焰存活,藤原妹红在火焰处复活。<br>
|
||||
**<--------- Lv.2 --------->**<br>
|
||||
**<[基础属性]>**40HP/4攻/3防/1移动力/1射程<br>
|
||||
**<[能力:凤翼天翔]>**从火焰状态复活的妹红获得能力:**<移动力提升>**,**<射程提升>**与**<击杀再动>**<br>
|
||||
**<--------- Lv.3 --------->**<br>
|
||||
**<[基础属性]>**50HP/5攻/3防/1移动力/1射程<br>
|
||||
**<[能力:不死身的舍身击]>**对1格范围内的所有单位造成攻击力为10的伤害并阵亡。<br>
|
||||
|
||||
--------- [新增内容] -------- 蓬莱山帝国:妖怪兔近卫
|
||||
在蓬莱山帝国治下,竹林中的每一只妖怪兔都随时待命,化身帝国卫队为蓬莱山公主效力。
|
||||
可以将帝国领土中的妖怪兔转化为特色单位**<妖怪兔近卫>**。拥有能力**<战地协同>**。
|
||||
|
||||
|
||||
--------- [新增内容] -------- 蓬莱山帝国:竹林狼上校
|
||||
月轮未满之时,她们是迷途竹林中的纪律化身;银盘高悬之时,她们是帝国威仪的冰冷法典。
|
||||
当Lv.5及以上城市升级时,可以选择出战特色巨人单位**<竹林狼上校>**。拥有能力**<狼影>**。
|
||||
|
||||
|
||||
--------- [新增内容] -------- 英雄系统重做
|
||||
1. 英雄系统已与科技树剥离,成为独立的模块
|
||||
2. 每局游戏都拥有三个英雄槽位,可以选择最多三名英雄出战,每名英雄都有Lv.0~Lv.3的等级体系。
|
||||
3. 开局时解锁一个英雄槽位,可以自由选择一名Lv.0英雄。
|
||||
4. 当首次拥有Lv.1英雄的时候,开启第二个英雄槽位。当拥有Lv.2英雄的时候,开启第三个英雄槽位。
|
||||
5. 每个英雄都有特定的升级任务。只要完成升级任务,即可升级英雄。
|
||||
6. 如果英雄升级任务较难完成,也可以花费金币强制完成任务,具体费用随当前任务进度的增加而减少。
|
||||
|
||||
|
||||
-------- [新增角色立绘]-------- 丰聪耳神子
|
||||
波斯文明-丰聪耳帝国的领袖——丰聪耳神子,立绘已实装。
|
||||
继承“不朽之魂”阿努希尔万尊名的神子,头戴萨珊的新月王冠,正俯瞰着泰西封的万家灯火。
|
||||
她将以圣人的智慧与暴君的铁腕,将同时响起的十种欲望熔铸为帝国的唯一律法,成为幻想乡唯一的——“哲人王”。
|
||||
|
||||
--------- [优化] --------
|
||||
1. 地图初始资源优化,现在每个阵营拥有不同的初始资源配置,保证开局的资源下限
|
||||
2. 地图生成方案优化。连片的大陆中将拥有类似河流的水资源地块分布。
|
||||
3. 保护区调整:保护区不再提供基于建筑等级的回合金币,转而提供基于建筑等级的回合科技点。当保护区与市场相邻时,能够为市场提供额外的建筑等级(回合金币)。
|
||||
4. 市场调整:当市场与保护区相邻时,保护区可以为市场提供额外的建筑等级(回合金币)。市场的等级上限为8。
|
||||
|
||||
|
||||
-------- [bug修复] --------
|
||||
1. 学者攻击炮兵伤害显示错误的bug
|
||||
2. 修复了城市建立时出现重复名字的bug
|
||||
3. 修复了攻击/治疗/技能特效丢失的bug
|
||||
4. 修复了外交面板帝国名字显示错误的bug
|
||||
|
||||
[待修复重要模块]
|
||||
1. 随着永远亭的英雄系统改版,红魔馆阵营的设计与英雄已经不够具备特色及平衡性,将在下个版本回炉重做放出
|
||||
2. 专家提示模块(左侧信息栏咲夜的提示部分)回炉重做,目前暂时隐去,将在下个版本重新放出
|
||||
3. 部分动画丢失、吞伤害,以及交互画面错误的问题,将在之后的版本中,随着UI界面重做和动画系统重做完成后,陆续迭代放出。
|
||||
|
||||
=== EN ===
|
||||
None
|
||||
27
Tools/multilingual_check/dump_all_rows.py
Normal file
27
Tools/multilingual_check/dump_all_rows.py
Normal file
@ -0,0 +1,27 @@
|
||||
"""dump 全部 10 条目的 ZH/EN 看格式风格。"""
|
||||
import openpyxl
|
||||
|
||||
XLSX = r"C:\TH1\TH1\Tools\Multilingual.xlsx"
|
||||
OUT = r"C:\TH1\TH1\Tools\multilingual_check\all_rows_dump.txt"
|
||||
|
||||
wb = openpyxl.load_workbook(XLSX, data_only=True)
|
||||
ws = wb.active
|
||||
|
||||
with open(OUT, "w", encoding="utf-8") as f:
|
||||
f.write(f"max_row={ws.max_row}, max_col={ws.max_column}\n\n")
|
||||
# header
|
||||
header = []
|
||||
for c in range(1, ws.max_column + 1):
|
||||
header.append(str(ws.cell(row=1, column=c).value))
|
||||
f.write(f"Header: {header}\n\n")
|
||||
for r in range(2, ws.max_row + 1):
|
||||
f.write(f"\n========= ROW {r} =========\n")
|
||||
for c in range(1, ws.max_column + 1):
|
||||
v = ws.cell(row=r, column=c).value
|
||||
col_name = header[c-1] if c-1 < len(header) else f"col{c}"
|
||||
if v is None:
|
||||
f.write(f" [{c}] {col_name}: None\n")
|
||||
else:
|
||||
s = str(v)
|
||||
f.write(f" [{c}] {col_name}: len={len(s)}\n{s}\n---\n")
|
||||
print(f"Done: {OUT}")
|
||||
53
Tools/multilingual_check/dump_en_terms.py
Normal file
53
Tools/multilingual_check/dump_en_terms.py
Normal file
@ -0,0 +1,53 @@
|
||||
"""扫描整个 xlsx 的 EN 列,查找游戏术语已有翻译,确保一致性。"""
|
||||
import openpyxl
|
||||
|
||||
XLSX = r"C:\TH1\TH1\Tools\Multilingual.xlsx"
|
||||
OUT = r"C:\TH1\TH1\Tools\multilingual_check\en_terms_found.txt"
|
||||
|
||||
wb = openpyxl.load_workbook(XLSX, data_only=True)
|
||||
ws = wb.active
|
||||
|
||||
# 要查找的中文术语 -> 在 ZH 列出现时,看对应 EN 列翻译
|
||||
zh_terms_to_find = [
|
||||
"蓬莱山辉夜", "八意永琳", "因幡帝", "铃仙", "藤原妹红", "丰聪耳神子",
|
||||
"妖怪兔近卫", "竹林狼上校",
|
||||
"优昙华庭院", "永夜法典", "竹林驿站", "竹林养护",
|
||||
"战地协同", "协同标的", "移动力提升", "击杀再动", "射程提升",
|
||||
"永恒", "蓬莱玉枝", "蓬莱树海", "须臾永远",
|
||||
"生命游戏", "战地协同", "复苏游戏", "国士无双之药",
|
||||
"瞭望", "水域通行", "幸运的白兔", "竹林的欺诈师", "隔岸观火", "劫富济贫", "落井下石", "帝国荣耀",
|
||||
"月兔幻象", "幻视调率", "幻象视差", "狂视调率",
|
||||
"不死鸟重生", "凤翼天翔", "不死身的舍身击",
|
||||
"狼影",
|
||||
"基础属性", "能力",
|
||||
"王", "后", "相", "马", "车", "兵",
|
||||
"游击", "飞行",
|
||||
"波斯文明", "丰聪耳帝国", "哲人王", "阿努希尔万", "萨珊", "泰西封",
|
||||
"学者", "炮兵", "市场", "保护区", "建筑等级", "回合金币", "回合科技点",
|
||||
"英雄系统", "英雄槽位", "升级任务",
|
||||
]
|
||||
|
||||
# 收集每个术语在 EN 中找到的句子(包含的行)
|
||||
results = {term: [] for term in zh_terms_to_find}
|
||||
|
||||
for row_idx in range(2, ws.max_row + 1):
|
||||
zh = ws.cell(row=row_idx, column=3).value
|
||||
en = ws.cell(row=row_idx, column=5).value
|
||||
if not zh or not en:
|
||||
continue
|
||||
zh = str(zh)
|
||||
en = str(en)
|
||||
for term in zh_terms_to_find:
|
||||
if term in zh:
|
||||
# 取这一条 zh + en 的前 200 字符
|
||||
results[term].append((row_idx, zh[:200], en[:300]))
|
||||
if len(results[term]) >= 3: # 每个术语只看 3 个样本
|
||||
pass
|
||||
|
||||
with open(OUT, "w", encoding="utf-8") as f:
|
||||
for term, hits in results.items():
|
||||
f.write(f"\n=== {term} (hits: {len(hits)}) ===\n")
|
||||
for row_idx, zh_snip, en_snip in hits[:3]:
|
||||
f.write(f" row {row_idx}\n ZH: {zh_snip!r}\n EN: {en_snip!r}\n")
|
||||
|
||||
print(f"Done. Output: {OUT}")
|
||||
87
Tools/multilingual_check/dump_p2_full.py
Normal file
87
Tools/multilingual_check/dump_p2_full.py
Normal file
@ -0,0 +1,87 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
导出 D01 + D02 的全部 P2 条目为 JSON,供润色脚本读取。
|
||||
"""
|
||||
import json
|
||||
import re
|
||||
import sys
|
||||
import io
|
||||
from pathlib import Path
|
||||
|
||||
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
|
||||
|
||||
ROOT = Path(__file__).parent
|
||||
LAYER2_DIR = ROOT / 'layer2'
|
||||
DECISIONS_P0 = (ROOT / 'decisions.md').read_text(encoding='utf-8')
|
||||
DECISIONS_P1 = (ROOT / 'decisions_p1.md').read_text(encoding='utf-8')
|
||||
OUT = ROOT / 'p2_d01_d02.json'
|
||||
|
||||
# 已修 ID
|
||||
fixed_ids = set()
|
||||
for txt in [DECISIONS_P0, DECISIONS_P1]:
|
||||
for m in re.finditer(r'\[✅\].*?ID=(\d+(?:[,/]\d+)*)', txt):
|
||||
for i in re.split(r'[,/]', m.group(1)):
|
||||
fixed_ids.add(i)
|
||||
|
||||
ENTRY_RE = re.compile(r'### ID=(\d+) \[(\w+)\]')
|
||||
p2_recs = []
|
||||
for f in sorted(LAYER2_DIR.glob('seg_*_issues.md')):
|
||||
text = f.read_text(encoding='utf-8', errors='replace')
|
||||
positions = [(m.start(), m.group(1), m.group(2)) for m in ENTRY_RE.finditer(text)]
|
||||
if not positions:
|
||||
continue
|
||||
positions.append((len(text), None, None))
|
||||
for i in range(len(positions)-1):
|
||||
start, rid, lang = positions[i]
|
||||
end = positions[i+1][0]
|
||||
body = text[start:end]
|
||||
sev_m = re.search(r'\*\*严重\*\*:\s*(\S+)', body)
|
||||
sev = (sev_m.group(1).strip('* ').strip() if sev_m else 'P1')
|
||||
if sev != 'P2':
|
||||
continue
|
||||
if rid in fixed_ids:
|
||||
continue
|
||||
def grab(key, body=body):
|
||||
mm = re.search(rf'\*\*{key}\*\*:\s*([^\n]+)', body)
|
||||
return mm.group(1).strip() if mm else ''
|
||||
type_v = grab('类型')
|
||||
zh = grab('中文')
|
||||
cur = grab('当前')
|
||||
sug = grab('建议')
|
||||
why = grab('原因')
|
||||
# 过滤因错误规则
|
||||
skip = False
|
||||
if '플란드르' in sug and '플랑드르' in cur:
|
||||
skip = True
|
||||
if '레미리아' in sug and '레밀리아' in cur:
|
||||
skip = True
|
||||
if '이나바 테이' in sug and '이나바 테위' in cur:
|
||||
skip = True
|
||||
if skip:
|
||||
continue
|
||||
# 仅 D01/D02
|
||||
if any(k in type_v for k in ['风格','風格','敬语','敬語','语气','語氣','口吻','口調','口风']):
|
||||
bucket = 'D01'
|
||||
elif any(k in type_v for k in ['不自然','微调','微調','可商','机翻','機翻','地道','生硬','流畅','流暢']):
|
||||
bucket = 'D02'
|
||||
else:
|
||||
continue
|
||||
p2_recs.append({
|
||||
'rid': rid,
|
||||
'lang': lang.lower(),
|
||||
'code': type_v,
|
||||
'bucket': bucket,
|
||||
'zh': zh,
|
||||
'current': cur,
|
||||
'suggest': sug,
|
||||
'reason': why,
|
||||
'source_file': f.name,
|
||||
})
|
||||
|
||||
OUT.write_text(json.dumps(p2_recs, ensure_ascii=False, indent=2), encoding='utf-8')
|
||||
d01 = [e for e in p2_recs if e['bucket']=='D01']
|
||||
d02 = [e for e in p2_recs if e['bucket']=='D02']
|
||||
print(f'D01: {len(d01)}')
|
||||
print(f'D02: {len(d02)}')
|
||||
print(f'total: {len(p2_recs)}')
|
||||
print(f'-> {OUT}')
|
||||
135
Tools/multilingual_check/en_terms_found.txt
Normal file
135
Tools/multilingual_check/en_terms_found.txt
Normal file
@ -0,0 +1,135 @@
|
||||
|
||||
=== 蓬莱山辉夜 (hits: 0) ===
|
||||
|
||||
=== 八意永琳 (hits: 0) ===
|
||||
|
||||
=== 因幡帝 (hits: 0) ===
|
||||
|
||||
=== 铃仙 (hits: 0) ===
|
||||
|
||||
=== 藤原妹红 (hits: 0) ===
|
||||
|
||||
=== 丰聪耳神子 (hits: 0) ===
|
||||
|
||||
=== 妖怪兔近卫 (hits: 0) ===
|
||||
|
||||
=== 竹林狼上校 (hits: 0) ===
|
||||
|
||||
=== 优昙华庭院 (hits: 0) ===
|
||||
|
||||
=== 永夜法典 (hits: 0) ===
|
||||
|
||||
=== 竹林驿站 (hits: 0) ===
|
||||
|
||||
=== 竹林养护 (hits: 0) ===
|
||||
|
||||
=== 战地协同 (hits: 0) ===
|
||||
|
||||
=== 协同标的 (hits: 0) ===
|
||||
|
||||
=== 移动力提升 (hits: 0) ===
|
||||
|
||||
=== 击杀再动 (hits: 0) ===
|
||||
|
||||
=== 射程提升 (hits: 0) ===
|
||||
|
||||
=== 永恒 (hits: 0) ===
|
||||
|
||||
=== 蓬莱玉枝 (hits: 0) ===
|
||||
|
||||
=== 蓬莱树海 (hits: 0) ===
|
||||
|
||||
=== 须臾永远 (hits: 0) ===
|
||||
|
||||
=== 生命游戏 (hits: 0) ===
|
||||
|
||||
=== 复苏游戏 (hits: 0) ===
|
||||
|
||||
=== 国士无双之药 (hits: 0) ===
|
||||
|
||||
=== 瞭望 (hits: 0) ===
|
||||
|
||||
=== 水域通行 (hits: 0) ===
|
||||
|
||||
=== 幸运的白兔 (hits: 0) ===
|
||||
|
||||
=== 竹林的欺诈师 (hits: 0) ===
|
||||
|
||||
=== 隔岸观火 (hits: 0) ===
|
||||
|
||||
=== 劫富济贫 (hits: 0) ===
|
||||
|
||||
=== 落井下石 (hits: 0) ===
|
||||
|
||||
=== 帝国荣耀 (hits: 0) ===
|
||||
|
||||
=== 月兔幻象 (hits: 0) ===
|
||||
|
||||
=== 幻视调率 (hits: 0) ===
|
||||
|
||||
=== 幻象视差 (hits: 0) ===
|
||||
|
||||
=== 狂视调率 (hits: 0) ===
|
||||
|
||||
=== 不死鸟重生 (hits: 0) ===
|
||||
|
||||
=== 凤翼天翔 (hits: 0) ===
|
||||
|
||||
=== 不死身的舍身击 (hits: 0) ===
|
||||
|
||||
=== 狼影 (hits: 0) ===
|
||||
|
||||
=== 基础属性 (hits: 0) ===
|
||||
|
||||
=== 能力 (hits: 1) ===
|
||||
row 8
|
||||
ZH: '[版本V0.7.1i]\n发布日期 26.5.15\n\n------- [重要bug修复] -------\n1.修复了联机可能卡档并且无法继续游戏的bug\n2.修复了在视野外被我方击杀的单位可能错误残留图像的bug\n\n------- [其他优化] -------\n1.修复了大量翻译问题\n2.完善了军港描述(必须建造在港口附近)\n3.修复了日白残无(木偶)Lv.3拥有能力错误的bug'
|
||||
EN: '[Version V0.7.1i]\nRelease Date: 2026/5/15\n\n------- [Critical Bug Fixes] -------\n1. Fixed a bug where multiplayer sessions could stall and prevent continuing the game\n2. Fixed a bug where units killed by your side outside your vision could leave incorrect lingering images\n\n------- [Other Improvements'
|
||||
|
||||
=== 王 (hits: 0) ===
|
||||
|
||||
=== 后 (hits: 0) ===
|
||||
|
||||
=== 相 (hits: 0) ===
|
||||
|
||||
=== 马 (hits: 0) ===
|
||||
|
||||
=== 车 (hits: 0) ===
|
||||
|
||||
=== 兵 (hits: 0) ===
|
||||
|
||||
=== 游击 (hits: 0) ===
|
||||
|
||||
=== 飞行 (hits: 0) ===
|
||||
|
||||
=== 波斯文明 (hits: 0) ===
|
||||
|
||||
=== 丰聪耳帝国 (hits: 0) ===
|
||||
|
||||
=== 哲人王 (hits: 0) ===
|
||||
|
||||
=== 阿努希尔万 (hits: 0) ===
|
||||
|
||||
=== 萨珊 (hits: 0) ===
|
||||
|
||||
=== 泰西封 (hits: 0) ===
|
||||
|
||||
=== 学者 (hits: 0) ===
|
||||
|
||||
=== 炮兵 (hits: 0) ===
|
||||
|
||||
=== 市场 (hits: 0) ===
|
||||
|
||||
=== 保护区 (hits: 0) ===
|
||||
|
||||
=== 建筑等级 (hits: 0) ===
|
||||
|
||||
=== 回合金币 (hits: 0) ===
|
||||
|
||||
=== 回合科技点 (hits: 0) ===
|
||||
|
||||
=== 英雄系统 (hits: 0) ===
|
||||
|
||||
=== 英雄槽位 (hits: 0) ===
|
||||
|
||||
=== 升级任务 (hits: 0) ===
|
||||
250
Tools/multilingual_check/extract_p1.py
Normal file
250
Tools/multilingual_check/extract_p1.py
Normal file
@ -0,0 +1,250 @@
|
||||
"""抽取 Layer 1 机械 + Layer 2 语义的 P1 问题,过滤误报,聚类。
|
||||
|
||||
误报过滤规则:
|
||||
- 已被 P0 修复的 ID/语言/术语组合不再计入
|
||||
- 因之前错误规则 (플란드르/레미리아/이나바 테이/사이교지 유유코) 产生的"违反规则"报告,反过来看实际是对的,去掉
|
||||
- Layer 1 S7_UNTRANSLATED 日文条目中,纯汉字词与中文相同是合理的,去掉
|
||||
"""
|
||||
import json
|
||||
import re
|
||||
from pathlib import Path
|
||||
from collections import defaultdict, Counter
|
||||
|
||||
ROOT = Path(__file__).parent
|
||||
LAYER1 = json.loads((ROOT / 'layer1_issues.json').read_text(encoding='utf-8'))
|
||||
LAYER2_DIR = ROOT / 'layer2'
|
||||
DECISIONS = (ROOT / 'decisions.md').read_text(encoding='utf-8')
|
||||
OUT = ROOT.parent / 'Multilingual_P1_Clusters_For_Review.md'
|
||||
|
||||
# 提取已修过的 ID(避免重复列出)
|
||||
fixed_ids = set()
|
||||
for m in re.finditer(r'\[✅\].*?ID=(\d+(?:[,/]\d+)*)', DECISIONS):
|
||||
for i in re.split(r'[,/]', m.group(1)):
|
||||
fixed_ids.add(i)
|
||||
print(f'fixed IDs: {len(fixed_ids)}')
|
||||
|
||||
# 错误规则的术语模式:如果 Layer2 报告里说 X 是错的实际 X 是对的,那条作废
|
||||
WRONG_RULE_PATTERNS = [
|
||||
'플랑드르', '플란드르',
|
||||
'레밀리아', '레미리아',
|
||||
'이나바 테위', '이나바 테이',
|
||||
'사이교지 유유코', '사이교우지 유유코',
|
||||
]
|
||||
|
||||
# ========== Layer 1 ==========
|
||||
l1_p1 = []
|
||||
for it in LAYER1:
|
||||
code = it['code']
|
||||
if code == 'S6_EMPTY':
|
||||
continue # P0
|
||||
if code == 'S2_EMPTY_BOLD_TAG':
|
||||
continue # P0(机械)
|
||||
if str(it['rid']) in fixed_ids:
|
||||
continue
|
||||
# 过滤:日文 S7 含汉字相同已经在脚本里过滤过假名情况
|
||||
# 这里再过滤一波:很短的(如建設/守備 2 字)汉字 keep 作为参考但标低优先
|
||||
if code == 'S7_UNTRANSLATED' and it['lang']=='jp':
|
||||
zh = it.get('zh','').strip()
|
||||
if len(zh) <= 4 and not re.search(r'[^一-鿿]', zh):
|
||||
# 纯汉字短词,合理可保留
|
||||
continue
|
||||
l1_p1.append({
|
||||
'rid': str(it['rid']),
|
||||
'lang': it['lang'],
|
||||
'category': 'L1',
|
||||
'code': code,
|
||||
'severity': 'P1',
|
||||
'msg': it['msg'],
|
||||
'zh': it.get('zh','')[:150],
|
||||
'target': it.get('target','')[:150],
|
||||
})
|
||||
|
||||
# ========== Layer 2 ==========
|
||||
ENTRY_RE = re.compile(r'### ID=(\d+) \[(\w+)\]')
|
||||
l2_p1 = []
|
||||
for f in sorted(LAYER2_DIR.glob('seg_*_issues.md')):
|
||||
text = f.read_text(encoding='utf-8', errors='replace')
|
||||
positions = [(m.start(), m.group(1), m.group(2)) for m in ENTRY_RE.finditer(text)]
|
||||
if not positions:
|
||||
continue
|
||||
positions.append((len(text), None, None))
|
||||
for i in range(len(positions)-1):
|
||||
start, rid, lang = positions[i]
|
||||
end = positions[i+1][0]
|
||||
body = text[start:end]
|
||||
sev_m = re.search(r'\*\*严重\*\*:\s*(\S+)', body)
|
||||
sev = (sev_m.group(1).strip('* ').strip() if sev_m else 'P1')
|
||||
if sev != 'P1':
|
||||
continue
|
||||
if rid in fixed_ids:
|
||||
continue
|
||||
# 抓字段
|
||||
def grab(key):
|
||||
mm = re.search(rf'\*\*{key}\*\*:\s*([^\n]+)', body)
|
||||
return mm.group(1).strip() if mm else ''
|
||||
type_v = grab('类型')
|
||||
zh = grab('中文')
|
||||
cur = grab('当前')
|
||||
sug = grab('建议')
|
||||
why = grab('原因')
|
||||
# 过滤因错误规则产生的误报
|
||||
full_text = (cur + ' ' + sug + ' ' + why + ' ' + type_v).lower()
|
||||
skip = False
|
||||
# 如果建议方向与错误规则方向一致,去掉
|
||||
if '플란드르' in sug and '플랑드르' in cur:
|
||||
skip = True
|
||||
if '레미리아' in sug and '레밀리아' in cur:
|
||||
skip = True
|
||||
if '이나바 테이' in sug and '이나바 테위' in cur:
|
||||
skip = True
|
||||
if '사이교지 유유코' in sug and '사이교우지 유유코' in cur:
|
||||
skip = True
|
||||
if skip:
|
||||
continue
|
||||
l2_p1.append({
|
||||
'rid': rid,
|
||||
'lang': lang.lower(),
|
||||
'category': 'L2',
|
||||
'code': type_v[:40],
|
||||
'severity': 'P1',
|
||||
'msg': why[:200],
|
||||
'zh': zh[:150],
|
||||
'target': cur[:150],
|
||||
'suggest': sug[:150],
|
||||
'source_file': f.name,
|
||||
})
|
||||
|
||||
print(f'L1 P1: {len(l1_p1)}, L2 P1: {len(l2_p1)}, total: {len(l1_p1)+len(l2_p1)}')
|
||||
|
||||
# ========== 聚类 ==========
|
||||
all_p1 = l1_p1 + l2_p1
|
||||
|
||||
clusters = []
|
||||
|
||||
def add_cluster(name, fix, filter_fn):
|
||||
matched = [e for e in all_p1 if not e.get('_used') and filter_fn(e)]
|
||||
if matched:
|
||||
clusters.append({'name': name, 'fix': fix, 'items': matched})
|
||||
for e in matched:
|
||||
e['_used'] = True
|
||||
return len(matched)
|
||||
|
||||
# 集群 1:日文换行符不一致(L1 S4)
|
||||
n1 = add_cluster(
|
||||
'P1-C01 日文/英文/韩文 换行符数量不一致',
|
||||
'保持/去除中文里多余换行(往往是中文蓝本里有多余空格+换行,目标语言整理成一行反而对)',
|
||||
lambda e: e['category']=='L1' and e['code']=='S4_NEWLINE',
|
||||
)
|
||||
|
||||
# 集群 2:日文 S7 含较多汉字与中文相同(疑似漏译)
|
||||
n2 = add_cluster(
|
||||
'P1-C02 日文条目无假名/汉字相同(疑似漏译)',
|
||||
'逐条复核:合理保留(建設/守備等)还是真漏译',
|
||||
lambda e: e['category']=='L1' and e['code']=='S7_UNTRANSLATED' and e['lang']=='jp',
|
||||
)
|
||||
|
||||
# 集群 3:英文 S7(与中文完全相同含汉字)
|
||||
n3 = add_cluster(
|
||||
'P1-C03 英文条目含汉字且与中文相同(漏译)',
|
||||
'重译英文(含汉字必须翻成英文)',
|
||||
lambda e: e['category']=='L1' and e['code']=='S7_UNTRANSLATED' and e['lang']=='en',
|
||||
)
|
||||
|
||||
# 集群 4:韩文 S7
|
||||
n4 = add_cluster(
|
||||
'P1-C04 韩文条目与中文相同(漏译)',
|
||||
'重译韩文',
|
||||
lambda e: e['category']=='L1' and e['code']=='S7_UNTRANSLATED' and e['lang']=='kr',
|
||||
)
|
||||
|
||||
# 集群 5:占位符不一致(剩余 L1 S3)
|
||||
n5 = add_cluster(
|
||||
'P1-C05 占位符 {xxx} 不一致',
|
||||
'保留原中文占位符(程序代码可能依赖)',
|
||||
lambda e: e['category']=='L1' and e['code']=='S3_PLACEHOLDER',
|
||||
)
|
||||
|
||||
# 集群 6:数字缺失
|
||||
n6 = add_cluster(
|
||||
'P1-C06 数字缺失',
|
||||
'补回数字或确认是有意改写(如本地化为英文单词或替换 Q 群为 Discord)',
|
||||
lambda e: e['category']=='L1' and e['code']=='S5_NUM_MISSING',
|
||||
)
|
||||
|
||||
# 集群 7:tag 总数不匹配
|
||||
n7 = add_cluster(
|
||||
'P1-C07 <...> 标签总数不匹配',
|
||||
'检查多/少哪个标签',
|
||||
lambda e: e['category']=='L1' and 'TAG_COUNT' in e['code'],
|
||||
)
|
||||
|
||||
# ========== Layer 2 分类聚类 ==========
|
||||
|
||||
# 集群 8:跨条目术语不一致
|
||||
n8 = add_cluster(
|
||||
'P1-C08 跨条目术语不一致(同概念用了多种译法)',
|
||||
'统一术语',
|
||||
lambda e: e['category']=='L2' and any(k in e['code'] for k in ['不一致','不統一','统一']),
|
||||
)
|
||||
|
||||
# 集群 9:不自然/机翻味
|
||||
n9 = add_cluster(
|
||||
'P1-C09 翻译不自然/机翻味',
|
||||
'重译润色',
|
||||
lambda e: e['category']=='L2' and any(k in e['code'] for k in ['不自然','機翻','机翻','生硬']),
|
||||
)
|
||||
|
||||
# 集群 10:专名问题(不属于已修 P0)
|
||||
n10 = add_cluster(
|
||||
'P1-C10 专名问题(非核心角色)',
|
||||
'按 VERIFIED_TERMS 或东方圈通用译法修正',
|
||||
lambda e: e['category']=='L2' and '专名' in e['code'],
|
||||
)
|
||||
|
||||
# 集群 11:错译
|
||||
n11 = add_cluster(
|
||||
'P1-C11 错译/漏译/添字',
|
||||
'逐条重译',
|
||||
lambda e: e['category']=='L2' and any(k in e['code'] for k in ['错译','錯譯','漏译','漏譯','添字','添油']),
|
||||
)
|
||||
|
||||
# 集群 12:风格/敬语
|
||||
n12 = add_cluster(
|
||||
'P1-C12 风格/敬语/语气',
|
||||
'统一风格',
|
||||
lambda e: e['category']=='L2' and any(k in e['code'] for k in ['风格','風格','敬语','敬語','语气','語氣']),
|
||||
)
|
||||
|
||||
# 剩余
|
||||
rest = [e for e in all_p1 if not e.get('_used')]
|
||||
clusters.append({'name': 'P1-C99 其他未归类', 'fix': '逐条人工', 'items': rest})
|
||||
|
||||
# ========== 输出 ==========
|
||||
total = sum(len(c['items']) for c in clusters)
|
||||
lines = ['# P1 修改提案(聚类版,逐项确认)', '']
|
||||
lines.append(f'**总 P1 数**: {total} 条(已剔除因错误规则产生的误报 + 已修复的 P0 项)')
|
||||
lines.append('')
|
||||
for c in clusters:
|
||||
if not c['items']:
|
||||
continue
|
||||
lines.append(f'## {c["name"]} ({len(c["items"])} 条)')
|
||||
lines.append(f'**修复方式**: {c["fix"]}')
|
||||
lines.append('')
|
||||
lines.append('| ID | lang | 类型/Code | 中文 | 当前 → 建议 |')
|
||||
lines.append('|---|---|---|---|---|')
|
||||
for it in c['items'][:60]: # 每个集群最多列 60 条
|
||||
zh = (it.get('zh') or '').replace('\n',' ')[:50]
|
||||
cur = (it.get('target') or '').replace('\n',' ')[:60]
|
||||
sug = (it.get('suggest') or '').replace('\n',' ')[:60]
|
||||
code = it.get('code','')[:30]
|
||||
sep = f"{cur} → {sug}" if sug else cur
|
||||
lines.append(f"| {it['rid']} | {it['lang']} | {code} | {zh} | {sep} |")
|
||||
if len(c['items']) > 60:
|
||||
lines.append(f'\n(还有 {len(c["items"])-60} 条未列出)\n')
|
||||
lines.append('')
|
||||
|
||||
OUT.write_text('\n'.join(lines), encoding='utf-8')
|
||||
print(f'-> {OUT}')
|
||||
for c in clusters:
|
||||
if c['items']:
|
||||
print(f" {c['name']}: {len(c['items'])}")
|
||||
162
Tools/multilingual_check/extract_p2.py
Normal file
162
Tools/multilingual_check/extract_p2.py
Normal file
@ -0,0 +1,162 @@
|
||||
"""抽取 P2 并聚类。
|
||||
P2 来源:Layer 2 语义检查 + Layer 1.5 专名扫描的剩余项。
|
||||
过滤:
|
||||
- 已被 P0/P1 修过的 ID 不再列入
|
||||
- 因错误规则产生的反向报告(플랑드르等)
|
||||
"""
|
||||
import json
|
||||
import re
|
||||
from pathlib import Path
|
||||
from collections import defaultdict
|
||||
|
||||
ROOT = Path(__file__).parent
|
||||
LAYER2_DIR = ROOT / 'layer2'
|
||||
DECISIONS_P0 = (ROOT / 'decisions.md').read_text(encoding='utf-8')
|
||||
DECISIONS_P1 = (ROOT / 'decisions_p1.md').read_text(encoding='utf-8')
|
||||
OUT = ROOT.parent / 'Multilingual_P2_Clusters_For_Review.md'
|
||||
|
||||
# 已修 ID
|
||||
fixed_ids = set()
|
||||
for txt in [DECISIONS_P0, DECISIONS_P1]:
|
||||
for m in re.finditer(r'\[✅\].*?ID=(\d+(?:[,/]\d+)*)', txt):
|
||||
for i in re.split(r'[,/]', m.group(1)):
|
||||
fixed_ids.add(i)
|
||||
print(f'fixed IDs: {len(fixed_ids)}')
|
||||
|
||||
# ========== Layer 2 P2 ==========
|
||||
ENTRY_RE = re.compile(r'### ID=(\d+) \[(\w+)\]')
|
||||
p2_recs = []
|
||||
for f in sorted(LAYER2_DIR.glob('seg_*_issues.md')):
|
||||
text = f.read_text(encoding='utf-8', errors='replace')
|
||||
positions = [(m.start(), m.group(1), m.group(2)) for m in ENTRY_RE.finditer(text)]
|
||||
if not positions:
|
||||
continue
|
||||
positions.append((len(text), None, None))
|
||||
for i in range(len(positions)-1):
|
||||
start, rid, lang = positions[i]
|
||||
end = positions[i+1][0]
|
||||
body = text[start:end]
|
||||
sev_m = re.search(r'\*\*严重\*\*:\s*(\S+)', body)
|
||||
sev = (sev_m.group(1).strip('* ').strip() if sev_m else 'P1')
|
||||
if sev != 'P2':
|
||||
continue
|
||||
if rid in fixed_ids:
|
||||
continue
|
||||
def grab(key):
|
||||
mm = re.search(rf'\*\*{key}\*\*:\s*([^\n]+)', body)
|
||||
return mm.group(1).strip() if mm else ''
|
||||
type_v = grab('类型')
|
||||
zh = grab('中文')
|
||||
cur = grab('当前')
|
||||
sug = grab('建议')
|
||||
why = grab('原因')
|
||||
# 过滤因错误规则
|
||||
skip = False
|
||||
if '플란드르' in sug and '플랑드르' in cur:
|
||||
skip = True
|
||||
if '레미리아' in sug and '레밀리아' in cur:
|
||||
skip = True
|
||||
if '이나바 테이' in sug and '이나바 테위' in cur:
|
||||
skip = True
|
||||
if skip:
|
||||
continue
|
||||
p2_recs.append({
|
||||
'rid': rid,
|
||||
'lang': lang.lower(),
|
||||
'code': type_v[:40],
|
||||
'msg': why[:200],
|
||||
'zh': zh[:120],
|
||||
'target': cur[:120],
|
||||
'suggest': sug[:120],
|
||||
'source_file': f.name,
|
||||
})
|
||||
|
||||
print(f'P2 total: {len(p2_recs)}')
|
||||
|
||||
# ========== 聚类 ==========
|
||||
clusters = []
|
||||
|
||||
def add_cluster(name, fix, filter_fn):
|
||||
matched = [e for e in p2_recs if not e.get('_used') and filter_fn(e)]
|
||||
if matched:
|
||||
clusters.append({'name': name, 'fix': fix, 'items': matched})
|
||||
for e in matched:
|
||||
e['_used'] = True
|
||||
return len(matched)
|
||||
|
||||
# 集群 1:风格/敬语/语气
|
||||
add_cluster(
|
||||
'P2-D01 风格/敬语/语气',
|
||||
'统一/优化',
|
||||
lambda e: any(k in e['code'] for k in ['风格','風格','敬语','敬語','语气','語氣','口吻','口調','口风']),
|
||||
)
|
||||
|
||||
# 集群 2:不自然/微调
|
||||
add_cluster(
|
||||
'P2-D02 翻译微调/不自然但可接受',
|
||||
'可商榷',
|
||||
lambda e: any(k in e['code'] for k in ['不自然','微调','微調','可商','机翻','機翻','地道','生硬','流畅','流暢']),
|
||||
)
|
||||
|
||||
# 集群 3:术语/同义词
|
||||
add_cluster(
|
||||
'P2-D03 术语同义词替换(不一致但都可接受)',
|
||||
'统一术语',
|
||||
lambda e: any(k in e['code'] for k in ['术语','術語','用词','用詞','同义','同義','一致','統一','统一']),
|
||||
)
|
||||
|
||||
# 集群 4:专名(次级)
|
||||
add_cluster(
|
||||
'P2-D04 次级专名/称号',
|
||||
'校对',
|
||||
lambda e: any(k in e['code'] for k in ['专名','專名','称号','稱號','人名','地名']),
|
||||
)
|
||||
|
||||
# 集群 5:错译(边缘)
|
||||
add_cluster(
|
||||
'P2-D05 边缘错译/添字/漏字',
|
||||
'逐条看',
|
||||
lambda e: any(k in e['code'] for k in ['错译','錯譯','漏译','漏譯','添字','添油','偏移']),
|
||||
)
|
||||
|
||||
# 集群 6:繁中
|
||||
add_cluster(
|
||||
'P2-D06 繁中(简繁/台湾本地化)',
|
||||
'台湾本地化',
|
||||
lambda e: e['lang']=='tw',
|
||||
)
|
||||
|
||||
# 剩余
|
||||
rest = [e for e in p2_recs if not e.get('_used')]
|
||||
clusters.append({'name': 'P2-D99 其他未归类', 'fix': '逐条', 'items': rest})
|
||||
|
||||
# ========== 输出 ==========
|
||||
lines = ['# P2 修改提案(聚类版)', '']
|
||||
total = sum(len(c['items']) for c in clusters)
|
||||
lines.append(f'**总 P2 数**: {total}')
|
||||
lines.append('')
|
||||
|
||||
for c in clusters:
|
||||
if not c['items']:
|
||||
continue
|
||||
lines.append(f'## {c["name"]} ({len(c["items"])} 条)')
|
||||
lines.append(f'**修复方式**: {c["fix"]}')
|
||||
lines.append('')
|
||||
lines.append('| ID | lang | code | 中文 | 当前 → 建议 |')
|
||||
lines.append('|---|---|---|---|---|')
|
||||
for it in c['items'][:50]:
|
||||
zh = (it.get('zh') or '').replace('\n',' ').replace('|','\\|')[:40]
|
||||
cur = (it.get('target') or '').replace('\n',' ').replace('|','\\|')[:50]
|
||||
sug = (it.get('suggest') or '').replace('\n',' ').replace('|','\\|')[:50]
|
||||
code = it.get('code','')[:25]
|
||||
sep = f"{cur} → {sug}" if sug else cur
|
||||
lines.append(f"| {it['rid']} | {it['lang']} | {code} | {zh} | {sep} |")
|
||||
if len(c['items']) > 50:
|
||||
lines.append(f'\n(还有 {len(c["items"])-50} 条未列出)\n')
|
||||
lines.append('')
|
||||
|
||||
OUT.write_text('\n'.join(lines), encoding='utf-8')
|
||||
print(f'-> {OUT}')
|
||||
for c in clusters:
|
||||
if c['items']:
|
||||
print(f" {c['name']}: {len(c['items'])}")
|
||||
88
Tools/multilingual_check/inspect_p1_c09_c99.py
Normal file
88
Tools/multilingual_check/inspect_p1_c09_c99.py
Normal file
@ -0,0 +1,88 @@
|
||||
"""读取 P1-C09 / C99 涉及的所有 ID 当前 5 语言值,供重译参考。"""
|
||||
import openpyxl
|
||||
from openpyxl import load_workbook
|
||||
import io, sys, json
|
||||
|
||||
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
|
||||
|
||||
XLSX = r'C:\TH1\TH1\Tools\Multilingual.xlsx'
|
||||
|
||||
# 列号
|
||||
COL_ID, COL_ACTIVE, COL_ZH, COL_TW, COL_EN, COL_JP, COL_KR = 1, 2, 3, 4, 5, 6, 7
|
||||
|
||||
# C09 (lang, id) — 34 条
|
||||
c09 = [
|
||||
('jp', 963), ('jp', 976), ('jp', 1058),
|
||||
('en', 1072), ('en', 1244),
|
||||
('jp', 1613), ('jp', 1635), ('jp', 1718),
|
||||
('jp', 1756), ('jp', 1768), ('jp', 1770), ('jp', 1868), ('jp', 1901),
|
||||
('kr', 2068), ('kr', 2471), ('kr', 2473),
|
||||
('jp', 16700), ('kr', 16795), ('kr', 16841),
|
||||
('en', 17157), ('jp', 17318), ('kr', 17589), ('jp', 17605),
|
||||
('kr', 17857), ('jp', 19044), ('jp', 19119),
|
||||
('jp', 19134), ('kr', 19134),
|
||||
('en', 19362), ('kr', 19272),
|
||||
('jp', 19441), ('en', 19560), ('jp', 19672), ('kr', 19829),
|
||||
]
|
||||
|
||||
# C99 (lang, id) — 26 条
|
||||
c99 = [
|
||||
('zh', 437), ('tw', 437),
|
||||
('tw', 607),
|
||||
('tw', 667), ('zh', 667),
|
||||
('tw', 767),
|
||||
('tw', 929),
|
||||
('kr', 1385),
|
||||
('jp', 1865),
|
||||
('zh', 2151),
|
||||
('en', 16773),
|
||||
('kr', 17131),
|
||||
('tw', 17897),
|
||||
('zh', 18305), ('tw', 18305),
|
||||
('zh', 18307), ('tw', 18307),
|
||||
('zh', 18558), ('tw', 18558), ('en', 18558),
|
||||
('jp', 18778),
|
||||
('zh', 18779), ('tw', 18779),
|
||||
('zh', 19788),
|
||||
('zh', 19755), ('tw', 19755),
|
||||
]
|
||||
|
||||
LANG_COL = {'zh': COL_ZH, 'tw': COL_TW, 'en': COL_EN, 'jp': COL_JP, 'kr': COL_KR}
|
||||
|
||||
def main():
|
||||
wb = load_workbook(XLSX, data_only=False)
|
||||
ws = wb.active
|
||||
id_to_row = {}
|
||||
for r in range(2, ws.max_row + 1):
|
||||
v = ws.cell(row=r, column=COL_ID).value
|
||||
if v is None:
|
||||
continue
|
||||
s = str(v).replace('', '').strip()
|
||||
id_to_row[s] = r
|
||||
|
||||
def dump(tag, items):
|
||||
print(f'\n========== {tag} ==========')
|
||||
for lang, tid in items:
|
||||
row = id_to_row.get(str(tid))
|
||||
if row is None:
|
||||
print(f'[{tid}] {lang} -> ID NOT FOUND')
|
||||
continue
|
||||
zh = ws.cell(row=row, column=COL_ZH).value
|
||||
tw = ws.cell(row=row, column=COL_TW).value
|
||||
en = ws.cell(row=row, column=COL_EN).value
|
||||
jp = ws.cell(row=row, column=COL_JP).value
|
||||
kr = ws.cell(row=row, column=COL_KR).value
|
||||
target = {'zh': zh, 'tw': tw, 'en': en, 'jp': jp, 'kr': kr}[lang]
|
||||
print(f'--- ID={tid} target={lang} ---')
|
||||
print(f' ZH: {zh!r}')
|
||||
print(f' TW: {tw!r}')
|
||||
print(f' EN: {en!r}')
|
||||
print(f' JP: {jp!r}')
|
||||
print(f' KR: {kr!r}')
|
||||
|
||||
dump('C09', c09)
|
||||
dump('C99', c99)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
162
Tools/multilingual_check/layer1c_verified.py
Normal file
162
Tools/multilingual_check/layer1c_verified.py
Normal file
@ -0,0 +1,162 @@
|
||||
"""基于 VERIFIED_TERMS 重跑专名扫描。
|
||||
对每行中文若包含某中文专名,检查目标语言是否使用了正确的权威译法;若使用了已知错误版本则报 P0。
|
||||
"""
|
||||
import json
|
||||
import re
|
||||
from pathlib import Path
|
||||
from collections import defaultdict
|
||||
|
||||
ROOT = Path(__file__).parent
|
||||
MAIN = json.loads((ROOT / 'main.json').read_text(encoding='utf-8'))
|
||||
OUT = ROOT.parent / 'Multilingual_Verified_Issues.md'
|
||||
OUT_JSON = ROOT / 'verified_issues.json'
|
||||
|
||||
# (中文, English 正确, English 也合法 list, Japanese 正确, Korean 正确, Korean 已知错误 list)
|
||||
TERMS = [
|
||||
# (zh, en_correct, en_alt, jp_correct, jp_alt, kr_correct, kr_wrong_list, group)
|
||||
('芙兰朵露', 'Flandre', [], 'フランドール', [], '플랑드르', ['플란드르'], '红魔馆'),
|
||||
('蕾米莉亚', 'Remilia', [], 'レミリア', [], '레밀리아', ['레미리아'], '红魔馆'),
|
||||
('红美铃', 'Hong Meiling', ['Hong Meirin'], '紅美鈴', [], '홍 메이링', ['홍미령','홍 메이린','훙메이링'], '红魔馆'),
|
||||
('帕秋莉', 'Patchouli', [], 'パチュリー', [], '파츄리', [], '红魔馆'),
|
||||
('诺蕾姬', 'Knowledge', [], 'ノーレッジ', [], '널리지', ['널릿지'], '红魔馆'), # 널릿지 也是官方但优先 널리지
|
||||
('十六夜咲夜', 'Sakuya Izayoi', [], '十六夜咲夜', [], '이자요이 사쿠야', [], '红魔馆'),
|
||||
('咲夜', 'Sakuya', [], '咲夜', [], '사쿠야', [], '红魔馆'),
|
||||
('小恶魔', 'Koakuma', [], '小悪魔', [], '코아쿠마', ['Lesser Demon','Lesser Devil'], '红魔馆'),
|
||||
('博丽灵梦', 'Reimu Hakurei', [], '博麗霊夢', [], '하쿠레이 레이무', [], '博丽神社'),
|
||||
('灵梦', 'Reimu', [], '霊夢', [], '레이무', [], '博丽神社'),
|
||||
('雾雨魔理沙', 'Marisa Kirisame', [], '霧雨魔理沙', [], '키리사메 마리사', ['Kirisame Marisa'], '博丽神社'),
|
||||
('魔理沙', 'Marisa', [], '魔理沙', [], '마리사', [], '博丽神社'),
|
||||
('八云紫', 'Yukari Yakumo', [], '八雲紫', [], '야쿠모 유카리', ['Yakumo Yukari'], '神祇'),
|
||||
('八意永琳', 'Eirin Yagokoro', [], '八意永琳', [], '야고코로 에이린', ['Yagokoro Eirin'], '永远亭'),
|
||||
('蓬莱山辉夜', 'Kaguya Houraisan', [], '蓬莱山輝夜', [], '호라이산 카구야', ['Houraisan Kaguya'], '永远亭'),
|
||||
('辉夜', 'Kaguya', [], '輝夜', [], '카구야', [], '永远亭'),
|
||||
('因幡帝', 'Tewi Inaba', [], '因幡てゐ', [], '이나바 테위', ['이나바 테이','Inaba Tewi'], '永远亭'),
|
||||
('八坂神奈子', 'Kanako Yasaka', [], '八坂神奈子', [], '야사카 카나코', ['Yasaka Kanako'], '守矢神社'),
|
||||
('神奈子', 'Kanako', [], '神奈子', [], '카나코', [], '守矢神社'),
|
||||
('洩矢诹访子', 'Suwako Moriya', [], '洩矢諏訪子', [], '모리야 스와코', ['Moriya Suwako'], '守矢神社'),
|
||||
('诹访子', 'Suwako', [], '諏訪子', [], '스와코', [], '守矢神社'),
|
||||
('古明地觉', 'Satori Komeiji', [], '古明地さとり', [], '코메이지 사토리', ['Komeiji Satori'], '地灵殿'),
|
||||
('古明地恋', 'Koishi Komeiji', [], '古明地こいし', [], '코메이지 코이시', ['Komeiji Koishi'], '地灵殿'),
|
||||
('火焰猫燐', 'Rin Kaenbyou', [], '火焔猫燐', [], '카엔뵤 린', ['Kaenbyou Rin'], '地灵殿'),
|
||||
('西行寺幽幽子', 'Yuyuko Saigyouji', [], '西行寺幽々子', [], '사이교우지 유유코', ['사이교지 유유코','Saigyouji Yuyuko'], '冥界'),
|
||||
('日白残无', 'Zanmu Nippaku', [], '日白残夢', [], '닛파쿠 잔무', ['Nippaku Zanmu'], '地狱'),
|
||||
('御射宫司', 'Mishaguji', ['Mishaguchi'], 'ミシャグジ', ['御射宮司','ミシャグチ'], '미샤구지', ['Mishot Gūji'], '神祇'),
|
||||
('赤口', 'Mishaguji', ['Akaguchi','Mishaguchi'], 'ミシャグジ', ['ミシャグチ','赤口'], '미샤구지', ['적구'], '神祇'),
|
||||
]
|
||||
|
||||
LANG_NAMES = {'en':'英文','jp':'日文','kr':'韩文','tw':'繁中'}
|
||||
|
||||
def main():
|
||||
issues = []
|
||||
for row in MAIN:
|
||||
rid = row['ID']
|
||||
zh = row['zh'] or ''
|
||||
if not zh:
|
||||
continue
|
||||
for (term_zh, en_c, en_alt, jp_c, jp_alt, kr_c, kr_wrong, group) in TERMS:
|
||||
if term_zh not in zh:
|
||||
continue
|
||||
# 检查英/日/韩
|
||||
for lang_key, correct, alt_list, wrong_list in [
|
||||
('en', en_c, en_alt, []),
|
||||
('jp', jp_c, jp_alt, []),
|
||||
('kr', kr_c, [], kr_wrong),
|
||||
]:
|
||||
v = (row[lang_key] or '').strip()
|
||||
if not v:
|
||||
continue
|
||||
# 检查 wrong_list 中是否有出现(严重错误)
|
||||
for wrong in wrong_list:
|
||||
if wrong in v:
|
||||
issues.append({
|
||||
'rid': rid,
|
||||
'lang': lang_key,
|
||||
'severity': 'P0',
|
||||
'term_zh': term_zh,
|
||||
'group': group,
|
||||
'msg': f"{LANG_NAMES[lang_key]}:术语「{term_zh}」使用了已知错误译法「{wrong}」",
|
||||
'correct': correct,
|
||||
'wrong': wrong,
|
||||
'current': v[:200],
|
||||
'zh_excerpt': zh[:200],
|
||||
})
|
||||
break
|
||||
else:
|
||||
# 没有错误,检查是否使用了 correct 或 alt
|
||||
if correct not in v and not any(a in v for a in alt_list):
|
||||
issues.append({
|
||||
'rid': rid,
|
||||
'lang': lang_key,
|
||||
'severity': 'P1',
|
||||
'term_zh': term_zh,
|
||||
'group': group,
|
||||
'msg': f"{LANG_NAMES[lang_key]}:术语「{term_zh}」未使用权威译法「{correct}」(可能用了同义词)",
|
||||
'correct': correct,
|
||||
'current': v[:200],
|
||||
'zh_excerpt': zh[:200],
|
||||
})
|
||||
|
||||
# 排序 + 输出
|
||||
issues.sort(key=lambda x: (x['severity'], int(x['rid'])))
|
||||
OUT_JSON.write_text(json.dumps(issues, ensure_ascii=False, indent=1), encoding='utf-8')
|
||||
|
||||
# 统计
|
||||
by_sev = defaultdict(int)
|
||||
by_term = defaultdict(int)
|
||||
by_group = defaultdict(int)
|
||||
p0_by_lang = defaultdict(int)
|
||||
for it in issues:
|
||||
by_sev[it['severity']] += 1
|
||||
by_term[it['term_zh']] += 1
|
||||
by_group[it['group']] += 1
|
||||
if it['severity']=='P0':
|
||||
p0_by_lang[it['lang']] += 1
|
||||
|
||||
lines = ['# 基于 VERIFIED_TERMS 的专名扫描报告', '']
|
||||
lines.append(f'**生成时间**: 2026-05-14')
|
||||
lines.append(f'**总问题**: {len(issues)} P0={by_sev["P0"]} P1={by_sev["P1"]}')
|
||||
lines.append('')
|
||||
lines.append('## P0 按语言')
|
||||
for l in ('en','jp','kr'):
|
||||
lines.append(f'- {LANG_NAMES[l]}: {p0_by_lang.get(l,0)}')
|
||||
lines.append('')
|
||||
lines.append('## P0 高频错误译法 (Top 20)')
|
||||
lines.append('')
|
||||
lines.append('| 中文术语 | 数量 |')
|
||||
lines.append('|---|---|')
|
||||
for term, cnt in sorted(by_term.items(), key=lambda x:-x[1])[:20]:
|
||||
lines.append(f'| {term} | {cnt} |')
|
||||
lines.append('')
|
||||
lines.append('---')
|
||||
lines.append('')
|
||||
lines.append('## P0 清单(必修,机械替换零风险)')
|
||||
lines.append('')
|
||||
p0_list = [it for it in issues if it['severity']=='P0']
|
||||
lines.append(f'共 {len(p0_list)} 条')
|
||||
lines.append('')
|
||||
lines.append('| ID | 语言 | 术语 | 错误译法 → 正确译法 |')
|
||||
lines.append('|---|---|---|---|')
|
||||
for it in p0_list:
|
||||
lines.append(f"| {it['rid']} | {LANG_NAMES[it['lang']]} | {it['term_zh']} | `{it['wrong']}` → `{it['correct']}` |")
|
||||
lines.append('')
|
||||
lines.append('---')
|
||||
lines.append('')
|
||||
lines.append('## P1 清单(同义词/未用权威译法,可能误报)')
|
||||
lines.append('')
|
||||
p1_list = [it for it in issues if it['severity']=='P1']
|
||||
lines.append(f'共 {len(p1_list)} 条(数量大,按 ID 排序,仅前 200 条)')
|
||||
lines.append('')
|
||||
lines.append('| ID | 语言 | 术语 | 当前 | 权威 |')
|
||||
lines.append('|---|---|---|---|---|')
|
||||
for it in p1_list[:200]:
|
||||
cur = it['current'].replace('\n',' ')[:80]
|
||||
lines.append(f"| {it['rid']} | {LANG_NAMES[it['lang']]} | {it['term_zh']} | {cur} | {it['correct']} |")
|
||||
if len(p1_list) > 200:
|
||||
lines.append(f'\n(还有 {len(p1_list)-200} 条 P1 未列出,见 verified_issues.json)')
|
||||
|
||||
OUT.write_text('\n'.join(lines), encoding='utf-8')
|
||||
print(f'P0={by_sev["P0"]} P1={by_sev["P1"]}')
|
||||
print(f'-> {OUT}')
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
17
Tools/multilingual_check/list_tags_19871.py
Normal file
17
Tools/multilingual_check/list_tags_19871.py
Normal file
@ -0,0 +1,17 @@
|
||||
"""列出 ID=19871 的所有 **<...>** 标签按出现顺序。"""
|
||||
import openpyxl
|
||||
import re
|
||||
|
||||
XLSX = r"C:\TH1\TH1\Tools\Multilingual.xlsx"
|
||||
|
||||
wb = openpyxl.load_workbook(XLSX, data_only=True)
|
||||
ws = wb.active
|
||||
target_row = 6
|
||||
zh = ws.cell(row=target_row, column=3).value
|
||||
|
||||
tags = re.findall(r"\*\*<[^>]*>\*\*", zh)
|
||||
print(f"Total: {len(tags)}")
|
||||
with open(r"C:\TH1\TH1\Tools\multilingual_check\tags_19871.txt", "w", encoding="utf-8") as f:
|
||||
for i, t in enumerate(tags, 1):
|
||||
f.write(f"{i:3d}: {t}\n")
|
||||
print("Output: tags_19871.txt")
|
||||
1575
Tools/multilingual_check/p2_d01_d02.json
Normal file
1575
Tools/multilingual_check/p2_d01_d02.json
Normal file
File diff suppressed because it is too large
Load Diff
41
Tools/multilingual_check/read_19871.py
Normal file
41
Tools/multilingual_check/read_19871.py
Normal file
@ -0,0 +1,41 @@
|
||||
"""读取 ID=19871 的中文原文以便翻译。"""
|
||||
import openpyxl
|
||||
|
||||
XLSX = r"C:\TH1\TH1\Tools\Multilingual.xlsx"
|
||||
|
||||
wb = openpyxl.load_workbook(XLSX, data_only=True)
|
||||
ws = wb.active
|
||||
print("Sheet:", ws.title)
|
||||
print("Max row:", ws.max_row, "Max col:", ws.max_column)
|
||||
|
||||
# 看表头
|
||||
header = [c.value for c in ws[1]]
|
||||
print("Header:", header[:10])
|
||||
|
||||
# 定位 ID=19871 (假设 ID 在 A 列)
|
||||
target_row = None
|
||||
for row_idx in range(1, ws.max_row + 1):
|
||||
v = ws.cell(row=row_idx, column=1).value
|
||||
if v == 19871 or str(v) == "19871":
|
||||
target_row = row_idx
|
||||
break
|
||||
|
||||
if target_row is None:
|
||||
print("ID=19871 not found!")
|
||||
else:
|
||||
print(f"Found ID=19871 at row {target_row}")
|
||||
# 打印各列内容长度
|
||||
for col_idx in range(1, min(ws.max_column + 1, 10)):
|
||||
val = ws.cell(row=target_row, column=col_idx).value
|
||||
if val is None:
|
||||
print(f" col {col_idx}: None")
|
||||
else:
|
||||
s = str(val)
|
||||
print(f" col {col_idx}: len={len(s)}, preview={s[:60]!r}")
|
||||
# 把中文(C列, idx=3)和英文(E列, idx=5)完整 dump
|
||||
zh = ws.cell(row=target_row, column=3).value
|
||||
en = ws.cell(row=target_row, column=5).value
|
||||
print("\n=== ZH (col 3) ===")
|
||||
print(zh)
|
||||
print("\n=== EN (col 5) ===")
|
||||
print(en)
|
||||
105
Tools/multilingual_check/tags_19871.txt
Normal file
105
Tools/multilingual_check/tags_19871.txt
Normal file
@ -0,0 +1,105 @@
|
||||
1: **<优昙华庭院>**
|
||||
2: **<妖怪兔近卫>**
|
||||
3: **<步炮协同>**
|
||||
4: **<永夜法典>**
|
||||
5: **<竹林驿站>**
|
||||
6: **<竹林狼上校>**
|
||||
7: **<竹林养护>**
|
||||
8: **<帝国的永恒:蓬莱山辉夜>**
|
||||
9: **<王>**
|
||||
10: **<永恒>**
|
||||
11: **<-------- Lv.0 -------->**
|
||||
12: **<[基础属性]>**
|
||||
13: **<[能力:游击]>**
|
||||
14: **<-------- Lv.1 -------->**
|
||||
15: **<[基础属性]>**
|
||||
16: **<[能力:蓬莱玉枝]>**
|
||||
17: **<永恒>**
|
||||
18: **<永恒>**
|
||||
19: **<-------- Lv.2 -------->**
|
||||
20: **<[基础属性]>**
|
||||
21: **<[能力:蓬莱树海]>**
|
||||
22: **<永恒>**
|
||||
23: **<-------- Lv.3 -------->**
|
||||
24: **<[基础属性]>**
|
||||
25: **<[能力:须臾永远]>**
|
||||
26: **<永恒>**
|
||||
27: **<帝国的月之头脑:八意永琳>**
|
||||
28: **<后>**
|
||||
29: **<-------- Lv.0 -------->**
|
||||
30: **<[基础属性]>**
|
||||
31: **<[能力:飞行]>**
|
||||
32: **<-------- Lv.1 -------->**
|
||||
33: **<[基础属性]>**
|
||||
34: **<[能力:战地协同]>**
|
||||
35: **<协同标的>**
|
||||
36: **<协同标的>**
|
||||
37: **<[能力:生命游戏]>**
|
||||
38: **<-------- Lv.2 -------->**
|
||||
39: **<[基础属性]>**
|
||||
40: **<[能力:复苏游戏]>**
|
||||
41: **<战地协同>**
|
||||
42: **<移动力提升>**
|
||||
43: **<-------- Lv.3 ---------->**
|
||||
44: **<[基础属性]>**
|
||||
45: **<[能力:国士无双之药]>**
|
||||
46: **<帝国的欺诈师:因幡帝>**
|
||||
47: **<相>**
|
||||
48: **<-------- Lv.0 -------->**
|
||||
49: **<[基础属性]>**
|
||||
50: **<[能力:瞭望]>**
|
||||
51: **<[能力:水域通行]>**
|
||||
52: **<[能力:幸运的白兔]>**
|
||||
53: **<-------- Lv.1 -------->**
|
||||
54: **<[基础属性]>**
|
||||
55: **<[能力:竹林的欺诈师-隔岸观火]>**
|
||||
56: **<-------- Lv.2 -------->**
|
||||
57: **<[基础属性]>**
|
||||
58: **<[能力:竹林的欺诈师-劫富济贫]>**
|
||||
59: **<[能力:竹林的欺诈师-落井下石]>**
|
||||
60: **<------- Lv.3 -------->**
|
||||
61: **<[基础属性]>**
|
||||
62: **<[能力:帝国荣耀]>**
|
||||
63: **<战地协同>**
|
||||
64: **<移动力提升>**
|
||||
65: **<帝国的狂气之瞳 铃仙·优昙华院·因幡>**
|
||||
66: **<马>**
|
||||
67: **<-------- Lv.0 -------->**
|
||||
68: **<[基础属性]>**
|
||||
69: **<[能力:战地协同]>**
|
||||
70: **<协同标的>**
|
||||
71: **<协同标的>**
|
||||
72: **<-------- Lv.1 -------->**
|
||||
73: **<[基础属性]>**
|
||||
74: **<[能力:幻视调率]>**
|
||||
75: **<月兔幻象>**
|
||||
76: **<战地协同>**
|
||||
77: **<-------- Lv.2 -------->**
|
||||
78: **<[基础属性]>**
|
||||
79: **<[能力:幻象视差]>**
|
||||
80: **<月兔幻象>**
|
||||
81: **<-------- Lv.3 -------->**
|
||||
82: **<[基础属性]>**
|
||||
83: **<[能力:狂视调率]>**
|
||||
84: **<月兔幻象>**
|
||||
85: **<月兔幻想>**
|
||||
86: **<帝国的不死鸟:藤原妹红>**
|
||||
87: **<车>**
|
||||
88: **<--------- Lv.0 --------->**
|
||||
89: **<[基础属性]>**
|
||||
90: **<--------- Lv.1 --------->**
|
||||
91: **<[基础属性]>**
|
||||
92: **<[能力:不死鸟重生]>**
|
||||
93: **<--------- Lv.2 --------->**
|
||||
94: **<[基础属性]>**
|
||||
95: **<[能力:凤翼天翔]>**
|
||||
96: **<移动力提升>**
|
||||
97: **<射程提升>**
|
||||
98: **<击杀再动>**
|
||||
99: **<--------- Lv.3 --------->**
|
||||
100: **<[基础属性]>**
|
||||
101: **<[能力:不死身的舍身击]>**
|
||||
102: **<妖怪兔近卫>**
|
||||
103: **<战地协同>**
|
||||
104: **<竹林狼上校>**
|
||||
105: **<狼影>**
|
||||
229
Tools/multilingual_check/translate_19871_en.py
Normal file
229
Tools/multilingual_check/translate_19871_en.py
Normal file
@ -0,0 +1,229 @@
|
||||
"""把 ID=19871 的 V1.4.0 中文公告翻译为英文写入 EN 列。
|
||||
|
||||
要求:
|
||||
- 完整保留所有 **<...>** 标签的数量
|
||||
- 内部内容翻译为英文(除装饰性 Lv 分隔)
|
||||
- 不改动 TW/JP/KR 列
|
||||
"""
|
||||
import openpyxl
|
||||
import re
|
||||
import shutil
|
||||
import os
|
||||
|
||||
XLSX = r"C:\TH1\TH1\Tools\Multilingual.xlsx"
|
||||
|
||||
# 完整的英文翻译。注意:
|
||||
# - 所有 **<...>** 标签数量必须与中文严格一致
|
||||
# - Lv 分隔符 **<-------- Lv.X -------->** 保留原样(连横线数量也保留)
|
||||
# - 第 85 个标签 **<月兔幻想>** (而非月兔幻象) 是中文 typo, 译为 Moon Rabbit Phantom 与其他统一
|
||||
ENGLISH = """[Feature Update] V1.4.0
|
||||
Release Date: 2025/9/20
|
||||
|
||||
|
||||
|
||||
--------- [New Content] -------- Houraisan Empire
|
||||
|
||||
Loyal Youkai Rabbit Guards, the iron-disciplined Bamboo Forest Wolf Colonel, and fearless Imperial Marshals stand united.
|
||||
Kaguya Houraisan stands proudly before the Arc de Triomphe, sword in hand, writing the legend of the mightiest army.
|
||||
The radiance of Eternal Night intertwines with the glory of France, together crowning her sovereign.
|
||||
|
||||
Houraisan Empire is a powerful faction with a unique tech tree.
|
||||
For construction: **<Udonge Garden>** helps the empire rapidly accumulate economy in the early game;
|
||||
For military: **<Youkai Rabbit Guard>** combined with infantry and artillery that possess **<Infantry-Artillery Synergy>** delivers devastating land firepower coverage and pinpoint breakthrough, steadily advancing the front line;
|
||||
For expansion: **<Eternal Night Code>** brings all imperial territories under perpetual night, rapidly converting Youkai Rabbit Guards, while **<Bamboo Forest Station>** transforms bamboo groves into defensive barriers and roads.
|
||||
The signature giant unit **<Bamboo Forest Wolf Colonel>**, combined with the **<Bamboo Forest Cultivation>** ability that plants trees in the wild, makes all neutral territories as easy to control as imperial land.
|
||||
|
||||
|
||||
|
||||
--------- [New Content] -------- Houraisan Empire: Kaguya Houraisan
|
||||
**<Eternity of the Empire: Kaguya Houraisan>**<br>
|
||||
**<King>**-class Hero. She infuses the empire with the power of **<Eternity>**. The Imperial Guard defends the glory of Eternal Night for her, and the marshals continue writing the splendor of France in her name.
|
||||
**<-------- Lv.0 -------->**<br>
|
||||
**<[Base Stats]>**15HP / 2 ATK / 1 DEF / 1 MOV / 2 RNG<br>
|
||||
**<[Ability: Skirmish]>**Can move again after attacking<br>
|
||||
**<-------- Lv.1 -------->**<br>
|
||||
**<[Base Stats]>**25HP / 3 ATK / 1 DEF / 1 MOV / 2 RNG<br>
|
||||
**<[Ability: Hourai Jeweled Branch]>**When attacking, can select a friendly unit and grant it one stack of **<Eternity>**. Each stack of **<Eternity>** can block a fatal blow for that unit and leave it with 1 HP.<br>
|
||||
**<-------- Lv.2 -------->**<br>
|
||||
**<[Base Stats]>**30HP / 3 ATK / 2 DEF / 1 MOV / 2 RNG<br>
|
||||
**<[Ability: Hourai Forest Sea]>**Active skill. Grants one stack of **<Eternity>** to all friendly units within a 1-tile range.<br>
|
||||
**<-------- Lv.3 -------->**<br>
|
||||
**<[Base Stats]>**35HP / 3 ATK / 2 DEF / 1 MOV / 3 RNG<br>
|
||||
**<[Ability: Eternal Instant]>**When attacking, can select a friendly unit and grant it 9 stacks of **<Eternity>**.<br>
|
||||
|
||||
--------- [New Content] -------- Houraisan Empire: Eirin Yagokoro
|
||||
**<The Empire's Lunar Mind: Eirin Yagokoro>**<br>
|
||||
**<Queen>**-class Hero. The supreme intellect of the empire. Healing or death is but a chip in the calculations within the pot. She manipulates the tides of the battlefield through the Game of Life.
|
||||
**<-------- Lv.0 -------->**<br>
|
||||
**<[Base Stats]>**10HP / 1 ATK / 2 DEF / 1 MOV / 2 RNG<br>
|
||||
**<[Ability: Flight]>**Movement ignores all terrain<br>
|
||||
**<-------- Lv.1 -------->**<br>
|
||||
**<[Base Stats]>**20HP / 2 ATK / 2 DEF / 1 MOV / 2 RNG<br>
|
||||
**<[Ability: Battlefield Synergy]>**When attacking a unit, applies one stack of **<Synergy Mark>** for 1 turn. When attacking a target that bears **<Synergy Mark>**, each stack increases this attack's damage by 0.5.<br>
|
||||
**<[Ability: Game of Life]>**After killing an enemy unit, restores 3 HP to all allies within a 1-tile range of the target<br>
|
||||
**<-------- Lv.2 -------->**<br>
|
||||
**<[Base Stats]>**25HP / 2 ATK / 3 DEF / 1 MOV / 2 RNG<br>
|
||||
**<[Ability: Revival Game]>**When attacking, can select a friendly unit and grant it the **<Battlefield Synergy>** ability for 1 turn while restoring its HP. If the healing overflows, additionally grants 1 turn of **<Movement Boost>**.<br>
|
||||
**<-------- Lv.3 ---------->**<br>
|
||||
**<[Base Stats]>**30HP / 3 ATK / 3 DEF / 2 MOV / 2 RNG<br>
|
||||
**<[Ability: Peerless Panacea]>**Eirin Yagokoro's healing on heroes is increased to 3x, and the attack bonus from swarm attacks against heroes is increased to 2x.<br>
|
||||
|
||||
--------- [New Content] -------- Houraisan Empire: Tewi Inaba
|
||||
**<The Empire's Trickster: Tewi Inaba>**<br>
|
||||
**<Bishop>**-class Hero. The empire's chief trickster. She extracts intelligence and wealth, watches for opportunities, and at critical moments personally leads rabbit swarms in deadly surprise attacks.
|
||||
**<-------- Lv.0 -------->**<br>
|
||||
**<[Base Stats]>**10HP / 1 ATK / 2 DEF / 2 MOV / 1 RNG<br>
|
||||
**<[Ability: Lookout]>**Possesses a 2-tile vision range<br>
|
||||
**<[Ability: Water Crossing]>**After unlocking the corresponding tech, can traverse water tiles without going through a harbor<br>
|
||||
**<[Ability: Lucky White Rabbit]>**Removes the fog from all ruins within a 4-tile range<br>
|
||||
**<-------- Lv.1 -------->**<br>
|
||||
**<[Base Stats]>**20HP / 2 ATK / 2 DEF / 2 MOV / 2 RNG<br>
|
||||
**<[Ability: Bamboo Forest Trickster - Distant Spectator]>**When a unit dies within a 2-tile range, gain gold equal to 50% of that unit's training cost<br>
|
||||
**<-------- Lv.2 -------->**<br>
|
||||
**<[Base Stats]>**30HP / 2 ATK / 3 DEF / 2 MOV / 2 RNG<br>
|
||||
**<[Ability: Bamboo Forest Trickster - Robin Hood]>**When a unit (including yourself) launches an attack within a 1-tile range, gain 1 gold<br>
|
||||
**<[Ability: Bamboo Forest Trickster - Kick When Down]>**When Tewi kills a unit, gain gold equal to 100% of that unit's training cost.<br>
|
||||
**<------- Lv.3 -------->**<br>
|
||||
**<[Base Stats]>**40HP / 3 ATK / 3 DEF / 2 MOV / 2 RNG<br>
|
||||
**<[Ability: Imperial Glory]>**Active skill. Tewi rallies the troops, granting all allies within a 1-tile range 1 turn of **<Battlefield Synergy>** and 1 turn of **<Movement Boost>**<br>
|
||||
|
||||
--------- [New Content] -------- Houraisan Empire: Reisen Udongein Inaba
|
||||
**<The Empire's Eye of Madness: Reisen Udongein Inaba>**<br>
|
||||
**<Knight>**-class Hero. The princess's blade, the battlefield's eye of madness. She disrupts enemy lines with Moon Rabbit Phantoms, and her treacherous figure alone can become an army.
|
||||
**<-------- Lv.0 -------->**<br>
|
||||
**<[Base Stats]>**10HP / 2 ATK / 1 DEF / 2 MOV / 2 RNG<br>
|
||||
**<[Ability: Battlefield Synergy]>**When attacking a unit, applies one stack of **<Synergy Mark>** for 1 turn. When attacking a target that bears **<Synergy Mark>**, each stack increases this attack's damage by 0.5.<br>
|
||||
**<-------- Lv.1 -------->**<br>
|
||||
**<[Base Stats]>**15HP / 2 ATK / 2 DEF / 2 MOV / 2 RNG<br>
|
||||
**<[Ability: Illusion Tuning]>**When killing an enemy unit, generates 1 **<Moon Rabbit Phantom>** identical in appearance to Reisen at its position. The phantom inherits Reisen's **<Battlefield Synergy>** ability but cannot deal damage, and dies instantly upon receiving any attack.<br>
|
||||
**<-------- Lv.2 -------->**<br>
|
||||
**<[Base Stats]>**20HP / 3 ATK / 2 DEF / 2 MOV / 2 RNG<br>
|
||||
**<[Ability: Phantom Parallax]>**Before Reisen attacks a target, all nearby **<Moon Rabbit Phantom>**s fire a salvo at that target.<br>
|
||||
**<-------- Lv.3 -------->**<br>
|
||||
**<[Base Stats]>**30HP / 4 ATK / 3 DEF / 2 MOV / 2 RNG<br>
|
||||
**<[Ability: Mad Tuning]>**All **<Moon Rabbit Phantom>**s have 50% of the main body's attack power. When a phantom destroys a unit, it can also create a new **<Moon Rabbit Phantom>**.<br>
|
||||
|
||||
--------- [New Content] -------- Houraisan Empire: Fujiwara no Mokou
|
||||
**<The Empire's Phoenix: Fujiwara no Mokou>**<br>
|
||||
**<Rook>**-class Hero. She is the all-piercing phoenix flame. What drives her is not loyalty, but an obsession strong enough to burn even imperial authority to ashes.
|
||||
**<--------- Lv.0 --------->**<br>
|
||||
**<[Base Stats]>**20HP / 3 ATK / 2 DEF / 1 MOV / 1 RNG<br>
|
||||
**<--------- Lv.1 --------->**<br>
|
||||
**<[Base Stats]>**30HP / 4 ATK / 2 DEF / 1 MOV / 1 RNG<br>
|
||||
**<[Ability: Phoenix Rebirth]>**Upon death, transforms into a flame state. Cannot attack or counterattack, and deals splash damage to all units within a 1-tile range when moving. After the revival cooldown ends, if the flame still exists, Fujiwara no Mokou revives at the flame's location.<br>
|
||||
**<--------- Lv.2 --------->**<br>
|
||||
**<[Base Stats]>**40HP / 4 ATK / 3 DEF / 1 MOV / 1 RNG<br>
|
||||
**<[Ability: Phoenix Wings Soaring]>**Mokou revived from the flame state gains the abilities: **<Movement Boost>**, **<Range Boost>**, and **<Kill Re-Move>**<br>
|
||||
**<--------- Lv.3 --------->**<br>
|
||||
**<[Base Stats]>**50HP / 5 ATK / 3 DEF / 1 MOV / 1 RNG<br>
|
||||
**<[Ability: Immortal's Self-Sacrifice Strike]>**Deals damage equal to 10 attack power to all units within a 1-tile range and dies.<br>
|
||||
|
||||
--------- [New Content] -------- Houraisan Empire: Youkai Rabbit Guard
|
||||
Under the rule of Houraisan Empire, every Youkai Rabbit in the bamboo forest stands ready at all times, becoming the Imperial Guard to serve the Houraisan princess.
|
||||
Youkai Rabbits within imperial territory can be converted into the signature unit **<Youkai Rabbit Guard>**. Possesses the ability **<Battlefield Synergy>**.
|
||||
|
||||
|
||||
--------- [New Content] -------- Houraisan Empire: Bamboo Forest Wolf Colonel
|
||||
When the moon is not full, they are the embodiment of discipline within the lost bamboo forest; when the silver disc hangs high, they are the cold code of imperial majesty.
|
||||
When a Lv.5 or higher city is upgraded, you may choose to deploy the signature giant unit **<Bamboo Forest Wolf Colonel>**. Possesses the ability **<Wolf Shadow>**.
|
||||
|
||||
|
||||
--------- [New Content] -------- Hero System Rework
|
||||
1. The Hero System has been separated from the tech tree and is now an independent module
|
||||
2. Each match grants three hero slots, allowing you to deploy up to three heroes. Each hero has a Lv.0 to Lv.3 progression system.
|
||||
3. At the start of the match, one hero slot is unlocked, and you can freely choose a Lv.0 hero.
|
||||
4. When you first obtain a Lv.1 hero, the second hero slot is unlocked. When you obtain a Lv.2 hero, the third hero slot is unlocked.
|
||||
5. Each hero has specific level-up quests. Completing the quest levels up the hero.
|
||||
6. If a hero's level-up quest is too difficult to complete, you can spend gold to forcibly complete it. The cost decreases as the current quest progress increases.
|
||||
|
||||
|
||||
-------- [New Character Art] -------- Toyosatomimi no Miko
|
||||
The leader of the Persian Civilization — Toyosatomimi Empire — Toyosatomimi no Miko, character art now implemented.
|
||||
The Miko, who inherits the name of Anushirvan, "the Immortal Soul," wears the crescent crown of the Sassanids as she gazes down upon the countless lights of Ctesiphon.
|
||||
With the wisdom of a sage and the iron fist of a tyrant, she will forge the ten desires that resound simultaneously into the empire's sole law, becoming Gensokyo's only — "Philosopher King."
|
||||
|
||||
--------- [Optimizations] --------
|
||||
1. Map starting resources optimized: each faction now has a different starting resource configuration, guaranteeing a baseline of opening resources
|
||||
2. Map generation algorithm optimized: large contiguous landmasses will now feature river-like water resource tile distributions.
|
||||
3. Preserve adjustment: Preserves no longer provide turn-based gold based on building level, but instead provide turn-based tech points based on building level. When a Preserve is adjacent to a Market, it grants the Market additional building levels (turn-based gold).
|
||||
4. Market adjustment: When a Market is adjacent to a Preserve, the Preserve grants the Market additional building levels (turn-based gold). The Market's level cap is 8.
|
||||
|
||||
|
||||
-------- [Bug Fixes] --------
|
||||
1. Fixed a bug where Scholar attacks on Artillery displayed incorrect damage
|
||||
2. Fixed a bug where duplicate names could appear when founding cities
|
||||
3. Fixed a bug where attack/healing/skill VFX could be lost
|
||||
4. Fixed a bug where empire names were displayed incorrectly on the diplomacy panel
|
||||
|
||||
[Important Modules Pending Fix]
|
||||
1. With the Eientei hero system rework, the Scarlet Devil Mansion faction's design and heroes are no longer sufficiently distinctive or balanced, and will be reworked and released in the next version
|
||||
2. The Expert Tips module (Sakuya's tips in the left info panel) is being reworked and is temporarily hidden; it will be re-released in the next version
|
||||
3. Issues with missing animations, swallowed damage, and incorrect interaction screens will be iteratively released in future versions after the UI and animation system reworks are completed."""
|
||||
|
||||
|
||||
def count_tags(text: str) -> int:
|
||||
return len(re.findall(r"\*\*<[^>]*>\*\*", text))
|
||||
|
||||
|
||||
def list_tags(text: str) -> list[str]:
|
||||
return re.findall(r"\*\*<[^>]*>\*\*", text)
|
||||
|
||||
|
||||
def main() -> None:
|
||||
wb = openpyxl.load_workbook(XLSX)
|
||||
ws = wb.active
|
||||
|
||||
# 定位 ID=19871
|
||||
target_row = None
|
||||
for row_idx in range(1, ws.max_row + 1):
|
||||
v = ws.cell(row=row_idx, column=1).value
|
||||
if v == 19871 or str(v).lstrip("") == "19871":
|
||||
target_row = row_idx
|
||||
break
|
||||
|
||||
if target_row is None:
|
||||
raise RuntimeError("ID=19871 not found")
|
||||
|
||||
zh = ws.cell(row=target_row, column=3).value
|
||||
zh_tags = list_tags(zh)
|
||||
en_tags = list_tags(ENGLISH)
|
||||
|
||||
print(f"ZH row: {target_row}")
|
||||
print(f"ZH tag count: {len(zh_tags)}")
|
||||
print(f"EN tag count: {len(en_tags)}")
|
||||
|
||||
if len(zh_tags) != len(en_tags):
|
||||
print("\n!!! TAG COUNT MISMATCH - NOT WRITING !!!")
|
||||
# 给出 diff
|
||||
n = min(len(zh_tags), len(en_tags))
|
||||
for i in range(n):
|
||||
print(f" {i+1:3d} ZH={zh_tags[i]!r} EN={en_tags[i]!r}")
|
||||
if len(zh_tags) > n:
|
||||
print("Extra ZH tags:")
|
||||
for i in range(n, len(zh_tags)):
|
||||
print(f" {i+1:3d} ZH={zh_tags[i]!r}")
|
||||
if len(en_tags) > n:
|
||||
print("Extra EN tags:")
|
||||
for i in range(n, len(en_tags)):
|
||||
print(f" {i+1:3d} EN={en_tags[i]!r}")
|
||||
raise SystemExit(1)
|
||||
|
||||
# 写入备份(再做一次防御)
|
||||
backup = XLSX.replace(".xlsx", ".before_translate_19871_en.bak.xlsx")
|
||||
if not os.path.exists(backup):
|
||||
shutil.copyfile(XLSX, backup)
|
||||
print(f"Backup saved: {backup}")
|
||||
else:
|
||||
print(f"Backup already exists: {backup}")
|
||||
|
||||
# 写入 EN 列 (col 5)
|
||||
ws.cell(row=target_row, column=5, value=ENGLISH)
|
||||
|
||||
# 显式不改 TW(4)/JP(6)/KR(7) - 不调用即不动
|
||||
wb.save(XLSX)
|
||||
print(f"\nWritten EN for ID=19871 (row {target_row}, col 5)")
|
||||
print(f"ZH tags: {len(zh_tags)} EN tags: {len(en_tags)} match=True")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
252
Tools/multilingual_check/translate_8new.py
Normal file
252
Tools/multilingual_check/translate_8new.py
Normal file
@ -0,0 +1,252 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
为 Multilingual.xlsx 中 8 条新条目填 TW/EN/JP/KR 翻译。
|
||||
|
||||
目标 ID: 19855, 19857, 19862, 19869, 19872, 19874, 19875, 19876
|
||||
跳过: 19871(只填了EN), 19873(已 4 语齐全)
|
||||
|
||||
规则:
|
||||
- 严格保留所有 **<...>** 标签的数量与位置(标签内文本可翻译)
|
||||
- 术语沿用项目内已有译文(参考 19871 V1.4.0 公告 + 19873 + Dashboard/techs.json)
|
||||
- 韩文权威: 플랑드르(不是 플란드르) / 레밀리아 / 优曇華院 - 鈴仙=레이센 우동게인 이나바
|
||||
- 印度地名 "乌甲因" 是误音译, 正确是 Ujjain(乌贾因), 直接翻为正确地名
|
||||
"""
|
||||
import re
|
||||
import shutil
|
||||
import sys
|
||||
import io
|
||||
from openpyxl import load_workbook
|
||||
|
||||
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
|
||||
|
||||
XLSX = r'C:\TH1\TH1\Tools\Multilingual.xlsx'
|
||||
|
||||
# ---------------- 翻译数据 ----------------
|
||||
# 每条: {ID: (TW, EN, JP, KR)}
|
||||
TRANSLATIONS = {
|
||||
|
||||
'19855': (
|
||||
'蕾米莉亞斯卡雷特',
|
||||
'Remilia Scarlet',
|
||||
'レミリア・スカーレット',
|
||||
'레밀리아 스칼렛',
|
||||
),
|
||||
|
||||
'19857': (
|
||||
'芙蘭朵露斯卡雷特',
|
||||
'Flandre Scarlet',
|
||||
'フランドール・スカーレット',
|
||||
'플랑드르 스칼렛',
|
||||
),
|
||||
|
||||
# 乌甲因 = 印度地名 Ujjain 误音译, 直接翻为正确地名
|
||||
'19862': (
|
||||
'烏賈因',
|
||||
'Ujjain',
|
||||
'ウッジャイン',
|
||||
'우자인',
|
||||
),
|
||||
|
||||
# 19869 = 铃仙称号. 沿用 19871 V1.4.0 公告同名术语 "The Empire's Eye of Madness"
|
||||
# 而非用户提示里的 "Imperial Eye of Madness", 以保持与 19876 英雄技能描述一致
|
||||
# (两者指代同一英雄, 不能英文出现两种称号)
|
||||
'19869': (
|
||||
'帝國的狂氣之瞳 鈴仙・優曇華院・因幡',
|
||||
"The Empire's Eye of Madness: Reisen Udongein Inaba",
|
||||
'帝国の狂気の瞳 鈴仙・優曇華院・イナバ',
|
||||
'제국의 광기의 눈동자: 레이센 우동게인 이나바',
|
||||
),
|
||||
|
||||
# 19872: 含 3 个标签 **<军港>**, **<通用行动点>**, **<军港>**
|
||||
# 军港=Naval Port/軍港/軍港/군항
|
||||
# 通用行动点=通用行動點/General Action Points/汎用行動ポイント/범용 행동 포인트
|
||||
'19872': (
|
||||
'為處於**<軍港>**的單位恢復1點**<通用行動點>**,每回合上限一次。提供額外防禦。每座城市僅能建造一座**<軍港>**,且僅能建造在港口附近。',
|
||||
'Restore 1 **<General Action Point>** to units stationed in a **<Naval Port>**, up to once per turn. Provides additional defense. Each city can construct only one **<Naval Port>**, and it must be built near a harbor.',
|
||||
'**<軍港>**にいるユニットに**<汎用行動ポイント>**を1点回復する(毎ターン1回まで)。追加の防御を提供する。各都市につき**<軍港>**は1つしか建設できず、港の近くにのみ建設できる。',
|
||||
'**<군항>**에 있는 유닛에게 **<범용 행동 포인트>**를 1점 회복시킨다(매 턴 1회까지). 추가 방어를 제공한다. 각 도시는 **<군항>**을 하나만 건설할 수 있으며, 항구 근처에만 건설할 수 있다.',
|
||||
),
|
||||
|
||||
# 19874: 北纬27的日晷之王 - 丰聪耳神子相关称号
|
||||
# "北纬27" 实际为 "北纬27度" 的简写形式; 翻译时英日韩都补"度"显得自然
|
||||
'19874': (
|
||||
'北緯27度的日晷之王',
|
||||
'Sundial King of the 27th Parallel North',
|
||||
'北緯27度の日時計の王',
|
||||
'북위 27도의 해시계 왕',
|
||||
),
|
||||
|
||||
# 19875: 含 1 个标签 **<军港>** (注意中文末尾无句号)
|
||||
# 沿用 Multilingual_P2 修复后版本: "可以建造**<军港>**。所有单位获得海洋防御"
|
||||
'19875': (
|
||||
'可以建造**<軍港>**。所有單位獲得海洋防禦。',
|
||||
'Can construct **<Naval Port>**. All units gain Naval Defense.',
|
||||
'**<軍港>**を建造可能。全ユニットが海洋防御を獲得する。',
|
||||
'**<군항>** 건설 가능. 모든 유닛이 해양 방어를 획득한다.',
|
||||
),
|
||||
|
||||
# 19876: 铃仙英雄技能描述. 严格沿用 19871 V1.4.0 公告中铃仙部分的术语
|
||||
# 注意中文里 Lv.3 段写的是 **<幻想视差>** 而非 **<幻象视差>** (19871 是幻象视差,
|
||||
# 这里"幻想"应是错字, 但既然内部文本可翻译, 我们翻译为 Phantom Parallax 与 19871 一致)
|
||||
# 另外最后 **<月兔幻想>** 也是错字应为 **<月兔幻象>** -> Moon Rabbit Phantom
|
||||
# 19876 中文标签清单(19个):
|
||||
# **<帝国的狂气之瞳:铃仙·优昙华院·因幡>**
|
||||
# **<-------- Lv.1 -------->**
|
||||
# **<[基础属性]>**
|
||||
# **<[能力:战地协同]>**
|
||||
# **<协同标的>** x2
|
||||
# **<-------- Lv.2 -------->**
|
||||
# **<[基础属性]>**
|
||||
# **<[能力:幻视调率]>**
|
||||
# **<月兔幻象>**
|
||||
# **<战地协同>**
|
||||
# **<-------- Lv.3 -------->**
|
||||
# **<[基础属性]>**
|
||||
# **<[能力:幻想视差]>**
|
||||
# **<月兔幻象>**
|
||||
# **<-------- Lv.4 -------->**
|
||||
# **<[基础属性]>**
|
||||
# **<[能力:狂视调率]>**
|
||||
# **<月兔幻象>** x2
|
||||
'19876': (
|
||||
# TW
|
||||
'**<帝國的狂氣之瞳:鈴仙・優曇華院・因幡>**<br> '
|
||||
'**<-------- Lv.1 -------->**<br> '
|
||||
'**<[基礎屬性]>**10HP/2攻/1防/2移動力/2射程<br> '
|
||||
'**<[能力:戰地協同]>**攻擊單位時將施加一層**<協同標的>**,持續1回合。攻擊帶有**<協同標的>**的目標時,每層使得本次攻擊力提升0.5。<br> '
|
||||
'**<-------- Lv.2 -------->**<br> '
|
||||
'**<[基礎屬性]>**15HP/2攻/2防/2移動力/2射程<br> '
|
||||
'**<[能力:幻視調率]>**擊殺敵方單位時,在其位置生成1個看似與鈴仙完全相同的**<月兔幻象>**。幻象繼承鈴仙的**<戰地協同>**能力,但無法造成傷害,並且受到任意攻擊後立刻陣亡。<br> '
|
||||
'**<-------- Lv.3 -------->**<br> '
|
||||
'**<[基礎屬性]>**20HP/3攻/2防/2移動力/2射程<br> '
|
||||
'**<[能力:幻象視差]>**鈴仙攻擊目標前,附近所有**<月兔幻象>**會對該目標進行一輪齊射。<br> '
|
||||
'**<-------- Lv.4 -------->**<br> '
|
||||
'**<[基礎屬性]>**30HP/4攻/3防/2移動力/2射程<br> '
|
||||
'**<[能力:狂視調率]>**所有**<月兔幻象>**具有本體50%的攻擊力。幻象消滅單位時,也可以創造新的**<月兔幻象>**。<br>',
|
||||
|
||||
# EN (术语严格沿用 19871)
|
||||
"**<The Empire's Eye of Madness: Reisen Udongein Inaba>**<br> "
|
||||
"**<-------- Lv.1 -------->**<br> "
|
||||
"**<[Base Stats]>**10HP / 2 ATK / 1 DEF / 2 MOV / 2 RNG<br> "
|
||||
"**<[Ability: Battlefield Synergy]>**When attacking a unit, applies one stack of **<Synergy Mark>** for 1 turn. When attacking a target that bears **<Synergy Mark>**, each stack increases this attack's damage by 0.5.<br> "
|
||||
"**<-------- Lv.2 -------->**<br> "
|
||||
"**<[Base Stats]>**15HP / 2 ATK / 2 DEF / 2 MOV / 2 RNG<br> "
|
||||
"**<[Ability: Illusion Tuning]>**When killing an enemy unit, generates 1 **<Moon Rabbit Phantom>** identical in appearance to Reisen at its position. The phantom inherits Reisen's **<Battlefield Synergy>** ability but cannot deal damage, and dies instantly upon receiving any attack.<br> "
|
||||
"**<-------- Lv.3 -------->**<br> "
|
||||
"**<[Base Stats]>**20HP / 3 ATK / 2 DEF / 2 MOV / 2 RNG<br> "
|
||||
"**<[Ability: Phantom Parallax]>**Before Reisen attacks a target, all nearby **<Moon Rabbit Phantom>**s fire a salvo at that target.<br> "
|
||||
"**<-------- Lv.4 -------->**<br> "
|
||||
"**<[Base Stats]>**30HP / 4 ATK / 3 DEF / 2 MOV / 2 RNG<br> "
|
||||
"**<[Ability: Mad Tuning]>**All **<Moon Rabbit Phantom>**s have 50% of the main body's attack power. When a phantom destroys a unit, it can also create a new **<Moon Rabbit Phantom>**.<br>",
|
||||
|
||||
# JP
|
||||
'**<帝国の狂気の瞳:鈴仙・優曇華院・イナバ>**<br> '
|
||||
'**<-------- Lv.1 -------->**<br> '
|
||||
'**<[基本ステータス]>**10HP/攻撃2/防御1/移動2/射程2<br> '
|
||||
'**<[能力:戦地連携]>**ユニットを攻撃する際、**<連携対象>**を1層付与し、1ターン持続する。**<連携対象>**を持つ目標を攻撃する時、1層ごとに本攻撃の攻撃力が0.5上昇する。<br> '
|
||||
'**<-------- Lv.2 -------->**<br> '
|
||||
'**<[基本ステータス]>**15HP/攻撃2/防御2/移動2/射程2<br> '
|
||||
'**<[能力:幻視調律]>**敵ユニットを撃破した時、その位置に鈴仙とまったく同じ姿の**<月兎幻影>**を1体生成する。幻影は鈴仙の**<戦地連携>**能力を継承するが、ダメージを与えることはできず、いかなる攻撃を受けても即座に消滅する。<br> '
|
||||
'**<-------- Lv.3 -------->**<br> '
|
||||
'**<[基本ステータス]>**20HP/攻撃3/防御2/移動2/射程2<br> '
|
||||
'**<[能力:幻影視差]>**鈴仙が目標を攻撃する前に、近くの全ての**<月兎幻影>**がその目標へ一斉射撃を行う。<br> '
|
||||
'**<-------- Lv.4 -------->**<br> '
|
||||
'**<[基本ステータス]>**30HP/攻撃4/防御3/移動2/射程2<br> '
|
||||
'**<[能力:狂視調律]>**全ての**<月兎幻影>**は本体の50%の攻撃力を持つ。幻影がユニットを撃破した時、新たな**<月兎幻影>**を生成することもできる。<br>',
|
||||
|
||||
# KR
|
||||
'**<제국의 광기의 눈동자: 레이센 우동게인 이나바>**<br> '
|
||||
'**<-------- Lv.1 -------->**<br> '
|
||||
'**<[기본 스탯]>**10HP/공격2/방어1/이동2/사거리2<br> '
|
||||
'**<[능력: 전장 협동]>**유닛을 공격할 때 **<협동 표적>**을 1중첩 부여하며 1턴간 지속된다. **<협동 표적>**이 부여된 대상을 공격할 때, 중첩 1당 이번 공격력이 0.5 상승한다.<br> '
|
||||
'**<-------- Lv.2 -------->**<br> '
|
||||
'**<[기본 스탯]>**15HP/공격2/방어2/이동2/사거리2<br> '
|
||||
'**<[능력: 환시 조율]>**적 유닛을 처치할 때, 그 위치에 레이센과 완전히 똑같이 보이는 **<달토끼 환영>**을 1개 생성한다. 환영은 레이센의 **<전장 협동>** 능력을 계승하지만, 피해를 줄 수 없으며 어떤 공격이라도 받으면 즉시 사망한다.<br> '
|
||||
'**<-------- Lv.3 -------->**<br> '
|
||||
'**<[기본 스탯]>**20HP/공격3/방어2/이동2/사거리2<br> '
|
||||
'**<[능력: 환영 시차]>**레이센이 목표를 공격하기 전에, 근처의 모든 **<달토끼 환영>**이 그 목표를 향해 일제 사격한다.<br> '
|
||||
'**<-------- Lv.4 -------->**<br> '
|
||||
'**<[기본 스탯]>**30HP/공격4/방어3/이동2/사거리2<br> '
|
||||
'**<[능력: 광시 조율]>**모든 **<달토끼 환영>**은 본체의 50% 공격력을 지닌다. 환영이 유닛을 처치할 때, 새로운 **<달토끼 환영>**을 생성할 수도 있다.<br>',
|
||||
),
|
||||
}
|
||||
|
||||
# ---------------- 校验 + 写入 ----------------
|
||||
|
||||
TAG_PATTERN = re.compile(r'\*\*<[^>]*>\*\*')
|
||||
|
||||
|
||||
def count_tags(s):
|
||||
if s is None:
|
||||
return 0
|
||||
return len(TAG_PATTERN.findall(str(s)))
|
||||
|
||||
|
||||
def main():
|
||||
wb = load_workbook(XLSX, read_only=False, data_only=False)
|
||||
ws = wb.active
|
||||
|
||||
# 建立 ID -> row 映射 (注意第一行表头 ID 可能带 BOM)
|
||||
id_to_row = {}
|
||||
for r in range(2, ws.max_row + 1):
|
||||
raw = ws.cell(row=r, column=1).value
|
||||
if raw is None:
|
||||
continue
|
||||
s = str(raw).lstrip('').strip()
|
||||
id_to_row[s] = r
|
||||
|
||||
# 列: 4=TW, 5=EN, 6=JP, 7=KR
|
||||
LANG_COLS = [('TW', 4), ('EN', 5), ('JP', 6), ('KR', 7)]
|
||||
|
||||
print('=' * 70)
|
||||
print('校验阶段:')
|
||||
print('=' * 70)
|
||||
|
||||
issues = []
|
||||
for tid in TRANSLATIONS:
|
||||
if tid not in id_to_row:
|
||||
issues.append(f' ID={tid}: row 不存在')
|
||||
continue
|
||||
r = id_to_row[tid]
|
||||
zh = ws.cell(row=r, column=3).value
|
||||
zh_tags = count_tags(zh)
|
||||
tw, en, jp, kr = TRANSLATIONS[tid]
|
||||
tag_counts = {
|
||||
'CN': zh_tags,
|
||||
'TW': count_tags(tw),
|
||||
'EN': count_tags(en),
|
||||
'JP': count_tags(jp),
|
||||
'KR': count_tags(kr),
|
||||
}
|
||||
ok = all(v == zh_tags for v in tag_counts.values())
|
||||
marker = 'OK' if ok else '!!FAIL!!'
|
||||
print(f' ID={tid} row={r} CN={zh_tags} '
|
||||
f'TW={tag_counts["TW"]} EN={tag_counts["EN"]} '
|
||||
f'JP={tag_counts["JP"]} KR={tag_counts["KR"]} {marker}')
|
||||
if not ok:
|
||||
issues.append(f' ID={tid} 标签数量不一致: {tag_counts}')
|
||||
|
||||
if issues:
|
||||
print('\n校验失败,中止写入:')
|
||||
for x in issues:
|
||||
print(x)
|
||||
sys.exit(1)
|
||||
|
||||
print('\n' + '=' * 70)
|
||||
print('写入阶段:')
|
||||
print('=' * 70)
|
||||
|
||||
for tid, (tw, en, jp, kr) in TRANSLATIONS.items():
|
||||
r = id_to_row[tid]
|
||||
ws.cell(row=r, column=4).value = tw
|
||||
ws.cell(row=r, column=5).value = en
|
||||
ws.cell(row=r, column=6).value = jp
|
||||
ws.cell(row=r, column=7).value = kr
|
||||
print(f' ID={tid} row={r}: 4 语言已填')
|
||||
|
||||
wb.save(XLSX)
|
||||
print(f'\n保存到: {XLSX}')
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
648
Tools/multilingual_check/verified_issues.json
Normal file
648
Tools/multilingual_check/verified_issues.json
Normal file
@ -0,0 +1,648 @@
|
||||
[
|
||||
{
|
||||
"rid": "35",
|
||||
"lang": "kr",
|
||||
"severity": "P0",
|
||||
"term_zh": "芙兰朵露",
|
||||
"group": "红魔馆",
|
||||
"msg": "韩文:术语「芙兰朵露」使用了已知错误译法「플란드르」",
|
||||
"correct": "플랑드르",
|
||||
"wrong": "플란드르",
|
||||
"current": "플란드르",
|
||||
"zh_excerpt": "芙兰朵露"
|
||||
},
|
||||
{
|
||||
"rid": "173",
|
||||
"lang": "kr",
|
||||
"severity": "P0",
|
||||
"term_zh": "因幡帝",
|
||||
"group": "永远亭",
|
||||
"msg": "韩文:术语「因幡帝」使用了已知错误译法「이나바 테이」",
|
||||
"correct": "이나바 테위",
|
||||
"wrong": "이나바 테이",
|
||||
"current": "이나바 테이",
|
||||
"zh_excerpt": "因幡帝"
|
||||
},
|
||||
{
|
||||
"rid": "2330",
|
||||
"lang": "kr",
|
||||
"severity": "P0",
|
||||
"term_zh": "红美铃",
|
||||
"group": "红魔馆",
|
||||
"msg": "韩文:术语「红美铃」使用了已知错误译法「홍미령」",
|
||||
"correct": "홍 메이링",
|
||||
"wrong": "홍미령",
|
||||
"current": "불타라 홍미령",
|
||||
"zh_excerpt": "燃烧吧红美铃"
|
||||
},
|
||||
{
|
||||
"rid": "2391",
|
||||
"lang": "kr",
|
||||
"severity": "P0",
|
||||
"term_zh": "芙兰朵露",
|
||||
"group": "红魔馆",
|
||||
"msg": "韩文:术语「芙兰朵露」使用了已知错误译法「플란드르」",
|
||||
"correct": "플랑드르",
|
||||
"wrong": "플란드르",
|
||||
"current": "V1.5.0 패치 노트\n\n<size=36><b>[신규 진영] 스칼렛 제국</b></size>\n\n홍무가 나일 강 양안을 뒤덮고, 신들이 제국의 방향을 인도한다. 생사는 그녀의 시계로 재고, 지혜는 그녀의 책장 사이로 흐르며, 금기는 그녀의 혈족이 지킨다. 불멸의 파라오 레밀리아가 피라미드 정상에 서서 그녀의 진홍 왕조를 내려다본다.\n\n스칼렛 제국은 특색 기술",
|
||||
"zh_excerpt": "V1.5.0版本公告\n\n<size=36><b>[新增阵营] 斯卡雷特帝国</b></size>\n\n红雾笼罩尼罗河两岸,神祗们指引着帝国的方向。生死在她的时计衡量,智慧在她的书页间流淌,禁忌则被她的血亲所守望。永生的法老蕾米莉亚正立于金字塔之巅,俯瞰着她的猩红王朝。\n\n斯卡雷特帝国是一个拥有特色科技树的强大势力。\n在建设方面,于尼罗河的滋养下,**<灌溉工程>**可以帮助帝国更好的利用三角洲、河岸"
|
||||
},
|
||||
{
|
||||
"rid": "2391",
|
||||
"lang": "kr",
|
||||
"severity": "P0",
|
||||
"term_zh": "红美铃",
|
||||
"group": "红魔馆",
|
||||
"msg": "韩文:术语「红美铃」使用了已知错误译法「홍미령」",
|
||||
"correct": "홍 메이링",
|
||||
"wrong": "홍미령",
|
||||
"current": "V1.5.0 패치 노트\n\n<size=36><b>[신규 진영] 스칼렛 제국</b></size>\n\n홍무가 나일 강 양안을 뒤덮고, 신들이 제국의 방향을 인도한다. 생사는 그녀의 시계로 재고, 지혜는 그녀의 책장 사이로 흐르며, 금기는 그녀의 혈족이 지킨다. 불멸의 파라오 레밀리아가 피라미드 정상에 서서 그녀의 진홍 왕조를 내려다본다.\n\n스칼렛 제국은 특색 기술",
|
||||
"zh_excerpt": "V1.5.0版本公告\n\n<size=36><b>[新增阵营] 斯卡雷特帝国</b></size>\n\n红雾笼罩尼罗河两岸,神祗们指引着帝国的方向。生死在她的时计衡量,智慧在她的书页间流淌,禁忌则被她的血亲所守望。永生的法老蕾米莉亚正立于金字塔之巅,俯瞰着她的猩红王朝。\n\n斯卡雷特帝国是一个拥有特色科技树的强大势力。\n在建设方面,于尼罗河的滋养下,**<灌溉工程>**可以帮助帝国更好的利用三角洲、河岸"
|
||||
},
|
||||
{
|
||||
"rid": "16842",
|
||||
"lang": "kr",
|
||||
"severity": "P0",
|
||||
"term_zh": "赤口",
|
||||
"group": "神祇",
|
||||
"msg": "韩文:术语「赤口」使用了已知错误译法「적구」",
|
||||
"correct": "미샤구지",
|
||||
"wrong": "적구",
|
||||
"current": "**<후>** 클래스 영웅. 제국의 토착신. 제국 기반의 가장 깊은 어둠에 뿌리내렸으며, 전역에 퍼진 적구의 재앙은 그녀 의지의 연장이다.",
|
||||
"zh_excerpt": "**<后>**职阶英雄。 帝国的土著神。她扎根于帝国基盘的至深暗影中,遍布全境的赤口之祟正是她意志的延伸。"
|
||||
},
|
||||
{
|
||||
"rid": "16889",
|
||||
"lang": "kr",
|
||||
"severity": "P0",
|
||||
"term_zh": "因幡帝",
|
||||
"group": "永远亭",
|
||||
"msg": "韩文:术语「因幡帝」使用了已知错误译法「이나바 테이」",
|
||||
"correct": "이나바 테위",
|
||||
"wrong": "이나바 테이",
|
||||
"current": "이나바 테이 Lv.1",
|
||||
"zh_excerpt": "因幡帝 Lv.1"
|
||||
},
|
||||
{
|
||||
"rid": "16890",
|
||||
"lang": "kr",
|
||||
"severity": "P0",
|
||||
"term_zh": "因幡帝",
|
||||
"group": "永远亭",
|
||||
"msg": "韩文:术语「因幡帝」使用了已知错误译法「이나바 테이」",
|
||||
"correct": "이나바 테위",
|
||||
"wrong": "이나바 테이",
|
||||
"current": "이나바 테이 Lv.2",
|
||||
"zh_excerpt": "因幡帝 Lv.2"
|
||||
},
|
||||
{
|
||||
"rid": "16891",
|
||||
"lang": "kr",
|
||||
"severity": "P0",
|
||||
"term_zh": "因幡帝",
|
||||
"group": "永远亭",
|
||||
"msg": "韩文:术语「因幡帝」使用了已知错误译法「이나바 테이」",
|
||||
"correct": "이나바 테위",
|
||||
"wrong": "이나바 테이",
|
||||
"current": "이나바 테이 Lv.3",
|
||||
"zh_excerpt": "因幡帝 Lv.3"
|
||||
},
|
||||
{
|
||||
"rid": "16892",
|
||||
"lang": "kr",
|
||||
"severity": "P0",
|
||||
"term_zh": "因幡帝",
|
||||
"group": "永远亭",
|
||||
"msg": "韩文:术语「因幡帝」使用了已知错误译法「이나바 테이」",
|
||||
"correct": "이나바 테위",
|
||||
"wrong": "이나바 테이",
|
||||
"current": "이나바 테이 Lv.4",
|
||||
"zh_excerpt": "因幡帝 Lv.4"
|
||||
},
|
||||
{
|
||||
"rid": "17230",
|
||||
"lang": "kr",
|
||||
"severity": "P0",
|
||||
"term_zh": "因幡帝",
|
||||
"group": "永远亭",
|
||||
"msg": "韩文:术语「因幡帝」使用了已知错误译法「이나바 테이」",
|
||||
"correct": "이나바 테위",
|
||||
"wrong": "이나바 테이",
|
||||
"current": "**<[상] 클래스 영웅>**. 전장에 **<이나바 테이>**는 최대 1명만 존재 가능. 사망 후 3턴 동안 재출전 불가.",
|
||||
"zh_excerpt": "**<[相]职阶英雄>**。全场最多存在一名**<因幡帝>**。死亡后3回合内不可再次出战。"
|
||||
},
|
||||
{
|
||||
"rid": "17247",
|
||||
"lang": "kr",
|
||||
"severity": "P0",
|
||||
"term_zh": "因幡帝",
|
||||
"group": "永远亭",
|
||||
"msg": "韩文:术语「因幡帝」使用了已知错误译法「이나바 테이」",
|
||||
"correct": "이나바 테위",
|
||||
"wrong": "이나바 테이",
|
||||
"current": "**<제국의 기만자:이나바 테이>**<br> **<-------- Lv.1 -------->**<br> **<[기본 속성]>**15HP/공1/방2/이동력2/사거리1/수역 통행<br> **<[능력:망루]>**2칸 범위 시야 보유<br> **<[능력:행운의 흰 토끼]>**4칸 범위 내 모든 유적의 안개 제거<br> **<-------- Lv.2 --------",
|
||||
"zh_excerpt": "**<帝国的欺诈师:因幡帝>**<br> **<-------- Lv.1 -------->**<br> **<[基础属性]>**15HP/1攻/2防/2移动力/1射程/水域通行<br> **<[能力:瞭望]>**拥有2格范围的视野<br> **<[能力:幸运的白兔]>**消除4格范围内所有遗迹的迷雾<br> **<-------- Lv.2 -------->**<br> **<[基础属性]>"
|
||||
},
|
||||
{
|
||||
"rid": "17328",
|
||||
"lang": "kr",
|
||||
"severity": "P0",
|
||||
"term_zh": "芙兰朵露",
|
||||
"group": "红魔馆",
|
||||
"msg": "韩文:术语「芙兰朵露」使用了已知错误译法「플란드르」",
|
||||
"correct": "플랑드르",
|
||||
"wrong": "플란드르",
|
||||
"current": "**<제국의 금기:플랑드르 스칼렛>**<br> **<-------- Lv.1 -------->**<br> **<[기본 속성]>**10HP/공3/방1/이동력2/사거리1<br> **<[능력:뱀파이어]>**공격 및 반격 시 피해의 30%를 HP로 전환, **<홍무 영지>** 위에서 이동력 +1<br> **<-------- Lv.2 -------->**<br> *",
|
||||
"zh_excerpt": "**<帝国的禁忌:芙兰朵露·斯卡雷特>**<br> **<-------- Lv.1 -------->**<br> **<[基础属性]>**10HP/3攻/1防/2移动力/1射程<br> **<[能力:吸血鬼]>**攻击和反击时将30%的伤害值转化为生命值,在**<红雾领地>**上移动力+1<br> **<-------- Lv.2 -------->**<br> **<[基础属性]>**20H"
|
||||
},
|
||||
{
|
||||
"rid": "17329",
|
||||
"lang": "kr",
|
||||
"severity": "P0",
|
||||
"term_zh": "红美铃",
|
||||
"group": "红魔馆",
|
||||
"msg": "韩文:术语「红美铃」使用了已知错误译法「홍미령」",
|
||||
"correct": "홍 메이링",
|
||||
"wrong": "홍미령",
|
||||
"current": "**<제국의 용: 홍미령>**<br> **<-------- Lv.1 -------->**<br> **<[기본 속성]>**15HP/공3/방3/이동력1/사거리1<br> **<[능력:황진각]>**이동 시 범위 스플래시 피해<br> **<-------- Lv.2 -------->**<br> **<[기본 속성]>**30HP/공3/방3/이동력1/사거리1<br> **<",
|
||||
"zh_excerpt": "**<帝国之龙:红美铃>**<br> **<-------- Lv.1 -------->**<br> **<[基础属性]>**15HP/3攻/3防/1移动力/1射程<br> **<[能力:黄震脚]>**移动时造成范围溅射伤害<br> **<-------- Lv.2 -------->**<br> **<[基础属性]>**30HP/3攻/3防/1移动力/1射程<br> **<[能力:休憩时光]>"
|
||||
},
|
||||
{
|
||||
"rid": "18531",
|
||||
"lang": "kr",
|
||||
"severity": "P0",
|
||||
"term_zh": "红美铃",
|
||||
"group": "红魔馆",
|
||||
"msg": "韩文:术语「红美铃」使用了已知错误译法「홍미령」",
|
||||
"correct": "홍 메이링",
|
||||
"wrong": "홍미령",
|
||||
"current": "[능력:불타라 홍미령]",
|
||||
"zh_excerpt": "[能力:燃烧吧红美铃]"
|
||||
},
|
||||
{
|
||||
"rid": "18535",
|
||||
"lang": "kr",
|
||||
"severity": "P0",
|
||||
"term_zh": "红美铃",
|
||||
"group": "红魔馆",
|
||||
"msg": "韩文:术语「红美铃」使用了已知错误译法「홍미령」",
|
||||
"correct": "홍 메이링",
|
||||
"wrong": "홍미령",
|
||||
"current": "제국의 용: 홍미령",
|
||||
"zh_excerpt": "帝国之龙:红美铃"
|
||||
},
|
||||
{
|
||||
"rid": "18565",
|
||||
"lang": "kr",
|
||||
"severity": "P0",
|
||||
"term_zh": "因幡帝",
|
||||
"group": "永远亭",
|
||||
"msg": "韩文:术语「因幡帝」使用了已知错误译法「이나바 테이」",
|
||||
"correct": "이나바 테위",
|
||||
"wrong": "이나바 테이",
|
||||
"current": "제국의 기만자:이나바 테이",
|
||||
"zh_excerpt": "帝国的欺诈师:因幡帝"
|
||||
},
|
||||
{
|
||||
"rid": "19414",
|
||||
"lang": "kr",
|
||||
"severity": "P0",
|
||||
"term_zh": "西行寺幽幽子",
|
||||
"group": "冥界",
|
||||
"msg": "韩文:术语「西行寺幽幽子」使用了已知错误译法「사이교지 유유코」",
|
||||
"correct": "사이교우지 유유코",
|
||||
"wrong": "사이교지 유유코",
|
||||
"current": "사이교지 유유코",
|
||||
"zh_excerpt": "西行寺幽幽子"
|
||||
},
|
||||
{
|
||||
"rid": "19830",
|
||||
"lang": "kr",
|
||||
"severity": "P0",
|
||||
"term_zh": "蕾米莉亚",
|
||||
"group": "红魔馆",
|
||||
"msg": "韩文:术语「蕾米莉亚」使用了已知错误译法「레미리아」",
|
||||
"correct": "레밀리아",
|
||||
"wrong": "레미리아",
|
||||
"current": "<b>제작</b>: 레미리아 사령부\n<b>원작</b>: 상하이 앨리스 환악단\n<color=grey>본 작품은 동방 프로젝트의 2차 동인 창작물입니다</color>",
|
||||
"zh_excerpt": "<b>出品</b>:蕾米莉亚指挥部\n<b>原作</b>:上海爱丽丝幻乐团\n<color=grey>本作品为 东方project的二次同人创作</color>"
|
||||
},
|
||||
{
|
||||
"rid": "203",
|
||||
"lang": "en",
|
||||
"severity": "P1",
|
||||
"term_zh": "火焰猫燐",
|
||||
"group": "地灵殿",
|
||||
"msg": "英文:术语「火焰猫燐」未使用权威译法「Rin Kaenbyou」(可能用了同义词)",
|
||||
"correct": "Rin Kaenbyou",
|
||||
"current": "Kaenbyou Rin",
|
||||
"zh_excerpt": "火焰猫燐"
|
||||
},
|
||||
{
|
||||
"rid": "482",
|
||||
"lang": "jp",
|
||||
"severity": "P1",
|
||||
"term_zh": "日白残无",
|
||||
"group": "地狱",
|
||||
"msg": "日文:术语「日白残无」未使用权威译法「日白残夢」(可能用了同义词)",
|
||||
"correct": "日白残夢",
|
||||
"current": "日白残無",
|
||||
"zh_excerpt": "日白残无"
|
||||
},
|
||||
{
|
||||
"rid": "1279",
|
||||
"lang": "jp",
|
||||
"severity": "P1",
|
||||
"term_zh": "咲夜",
|
||||
"group": "红魔馆",
|
||||
"msg": "日文:术语「咲夜」未使用权威译法「咲夜」(可能用了同义词)",
|
||||
"correct": "咲夜",
|
||||
"current": "さくや、私のあのイタリア砲を持ってきなさい!",
|
||||
"zh_excerpt": "咲夜,把我的意大利炮搬上来!"
|
||||
},
|
||||
{
|
||||
"rid": "2383",
|
||||
"lang": "en",
|
||||
"severity": "P1",
|
||||
"term_zh": "小恶魔",
|
||||
"group": "红魔馆",
|
||||
"msg": "英文:术语「小恶魔」未使用权威译法「Koakuma」(可能用了同义词)",
|
||||
"correct": "Koakuma",
|
||||
"current": "Lesser Demon Priest",
|
||||
"zh_excerpt": "小恶魔祭司"
|
||||
},
|
||||
{
|
||||
"rid": "2383",
|
||||
"lang": "kr",
|
||||
"severity": "P1",
|
||||
"term_zh": "小恶魔",
|
||||
"group": "红魔馆",
|
||||
"msg": "韩文:术语「小恶魔」未使用权威译法「코아쿠마」(可能用了同义词)",
|
||||
"correct": "코아쿠마",
|
||||
"current": "소악마 사제",
|
||||
"zh_excerpt": "小恶魔祭司"
|
||||
},
|
||||
{
|
||||
"rid": "2384",
|
||||
"lang": "en",
|
||||
"severity": "P1",
|
||||
"term_zh": "小恶魔",
|
||||
"group": "红魔馆",
|
||||
"msg": "英文:术语「小恶魔」未使用权威译法「Koakuma」(可能用了同义词)",
|
||||
"correct": "Koakuma",
|
||||
"current": "The divine power of Bastet dwells within the body of a lesser demon. Among the silent archives, she is a docile cat offering knowledge and tranquility; when her master's decree falls, the slumbering l",
|
||||
"zh_excerpt": "芭丝特的神祗伟力寄于小恶魔的躯体。静谧的馆藏中,她是献上知识与安宁的温驯猫咪;当主人敕令落下,沉睡的母狮便会苏醒,焚尽一切。"
|
||||
},
|
||||
{
|
||||
"rid": "2384",
|
||||
"lang": "kr",
|
||||
"severity": "P1",
|
||||
"term_zh": "小恶魔",
|
||||
"group": "红魔馆",
|
||||
"msg": "韩文:术语「小恶魔」未使用权威译法「코아쿠마」(可能用了同义词)",
|
||||
"correct": "코아쿠마",
|
||||
"current": "바스테트의 신성한 위력이 소악마의 몸에 깃들었다. 고요한 서재 속에서 그녀는 지식과 안식을 바치는 온순한 고양이지만, 주인의 명령이 떨어지면 잠든 암사자가 깨어나 모든 것을 불태운다.",
|
||||
"zh_excerpt": "芭丝特的神祗伟力寄于小恶魔的躯体。静谧的馆藏中,她是献上知识与安宁的温驯猫咪;当主人敕令落下,沉睡的母狮便会苏醒,焚尽一切。"
|
||||
},
|
||||
{
|
||||
"rid": "2391",
|
||||
"lang": "en",
|
||||
"severity": "P1",
|
||||
"term_zh": "小恶魔",
|
||||
"group": "红魔馆",
|
||||
"msg": "英文:术语「小恶魔」未使用权威译法「Koakuma」(可能用了同义词)",
|
||||
"correct": "Koakuma",
|
||||
"current": "V1.5.0 Patch Notes\n\n<size=36><b>[New Faction] Scarlet Empire</b></size>\n\nThe scarlet mist shrouds both banks of the Nile, as deities guide the Empire's path. Life and death are measured by her timepie",
|
||||
"zh_excerpt": "V1.5.0版本公告\n\n<size=36><b>[新增阵营] 斯卡雷特帝国</b></size>\n\n红雾笼罩尼罗河两岸,神祗们指引着帝国的方向。生死在她的时计衡量,智慧在她的书页间流淌,禁忌则被她的血亲所守望。永生的法老蕾米莉亚正立于金字塔之巅,俯瞰着她的猩红王朝。\n\n斯卡雷特帝国是一个拥有特色科技树的强大势力。\n在建设方面,于尼罗河的滋养下,**<灌溉工程>**可以帮助帝国更好的利用三角洲、河岸"
|
||||
},
|
||||
{
|
||||
"rid": "2391",
|
||||
"lang": "kr",
|
||||
"severity": "P1",
|
||||
"term_zh": "小恶魔",
|
||||
"group": "红魔馆",
|
||||
"msg": "韩文:术语「小恶魔」未使用权威译法「코아쿠마」(可能用了同义词)",
|
||||
"correct": "코아쿠마",
|
||||
"current": "V1.5.0 패치 노트\n\n<size=36><b>[신규 진영] 스칼렛 제국</b></size>\n\n홍무가 나일 강 양안을 뒤덮고, 신들이 제국의 방향을 인도한다. 생사는 그녀의 시계로 재고, 지혜는 그녀의 책장 사이로 흐르며, 금기는 그녀의 혈족이 지킨다. 불멸의 파라오 레밀리아가 피라미드 정상에 서서 그녀의 진홍 왕조를 내려다본다.\n\n스칼렛 제국은 특색 기술",
|
||||
"zh_excerpt": "V1.5.0版本公告\n\n<size=36><b>[新增阵营] 斯卡雷特帝国</b></size>\n\n红雾笼罩尼罗河两岸,神祗们指引着帝国的方向。生死在她的时计衡量,智慧在她的书页间流淌,禁忌则被她的血亲所守望。永生的法老蕾米莉亚正立于金字塔之巅,俯瞰着她的猩红王朝。\n\n斯卡雷特帝国是一个拥有特色科技树的强大势力。\n在建设方面,于尼罗河的滋养下,**<灌溉工程>**可以帮助帝国更好的利用三角洲、河岸"
|
||||
},
|
||||
{
|
||||
"rid": "16724",
|
||||
"lang": "kr",
|
||||
"severity": "P1",
|
||||
"term_zh": "赤口",
|
||||
"group": "神祇",
|
||||
"msg": "韩文:术语「赤口」未使用权威译法「미샤구지」(可能用了同义词)",
|
||||
"correct": "미샤구지",
|
||||
"current": "아카구치님의 저주",
|
||||
"zh_excerpt": "赤口大人的作祟"
|
||||
},
|
||||
{
|
||||
"rid": "16726",
|
||||
"lang": "kr",
|
||||
"severity": "P1",
|
||||
"term_zh": "赤口",
|
||||
"group": "神祇",
|
||||
"msg": "韩文:术语「赤口」未使用权威译法「미샤구지」(可能用了同义词)",
|
||||
"correct": "미샤구지",
|
||||
"current": "아카구치님께 맡겨!",
|
||||
"zh_excerpt": "交给赤口大人吧!"
|
||||
},
|
||||
{
|
||||
"rid": "16842",
|
||||
"lang": "en",
|
||||
"severity": "P1",
|
||||
"term_zh": "赤口",
|
||||
"group": "神祇",
|
||||
"msg": "英文:术语「赤口」未使用权威译法「Mishaguji」(可能用了同义词)",
|
||||
"correct": "Mishaguji",
|
||||
"current": "**<Queen>** class hero. The Imperial Earth God. She is rooted in the deepest shadows of the Empire's foundation, with the crimson-mouthed calamities spreading across the land serving as extensions of ",
|
||||
"zh_excerpt": "**<后>**职阶英雄。 帝国的土著神。她扎根于帝国基盘的至深暗影中,遍布全境的赤口之祟正是她意志的延伸。"
|
||||
},
|
||||
{
|
||||
"rid": "17009",
|
||||
"lang": "en",
|
||||
"severity": "P1",
|
||||
"term_zh": "小恶魔",
|
||||
"group": "红魔馆",
|
||||
"msg": "英文:术语「小恶魔」未使用权威译法「Koakuma」(可能用了同义词)",
|
||||
"correct": "Koakuma",
|
||||
"current": "Summon Lesser Devil Priest",
|
||||
"zh_excerpt": "召唤小恶魔祭司"
|
||||
},
|
||||
{
|
||||
"rid": "17009",
|
||||
"lang": "kr",
|
||||
"severity": "P1",
|
||||
"term_zh": "小恶魔",
|
||||
"group": "红魔馆",
|
||||
"msg": "韩文:术语「小恶魔」未使用权威译法「코아쿠마」(可能用了同义词)",
|
||||
"correct": "코아쿠마",
|
||||
"current": "소악마 사제 소환",
|
||||
"zh_excerpt": "召唤小恶魔祭司"
|
||||
},
|
||||
{
|
||||
"rid": "17010",
|
||||
"lang": "en",
|
||||
"severity": "P1",
|
||||
"term_zh": "小恶魔",
|
||||
"group": "红魔馆",
|
||||
"msg": "英文:术语「小恶魔」未使用权威译法「Koakuma」(可能用了同义词)",
|
||||
"correct": "Koakuma",
|
||||
"current": "When a Lv.4+ City levels up, you may choose to summon the Empire's unique Giant unit **<Lesser Demon Priest>**. Its cat-god form can Heal allies; upon death, it converts into lion-god form with devast",
|
||||
"zh_excerpt": "Lv.4以上城市升级时,可选择召唤帝国特色巨人单位**<小恶魔祭司>**,其猫神形态能够治疗友军,死亡后转化为狮神形态具备强大的杀伤力。与其他红魔馆英雄协同作战时,可被视作**<英雄单位>**触发相关特殊效果。"
|
||||
},
|
||||
{
|
||||
"rid": "17010",
|
||||
"lang": "kr",
|
||||
"severity": "P1",
|
||||
"term_zh": "小恶魔",
|
||||
"group": "红魔馆",
|
||||
"msg": "韩文:术语「小恶魔」未使用权威译法「코아쿠마」(可能用了同义词)",
|
||||
"correct": "코아쿠마",
|
||||
"current": "Lv.4 이상 도시 레벨 업 시, 제국 특색 거인 유닛 **<소악마 사제>** 소환 선택 가능. 고양이신 형태로 아군을 치료하며, 사망 시 사자신 형태로 전환되어 강력한 살상력 보유. 다른 홍마관 영웅과 협동 작전 시 **<영웅 유닛>**으로 간주되어 관련 특수 효과 발동.",
|
||||
"zh_excerpt": "Lv.4以上城市升级时,可选择召唤帝国特色巨人单位**<小恶魔祭司>**,其猫神形态能够治疗友军,死亡后转化为狮神形态具备强大的杀伤力。与其他红魔馆英雄协同作战时,可被视作**<英雄单位>**触发相关特殊效果。"
|
||||
},
|
||||
{
|
||||
"rid": "17013",
|
||||
"lang": "en",
|
||||
"severity": "P1",
|
||||
"term_zh": "御射宫司",
|
||||
"group": "神祇",
|
||||
"msg": "英文:术语「御射宫司」未使用权威译法「Mishaguji」(可能用了同义词)",
|
||||
"correct": "Mishaguji",
|
||||
"current": "Summon Lord Mishot Gūji",
|
||||
"zh_excerpt": "召唤御射宫司大人"
|
||||
},
|
||||
{
|
||||
"rid": "17527",
|
||||
"lang": "en",
|
||||
"severity": "P1",
|
||||
"term_zh": "日白残无",
|
||||
"group": "地狱",
|
||||
"msg": "英文:术语「日白残无」未使用权威译法「Zanmu Nippaku」(可能用了同义词)",
|
||||
"correct": "Zanmu Nippaku",
|
||||
"current": "Nippaku Zanmu<br>Entry Confirmed!",
|
||||
"zh_excerpt": "日白残无<br>参赛确认!"
|
||||
},
|
||||
{
|
||||
"rid": "17527",
|
||||
"lang": "jp",
|
||||
"severity": "P1",
|
||||
"term_zh": "日白残无",
|
||||
"group": "地狱",
|
||||
"msg": "日文:术语「日白残无」未使用权威译法「日白残夢」(可能用了同义词)",
|
||||
"correct": "日白残夢",
|
||||
"current": "日白残無<br>参戦確認!",
|
||||
"zh_excerpt": "日白残无<br>参赛确认!"
|
||||
},
|
||||
{
|
||||
"rid": "17841",
|
||||
"lang": "en",
|
||||
"severity": "P1",
|
||||
"term_zh": "古明地恋",
|
||||
"group": "地灵殿",
|
||||
"msg": "英文:术语「古明地恋」未使用权威译法「Koishi Komeiji」(可能用了同义词)",
|
||||
"correct": "Koishi Komeiji",
|
||||
"current": "At the start of each turn, if the total number of Koishi and her avatars on the field is less than the current level, a new Komeiji Koishi will randomly appear near the Capital and can act immediately",
|
||||
"zh_excerpt": "回合开始时,若场上恋恋及其化身数量小于当前等级,则在首都附近随机出现一个古明地恋且能够立刻行动"
|
||||
},
|
||||
{
|
||||
"rid": "18627",
|
||||
"lang": "jp",
|
||||
"severity": "P1",
|
||||
"term_zh": "日白残无",
|
||||
"group": "地狱",
|
||||
"msg": "日文:术语「日白残无」未使用权威译法「日白残夢」(可能用了同义词)",
|
||||
"correct": "日白残夢",
|
||||
"current": "----[新規キャラ立ち絵]----日白残無",
|
||||
"zh_excerpt": "----[新增角色立绘]----日白残无"
|
||||
},
|
||||
{
|
||||
"rid": "18887",
|
||||
"lang": "en",
|
||||
"severity": "P1",
|
||||
"term_zh": "火焰猫燐",
|
||||
"group": "地灵殿",
|
||||
"msg": "英文:术语「火焰猫燐」未使用权威译法「Rin Kaenbyou」(可能用了同义词)",
|
||||
"correct": "Rin Kaenbyou",
|
||||
"current": "**<[Bishop] Class Hero>**. Only one **<Kaenbyou Rin>** can exist on the field. Cannot deploy again within 3 turns after Death.",
|
||||
"zh_excerpt": "**<[相]职阶英雄>**。全场只能存在一个**<火焰猫燐>**。死亡后3回合内不可再次出战。"
|
||||
},
|
||||
{
|
||||
"rid": "18907",
|
||||
"lang": "jp",
|
||||
"severity": "P1",
|
||||
"term_zh": "蓬莱山辉夜",
|
||||
"group": "永远亭",
|
||||
"msg": "日文:术语「蓬莱山辉夜」未使用权威译法「蓬莱山輝夜」(可能用了同义词)",
|
||||
"correct": "蓬莱山輝夜",
|
||||
"current": "蓬萊山輝夜が永夜法典を発布し、永夜が全土を覆う領土内の全ての**<森林>**が**<竹林>**に転化され、**<動物>**は**<妖怪兎>**に転化される首都4マス範囲内の遺跡視野を自動取得通常建築物および奇観建築物は竹林と共存可能",
|
||||
"zh_excerpt": "蓬莱山辉夜颁布永夜法典,永夜笼罩每一寸国土。领土内所有**<森林>**转化为**<竹林>**,**<动物>**则转化为**<妖怪兔>**。自动获得首都4格范围内的遗迹视野。常规建筑及奇观建筑可以与竹林并存。"
|
||||
},
|
||||
{
|
||||
"rid": "18964",
|
||||
"lang": "jp",
|
||||
"severity": "P1",
|
||||
"term_zh": "日白残无",
|
||||
"group": "地狱",
|
||||
"msg": "日文:术语「日白残无」未使用权威译法「日白残夢」(可能用了同义词)",
|
||||
"correct": "日白残夢",
|
||||
"current": "日白残無(人形) Lv.1",
|
||||
"zh_excerpt": "日白残无(木偶) Lv.1"
|
||||
},
|
||||
{
|
||||
"rid": "18965",
|
||||
"lang": "jp",
|
||||
"severity": "P1",
|
||||
"term_zh": "日白残无",
|
||||
"group": "地狱",
|
||||
"msg": "日文:术语「日白残无」未使用权威译法「日白残夢」(可能用了同义词)",
|
||||
"correct": "日白残夢",
|
||||
"current": "日白残無(人形) Lv.2",
|
||||
"zh_excerpt": "日白残无(木偶) Lv.2"
|
||||
},
|
||||
{
|
||||
"rid": "18966",
|
||||
"lang": "jp",
|
||||
"severity": "P1",
|
||||
"term_zh": "日白残无",
|
||||
"group": "地狱",
|
||||
"msg": "日文:术语「日白残无」未使用权威译法「日白残夢」(可能用了同义词)",
|
||||
"correct": "日白残夢",
|
||||
"current": "日白残無(人形) Lv.3",
|
||||
"zh_excerpt": "日白残无(木偶) Lv.3"
|
||||
},
|
||||
{
|
||||
"rid": "18967",
|
||||
"lang": "jp",
|
||||
"severity": "P1",
|
||||
"term_zh": "日白残无",
|
||||
"group": "地狱",
|
||||
"msg": "日文:术语「日白残无」未使用权威译法「日白残夢」(可能用了同义词)",
|
||||
"correct": "日白残夢",
|
||||
"current": "日白残無(人形) Lv.4",
|
||||
"zh_excerpt": "日白残无(木偶) Lv.4"
|
||||
},
|
||||
{
|
||||
"rid": "19286",
|
||||
"lang": "jp",
|
||||
"severity": "P1",
|
||||
"term_zh": "日白残无",
|
||||
"group": "地狱",
|
||||
"msg": "日文:术语「日白残无」未使用权威译法「日白残夢」(可能用了同义词)",
|
||||
"correct": "日白残夢",
|
||||
"current": "日白残無(人形)",
|
||||
"zh_excerpt": "日白残无(木偶)"
|
||||
},
|
||||
{
|
||||
"rid": "19388",
|
||||
"lang": "en",
|
||||
"severity": "P1",
|
||||
"term_zh": "因幡帝",
|
||||
"group": "永远亭",
|
||||
"msg": "英文:术语「因幡帝」未使用权威译法「Tewi Inaba」(可能用了同义词)",
|
||||
"correct": "Tewi Inaba",
|
||||
"current": "Raising the lucky white flag, Tewi inspires the entire army with wonderful lies, granting all friendly units within 1 tile **<Battlefield Coordination>**, **<Imperial Glory>**, and **<Movement Boost>*",
|
||||
"zh_excerpt": "举起幸运的白旗,因幡帝用美妙的谎言激励全军,令一格范围内的所有友军获得一回合**<战地协同>**、**<帝国荣耀>**及**<移动力提升>**"
|
||||
},
|
||||
{
|
||||
"rid": "19388",
|
||||
"lang": "jp",
|
||||
"severity": "P1",
|
||||
"term_zh": "因幡帝",
|
||||
"group": "永远亭",
|
||||
"msg": "日文:术语「因幡帝」未使用权威译法「因幡てゐ」(可能用了同义词)",
|
||||
"correct": "因幡てゐ",
|
||||
"current": "幸運の白旗を掲げ、因幡帝が巧みな嘘で全軍を鼓舞し、1マス範囲内のすべての味方に1ターンの**<戦場連携>**・**<帝国の栄光>**・**<移動力アップ>**を付与する",
|
||||
"zh_excerpt": "举起幸运的白旗,因幡帝用美妙的谎言激励全军,令一格范围内的所有友军获得一回合**<战地协同>**、**<帝国荣耀>**及**<移动力提升>**"
|
||||
},
|
||||
{
|
||||
"rid": "19388",
|
||||
"lang": "kr",
|
||||
"severity": "P1",
|
||||
"term_zh": "因幡帝",
|
||||
"group": "永远亭",
|
||||
"msg": "韩文:术语「因幡帝」未使用权威译法「이나바 테위」(可能用了同义词)",
|
||||
"correct": "이나바 테위",
|
||||
"current": "행운의 백기를 들어올리며, 이나바테이가 아름다운 거짓말로 전군을 고무시켜 1칸 범위 내 모든 아군에게 1턴간 **<전장 협동>**, **<제국의 영광>** 및 **<이동력 증가>**를 부여한다.",
|
||||
"zh_excerpt": "举起幸运的白旗,因幡帝用美妙的谎言激励全军,令一格范围内的所有友军获得一回合**<战地协同>**、**<帝国荣耀>**及**<移动力提升>**"
|
||||
},
|
||||
{
|
||||
"rid": "19414",
|
||||
"lang": "en",
|
||||
"severity": "P1",
|
||||
"term_zh": "西行寺幽幽子",
|
||||
"group": "冥界",
|
||||
"msg": "英文:术语「西行寺幽幽子」未使用权威译法「Yuyuko Saigyouji」(可能用了同义词)",
|
||||
"correct": "Yuyuko Saigyouji",
|
||||
"current": "Saigyouji Yuyuko",
|
||||
"zh_excerpt": "西行寺幽幽子"
|
||||
},
|
||||
{
|
||||
"rid": "19429",
|
||||
"lang": "en",
|
||||
"severity": "P1",
|
||||
"term_zh": "雾雨魔理沙",
|
||||
"group": "博丽神社",
|
||||
"msg": "英文:术语「雾雨魔理沙」未使用权威译法「Marisa Kirisame」(可能用了同义词)",
|
||||
"correct": "Marisa Kirisame",
|
||||
"current": "Kirisame Marisa",
|
||||
"zh_excerpt": "雾雨魔理沙"
|
||||
},
|
||||
{
|
||||
"rid": "19746",
|
||||
"lang": "en",
|
||||
"severity": "P1",
|
||||
"term_zh": "十六夜咲夜",
|
||||
"group": "红魔馆",
|
||||
"msg": "英文:术语「十六夜咲夜」未使用权威译法「Sakuya Izayoi」(可能用了同义词)",
|
||||
"correct": "Sakuya Izayoi",
|
||||
"current": "[Beta 0.7.1g]\nRelease Date: 2026.5.11\n\n------- [New Content] -------\n1. New BGM: Tenma Empire, Lunar Empire\n2. New encyclopedia sub-module: Music Room.\n3. New multilingual MOD module — you can create ",
|
||||
"zh_excerpt": "[Beta 0.7.1g]\n发布日期 26.5.11\n\n------- [新增内容] -------\n1.新增BGM:天邪帝国、月之帝国\n2.新增图鉴子模块:音乐室。\n3.新增多语言MOD模块,可在创意工坊制定其他语言的翻译版本(通过设置进入)\n4.战绩现可筛选古明地帝国、经典模式、自由模式、2~17人数。\n\n------- [bug修复] -------\n1.修复了铃仙会错误调度非盟友的月兔幻象"
|
||||
},
|
||||
{
|
||||
"rid": "19746",
|
||||
"lang": "en",
|
||||
"severity": "P1",
|
||||
"term_zh": "蓬莱山辉夜",
|
||||
"group": "永远亭",
|
||||
"msg": "英文:术语「蓬莱山辉夜」未使用权威译法「Kaguya Houraisan」(可能用了同义词)",
|
||||
"correct": "Kaguya Houraisan",
|
||||
"current": "[Beta 0.7.1g]\nRelease Date: 2026.5.11\n\n------- [New Content] -------\n1. New BGM: Tenma Empire, Lunar Empire\n2. New encyclopedia sub-module: Music Room.\n3. New multilingual MOD module — you can create ",
|
||||
"zh_excerpt": "[Beta 0.7.1g]\n发布日期 26.5.11\n\n------- [新增内容] -------\n1.新增BGM:天邪帝国、月之帝国\n2.新增图鉴子模块:音乐室。\n3.新增多语言MOD模块,可在创意工坊制定其他语言的翻译版本(通过设置进入)\n4.战绩现可筛选古明地帝国、经典模式、自由模式、2~17人数。\n\n------- [bug修复] -------\n1.修复了铃仙会错误调度非盟友的月兔幻象"
|
||||
},
|
||||
{
|
||||
"rid": "19746",
|
||||
"lang": "en",
|
||||
"severity": "P1",
|
||||
"term_zh": "古明地觉",
|
||||
"group": "地灵殿",
|
||||
"msg": "英文:术语「古明地觉」未使用权威译法「Satori Komeiji」(可能用了同义词)",
|
||||
"correct": "Satori Komeiji",
|
||||
"current": "[Beta 0.7.1g]\nRelease Date: 2026.5.11\n\n------- [New Content] -------\n1. New BGM: Tenma Empire, Lunar Empire\n2. New encyclopedia sub-module: Music Room.\n3. New multilingual MOD module — you can create ",
|
||||
"zh_excerpt": "[Beta 0.7.1g]\n发布日期 26.5.11\n\n------- [新增内容] -------\n1.新增BGM:天邪帝国、月之帝国\n2.新增图鉴子模块:音乐室。\n3.新增多语言MOD模块,可在创意工坊制定其他语言的翻译版本(通过设置进入)\n4.战绩现可筛选古明地帝国、经典模式、自由模式、2~17人数。\n\n------- [bug修复] -------\n1.修复了铃仙会错误调度非盟友的月兔幻象"
|
||||
},
|
||||
{
|
||||
"rid": "19746",
|
||||
"lang": "en",
|
||||
"severity": "P1",
|
||||
"term_zh": "古明地恋",
|
||||
"group": "地灵殿",
|
||||
"msg": "英文:术语「古明地恋」未使用权威译法「Koishi Komeiji」(可能用了同义词)",
|
||||
"correct": "Koishi Komeiji",
|
||||
"current": "[Beta 0.7.1g]\nRelease Date: 2026.5.11\n\n------- [New Content] -------\n1. New BGM: Tenma Empire, Lunar Empire\n2. New encyclopedia sub-module: Music Room.\n3. New multilingual MOD module — you can create ",
|
||||
"zh_excerpt": "[Beta 0.7.1g]\n发布日期 26.5.11\n\n------- [新增内容] -------\n1.新增BGM:天邪帝国、月之帝国\n2.新增图鉴子模块:音乐室。\n3.新增多语言MOD模块,可在创意工坊制定其他语言的翻译版本(通过设置进入)\n4.战绩现可筛选古明地帝国、经典模式、自由模式、2~17人数。\n\n------- [bug修复] -------\n1.修复了铃仙会错误调度非盟友的月兔幻象"
|
||||
},
|
||||
{
|
||||
"rid": "19746",
|
||||
"lang": "en",
|
||||
"severity": "P1",
|
||||
"term_zh": "日白残无",
|
||||
"group": "地狱",
|
||||
"msg": "英文:术语「日白残无」未使用权威译法「Zanmu Nippaku」(可能用了同义词)",
|
||||
"correct": "Zanmu Nippaku",
|
||||
"current": "[Beta 0.7.1g]\nRelease Date: 2026.5.11\n\n------- [New Content] -------\n1. New BGM: Tenma Empire, Lunar Empire\n2. New encyclopedia sub-module: Music Room.\n3. New multilingual MOD module — you can create ",
|
||||
"zh_excerpt": "[Beta 0.7.1g]\n发布日期 26.5.11\n\n------- [新增内容] -------\n1.新增BGM:天邪帝国、月之帝国\n2.新增图鉴子模块:音乐室。\n3.新增多语言MOD模块,可在创意工坊制定其他语言的翻译版本(通过设置进入)\n4.战绩现可筛选古明地帝国、经典模式、自由模式、2~17人数。\n\n------- [bug修复] -------\n1.修复了铃仙会错误调度非盟友的月兔幻象"
|
||||
}
|
||||
]
|
||||
43
Tools/multilingual_check/verify_19871.py
Normal file
43
Tools/multilingual_check/verify_19871.py
Normal file
@ -0,0 +1,43 @@
|
||||
"""校验 ID=19871 写入后状态。"""
|
||||
import openpyxl
|
||||
import re
|
||||
|
||||
XLSX = r"C:\TH1\TH1\Tools\Multilingual.xlsx"
|
||||
|
||||
wb = openpyxl.load_workbook(XLSX, data_only=True)
|
||||
ws = wb.active
|
||||
|
||||
target_row = 6
|
||||
zh = ws.cell(row=target_row, column=3).value
|
||||
tw = ws.cell(row=target_row, column=4).value
|
||||
en = ws.cell(row=target_row, column=5).value
|
||||
jp = ws.cell(row=target_row, column=6).value
|
||||
kr = ws.cell(row=target_row, column=7).value
|
||||
|
||||
|
||||
def count(t):
|
||||
return 0 if t is None else len(re.findall(r"\*\*<[^>]*>\*\*", str(t)))
|
||||
|
||||
|
||||
print(f"ZH (col 3): len={len(zh) if zh else 0}, tags={count(zh)}")
|
||||
print(f"TW (col 4): {None if tw is None else f'len={len(tw)}'}")
|
||||
print(f"EN (col 5): len={len(en) if en else 0}, tags={count(en)}")
|
||||
print(f"JP (col 6): {None if jp is None else f'len={len(jp)}'}")
|
||||
print(f"KR (col 7): {None if kr is None else f'len={len(kr)}'}")
|
||||
|
||||
# 把 EN 前 500 和后 200 dump 出来
|
||||
if en:
|
||||
print("\n--- EN head ---")
|
||||
print(en[:500])
|
||||
print("\n--- EN tail ---")
|
||||
print(en[-300:])
|
||||
|
||||
# 同时校验其他行没改
|
||||
print("\n--- Other rows (col 4/6/7 non-empty rows) ---")
|
||||
for r in range(2, ws.max_row + 1):
|
||||
tw_v = ws.cell(row=r, column=4).value
|
||||
jp_v = ws.cell(row=r, column=6).value
|
||||
kr_v = ws.cell(row=r, column=7).value
|
||||
if tw_v or jp_v or kr_v:
|
||||
id_v = ws.cell(row=r, column=1).value
|
||||
print(f" row={r} ID={id_v} TW_len={len(str(tw_v)) if tw_v else 0} JP_len={len(str(jp_v)) if jp_v else 0} KR_len={len(str(kr_v)) if kr_v else 0}")
|
||||
File diff suppressed because it is too large
Load Diff
@ -2155,7 +2155,7 @@ MonoBehaviour:
|
||||
InternalID: 2
|
||||
MapID: 32802
|
||||
IsFinished: 0
|
||||
Name: "\u5317\u7EAC27\u7684\u65E5\u6671\u4E4B\u738B"
|
||||
Name: "\u5317\u7EAC27\u7684\u65E5\u6677\u4E4B\u738B"
|
||||
Desc: "\u7D2F\u8BA1\u5EFA\u9020\u5E76\u6700\u7EC8\u83B7\u5F97\u6E38\u620F\u80DC\u522920\u6B21"
|
||||
_typeNames:
|
||||
- Logic.Achievement.BuildWonderConditionCondition, Assembly-CSharp, Version=0.0.0.0,
|
||||
|
||||
@ -1889,7 +1889,7 @@ MonoBehaviour:
|
||||
ResourceSubType: 0
|
||||
Sprite: {fileID: 21300000, guid: 1e065dc4ce7d55644b06fa2e1690734c, type: 3}
|
||||
ResourceName: "\u519B\u6E2F"
|
||||
ResourceDesc: "\u4E3A\u5904\u4E8E\u519B\u6E2F\u7684\u5355\u4F4D\u6062\u590D\u6240\u6709\u884C\u52A8\u70B9\u6570\u3002\u6BCF\u56DE\u5408\u4E0A\u9650\u4E00\u6B21\u3002\u63D0\u4F9B\u989D\u5916\u9632\u5FA1\u3002\u6BCF\u5EA7\u57CE\u5E02\u4EC5\u80FD\u5EFA\u9020\u4E00\u5EA7**<\u519B\u6E2F>**\u3002"
|
||||
ResourceDesc: "\u4E3A\u5904\u4E8E**<\u519B\u6E2F>**\u7684\u5355\u4F4D\u6062\u590D1\u70B9**<\u901A\u7528\u884C\u52A8\u70B9>**\uFF0C\u6BCF\u56DE\u5408\u4E0A\u9650\u4E00\u6B21\u3002\u63D0\u4F9B\u989D\u5916\u9632\u5FA1\u3002\u6BCF\u5EA7\u57CE\u5E02\u4EC5\u80FD\u5EFA\u9020\u4E00\u5EA7**<\u519B\u6E2F>**\uFF0C\u4E14\u4EC5\u80FD\u5EFA\u9020\u5728\u6E2F\u53E3\u9644\u8FD1\u3002"
|
||||
Exp: 0
|
||||
ChessType: 0
|
||||
CivIdForceIdNotFromPlayer: 0
|
||||
|
||||
@ -169,7 +169,7 @@ MonoBehaviour:
|
||||
- GiantType: 20
|
||||
Name: "\u706B\u7130\u732B\u71D0"
|
||||
SubTitle: "\u5E1D\u56FD\u7684\u5730\u72F1\u706B\u8F66"
|
||||
Desc: "\u9970\u6F14<color=red>\u963F\u5468\u90A3</color>\u7684\u732B\u8F66\u3002\u5979\u6B63\u5728\u966A\u604B\u6392\u7EC3\u9B54\u672F\u8282\u76EE\u3002\u88AB\u88C5\u8FDB\u9B54\u672F\u76D2\u540E\u4E0D\u77E5\u8FC7\u4E86\u591A\u4E45\uFF0C\u7B49\u518D\u6B21\u88AB\u604B\u604B\u62B1\u51FA\u6765\u65F6\u5DF2\u7136\u8EAB\u5904\u6BD4\u585E\u73B0\u573A\u7684\u805A\u5149\u706F\u4E0B\u3002"
|
||||
Desc: "\u9970\u6F14<color=red>\u963F\u5468\u90A3</color>\u7684\u732B\u8F66\u3002\u5979\u6B63\u5728\u966A\u604B\u6392\u7EC3\u9B54\u672F\u8282\u76EE\u3002\u88AB\u88C5\u8FDB\u9B54\u672F\u76D2\u540E\u4E0D\u77E5\u8FC7\u4E86\u591A\u4E45\uFF0C\u7B49\u518D\u6B21\u88AB\u604B\u604B\u62B1\u51FA\u6765\u65F6\u5DF2\u7136\u8EAB\u5904\u6BD4\u8D5B\u73B0\u573A\u7684\u805A\u5149\u706F\u4E0B\u3002"
|
||||
Diag: "\u604B\u5927\u4EBA\uFF01\u8FD9\u4E2A\u5BB4\u4F1A\u597D\u50CF\u8981\u201C\u62A5\u540D\u201D\u624D\u80FD\u53C2\u52A0\u54E6\uFF0C\u4EA4\u7ED9\u6211\u6765\u641E\u5B9A\u5427\uFF01"
|
||||
EnglishName: KAENBYOU RIN
|
||||
DiagColor: {r: 0.9, g: 0.3, b: 0.3, a: 1}
|
||||
|
||||
@ -22,6 +22,7 @@ MonoBehaviour:
|
||||
LeaderAvatar: {fileID: 21300000, guid: 41539b2994045fb4897fa63698c04912, type: 3}
|
||||
WinPic: {fileID: 21300000, guid: b824ef6447296b84b9909f8484087f43, type: 3}
|
||||
LosePic: {fileID: 21300000, guid: 2a9ada7d038d1b546b45f428dd284041, type: 3}
|
||||
LoadingPic: {fileID: 21300000, guid: 4ff7d6f0abd12af468b870f0f096fb65, type: 3}
|
||||
TechPool: 000000000100000002000000030000000400000005000000060000000700000028000000090000000a0000000b0000002c0000000d0000000e0000000f0000001000000011000000120000001300000014000000150000002a000000170000001800000019000000
|
||||
TechStart: 0000000028000000
|
||||
Color: {r: 0.6313726, g: 0.50980395, b: 0.31764707, a: 1}
|
||||
@ -55,6 +56,7 @@ MonoBehaviour:
|
||||
LeaderAvatar: {fileID: 21300000, guid: bbd7632369029b446ba7c3511796d4ef, type: 3}
|
||||
WinPic: {fileID: 21300000, guid: e6d67300c672fde4096096c6a8811c4c, type: 3}
|
||||
LosePic: {fileID: 21300000, guid: b21b362bcfcfa874090496eeec20bfb5, type: 3}
|
||||
LoadingPic: {fileID: 21300000, guid: ae35aa919eafda946a4120d314cb46af, type: 3}
|
||||
TechPool: 00000000010000000200000003000000040000000500000006000000070000000800000026000000090000000b0000000c0000000d00000025000000240000001f000000220000002000000023000000210000001500000016000000170000001800000019000000
|
||||
TechStart: 000000001f000000
|
||||
Color: {r: 0.40784314, g: 0.22352941, b: 0.43529412, a: 1}
|
||||
@ -90,6 +92,7 @@ MonoBehaviour:
|
||||
LeaderAvatar: {fileID: 21300000, guid: 06c171d81e9c5654e91ee63782215264, type: 3}
|
||||
WinPic: {fileID: 21300000, guid: 4689f58495d900b4d9e1f0dc69c94d2f, type: 3}
|
||||
LosePic: {fileID: 21300000, guid: 89e04c39d544e044684faa4a17fc27dc, type: 3}
|
||||
LoadingPic: {fileID: 21300000, guid: c474ca89c031d3a41bbbd4f145cb03b1, type: 3}
|
||||
TechPool: 000000002d0000002e0000002f0000003000000031000000060000000700000008000000090000000a000000320000003300000034000000350000003600000010000000110000001200000013000000140000001500000016000000170000001800000037000000
|
||||
TechStart: 000000002d000000
|
||||
Color: {r: 0.09019608, g: 0.1254902, b: 0.20784314, a: 1}
|
||||
@ -131,6 +134,7 @@ MonoBehaviour:
|
||||
LeaderAvatar: {fileID: 21300000, guid: 37c2125556ffd33438be7d85d95d1947, type: 3}
|
||||
WinPic: {fileID: 21300000, guid: 80beaae23800c284fb4cb424f63eccba, type: 3}
|
||||
LosePic: {fileID: 21300000, guid: 2c0cdbd21dcc5fc40a02505caafc8a08, type: 3}
|
||||
LoadingPic: {fileID: 21300000, guid: 0282fc28d8d088c408793e337dc5ab9f, type: 3}
|
||||
TechPool: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000003e0000000c000000400000000e0000000f0000001000000011000000390000003a0000001400000015000000160000003c000000180000003d000000
|
||||
TechStart: 0000000038000000
|
||||
Color: {r: 0.101960786, g: 0.4509804, b: 0.45490196, a: 1}
|
||||
@ -162,6 +166,7 @@ MonoBehaviour:
|
||||
LeaderAvatar: {fileID: 21300000, guid: 410ea7960b94c344b9e977cc6ce48506, type: 3}
|
||||
WinPic: {fileID: 0}
|
||||
LosePic: {fileID: 0}
|
||||
LoadingPic: {fileID: 0}
|
||||
TechPool: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f00000010000000110000001200000013000000140000001500000016000000170000001800000019000000
|
||||
TechStart: 0000000015000000
|
||||
Color: {r: 0.2509804, g: 0.36078432, b: 0.49803922, a: 1}
|
||||
@ -191,6 +196,7 @@ MonoBehaviour:
|
||||
LeaderAvatar: {fileID: 21300000, guid: 97a1cd5a837d3e84f9adca403b2b4ee7, type: 3}
|
||||
WinPic: {fileID: 0}
|
||||
LosePic: {fileID: 0}
|
||||
LoadingPic: {fileID: 0}
|
||||
TechPool: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f00000010000000110000001200000013000000140000001500000016000000170000001800000019000000
|
||||
TechStart: 0000000012000000
|
||||
Color: {r: 0.5372549, g: 0.16078432, b: 0.18039216, a: 1}
|
||||
@ -225,6 +231,7 @@ MonoBehaviour:
|
||||
LeaderAvatar: {fileID: 21300000, guid: 48b938f7b519b294bac8b6ae81249bcb, type: 3}
|
||||
WinPic: {fileID: 0}
|
||||
LosePic: {fileID: 0}
|
||||
LoadingPic: {fileID: 0}
|
||||
TechPool: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f00000010000000110000001200000013000000140000001500000016000000170000001800000019000000
|
||||
TechStart: 0000000005000000
|
||||
Color: {r: 0.16470589, g: 0.24313726, b: 0.5019608, a: 1}
|
||||
@ -256,6 +263,7 @@ MonoBehaviour:
|
||||
LeaderAvatar: {fileID: 21300000, guid: 18aa3c46d044a164bad99019576dc349, type: 3}
|
||||
WinPic: {fileID: 0}
|
||||
LosePic: {fileID: 0}
|
||||
LoadingPic: {fileID: 0}
|
||||
TechPool: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f00000010000000110000001200000013000000140000001500000016000000170000001800000019000000
|
||||
TechStart: 0000000013000000
|
||||
Color: {r: 0.3647059, g: 0.23921569, b: 0.50980395, a: 1}
|
||||
@ -287,14 +295,15 @@ MonoBehaviour:
|
||||
LeaderAvatar: {fileID: 21300000, guid: cc7120c361939b344ab374c9d39c4c42, type: 3}
|
||||
WinPic: {fileID: 0}
|
||||
LosePic: {fileID: 0}
|
||||
LoadingPic: {fileID: 0}
|
||||
TechPool: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f00000010000000110000001200000013000000140000001500000016000000170000001800000019000000
|
||||
TechStart: 00000000
|
||||
Color: {r: 0.6, g: 0.5, b: 0.2, a: 1}
|
||||
FlagIcon: {fileID: 0}
|
||||
Diff: 0
|
||||
TechAtomList:
|
||||
EmpireDesc:
|
||||
LeaderDesc:
|
||||
TechAtomList:
|
||||
EmpireDesc:
|
||||
LeaderDesc:
|
||||
StartChatBubble: []
|
||||
MeetChatBubble: []
|
||||
LoseChatBubble: []
|
||||
@ -309,14 +318,15 @@ MonoBehaviour:
|
||||
LeaderAvatar: {fileID: 21300000, guid: 5d2bda6ce5113ea4b81ba02dc58f8aea, type: 3}
|
||||
WinPic: {fileID: 0}
|
||||
LosePic: {fileID: 0}
|
||||
LoadingPic: {fileID: 0}
|
||||
TechPool: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f00000010000000110000001200000013000000140000001500000016000000170000001800000019000000
|
||||
TechStart: 00000000
|
||||
Color: {r: 0.2, g: 0.6, b: 0.3, a: 1}
|
||||
FlagIcon: {fileID: 0}
|
||||
Diff: 0
|
||||
TechAtomList:
|
||||
EmpireDesc:
|
||||
LeaderDesc:
|
||||
TechAtomList:
|
||||
EmpireDesc:
|
||||
LeaderDesc:
|
||||
StartChatBubble: []
|
||||
MeetChatBubble: []
|
||||
LoseChatBubble: []
|
||||
@ -331,14 +341,15 @@ MonoBehaviour:
|
||||
LeaderAvatar: {fileID: 21300000, guid: b357988d162ecc44ca823c824c158b4a, type: 3}
|
||||
WinPic: {fileID: 0}
|
||||
LosePic: {fileID: 0}
|
||||
LoadingPic: {fileID: 0}
|
||||
TechPool: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f00000010000000110000001200000013000000140000001500000016000000170000001800000019000000
|
||||
TechStart: 00000000
|
||||
Color: {r: 0.7, g: 0.55, b: 0.1, a: 1}
|
||||
FlagIcon: {fileID: 0}
|
||||
Diff: 0
|
||||
TechAtomList:
|
||||
EmpireDesc:
|
||||
LeaderDesc:
|
||||
TechAtomList:
|
||||
EmpireDesc:
|
||||
LeaderDesc:
|
||||
StartChatBubble: []
|
||||
MeetChatBubble: []
|
||||
LoseChatBubble: []
|
||||
@ -353,14 +364,15 @@ MonoBehaviour:
|
||||
LeaderAvatar: {fileID: 21300000, guid: f59755f8786d1ba4682447312cecca31, type: 3}
|
||||
WinPic: {fileID: 0}
|
||||
LosePic: {fileID: 0}
|
||||
LoadingPic: {fileID: 0}
|
||||
TechPool: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f00000010000000110000001200000013000000140000001500000016000000170000001800000019000000
|
||||
TechStart: 00000000
|
||||
Color: {r: 0.3, g: 0.4, b: 0.7, a: 1}
|
||||
FlagIcon: {fileID: 0}
|
||||
Diff: 0
|
||||
TechAtomList:
|
||||
EmpireDesc:
|
||||
LeaderDesc:
|
||||
TechAtomList:
|
||||
EmpireDesc:
|
||||
LeaderDesc:
|
||||
StartChatBubble: []
|
||||
MeetChatBubble: []
|
||||
LoseChatBubble: []
|
||||
@ -375,6 +387,7 @@ MonoBehaviour:
|
||||
LeaderAvatar: {fileID: 21300000, guid: 2f6f77983db423a44a43017c5d344334, type: 3}
|
||||
WinPic: {fileID: 0}
|
||||
LosePic: {fileID: 0}
|
||||
LoadingPic: {fileID: 0}
|
||||
TechPool: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f00000010000000110000001200000013000000140000001500000016000000170000001800000019000000
|
||||
TechStart: 00000000
|
||||
Color: {r: 0.5, g: 0.3, b: 0.15, a: 1}
|
||||
@ -397,14 +410,15 @@ MonoBehaviour:
|
||||
LeaderAvatar: {fileID: 21300000, guid: 414d88f99bd80bd4d9ab0a38c270ab7a, type: 3}
|
||||
WinPic: {fileID: 0}
|
||||
LosePic: {fileID: 0}
|
||||
LoadingPic: {fileID: 0}
|
||||
TechPool: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f00000010000000110000001200000013000000140000001500000016000000170000001800000019000000
|
||||
TechStart: 00000000
|
||||
Color: {r: 0.6, g: 0.15, b: 0.15, a: 1}
|
||||
FlagIcon: {fileID: 0}
|
||||
Diff: 0
|
||||
TechAtomList:
|
||||
EmpireDesc:
|
||||
LeaderDesc:
|
||||
TechAtomList:
|
||||
EmpireDesc:
|
||||
LeaderDesc:
|
||||
StartChatBubble: []
|
||||
MeetChatBubble: []
|
||||
LoseChatBubble: []
|
||||
@ -419,14 +433,15 @@ MonoBehaviour:
|
||||
LeaderAvatar: {fileID: 21300000, guid: 515188a2ccc6f5244bea5da674ac6b18, type: 3}
|
||||
WinPic: {fileID: 0}
|
||||
LosePic: {fileID: 0}
|
||||
LoadingPic: {fileID: 0}
|
||||
TechPool: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f00000010000000110000001200000013000000140000001500000016000000170000001800000019000000
|
||||
TechStart: 00000000
|
||||
Color: {r: 0.7, g: 0.5, b: 0, a: 1}
|
||||
FlagIcon: {fileID: 0}
|
||||
Diff: 0
|
||||
TechAtomList:
|
||||
EmpireDesc:
|
||||
LeaderDesc:
|
||||
TechAtomList:
|
||||
EmpireDesc:
|
||||
LeaderDesc:
|
||||
StartChatBubble: []
|
||||
MeetChatBubble: []
|
||||
LoseChatBubble: []
|
||||
@ -441,6 +456,7 @@ MonoBehaviour:
|
||||
LeaderAvatar: {fileID: 21300000, guid: 90007834a60bd894c9991def041737fc, type: 3}
|
||||
WinPic: {fileID: 0}
|
||||
LosePic: {fileID: 0}
|
||||
LoadingPic: {fileID: 0}
|
||||
TechPool: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f00000010000000110000001200000013000000140000001500000016000000170000001800000019000000
|
||||
TechStart: 00000000
|
||||
Color: {r: 0.35, g: 0.25, b: 0.15, a: 1}
|
||||
@ -464,6 +480,7 @@ MonoBehaviour:
|
||||
LeaderAvatar: {fileID: 21300000, guid: 8e0829a2987fe7d43adda0571e0e79af, type: 3}
|
||||
WinPic: {fileID: 0}
|
||||
LosePic: {fileID: 0}
|
||||
LoadingPic: {fileID: 0}
|
||||
TechPool: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f00000010000000110000001200000013000000140000001500000016000000170000001800000019000000
|
||||
TechStart: 00000000
|
||||
Color: {r: 0.1, g: 0.4, b: 0.3, a: 1}
|
||||
|
||||
@ -441,7 +441,7 @@ MonoBehaviour:
|
||||
- SkillType: 35
|
||||
SkillViewType: 0
|
||||
SkillName: "\u57CE\u5E02\u4F20\u9001"
|
||||
SkillDesc: "\u4E3B\u52A8\u6280\u80FD\u3002\u53EF\u5728\u4E0E\u9996\u901A\u8054\u901A\u7684\u57CE\u5E02\u4E4B\u95F4\u4F20\u9001\u3002"
|
||||
SkillDesc: "\u4E3B\u52A8\u6280\u80FD\u3002\u53EF\u5728\u4E0E\u9996\u90FD\u8054\u901A\u7684\u57CE\u5E02\u4E4B\u95F4\u4F20\u9001\u3002"
|
||||
NotShow: 0
|
||||
ShowOnUnitMono: 0
|
||||
SkillIcon: {fileID: 21300000, guid: a8f6255cf427c5f409056fc55babe18a, type: 3}
|
||||
@ -1079,7 +1079,7 @@ MonoBehaviour:
|
||||
- SkillType: 79
|
||||
SkillViewType: 0
|
||||
SkillName: "\u6B65\u70AE\u534F\u540C"
|
||||
SkillDesc: "\u70AE\u5175\u4E8E\u6B65\u5175\u4E00\u6837\uFF0C\u4E5F\u80FD\u65BD\u52A0**<\u534F\u540C\u6807\u7684>**\uFF0C\u5E76\u5728\u653B\u51FB\u65F6\u83B7\u5F97\u653B\u51FB\u529B\u52A0\u6210\u3002"
|
||||
SkillDesc: "\u70AE\u5175\u4E0E\u6B65\u5175\u4E00\u6837\uFF0C\u4E5F\u80FD\u65BD\u52A0**<\u534F\u540C\u6807\u7684>**\uFF0C\u5E76\u5728\u653B\u51FB\u65F6\u83B7\u5F97\u653B\u51FB\u529B\u52A0\u6210\u3002"
|
||||
NotShow: 1
|
||||
ShowOnUnitMono: 0
|
||||
SkillIcon: {fileID: 21300000, guid: 23ab91ded578c5a4393e02d10a6f6f07, type: 3}
|
||||
|
||||
@ -40,7 +40,7 @@ MonoBehaviour:
|
||||
Desc: "\u7A0B\u5E8F\u5F00\u53D1"
|
||||
- Title: 3
|
||||
Name: "\u4E45\u4E5D"
|
||||
Desc: "\u89D2\u8272\u7ACB\u7ED8//\u4E3BKV"
|
||||
Desc: "\u89D2\u8272\u7ACB\u7ED8/\u4E3BKV"
|
||||
- Title: 3
|
||||
Name: BING
|
||||
Desc: "\u89D2\u8272\u7ACB\u7ED8"
|
||||
|
||||
@ -207,7 +207,7 @@ MonoBehaviour:
|
||||
TechTreeCircleViewType: 14
|
||||
- TechType: 24
|
||||
TechName: "\u6D77\u6D0B\u9632\u5FA1"
|
||||
Description: "\u53EF\u4EE5\u5EFA\u9020**<\u519B\u6E2F>**\u6240\u6709\u5355\u4F4D\u83B7\u5F97\u6D77\u6D0B\u9632\u5FA1"
|
||||
Description: "\u53EF\u4EE5\u5EFA\u9020**<\u519B\u6E2F>**\u3002\u6240\u6709\u5355\u4F4D\u83B7\u5F97\u6D77\u6D0B\u9632\u5FA1"
|
||||
icon: {fileID: 0}
|
||||
CostLevel: 3
|
||||
FatherTechList: 160000002a000000
|
||||
@ -615,7 +615,7 @@ MonoBehaviour:
|
||||
iconViewSizeType: 2
|
||||
- TechAtom: 4
|
||||
TechAtomName: "\u5360\u9886\u57CE\u5E02"
|
||||
Desc: "\u5360\u9886\u4E00\u4E2A\u6751\u5E84\u6216\u8005\u57CE\u5E02\uFF0C\u8BE5\u57CE\u5E02\u5956\u7EB3\u5165\u60A8\u7684\u9886\u571F\uFF01"
|
||||
Desc: "\u5360\u9886\u4E00\u4E2A\u6751\u5E84\u6216\u8005\u57CE\u5E02\uFF0C\u8BE5\u57CE\u5E02\u5C06\u7EB3\u5165\u60A8\u7684\u9886\u571F\uFF01"
|
||||
IsAddSkill: 0
|
||||
AddSkillCondition: []
|
||||
AddSkillType: 0
|
||||
|
||||
@ -84,7 +84,7 @@ MonoBehaviour:
|
||||
**<-------- Lv.4 -------->**<br> **<[\u57FA\u7840\u5C5E\u6027]>**35HP/3\u653B/4\u9632/1\u79FB\u52A8\u529B/3\u5C04\u7A0B<br>
|
||||
**<[\u80FD\u529B:\u987B\u81FE\u6C38\u8FDC]>**\u653B\u51FB\u65F6\u53EF\u9009\u4E2D\u53CB\u65B9\u5355\u4F4D\uFF0C\u4F7F\u5176\u83B7\u5F979\u5C42**<\u6C38\u6052>**\u3002<br>"
|
||||
- GiantType: 7
|
||||
UpgradeText: "**<\u5E1D\u56FD\u7684\u72C2\u6C14\u4E4B\u77B3 \u94C3\u4ED9\xB7\u4F18\u6619\u534E\u9662\xB7\u56E0\u5E61>**<br>
|
||||
UpgradeText: "**<\u5E1D\u56FD\u7684\u72C2\u6C14\u4E4B\u77B3\uFF1A\u94C3\u4ED9\xB7\u4F18\u6619\u534E\u9662\xB7\u56E0\u5E61>**<br>
|
||||
**<-------- Lv.1 -------->**<br> **<[\u57FA\u7840\u5C5E\u6027]>**10HP/2\u653B/1\u9632/2\u79FB\u52A8\u529B/2\u5C04\u7A0B<br>
|
||||
**<[\u80FD\u529B:\u6218\u5730\u534F\u540C]>**\u653B\u51FB\u5355\u4F4D\u65F6\u5C06\u65BD\u52A0\u4E00\u5C42**<\u534F\u540C\u6807\u7684>**\uFF0C\u6301\u7EED1\u56DE\u5408\u3002\u653B\u51FB\u5E26\u6709**<\u534F\u540C\u6807\u7684>**\u7684\u76EE\u6807\u65F6\uFF0C\u6BCF\u5C42\u4F7F\u5F97\u672C\u6B21\u653B\u51FB\u529B\u63D0\u53470.5\u3002<br>
|
||||
**<-------- Lv.2 -------->**<br> **<[\u57FA\u7840\u5C5E\u6027]>**15HP/2\u653B/2\u9632/2\u79FB\u52A8\u529B/2\u5C04\u7A0B<br>
|
||||
@ -309,3 +309,5 @@ MonoBehaviour:
|
||||
OutsideModQueryLoaded: "\u5DF2\u52A0\u8F7D {param} / {param}"
|
||||
OutsideModExportInProgress: "\u6B63\u5728\u5BFC\u51FA\u4E2D..."
|
||||
OutsideModExportSucceeded: "\u5BFC\u51FA\u5B8C\u6210!"
|
||||
OutsideModUploadPreviewDetected:
|
||||
OutsideModUploadPreviewNotProvided:
|
||||
|
||||
@ -8318,7 +8318,7 @@ MonoBehaviour:
|
||||
MoveRange: 1
|
||||
AttackRange: 2
|
||||
Cost: 0
|
||||
Skills: 020000000300000063000000640000000d000000
|
||||
Skills: 02000000030000000d000000
|
||||
Sprite: {fileID: 21300000, guid: 3b3b6787cac0d204098a5bc6036471e5, type: 3}
|
||||
IsSpriteVarient: 0
|
||||
SpriteList: []
|
||||
|
||||
@ -12,8 +12,15 @@ MonoBehaviour:
|
||||
m_Script: {fileID: 11500000, guid: c659b850b20e460f866ed3f696be406b, type: 3}
|
||||
m_Name: VersionConfig
|
||||
m_EditorClassIdentifier:
|
||||
CurVersionId: 70107
|
||||
CurVersionId: 70108
|
||||
Versions:
|
||||
- MajorVersion: 0
|
||||
MinorVersion: 7
|
||||
PatchVersion: 1
|
||||
Description: "[\u7248\u672CV0.7.1i]\n\u53D1\u5E03\u65E5\u671F 26.5.15\n\n-------
|
||||
[\u91CD\u8981bug\u4FEE\u590D] -------\n1.\u4FEE\u590D\u4E86\u8054\u673A\u53EF\u80FD\u5361\u6863\u5E76\u4E14\u65E0\u6CD5\u7EE7\u7EED\u6E38\u620F\u7684bug\n2.\u4FEE\u590D\u4E86\u5728\u89C6\u91CE\u5916\u88AB\u6211\u65B9\u51FB\u6740\u7684\u5355\u4F4D\u53EF\u80FD\u9519\u8BEF\u6B8B\u7559\u56FE\u50CF\u7684bug\n\n-------
|
||||
[\u5176\u4ED6\u4F18\u5316] -------\n1.\u4FEE\u590D\u4E86\u5927\u91CF\u7FFB\u8BD1\u95EE\u9898\n2.\u5B8C\u5584\u4E86\u519B\u6E2F\u63CF\u8FF0(\u5FC5\u987B\u5EFA\u9020\u5728\u6E2F\u53E3\u9644\u8FD1)\n3.\u4FEE\u590D\u4E86\u65E5\u767D\u6B8B\u65E0(\u6728\u5076)Lv.3\u62E5\u6709\u80FD\u529B\u9519\u8BEF\u7684bug"
|
||||
FourthVersion: 8
|
||||
- MajorVersion: 0
|
||||
MinorVersion: 7
|
||||
PatchVersion: 1
|
||||
|
||||
@ -2155,7 +2155,7 @@ MonoBehaviour:
|
||||
InternalID: 2
|
||||
MapID: 32802
|
||||
IsFinished: 0
|
||||
Name: 18779
|
||||
Name: 19874
|
||||
Desc: 17267
|
||||
_typeNames:
|
||||
- Logic.Achievement.BuildWonderConditionCondition, Assembly-CSharp, Version=0.0.0.0,
|
||||
|
||||
@ -3099,7 +3099,7 @@ MonoBehaviour:
|
||||
AIParamType: 0
|
||||
CultureCardType: 0
|
||||
ActionName: 40
|
||||
Desc: 17447
|
||||
Desc: 437
|
||||
NeedTechDesc: 0
|
||||
TechDesc:
|
||||
NeedLockDesc: 0
|
||||
|
||||
@ -453,7 +453,7 @@ MonoBehaviour:
|
||||
CityDescription: 566
|
||||
- CivId: 3
|
||||
CityNameEnum: 101
|
||||
CityName: 667
|
||||
CityName: 19862
|
||||
CityDescription: 566
|
||||
- CivId: 3
|
||||
CityNameEnum: 102
|
||||
|
||||
@ -1889,7 +1889,7 @@ MonoBehaviour:
|
||||
ResourceSubType: 0
|
||||
Sprite: {fileID: 21300000, guid: 1e065dc4ce7d55644b06fa2e1690734c, type: 3}
|
||||
ResourceName: 1382
|
||||
ResourceDesc: 2417
|
||||
ResourceDesc: 19872
|
||||
Exp: 0
|
||||
ChessType: 0
|
||||
CivIdForceIdNotFromPlayer: 0
|
||||
|
||||
File diff suppressed because one or more lines are too long
@ -22,6 +22,7 @@ MonoBehaviour:
|
||||
LeaderAvatar: {fileID: 21300000, guid: 41539b2994045fb4897fa63698c04912, type: 3}
|
||||
WinPic: {fileID: 21300000, guid: b824ef6447296b84b9909f8484087f43, type: 3}
|
||||
LosePic: {fileID: 21300000, guid: 2a9ada7d038d1b546b45f428dd284041, type: 3}
|
||||
LoadingPic: {fileID: 21300000, guid: 4ff7d6f0abd12af468b870f0f096fb65, type: 3}
|
||||
TechPool: 000000000100000002000000030000000400000005000000060000000700000028000000090000000a0000000b0000002c0000000d0000000e0000000f0000001000000011000000120000001300000014000000150000002a000000170000001800000019000000
|
||||
TechStart: 0000000028000000
|
||||
Color: {r: 0.6313726, g: 0.50980395, b: 0.31764707, a: 1}
|
||||
@ -54,6 +55,7 @@ MonoBehaviour:
|
||||
LeaderAvatar: {fileID: 21300000, guid: bbd7632369029b446ba7c3511796d4ef, type: 3}
|
||||
WinPic: {fileID: 21300000, guid: e6d67300c672fde4096096c6a8811c4c, type: 3}
|
||||
LosePic: {fileID: 21300000, guid: b21b362bcfcfa874090496eeec20bfb5, type: 3}
|
||||
LoadingPic: {fileID: 21300000, guid: ae35aa919eafda946a4120d314cb46af, type: 3}
|
||||
TechPool: 00000000010000000200000003000000040000000500000006000000070000000800000026000000090000000b0000000c0000000d00000025000000240000001f000000220000002000000023000000210000001500000016000000170000001800000019000000
|
||||
TechStart: 000000001f000000
|
||||
Color: {r: 0.40784314, g: 0.22352941, b: 0.43529412, a: 1}
|
||||
@ -88,6 +90,7 @@ MonoBehaviour:
|
||||
LeaderAvatar: {fileID: 21300000, guid: 06c171d81e9c5654e91ee63782215264, type: 3}
|
||||
WinPic: {fileID: 21300000, guid: 4689f58495d900b4d9e1f0dc69c94d2f, type: 3}
|
||||
LosePic: {fileID: 21300000, guid: 89e04c39d544e044684faa4a17fc27dc, type: 3}
|
||||
LoadingPic: {fileID: 21300000, guid: c474ca89c031d3a41bbbd4f145cb03b1, type: 3}
|
||||
TechPool: 000000002d0000002e0000002f0000003000000031000000060000000700000008000000090000000a000000320000003300000034000000350000003600000010000000110000001200000013000000140000001500000016000000170000001800000037000000
|
||||
TechStart: 000000002d000000
|
||||
Color: {r: 0.09019608, g: 0.1254902, b: 0.20784314, a: 1}
|
||||
@ -129,6 +132,7 @@ MonoBehaviour:
|
||||
LeaderAvatar: {fileID: 21300000, guid: 37c2125556ffd33438be7d85d95d1947, type: 3}
|
||||
WinPic: {fileID: 21300000, guid: 80beaae23800c284fb4cb424f63eccba, type: 3}
|
||||
LosePic: {fileID: 21300000, guid: 2c0cdbd21dcc5fc40a02505caafc8a08, type: 3}
|
||||
LoadingPic: {fileID: 21300000, guid: 0282fc28d8d088c408793e337dc5ab9f, type: 3}
|
||||
TechPool: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000003e0000000c000000400000000e0000000f0000001000000011000000390000003a0000001400000015000000160000003c000000180000003d000000
|
||||
TechStart: 0000000038000000
|
||||
Color: {r: 0.101960786, g: 0.4509804, b: 0.45490196, a: 1}
|
||||
@ -159,6 +163,7 @@ MonoBehaviour:
|
||||
LeaderAvatar: {fileID: 21300000, guid: 410ea7960b94c344b9e977cc6ce48506, type: 3}
|
||||
WinPic: {fileID: 0}
|
||||
LosePic: {fileID: 0}
|
||||
LoadingPic: {fileID: 0}
|
||||
TechPool: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f00000010000000110000001200000013000000140000001500000016000000170000001800000019000000
|
||||
TechStart: 0000000015000000
|
||||
Color: {r: 0.2509804, g: 0.36078432, b: 0.49803922, a: 1}
|
||||
@ -188,6 +193,7 @@ MonoBehaviour:
|
||||
LeaderAvatar: {fileID: 21300000, guid: 97a1cd5a837d3e84f9adca403b2b4ee7, type: 3}
|
||||
WinPic: {fileID: 0}
|
||||
LosePic: {fileID: 0}
|
||||
LoadingPic: {fileID: 0}
|
||||
TechPool: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f00000010000000110000001200000013000000140000001500000016000000170000001800000019000000
|
||||
TechStart: 0000000012000000
|
||||
Color: {r: 0.5372549, g: 0.16078432, b: 0.18039216, a: 1}
|
||||
@ -222,6 +228,7 @@ MonoBehaviour:
|
||||
LeaderAvatar: {fileID: 21300000, guid: 48b938f7b519b294bac8b6ae81249bcb, type: 3}
|
||||
WinPic: {fileID: 0}
|
||||
LosePic: {fileID: 0}
|
||||
LoadingPic: {fileID: 0}
|
||||
TechPool: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f00000010000000110000001200000013000000140000001500000016000000170000001800000019000000
|
||||
TechStart: 0000000005000000
|
||||
Color: {r: 0.16470589, g: 0.24313726, b: 0.5019608, a: 1}
|
||||
@ -253,6 +260,7 @@ MonoBehaviour:
|
||||
LeaderAvatar: {fileID: 21300000, guid: 18aa3c46d044a164bad99019576dc349, type: 3}
|
||||
WinPic: {fileID: 0}
|
||||
LosePic: {fileID: 0}
|
||||
LoadingPic: {fileID: 0}
|
||||
TechPool: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f00000010000000110000001200000013000000140000001500000016000000170000001800000019000000
|
||||
TechStart: 0000000013000000
|
||||
Color: {r: 0.3647059, g: 0.23921569, b: 0.50980395, a: 1}
|
||||
@ -284,6 +292,7 @@ MonoBehaviour:
|
||||
LeaderAvatar: {fileID: 21300000, guid: cc7120c361939b344ab374c9d39c4c42, type: 3}
|
||||
WinPic: {fileID: 0}
|
||||
LosePic: {fileID: 0}
|
||||
LoadingPic: {fileID: 0}
|
||||
TechPool: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f00000010000000110000001200000013000000140000001500000016000000170000001800000019000000
|
||||
TechStart: 00000000
|
||||
Color: {r: 0.6, g: 0.5, b: 0.2, a: 1}
|
||||
@ -306,6 +315,7 @@ MonoBehaviour:
|
||||
LeaderAvatar: {fileID: 21300000, guid: 5d2bda6ce5113ea4b81ba02dc58f8aea, type: 3}
|
||||
WinPic: {fileID: 0}
|
||||
LosePic: {fileID: 0}
|
||||
LoadingPic: {fileID: 0}
|
||||
TechPool: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f00000010000000110000001200000013000000140000001500000016000000170000001800000019000000
|
||||
TechStart: 00000000
|
||||
Color: {r: 0.2, g: 0.6, b: 0.3, a: 1}
|
||||
@ -328,6 +338,7 @@ MonoBehaviour:
|
||||
LeaderAvatar: {fileID: 21300000, guid: b357988d162ecc44ca823c824c158b4a, type: 3}
|
||||
WinPic: {fileID: 0}
|
||||
LosePic: {fileID: 0}
|
||||
LoadingPic: {fileID: 0}
|
||||
TechPool: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f00000010000000110000001200000013000000140000001500000016000000170000001800000019000000
|
||||
TechStart: 00000000
|
||||
Color: {r: 0.7, g: 0.55, b: 0.1, a: 1}
|
||||
@ -350,6 +361,7 @@ MonoBehaviour:
|
||||
LeaderAvatar: {fileID: 21300000, guid: f59755f8786d1ba4682447312cecca31, type: 3}
|
||||
WinPic: {fileID: 0}
|
||||
LosePic: {fileID: 0}
|
||||
LoadingPic: {fileID: 0}
|
||||
TechPool: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f00000010000000110000001200000013000000140000001500000016000000170000001800000019000000
|
||||
TechStart: 00000000
|
||||
Color: {r: 0.3, g: 0.4, b: 0.7, a: 1}
|
||||
@ -372,6 +384,7 @@ MonoBehaviour:
|
||||
LeaderAvatar: {fileID: 21300000, guid: 2f6f77983db423a44a43017c5d344334, type: 3}
|
||||
WinPic: {fileID: 0}
|
||||
LosePic: {fileID: 0}
|
||||
LoadingPic: {fileID: 0}
|
||||
TechPool: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f00000010000000110000001200000013000000140000001500000016000000170000001800000019000000
|
||||
TechStart: 00000000
|
||||
Color: {r: 0.5, g: 0.3, b: 0.15, a: 1}
|
||||
@ -394,6 +407,7 @@ MonoBehaviour:
|
||||
LeaderAvatar: {fileID: 21300000, guid: 414d88f99bd80bd4d9ab0a38c270ab7a, type: 3}
|
||||
WinPic: {fileID: 0}
|
||||
LosePic: {fileID: 0}
|
||||
LoadingPic: {fileID: 0}
|
||||
TechPool: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f00000010000000110000001200000013000000140000001500000016000000170000001800000019000000
|
||||
TechStart: 00000000
|
||||
Color: {r: 0.6, g: 0.15, b: 0.15, a: 1}
|
||||
@ -416,6 +430,7 @@ MonoBehaviour:
|
||||
LeaderAvatar: {fileID: 21300000, guid: 515188a2ccc6f5244bea5da674ac6b18, type: 3}
|
||||
WinPic: {fileID: 0}
|
||||
LosePic: {fileID: 0}
|
||||
LoadingPic: {fileID: 0}
|
||||
TechPool: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f00000010000000110000001200000013000000140000001500000016000000170000001800000019000000
|
||||
TechStart: 00000000
|
||||
Color: {r: 0.7, g: 0.5, b: 0, a: 1}
|
||||
@ -438,6 +453,7 @@ MonoBehaviour:
|
||||
LeaderAvatar: {fileID: 21300000, guid: 90007834a60bd894c9991def041737fc, type: 3}
|
||||
WinPic: {fileID: 0}
|
||||
LosePic: {fileID: 0}
|
||||
LoadingPic: {fileID: 0}
|
||||
TechPool: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f00000010000000110000001200000013000000140000001500000016000000170000001800000019000000
|
||||
TechStart: 00000000
|
||||
Color: {r: 0.35, g: 0.25, b: 0.15, a: 1}
|
||||
@ -461,6 +477,7 @@ MonoBehaviour:
|
||||
LeaderAvatar: {fileID: 21300000, guid: 8e0829a2987fe7d43adda0571e0e79af, type: 3}
|
||||
WinPic: {fileID: 0}
|
||||
LosePic: {fileID: 0}
|
||||
LoadingPic: {fileID: 0}
|
||||
TechPool: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f00000010000000110000001200000013000000140000001500000016000000170000001800000019000000
|
||||
TechStart: 00000000
|
||||
Color: {r: 0.1, g: 0.4, b: 0.3, a: 1}
|
||||
|
||||
@ -207,7 +207,7 @@ MonoBehaviour:
|
||||
TechTreeCircleViewType: 14
|
||||
- TechType: 24
|
||||
TechName: 1459
|
||||
Description: 1385
|
||||
Description: 19875
|
||||
icon: {fileID: 0}
|
||||
CostLevel: 3
|
||||
FatherTechList: 160000002a000000
|
||||
|
||||
@ -34,7 +34,7 @@ MonoBehaviour:
|
||||
- GiantType: 6
|
||||
UpgradeText: 2470
|
||||
- GiantType: 7
|
||||
UpgradeText: 2455
|
||||
UpgradeText: 19876
|
||||
- GiantType: 8
|
||||
UpgradeText: 17247
|
||||
- GiantType: 9
|
||||
|
||||
@ -8318,7 +8318,7 @@ MonoBehaviour:
|
||||
MoveRange: 1
|
||||
AttackRange: 2
|
||||
Cost: 0
|
||||
Skills: 020000000300000063000000640000000d000000
|
||||
Skills: 02000000030000000d000000
|
||||
Sprite: {fileID: 21300000, guid: 3b3b6787cac0d204098a5bc6036471e5, type: 3}
|
||||
IsSpriteVarient: 0
|
||||
SpriteList: []
|
||||
|
||||
@ -12,8 +12,13 @@ MonoBehaviour:
|
||||
m_Script: {fileID: 11500000, guid: c659b850b20e460f866ed3f696be406b, type: 3}
|
||||
m_Name: VersionConfig
|
||||
m_EditorClassIdentifier:
|
||||
CurVersionId: 70107
|
||||
CurVersionId: 70108
|
||||
Versions:
|
||||
- MajorVersion: 0
|
||||
MinorVersion: 7
|
||||
PatchVersion: 1
|
||||
Description: 19873
|
||||
FourthVersion: 8
|
||||
- MajorVersion: 0
|
||||
MinorVersion: 7
|
||||
PatchVersion: 1
|
||||
@ -222,7 +227,7 @@ MonoBehaviour:
|
||||
- MajorVersion: 0
|
||||
MinorVersion: 4
|
||||
PatchVersion: 0
|
||||
Description: 2199
|
||||
Description: 19871
|
||||
FourthVersion: 0
|
||||
- MajorVersion: 0
|
||||
MinorVersion: 3
|
||||
|
||||
@ -165,6 +165,160 @@ MonoBehaviour:
|
||||
LineSpacing: 0
|
||||
ApplyParagraphSpacing: 0
|
||||
ParagraphSpacing: 0
|
||||
--- !u!1 &1522951267137730607
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 7473351570879035700}
|
||||
- component: {fileID: 9086487857667459004}
|
||||
- component: {fileID: 2783927692504854789}
|
||||
- component: {fileID: -8113348313184555685}
|
||||
m_Layer: 5
|
||||
m_Name: Text
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &7473351570879035700
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1522951267137730607}
|
||||
m_LocalRotation: {x: -0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: -1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 8559345807390343590}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0.5}
|
||||
m_AnchorMax: {x: 0, y: 0.5}
|
||||
m_AnchoredPosition: {x: 50.333008, y: -0.17298126}
|
||||
m_SizeDelta: {x: 75.3158, y: 46.6237}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &9086487857667459004
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1522951267137730607}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!114 &2783927692504854789
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1522951267137730607}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Material: {fileID: 0}
|
||||
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_RaycastTarget: 0
|
||||
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||
m_Maskable: 1
|
||||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
m_text: "AI\u63A5\u7BA1"
|
||||
m_isRightToLeft: 0
|
||||
m_fontAsset: {fileID: 11400000, guid: ce4904f8ddac15944907907115531ad5, type: 2}
|
||||
m_sharedMaterial: {fileID: 1214840240034325189, guid: ce4904f8ddac15944907907115531ad5, type: 2}
|
||||
m_fontSharedMaterials: []
|
||||
m_fontMaterial: {fileID: 0}
|
||||
m_fontMaterials: []
|
||||
m_fontColor32:
|
||||
serializedVersion: 2
|
||||
rgba: 4285151031
|
||||
m_fontColor: {r: 0.21568629, g: 0.21568629, b: 0.4156863, a: 1}
|
||||
m_enableVertexGradient: 0
|
||||
m_colorMode: 3
|
||||
m_fontColorGradient:
|
||||
topLeft: {r: 1, g: 1, b: 1, a: 1}
|
||||
topRight: {r: 1, g: 1, b: 1, a: 1}
|
||||
bottomLeft: {r: 1, g: 1, b: 1, a: 1}
|
||||
bottomRight: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_fontColorGradientPreset: {fileID: 0}
|
||||
m_spriteAsset: {fileID: 0}
|
||||
m_tintAllSprites: 0
|
||||
m_StyleSheet: {fileID: 0}
|
||||
m_TextStyleHashCode: -1183493901
|
||||
m_overrideHtmlColors: 0
|
||||
m_faceColor:
|
||||
serializedVersion: 2
|
||||
rgba: 4294967295
|
||||
m_fontSize: 24
|
||||
m_fontSizeBase: 20
|
||||
m_fontWeight: 400
|
||||
m_enableAutoSizing: 1
|
||||
m_fontSizeMin: 12
|
||||
m_fontSizeMax: 24
|
||||
m_fontStyle: 0
|
||||
m_HorizontalAlignment: 2
|
||||
m_VerticalAlignment: 512
|
||||
m_textAlignment: 65535
|
||||
m_characterSpacing: 0
|
||||
m_wordSpacing: 0
|
||||
m_lineSpacing: 0
|
||||
m_lineSpacingMax: 0
|
||||
m_paragraphSpacing: 0
|
||||
m_charWidthMaxAdj: 0
|
||||
m_enableWordWrapping: 0
|
||||
m_wordWrappingRatios: 0.4
|
||||
m_overflowMode: 0
|
||||
m_linkedTextComponent: {fileID: 0}
|
||||
parentLinkedComponent: {fileID: 0}
|
||||
m_enableKerning: 1
|
||||
m_enableExtraPadding: 0
|
||||
checkPaddingRequired: 0
|
||||
m_isRichText: 1
|
||||
m_parseCtrlCharacters: 1
|
||||
m_isOrthographic: 1
|
||||
m_isCullingEnabled: 0
|
||||
m_horizontalMapping: 0
|
||||
m_verticalMapping: 0
|
||||
m_uvLineOffset: 0
|
||||
m_geometrySortingOrder: 0
|
||||
m_IsTextObjectScaleStatic: 0
|
||||
m_VertexBufferAutoSizeReduction: 0
|
||||
m_useMaxVisibleDescender: 1
|
||||
m_pageToDisplay: 1
|
||||
m_margin: {x: 0, y: 0, z: 0, w: 0}
|
||||
m_isUsingLegacyAnimationComponent: 0
|
||||
m_isVolumetricText: 0
|
||||
m_hasFontAssetChanged: 0
|
||||
m_baseMaterial: {fileID: 0}
|
||||
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
|
||||
--- !u!114 &-8113348313184555685
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1522951267137730607}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 6b27f832d22e4a8d916272b644937774, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
Ban: 0
|
||||
NoExport: 0
|
||||
FontBan: 0
|
||||
Preset: 0
|
||||
ID: 19877
|
||||
FontID: 0
|
||||
TextCfg: []
|
||||
--- !u!1 &1570001588528785164
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@ -532,6 +686,242 @@ RectTransform:
|
||||
m_AnchoredPosition: {x: 137.90414, y: -0.24505043}
|
||||
m_SizeDelta: {x: 100.10031, y: 46.624}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!1 &4824967019264552920
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 8559345807390343590}
|
||||
- component: {fileID: 8677891711066743730}
|
||||
- component: {fileID: 1456049277004277771}
|
||||
- component: {fileID: 5994108288535502174}
|
||||
- component: {fileID: 4651481834435434431}
|
||||
- component: {fileID: 6773328190377348118}
|
||||
m_Layer: 5
|
||||
m_Name: AIButton
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &8559345807390343590
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4824967019264552920}
|
||||
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: -1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children:
|
||||
- {fileID: 7473351570879035700}
|
||||
m_Father: {fileID: 2648893221010339226}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 0, y: 0}
|
||||
m_AnchoredPosition: {x: 621, y: -1.9377441}
|
||||
m_SizeDelta: {x: 108.1629, y: 55.55}
|
||||
m_Pivot: {x: 0, y: 0}
|
||||
--- !u!222 &8677891711066743730
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4824967019264552920}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!114 &1456049277004277771
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4824967019264552920}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Material: {fileID: 0}
|
||||
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_RaycastTarget: 1
|
||||
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||
m_Maskable: 1
|
||||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
m_Sprite: {fileID: 21300000, guid: df39380aaef39404eaf3e0e9183c785c, type: 3}
|
||||
m_Type: 1
|
||||
m_PreserveAspect: 1
|
||||
m_FillCenter: 1
|
||||
m_FillMethod: 4
|
||||
m_FillAmount: 1
|
||||
m_FillClockwise: 1
|
||||
m_FillOrigin: 0
|
||||
m_UseSpriteMesh: 0
|
||||
m_PixelsPerUnitMultiplier: 1.5
|
||||
--- !u!114 &5994108288535502174
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4824967019264552920}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Navigation:
|
||||
m_Mode: 3
|
||||
m_WrapAround: 0
|
||||
m_SelectOnUp: {fileID: 0}
|
||||
m_SelectOnDown: {fileID: 0}
|
||||
m_SelectOnLeft: {fileID: 0}
|
||||
m_SelectOnRight: {fileID: 0}
|
||||
m_Transition: 1
|
||||
m_Colors:
|
||||
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
|
||||
m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
|
||||
m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
|
||||
m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
|
||||
m_ColorMultiplier: 1
|
||||
m_FadeDuration: 0.1
|
||||
m_SpriteState:
|
||||
m_HighlightedSprite: {fileID: 0}
|
||||
m_PressedSprite: {fileID: 0}
|
||||
m_SelectedSprite: {fileID: 0}
|
||||
m_DisabledSprite: {fileID: 0}
|
||||
m_AnimationTriggers:
|
||||
m_NormalTrigger: Normal
|
||||
m_HighlightedTrigger: Highlighted
|
||||
m_PressedTrigger: Pressed
|
||||
m_SelectedTrigger: Selected
|
||||
m_DisabledTrigger: Disabled
|
||||
m_Interactable: 1
|
||||
m_TargetGraphic: {fileID: 1456049277004277771}
|
||||
m_OnClick:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
--- !u!82 &4651481834435434431
|
||||
AudioSource:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4824967019264552920}
|
||||
m_Enabled: 1
|
||||
serializedVersion: 4
|
||||
OutputAudioMixerGroup: {fileID: 0}
|
||||
m_audioClip: {fileID: 0}
|
||||
m_PlayOnAwake: 1
|
||||
m_Volume: 1
|
||||
m_Pitch: 1
|
||||
Loop: 0
|
||||
Mute: 0
|
||||
Spatialize: 0
|
||||
SpatializePostEffects: 0
|
||||
Priority: 128
|
||||
DopplerLevel: 1
|
||||
MinDistance: 1
|
||||
MaxDistance: 500
|
||||
Pan2D: 0
|
||||
rolloffMode: 0
|
||||
BypassEffects: 0
|
||||
BypassListenerEffects: 0
|
||||
BypassReverbZones: 0
|
||||
rolloffCustomCurve:
|
||||
serializedVersion: 2
|
||||
m_Curve:
|
||||
- serializedVersion: 3
|
||||
time: 0
|
||||
value: 1
|
||||
inSlope: 0
|
||||
outSlope: 0
|
||||
tangentMode: 0
|
||||
weightedMode: 0
|
||||
inWeight: 0.33333334
|
||||
outWeight: 0.33333334
|
||||
- serializedVersion: 3
|
||||
time: 1
|
||||
value: 0
|
||||
inSlope: 0
|
||||
outSlope: 0
|
||||
tangentMode: 0
|
||||
weightedMode: 0
|
||||
inWeight: 0.33333334
|
||||
outWeight: 0.33333334
|
||||
m_PreInfinity: 2
|
||||
m_PostInfinity: 2
|
||||
m_RotationOrder: 4
|
||||
panLevelCustomCurve:
|
||||
serializedVersion: 2
|
||||
m_Curve:
|
||||
- serializedVersion: 3
|
||||
time: 0
|
||||
value: 0
|
||||
inSlope: 0
|
||||
outSlope: 0
|
||||
tangentMode: 0
|
||||
weightedMode: 0
|
||||
inWeight: 0.33333334
|
||||
outWeight: 0.33333334
|
||||
m_PreInfinity: 2
|
||||
m_PostInfinity: 2
|
||||
m_RotationOrder: 4
|
||||
spreadCustomCurve:
|
||||
serializedVersion: 2
|
||||
m_Curve:
|
||||
- serializedVersion: 3
|
||||
time: 0
|
||||
value: 0
|
||||
inSlope: 0
|
||||
outSlope: 0
|
||||
tangentMode: 0
|
||||
weightedMode: 0
|
||||
inWeight: 0.33333334
|
||||
outWeight: 0.33333334
|
||||
m_PreInfinity: 2
|
||||
m_PostInfinity: 2
|
||||
m_RotationOrder: 4
|
||||
reverbZoneMixCustomCurve:
|
||||
serializedVersion: 2
|
||||
m_Curve:
|
||||
- serializedVersion: 3
|
||||
time: 0
|
||||
value: 1
|
||||
inSlope: 0
|
||||
outSlope: 0
|
||||
tangentMode: 0
|
||||
weightedMode: 0
|
||||
inWeight: 0.33333334
|
||||
outWeight: 0.33333334
|
||||
m_PreInfinity: 2
|
||||
m_PostInfinity: 2
|
||||
m_RotationOrder: 4
|
||||
--- !u!114 &6773328190377348118
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4824967019264552920}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 33d75335a9dad784a91baba5578371fb, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
hoverSound: {fileID: 0}
|
||||
targetScale: 1.1
|
||||
clickSound: {fileID: 0}
|
||||
pressScale: 0.8
|
||||
scaleDuration: 0.1
|
||||
--- !u!1 &5152828750600041617
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@ -1188,6 +1578,7 @@ RectTransform:
|
||||
- {fileID: 2997926022526445556}
|
||||
- {fileID: 8799479350835072136}
|
||||
- {fileID: 6312225134850320022}
|
||||
- {fileID: 8559345807390343590}
|
||||
m_Father: {fileID: 0}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
|
||||
@ -212,6 +212,7 @@ RectTransform:
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children:
|
||||
- {fileID: 3081731879405435456}
|
||||
- {fileID: 7704445013793668165}
|
||||
m_Father: {fileID: 0}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
@ -318,6 +319,7 @@ MonoBehaviour:
|
||||
m_EditorClassIdentifier:
|
||||
_showAnimationClip: {fileID: 0}
|
||||
_hideAnimationClip: {fileID: 0}
|
||||
LoadingPic: {fileID: 7961422189072952537}
|
||||
--- !u!114 &2620541457959878801
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
@ -335,3 +337,78 @@ MonoBehaviour:
|
||||
AutoGameObjectList: []
|
||||
ValueList: []
|
||||
ClassName:
|
||||
--- !u!1 &6701509167862426551
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 7704445013793668165}
|
||||
- component: {fileID: 7895532281813847256}
|
||||
- component: {fileID: 7961422189072952537}
|
||||
m_Layer: 6
|
||||
m_Name: LoadingPic
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &7704445013793668165
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 6701509167862426551}
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 4059166676996300899}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0.5, y: 0.5}
|
||||
m_AnchorMax: {x: 0.5, y: 0.5}
|
||||
m_AnchoredPosition: {x: 610.92, y: -127}
|
||||
m_SizeDelta: {x: 698.1676, y: 698.1676}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &7895532281813847256
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 6701509167862426551}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!114 &7961422189072952537
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 6701509167862426551}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Material: {fileID: 0}
|
||||
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_RaycastTarget: 1
|
||||
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||
m_Maskable: 1
|
||||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
m_Sprite: {fileID: 21300000, guid: 4ff7d6f0abd12af468b870f0f096fb65, type: 3}
|
||||
m_Type: 0
|
||||
m_PreserveAspect: 1
|
||||
m_FillCenter: 1
|
||||
m_FillMethod: 4
|
||||
m_FillAmount: 1
|
||||
m_FillClockwise: 1
|
||||
m_FillOrigin: 0
|
||||
m_UseSpriteMesh: 0
|
||||
m_PixelsPerUnitMultiplier: 1
|
||||
|
||||
@ -5202,7 +5202,7 @@ MonoBehaviour:
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Material: {fileID: 0}
|
||||
m_Color: {r: 0.33962262, g: 0.33962262, b: 0.33962262, a: 0.7490196}
|
||||
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_RaycastTarget: 0
|
||||
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||
m_Maskable: 1
|
||||
@ -17486,7 +17486,7 @@ MonoBehaviour:
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Material: {fileID: 0}
|
||||
m_Color: {r: 0.33962262, g: 0.33962262, b: 0.33962262, a: 0.7490196}
|
||||
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_RaycastTarget: 0
|
||||
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||
m_Maskable: 1
|
||||
|
||||
BIN
Unity/Assets/Resources/TH1UI/Notify/Moment/kaguya_loading.png
Normal file
BIN
Unity/Assets/Resources/TH1UI/Notify/Moment/kaguya_loading.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 727 KiB |
@ -0,0 +1,114 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ae35aa919eafda946a4120d314cb46af
|
||||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 13
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
sRGBTexture: 1
|
||||
linearTexture: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapsPreserveCoverage: 0
|
||||
alphaTestReferenceValue: 0.5
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
flipGreenChannel: 0
|
||||
isReadable: 0
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
vTOnly: 0
|
||||
ignoreMipmapLimit: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 1
|
||||
aniso: 1
|
||||
mipBias: 0
|
||||
wrapU: 1
|
||||
wrapV: 1
|
||||
wrapW: 1
|
||||
nPOTScale: 0
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 1
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot: {x: 0.5, y: 0.5}
|
||||
spritePixelsToUnits: 100
|
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||
spriteGenerateFallbackPhysicsShape: 1
|
||||
alphaUsage: 1
|
||||
alphaIsTransparency: 1
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 8
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
flipbookRows: 1
|
||||
flipbookColumns: 1
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
ignorePngGamma: 0
|
||||
applyGammaDecoding: 0
|
||||
swizzle: 50462976
|
||||
cookieLightType: 0
|
||||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
ignorePlatformSupport: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Standalone
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
ignorePlatformSupport: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID: 5e97eb03825dee720800000000000000
|
||||
internalID: 0
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
nameFileIdTable: {}
|
||||
mipmapLimitGroupName:
|
||||
pSDRemoveMatte: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
BIN
Unity/Assets/Resources/TH1UI/Notify/Moment/kanako_loading.png
Normal file
BIN
Unity/Assets/Resources/TH1UI/Notify/Moment/kanako_loading.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 597 KiB |
@ -0,0 +1,114 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c474ca89c031d3a41bbbd4f145cb03b1
|
||||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 13
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
sRGBTexture: 1
|
||||
linearTexture: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapsPreserveCoverage: 0
|
||||
alphaTestReferenceValue: 0.5
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
flipGreenChannel: 0
|
||||
isReadable: 0
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
vTOnly: 0
|
||||
ignoreMipmapLimit: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 1
|
||||
aniso: 1
|
||||
mipBias: 0
|
||||
wrapU: 1
|
||||
wrapV: 1
|
||||
wrapW: 1
|
||||
nPOTScale: 0
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 1
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot: {x: 0.5, y: 0.5}
|
||||
spritePixelsToUnits: 100
|
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||
spriteGenerateFallbackPhysicsShape: 1
|
||||
alphaUsage: 1
|
||||
alphaIsTransparency: 1
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 8
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
flipbookRows: 1
|
||||
flipbookColumns: 1
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
ignorePngGamma: 0
|
||||
applyGammaDecoding: 0
|
||||
swizzle: 50462976
|
||||
cookieLightType: 0
|
||||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
ignorePlatformSupport: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Standalone
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
ignorePlatformSupport: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID: 5e97eb03825dee720800000000000000
|
||||
internalID: 0
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
nameFileIdTable: {}
|
||||
mipmapLimitGroupName:
|
||||
pSDRemoveMatte: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
BIN
Unity/Assets/Resources/TH1UI/Notify/Moment/remilia_loading.png
Normal file
BIN
Unity/Assets/Resources/TH1UI/Notify/Moment/remilia_loading.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 631 KiB |
@ -0,0 +1,114 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 4ff7d6f0abd12af468b870f0f096fb65
|
||||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 13
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
sRGBTexture: 1
|
||||
linearTexture: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapsPreserveCoverage: 0
|
||||
alphaTestReferenceValue: 0.5
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
flipGreenChannel: 0
|
||||
isReadable: 0
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
vTOnly: 0
|
||||
ignoreMipmapLimit: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 1
|
||||
aniso: 1
|
||||
mipBias: 0
|
||||
wrapU: 1
|
||||
wrapV: 1
|
||||
wrapW: 1
|
||||
nPOTScale: 0
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 1
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot: {x: 0.5, y: 0.5}
|
||||
spritePixelsToUnits: 100
|
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||
spriteGenerateFallbackPhysicsShape: 1
|
||||
alphaUsage: 1
|
||||
alphaIsTransparency: 1
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 8
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
flipbookRows: 1
|
||||
flipbookColumns: 1
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
ignorePngGamma: 0
|
||||
applyGammaDecoding: 0
|
||||
swizzle: 50462976
|
||||
cookieLightType: 0
|
||||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
ignorePlatformSupport: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Standalone
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
ignorePlatformSupport: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID: 5e97eb03825dee720800000000000000
|
||||
internalID: 0
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
nameFileIdTable: {}
|
||||
mipmapLimitGroupName:
|
||||
pSDRemoveMatte: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
BIN
Unity/Assets/Resources/TH1UI/Notify/Moment/satori_Loading.png
Normal file
BIN
Unity/Assets/Resources/TH1UI/Notify/Moment/satori_Loading.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 470 KiB |
@ -0,0 +1,114 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0282fc28d8d088c408793e337dc5ab9f
|
||||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 13
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
sRGBTexture: 1
|
||||
linearTexture: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapsPreserveCoverage: 0
|
||||
alphaTestReferenceValue: 0.5
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
flipGreenChannel: 0
|
||||
isReadable: 0
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
vTOnly: 0
|
||||
ignoreMipmapLimit: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 1
|
||||
aniso: 1
|
||||
mipBias: 0
|
||||
wrapU: 1
|
||||
wrapV: 1
|
||||
wrapW: 1
|
||||
nPOTScale: 0
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 1
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot: {x: 0.5, y: 0.5}
|
||||
spritePixelsToUnits: 100
|
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||
spriteGenerateFallbackPhysicsShape: 1
|
||||
alphaUsage: 1
|
||||
alphaIsTransparency: 1
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 8
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
flipbookRows: 1
|
||||
flipbookColumns: 1
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
ignorePngGamma: 0
|
||||
applyGammaDecoding: 0
|
||||
swizzle: 50462976
|
||||
cookieLightType: 0
|
||||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
ignorePlatformSupport: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Standalone
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
ignorePlatformSupport: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID: 5e97eb03825dee720800000000000000
|
||||
internalID: 0
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
nameFileIdTable: {}
|
||||
mipmapLimitGroupName:
|
||||
pSDRemoveMatte: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -168,14 +168,15 @@ namespace TH1_Anim.Fragments
|
||||
if (progressTime >= _step2_time && !_step2_show)
|
||||
{
|
||||
_step2_show = true;
|
||||
Data.UnitRenderer?.InstantUpdateUnit(true);
|
||||
//先同步位置,避免在过期格子上闪现
|
||||
Data.UnitRenderer?.InstantUpdateUnitPos();
|
||||
//再按视野判定显隐+刷新外观;视野内时会自行SetActive(true),视野外保持隐藏
|
||||
//不能再调用InstantShow()无条件SetActive(true),否则联机时敌方在迷雾中也会看到瞬移目标
|
||||
Data.UnitRenderer?.InstantUpdateUnit(true);
|
||||
//刷新目标城市的状态(比如占领城市)
|
||||
//终点格子播放fog和treasure
|
||||
Data.TargetGrid.Renderer(Main.MapData)?.PlayVFXInSight(new GridVFXParams(GridVFXType.Fog));
|
||||
Data.TargetGrid.Renderer(Main.MapData)?.PlayVFXInSight(new GridVFXParams(GridVFXType.Treasure));
|
||||
//角色突然出现
|
||||
Data.UnitRenderer.InstantShow();
|
||||
Data.TargetGrid.Renderer(Main.MapData)?.InstantUpdateGrid();
|
||||
//重置周围单位的高亮状态
|
||||
MapRenderer.Instance.UpdateAroundHighlight(Main.MapData,Data.TargetGrid);
|
||||
|
||||
@ -360,7 +360,7 @@ namespace TH1_Core.Events
|
||||
private void HandleShowUIOutsideLoading(ShowUIOutsideLoading evt)
|
||||
{
|
||||
if (UIManager.Instance.UIOutsideManager == null) return;
|
||||
UIManager.Instance.UIOutsideManager.StartLoadingTask();
|
||||
UIManager.Instance.UIOutsideManager.StartLoadingTask(evt);
|
||||
}
|
||||
|
||||
private void HandleHideUIOutsideLoading(HideUIOutsideLoading evt)
|
||||
|
||||
@ -160,7 +160,11 @@ namespace TH1_Core.Events
|
||||
|
||||
public struct HideUIOutsideSelect { }
|
||||
|
||||
public struct ShowUIOutsideLoading { }
|
||||
public struct ShowUIOutsideLoading
|
||||
{
|
||||
//可选:指定加载界面要展示的阵营,传入后会替换 LoadingPic
|
||||
public Empire? Empire;
|
||||
}
|
||||
|
||||
public struct HideUIOutsideLoading { }
|
||||
|
||||
|
||||
@ -28,6 +28,7 @@ using TH1_Logic.MatchConfig;
|
||||
using TH1_Logic.Net;
|
||||
using TH1_Logic.Steam;
|
||||
using TH1Renderer;
|
||||
using TH1_Renderer;
|
||||
using UnityEngine;
|
||||
using MemberInfo = TH1_Logic.Net.MemberInfo;
|
||||
|
||||
@ -235,6 +236,10 @@ namespace RuntimeData
|
||||
|
||||
public void ChangeByMapConfig(MapConfig other)
|
||||
{
|
||||
// [LimitsDebug] 追溯 MatchLimits 污染来源
|
||||
var thisLimitsStr = MatchLimits != null ? string.Join(",", MatchLimits) : "null";
|
||||
var otherLimitsStr = other?.MatchLimits != null ? string.Join(",", other.MatchLimits) : "null";
|
||||
UnityEngine.Debug.Log($"[LimitsDebug] ChangeByMapConfig BEFORE: this.MatchLimits=[{thisLimitsStr}] (count={MatchLimits?.Count ?? -1}) other.MatchLimits=[{otherLimitsStr}] (count={other?.MatchLimits?.Count ?? -1}) thisHash={GetHashCode()} otherHash={other?.GetHashCode()}\n{System.Environment.StackTrace}");
|
||||
if (other == null)
|
||||
{
|
||||
// 没有匹配到关卡配置时,回退为普通随机地图
|
||||
@ -568,6 +573,20 @@ namespace RuntimeData
|
||||
// 刷新所属城市的CityInfo(人口数变化)
|
||||
if (cityId != 0 && CityMap.GetCityById(cityId, out var cityData))
|
||||
cityData.CityInfoRenderer(this)?.InstantUpdateCityInfo();
|
||||
|
||||
// [Fix 2026/05/15] 视野外死亡的 UnitRenderer 孤儿兜底
|
||||
// 场景:AOE/溅射/远程等路径在视野外击杀单位时,调用方的 Die() 被 InMainSight 守卫跳过,
|
||||
// 数据层已 RemoveUnitData 但 ROUnitMap 中 UnitRenderer 残留 → 后续地块进入视野
|
||||
// 时由于 GameObject.SetActive 残留为 true 而显示出"尸体"。
|
||||
// 修复:只对"该格子不在玩家视野"路径兜底,视野内死亡仍走原 Fragment Die 流程,避免打断动画。
|
||||
if (this == Main.MapData && gridId != 0
|
||||
&& PlayerMap?.SelfPlayerData?.Sight != null
|
||||
&& !PlayerMap.SelfPlayerData.Sight.CheckIsInSight(gridId)
|
||||
&& MapRenderer.Instance != null
|
||||
&& MapRenderer.Instance.ROUnitMap.TryGetValue(unitData.Id, out var orphanRenderer))
|
||||
{
|
||||
orphanRenderer.Die();
|
||||
}
|
||||
}
|
||||
|
||||
//改变小兵到城市的所属关系
|
||||
|
||||
@ -282,6 +282,7 @@ public class PlayerInfo
|
||||
public Sprite LeaderAvatar;
|
||||
public Sprite WinPic;
|
||||
public Sprite LosePic;
|
||||
public Sprite LoadingPic;
|
||||
//public Sprite PopulationSprite;
|
||||
public List<TechType> TechPool = new List<TechType>();
|
||||
public List<TechType> TechStart = new List<TechType>();
|
||||
|
||||
@ -58,25 +58,16 @@ namespace TH1_UI.Controller.Interaction
|
||||
protected override void OnOpen()
|
||||
{
|
||||
base.OnOpen();
|
||||
// 检查暂存的参数是否存在且类型正确
|
||||
if (_openParameter is ShowUIOutsideSelect evt)
|
||||
//参数带 Empire 时切换加载图;没带就保持 prefab 上的默认 LoadingPic
|
||||
if (WindowScript == null) return;
|
||||
if (_openParameter is ShowUIOutsideLoading evt && evt.Empire.HasValue)
|
||||
{
|
||||
//_evt = evt;
|
||||
// 使用接收到的数据设置UI内容
|
||||
if (WindowScript != null)
|
||||
{
|
||||
//Param1 = cid Param2 = cityLv
|
||||
//WindowScript.SetContent(evt);
|
||||
}
|
||||
_evtShow = evt;
|
||||
WindowScript.SetEmpire(evt.Empire.Value);
|
||||
}
|
||||
else
|
||||
{
|
||||
// 如果没有参数或参数类型不符,可以提供默认内容或打印警告
|
||||
//Debug.LogWarning("[UIAnnounceMajorEventController] Opened without valid parameters.");
|
||||
if (WindowScript != null)
|
||||
{
|
||||
//WindowScript.SetContent("警告", "内容未提供");
|
||||
}
|
||||
WindowScript.ResetLoadingPic();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -91,7 +91,9 @@ namespace TH1_UI.Controller.Interaction
|
||||
|
||||
void _OnStartGameClick()
|
||||
{
|
||||
EventManager.Publish(new ShowUIOutsideLoading());
|
||||
//把玩家刚刚选中的阵营传给 Loading 界面,用于切换 LoadingPic
|
||||
var empire = WindowScript != null ? WindowScript.SelectedEmpire : default;
|
||||
EventManager.Publish(new ShowUIOutsideLoading { Empire = empire });
|
||||
float fadeout = ResourceCache.Instance.AnimCache.UICommonPanelFadeOut.length;
|
||||
float prepare = 2f;
|
||||
Timer.Instance.TimerRegister(this, () =>
|
||||
|
||||
@ -66,6 +66,12 @@ namespace TH1_UI.Core
|
||||
// 每回合自己 TurnStart 时按钮都被拦下来,表现为"轮到我但 NextTurn 不显示"。
|
||||
var settlementType = Main.MapData?.MatchSettlement?.SettlementType;
|
||||
var limits = Main.MapData?.MapConfig?.MatchLimits;
|
||||
// [LimitsDebug] 临时输出 limits 的具体内容
|
||||
if (limits != null && limits.Count > 0)
|
||||
{
|
||||
var limitsStr = string.Join(",", limits);
|
||||
UnityEngine.Debug.Log($"[LimitsDebug] ShowBottomBarNextTurn limits=[{limitsStr}] settlementType={settlementType} mapConfigHash={Main.MapData?.MapConfig?.GetHashCode()} levelConfig2Hash={TH1_Logic.MatchConfig.MatchConfigManager.Instance.GetMatchConfig(2)?.GetHashCode()}");
|
||||
}
|
||||
bool blocked = settlementType == MatchSettlementType.Tutor
|
||||
&& limits != null
|
||||
&& limits.Contains(MatchLimitType.PlayerCannotNextTurn);
|
||||
|
||||
@ -117,10 +117,20 @@ namespace TH1_UI.Core
|
||||
}
|
||||
|
||||
|
||||
public void StartLoadingTask()
|
||||
public void StartLoadingTask(ShowUIOutsideLoading? evt = null)
|
||||
{
|
||||
//loading结束后
|
||||
_loadingTask?.Execute(null);
|
||||
//evt 为空时直接 Execute(null),等价于原行为;非空时通过 OpenWithParam 透传给 Controller
|
||||
if (evt.HasValue)
|
||||
{
|
||||
_loadingTask = new UIOutsideTask(ViewControllerManager.UIOutsideLoadingController, evt.Value);
|
||||
_loadingTask.Execute(null);
|
||||
}
|
||||
else
|
||||
{
|
||||
_loadingTask = new UIOutsideTask(ViewControllerManager.UIOutsideLoadingController);
|
||||
_loadingTask.Execute(null);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -27,13 +27,47 @@ namespace TH1_UI.View.Outside
|
||||
public class UIOutsideLoadingView : Base.View
|
||||
{
|
||||
//public AnimancerComponent Animancer;
|
||||
|
||||
|
||||
//加载图:在 Inspector 中拖入;调用 SetEmpire 时会根据 PlayerDataAssets 的 LoadingPic 替换
|
||||
public Image LoadingPic;
|
||||
//保留 prefab 默认 Sprite,找不到目标阵营 LoadingPic 时回退
|
||||
private Sprite _defaultLoadingSprite;
|
||||
private bool _defaultLoadingSpriteCached;
|
||||
|
||||
//关闭时执行的委托
|
||||
public ViDelegateAssisstant.Dele OnBtnCloseClick;
|
||||
|
||||
|
||||
//开始游戏时执行的委托(目前委托内容就是执行controller的Close())
|
||||
public ViDelegateAssisstant.Dele OnStartGame;
|
||||
|
||||
/// <summary>
|
||||
/// 根据传入的 Empire 查 PlayerDataAssets.PlayerDataList,找到则替换 LoadingPic.sprite,找不到保留原图。
|
||||
/// </summary>
|
||||
public void SetEmpire(Empire empire)
|
||||
{
|
||||
if (LoadingPic == null) return;
|
||||
if (!_defaultLoadingSpriteCached)
|
||||
{
|
||||
_defaultLoadingSprite = LoadingPic.sprite;
|
||||
_defaultLoadingSpriteCached = true;
|
||||
}
|
||||
var assets = Table.Instance != null ? Table.Instance.PlayerDataAssets : null;
|
||||
if (assets == null) return;
|
||||
if (!assets.GetPlayerInfo(empire, out var info) || info == null) return;
|
||||
if (info.LoadingPic == null) return;
|
||||
LoadingPic.sprite = info.LoadingPic;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 还原为 prefab 上的默认 LoadingPic(若曾经被替换过)。
|
||||
/// </summary>
|
||||
public void ResetLoadingPic()
|
||||
{
|
||||
if (LoadingPic == null) return;
|
||||
if (_defaultLoadingSpriteCached)
|
||||
LoadingPic.sprite = _defaultLoadingSprite;
|
||||
}
|
||||
|
||||
/*public override void Show()
|
||||
{
|
||||
gameObject.SetActive(true);
|
||||
|
||||
@ -40,6 +40,8 @@ namespace TH1_UI.View.Outside
|
||||
public GameObject SelectList;
|
||||
private List<UIOutsideSelectAvatarMono> _monoList;
|
||||
private Empire _selectEmpire;
|
||||
//暴露当前选中的阵营,供 Controller 在开始游戏时传给 Loading 界面
|
||||
public Empire SelectedEmpire => _selectEmpire;
|
||||
|
||||
[Header("详细信息")]
|
||||
public RectTransform InfoGroup;
|
||||
|
||||
File diff suppressed because one or more lines are too long
486
Unity/CTH1TH1Toolsmultilingual_check_dump.txt
Normal file
486
Unity/CTH1TH1Toolsmultilingual_check_dump.txt
Normal file
@ -0,0 +1,486 @@
|
||||
== ID=1014 row=514 ==
|
||||
ZH: **<占领>**他人城市或村庄,是发展壮大的必要步骤。
|
||||
TW: **<佔領>**他人城市或村莊,是發展壯大的必要步驟。
|
||||
EN: **<Occupy>** enemy cities or villages is essential for growth and expansion.
|
||||
JP: 他者の**<占領>**や村をすることは、発展のために必要なステップである
|
||||
KR: 다른 세력의 도시나 마을을 **<점령>**하는 것은 발전과 성장에 필수적인 단계다.
|
||||
Note: HintDataAssets : HintDataList[1] : HintContent
|
||||
== ID=1155 row=585 ==
|
||||
ZH: 可以建造伐木场,或者清除树林
|
||||
TW: 可以建造伐木場,或者清除樹林
|
||||
EN: Allows building Logging Camps or clearing Forests
|
||||
JP: 製材所を建設可能、または森林を除去可能
|
||||
KR: 벌목장 건설 가능, 숲 제거 가능
|
||||
Note: TechDataAssets : TechList[17] : Description
|
||||
== ID=1158 row=588 ==
|
||||
ZH: 可以建造锯木厂,可以训练炮手。
|
||||
TW: 可以建造鋸木廠,可以訓練炮手。
|
||||
EN: Allows building Sawmills and training Cannoneers
|
||||
JP: 製材所を建設可能、砲手を生産可能
|
||||
KR: 제재소 건설 가능, 포병 훈련 가능
|
||||
Note: TechDataAssets : TechList[19] : Description
|
||||
== ID=1233 row=619 ==
|
||||
ZH: 在**<森林>**上建造**<伐木场>**,提供1点城市经验。注意,会清除森林中的动物。
|
||||
TW: 在**<森林>**上建造**<伐木場>**,提供1點城市經驗。注意,會清除森林中的動物。
|
||||
EN: Build **<Forest>** on **<Logging Camp>**, provides 1 City EXP. Note: Will remove animals in the forest
|
||||
JP: **<森林>**に**<伐採場>**を建設すると、都市経験値1を獲得。ただし、森林内の動物が除去される
|
||||
KR: **<숲>**에 **<벌목장>**을 건설하면 도시 경험치 1를 제공한다. 주의: 숲의 동물이 제거된다.
|
||||
Note: TechDataAssets : TechAtomList[43] : Desc
|
||||
== ID=1234 row=620 ==
|
||||
ZH: 在**<浅海>**建造**<港口>**,可提供1点城市经验。能够将普通单位转化为海上单位,同时能够建立**<海洋贸易通路>**。
|
||||
TW: 在**<淺海>**建造**<港口>**,可提供1點城市經驗。能夠將普通單位轉化為海上單位,同時能夠建立**<海洋貿易通路>**。
|
||||
EN: Build **<Water>** on **<Harbor>**, provides 1 City EXP. Enables Conversion of regular units into naval units, and allows establishing **<Ocean Trade Route>**
|
||||
JP: **<浅瀬>**に**<港>**を建設すると、都市経験値1を獲得。通常ユニットを海上ユニットに転化でき、**<海洋交易ルート>**を確立可能
|
||||
KR: **<천해>**에 **<항구>**를 건설하면 도시 경험치 1를 제공한다. 일반 유닛을 해상 유닛으로 전환할 수 있으며, **<해상 무역로>**를 구축할 수 있다.
|
||||
Note: TechDataAssets : TechAtomList[52] : Desc
|
||||
== ID=1235 row=621 ==
|
||||
ZH: 在**<浅海>**建造**<桥梁>**。可以构成**<贸易通路>**,并提供移动加成。
|
||||
TW: 在**<淺海>**建造**<橋樑>**。可以構成**<貿易通路>**,並提供移動加成。
|
||||
EN: Build **<Water>** on **<Bridge>**. Forms **<Trade Route>** and provides Movement bonus
|
||||
JP: **<浅瀬>**に**<橋>**を建設。**<交易ルート>**を構成し、移動ボーナスを提供
|
||||
KR: **<천해>**에 **<다리>**를 건설한다. **<무역로>**를 구성하며 이동 보너스를 제공한다.
|
||||
Note: ActionDataAssets : ActionList[17] : Desc
|
||||
== ID=1236 row=622 ==
|
||||
ZH: 在**<平原>**建造**<道路>**。可以构成**<贸易通路>**,并提供移动加成。
|
||||
TW: 在**<平原>**建造**<道路>**。可以構成**<貿易通路>**,並提供移動加成。
|
||||
EN: Build **<Plains>** on **<Road>**. Forms **<Trade Route>** and provides Movement bonus
|
||||
JP: **<平原>**に**<道路>**を建設。**<交易ルート>**を構成し、移動ボーナスを提供
|
||||
KR: **<평원>**에 **<도로>**를 건설한다. **<무역로>**를 구성하며 이동 보너스를 제공한다.
|
||||
Note: ActionDataAssets : ActionList[22] : Desc
|
||||
== ID=1250 row=630 ==
|
||||
ZH: 在**<平原>**上种植一片**<森林>**
|
||||
TW: 在**<平原>**上種植一片**<森林>**
|
||||
EN: Plant a **<Plains>** on **<Forest>**
|
||||
JP: **<平原>**に**<森林>**を植える
|
||||
KR: **<평원>**에 **<숲>**을 조성
|
||||
Note: TechDataAssets : TechAtomList[50] : Desc
|
||||
== ID=1503 row=720 ==
|
||||
ZH: 升级英雄神像,每回合提供更多英雄经验。
|
||||
TW: 升級英雄神像,每回合提供更多英雄經驗。
|
||||
EN: Level up hero shrines to provide more hero EXP per turn.
|
||||
JP: 英雄神像をし、より多くの英雄経験値を提供
|
||||
KR: 영웅 신상을 레벨 업하여 턴당 더 많은 영웅 경험치 제공.
|
||||
Note: ActionDataAssets : ActionList[63] : Desc
|
||||
== ID=1504 row=721 ==
|
||||
ZH: 将**<帆船>**进阶为**<突击艇>**。海上近战单位。拥有3移动力3攻击力3防御力和**<再动>**技能。
|
||||
TW: 將**<帆船>**升階為**<突擊艇>**。海上近戰單位。擁有3移動力3攻擊力3防禦力和**<再動>**技能。
|
||||
EN: Upgrades **<Sailboat>** to **<Assault Boat>**. Naval melee unit. Has 3 Movement, 3 Attack, 3 Defense, and **<Extra Turn>** ability.
|
||||
JP: **<帆船>**を**<突撃艇>**に進化。海上近接ユニット。**<再行動>**力3・力3・力3とスキルを持つ
|
||||
KR: **<범선>**을 **<돌격정>**으로 승급. 해상 근접 유닛. 이동력 3, 공격력 3, 방어력 3 및 **<재행동>** 스킬 보유.
|
||||
Note: TechDataAssets : TechAtomList[55] : Desc
|
||||
== ID=1506 row=722 ==
|
||||
ZH: 超强力综合单位。拥有40血量和5攻4防。
|
||||
TW: 超強力綜合單位。擁有40血量和5攻4防。
|
||||
EN: Super powerful all-around unit. Has 40 HP, 5 Attack and 4 Defense.
|
||||
JP: 超強力総合ユニット。HP40・力5・力4を持つ
|
||||
KR: 초강력 종합 유닛. HP 40, 공격력 5, 방어력 4 보유.
|
||||
Note: UnitTypeDataAssets : UnitTypeList[13] : Desc
|
||||
== ID=1508 row=724 ==
|
||||
ZH: 超强力海上综合单位。拥有40血量和4攻4防。
|
||||
TW: 超強力海上綜合單位。擁有40血量和4攻4防。
|
||||
EN: Super powerful naval all-around unit. Has 40 HP, 4 Attack and 4 Defense.
|
||||
JP: 超強力海上総合ユニット。HP40・力4・力4を持つ
|
||||
KR: 초강력 해상 종합 유닛. HP 40, 공격력 4, 방어력 4 보유.
|
||||
Note: UnitTypeDataAssets : UnitTypeList[126] : Desc
|
||||
== ID=2253 row=1202 ==
|
||||
ZH: 可以将**<庄稼>**改造为**<农田>**,可以在特殊的平原建造**<灌溉工程>**
|
||||
TW: 可以將**<莊稼>**改造為**<農田>**,可以在特殊的平原建造**<灌溉工程>**
|
||||
EN: Can convert **<Crops>** into **<Farm>**, and build **<Irrigation Project>** on special Plains
|
||||
JP: **<穀物>**を**<農地>**に改造でき、特殊な**<灌漑整備>**にを建設できる
|
||||
KR: **<곡물>**을 **<농지>**로 개조할 수 있으며, 특수 **<관개 공사>**에 를 건설할 수 있다
|
||||
Note: TechDataAssets : TechList[34] : Description
|
||||
== ID=2294 row=1225 ==
|
||||
ZH: 咲夜击杀单位时,可以再次进行移动并使用**<银之跳跃>**。
|
||||
TW: 咲夜擊殺單位時,可以再次進行移動並使用**<銀之跳躍>**。
|
||||
EN: When Sakuya defeats a unit, she can move again and use **<Silver Leap>**.
|
||||
JP: 咲夜がユニットを撃破した時、再度**<銀の跳躍>**しを使用できる
|
||||
KR: 사쿠야가 유닛을 처치 시, 다시 **<은의 도약>**하고 을 사용할 수 있다.
|
||||
Note: SkillDataAssets : SkillInfoList[95] : SkillDesc
|
||||
== ID=16652 row=1419 ==
|
||||
ZH: 将**<帆船>**进阶为**<远洋帆船>**。海上远程单位。拥有3移动力2射程和**<巡洋>****<再动>**技能。
|
||||
TW: 將**<帆船>**升階為**<遠洋帆船>**。海上遠端單位。擁有3移動力2射程和**<巡洋>****<再動>**技能。
|
||||
EN: Upgrade **<Sailboat>** to **<Sailing Ship>**. Naval ranged unit with 3 Movement, 2 Range, and **<Patrol>** **<Extra Turn>** abilities.
|
||||
JP: **<帆船>**を**<遠洋帆船>**に強化する。海上遠距離ユニット。**<巡航>**力3、**<再行動>**2、と再動スキルを持つ
|
||||
KR: **<범선>**을 **<원양 범선>**으로 진급시킨다. 해상 원거리 유닛. 3 이동력, 2 사거리를 가지며 **<순항>**과 **<재행동>** 스킬을 보유한다.
|
||||
Note: ActionDataAssets : ActionList[46] : Desc
|
||||
== ID=16654 row=1421 ==
|
||||
ZH: 建造贸易奇观,提供3点城市经验
|
||||
TW: 建造貿易奇觀,提供3點城市經驗
|
||||
EN: Build Trade Wonder, provides 3 City XP
|
||||
JP: の遺産を建設し、経験値3を獲得
|
||||
KR: 무역 유산 건설, 도시 경험치 3점 제공
|
||||
Note: TechDataAssets : TechAtomList[8] : Desc
|
||||
== ID=16672 row=1434 ==
|
||||
ZH: 古代世界最大、最著名的图书馆,建于托勒密王朝时期的埃及,旨在收藏天下所有知识。后因战火与政治动荡多次焚毁。提供3点城市经验。
|
||||
TW: 古代世界最大、最著名的圖書館,建於托勒密王朝時期的埃及,旨在收藏天下所有知識。後因戰火與政治動蕩多次焚燬。提供3點城市經驗。
|
||||
EN: The largest and most renowned library of the ancient world, built during Egypt's Ptolemaic dynasty to house all human knowledge. Repeatedly destroyed by war and political turmoil. Provides 3 City XP.
|
||||
JP: 古代世界最大かつ最も著名な図書館であり、プトレマイオス朝時代のに建設され、天下の全ての知識を収蔵することを目的としていた。後に戦火と政治的混乱により何度も焼失した。経験値3を提供
|
||||
KR: 고대 세계에서 가장 크고 유명한 도서관으로, 이집트 프톨레마이오스 왕조 시대에 세상의 모든 지식을 수집하고자 건설되었다. 이후 전쟁과 정치적 혼란으로 여러 차례 소실되었다. 도시 경험치 3점을 제공한다.
|
||||
Note: GridAndResourceDataAssets : WonderInfoList[1] : Desc
|
||||
== ID=16842 row=1547 ==
|
||||
ZH: **<后>**职阶英雄。 帝国的土著神。她扎根于帝国基盘的至深暗影中,遍布全境的赤口之祟正是她意志的延伸。
|
||||
TW: **<後>**職階英雄。 帝國的土著神。她紮根於帝國基盤的至深暗影中,遍佈全境的赤口之祟正是她意志的延伸。
|
||||
EN: **<Queen>** class hero. The Imperial Earth God. She is rooted in the deepest shadows of the Empire's foundation, with the crimson-mouthed calamities spreading across the land serving as extensions of her will
|
||||
JP: **<后>**クラスの英雄である。帝国の土着神。彼女は帝国の基盤を支える最深部の闇に根を下ろし、全土に広がる赤口の祟りこそが彼女の意志の延長である
|
||||
KR: **<후>** 클래스 영웅. 제국의 토착신. 제국 기반의 가장 깊은 어둠에 뿌리내렸으며, 전역에 퍼진 적구의 재앙은 그녀 의지의 연장이다.
|
||||
Note: UnitTypeDataAssets : UnitTypeList[78] : Desc
|
||||
== ID=17013 row=1698 ==
|
||||
ZH: 召唤御射宫司大人
|
||||
TW: 召喚禦射宮司大人
|
||||
EN: Summon Lord Mishot Gūji
|
||||
JP: 御射宮司様を召喚
|
||||
KR: 미샤구지님 소환
|
||||
Note: TechDataAssets : TechAtomList[89] : TechAtomName
|
||||
== ID=17009 row=1694 ==
|
||||
ZH: 召唤小恶魔祭司
|
||||
TW: 召喚小惡魔祭司
|
||||
EN: Summon Lesser Devil Priest
|
||||
JP: 小悪魔神官を召喚
|
||||
KR: 소악마 사제 소환
|
||||
Note: TechDataAssets : TechAtomList[87] : TechAtomName
|
||||
== ID=17010 row=1695 ==
|
||||
ZH: Lv.4以上城市升级时,可选择召唤帝国特色巨人单位**<小恶魔祭司>**,其猫神形态能够治疗友军,死亡后转化为狮神形态具备强大的杀伤力。与其他红魔馆英雄协同作战时,可被视作**<英雄单位>**触发相关特殊效果。
|
||||
TW: Lv.4以上城市升級時,可選擇召喚帝國特色巨人單位**<小惡魔祭司>**,其貓神形態能夠治療友軍,死亡後轉化為獅神形態具備強大的殺傷力。與其他紅魔館英雄協同作戰時,可被視作**<英雄單位>**觸發相關特殊效果。
|
||||
EN: When a Lv.4+ City levels up, you may choose to summon the Empire's unique Giant unit **<Lesser Demon Priest>**. Its cat-god form can Heal allies; upon death, it converts into lion-god form with devastating offensive power. When fighting alongside other Scarlet Devil Mansion heroes, it can be treated as a **<Hero Unit>** to trigger related special effects.
|
||||
JP: Lv.4以上の都市レベルアップ時、帝国特色巨人ユニット**<小悪魔神官>**を召喚可能。その猫神形態は味方を治療でき、死亡後は獅子神形態に転化し強大な殺傷力を持つ。他の紅魔館ヒーローと協同作戦時、**<ヒーローユニット>**とみなされ関連特殊効果を発動
|
||||
KR: Lv.4 이상 도시 레벨 업 시, 제국 특색 거인 유닛 **<소악마 사제>** 소환 선택 가능. 고양이신 형태로 아군을 치료하며, 사망 시 사자신 형태로 전환되어 강력한 살상력 보유. 다른 홍마관 영웅과 협동 작전 시 **<영웅 유닛>**으로 간주되어 관련 특수 효과 발동.
|
||||
Note: TechDataAssets : TechAtomList[87] : Desc
|
||||
== ID=17017 row=1701 ==
|
||||
ZH: 哼哼,不愧是我!
|
||||
TW: 哼哼,不愧是我!
|
||||
EN: Humph, as expected of me!
|
||||
JP: ふふん、流石はあたいね!
|
||||
KR: 흥흥, 역시 나야!
|
||||
Note: PlayerDataAssets : PlayerDataList[0] : WinChatBubble[0]
|
||||
== ID=17078 row=1744 ==
|
||||
ZH: ……用“魅力”交涉的女王??那真是找错人了呢……看在皇家图书馆的份上,我勉强接受。
|
||||
TW: ……用“魅力”交涉的女王??那真是找錯人了呢……看在皇家圖書館的份上,我勉強接受。
|
||||
EN: ...A "Queen" who negotiates with "charms"? You've come to the wrong person... Well, for the sake of the Royal Library, I shall reluctantly accept.
|
||||
JP: ……「カリスマ」で交渉する女王??それは相手を間違えているわね……紅魔館の図書室に免じて、渋々受け入れてあげるわ
|
||||
KR: ...‘매력’으로 교섭하는 여왕?? 사람을 잘못 찾아왔네... 로열 플레어 도서관의 체면을 봐서, 마지못해 수락할게.
|
||||
Note: LibraryDataAssets : LibraryGiantList[1] : Diag
|
||||
== ID=17245 row=1893 ==
|
||||
ZH: **<帝国的血之君王:蕾米莉亚·斯卡雷特>**<br> **<-------- Lv.1 -------->**<br> **<[基础属性]>**10HP/2攻/2防/1移动力/1射程/飞行<br> **<[能力:吸血鬼]>**攻击和反击时将30%的伤害值转化为生命值,在**<红雾领地>**上移动力+1<br> **<-------- Lv.2 -------->**<br> **<[基础属性]>**20HP/2攻/2防/2移动力/1射程<br> **<[能力:绯红魔法]>**1格范围内,己方单位受伤后,将其所在的地块转化为**<红雾领地>**<br> **<-------- Lv.3 -------->**<br> **<[基础属性]>**30HP/3攻/3防/2移动力/1射程<br> **<[能力:绯红帝国]>**主动技能:使得周围一格内的地块全部转化为红雾领地<br> **<------- Lv.4 -------->**<br> **<[基础属性]>**40HP/3攻/4防/2移动力/1射程<br> **<[能力:绯红魔法]>**能力获得强化,范围提升至2格<br> **<[能力:红色不夜城]>**主动技能(不消耗行动机会):吸收周围一格内所有红雾领地,每一格提供额外0.5攻击力,持续至本回合结束<br>
|
||||
TW: **<帝國的血之君王:蕾米莉亞·斯卡雷特>**<br> **<-------- Lv.1 -------->**<br> **<[基礎屬性]>**10HP/2攻/2防/1移動力/1射程/飛行<br> **<[能力:吸血鬼]>**攻擊和反擊時將30%的傷害值轉化為生命值,在**<紅霧領地>**上移動力+1<br> **<-------- Lv.2 -------->**<br> **<[基礎屬性]>**20HP/2攻/2防/2移動力/1射程<br> **<[能力:緋紅魔法]>**1格範圍內,己方單位受傷後,將其所在的地塊轉化為**<紅霧領地>**<br> **<-------- Lv.3 -------->**<br> **<[基礎屬性]>**30HP/3攻/3防/2移動力/1射程<br> **<[能力:緋紅帝國]>**主動技能:使得周圍一格內的地塊全部轉化為紅霧領地<br> **<------- Lv.4 -------->**<br> **<[基礎屬性]>**40HP/3攻/4防/2移動力/1射程<br> **<[能力:緋紅魔法]>**能力獲得強化,範圍提升至2格<br> **<[能力:紅色不夜城]>**主動技能(不消耗行動機會):吸收周圍一格內所有紅霧領地,每一格提供額外0.5攻擊力,持續至本回合結束<br>
|
||||
EN: **<Imperial Blood Monarch: Remilia Scarlet>**<br> **<-------- Lv.1 -------->**<br> **<[Base Attributes]>**10HP/2 Atk/2 Def/1 Movement/1 Range/Flying<br> **<[Ability: Vampire]>**Converts 30% of damage dealt on attack and counter-attack into HP. Movement +1 on **<Scarlet Mist Territory>**<br> **<-------- Lv.2 -------->**<br> **<[Base Attributes]>**20HP/2 Atk/2 Def/2 Movement/1 Range<br> **<[Ability: Scarlet Magic]>**When an allied unit within 1 tile takes damage, converts the tile it is on into **<Scarlet Mist Territory>**<br> **<-------- Lv.3 -------->**<br> **<[Base Attributes]>**30HP/3 Atk/3 Def/2 Movement/1 Range<br> **<[Ability: Scarlet Empire]>**Active Skill: Converts all tiles within 1 tile into Scarlet Mist Territory<br> **<------- Lv.4 -------->**<br> **<[Base Attributes]>**40HP/3 Atk/4 Def/2 Movement/1 Range<br> **<[Ability: Scarlet Magic]>**Ability is enhanced, range increases to 2 tiles<br> **<[Ability: Scarlet Sleepless Castle]>**Active Skill (does not consume action opportunity): Absorbs all Scarlet Mist Territory within 1 tile, each tile grants +0.5 Attack, lasts until end of current turn<br>
|
||||
JP: **<帝国の血の君王:レミリア・スカーレット>**<br> **<-------- Lv.1 -------->**<br> **<[基礎属性]>**HP10/攻撃2/防御2/移動力1/射程1/飛行<br> **<[能力:吸血鬼]>**攻撃と反撃時にダメージ値の30%をHPに変換し、**<紅霧領地>**上で移動力+1<br> **<-------- Lv.2 -------->**<br> **<[基礎属性]>**HP20/攻撃2/防御2/移動力2/射程1<br> **<[能力:緋色魔法]>**1マス範囲内で味方ユニットが負傷した時、その地形を**<紅霧領地>**に変化させる<br> **<-------- Lv.3 -------->**<br> **<[基礎属性]>**HP30/攻撃3/防御3/移動力2/射程1<br> **<[能力:緋色帝国]>**アクティブスキル:周囲1マス内の地形を全て紅霧領地に変化させる<br> **<------- Lv.4 -------->**<br> **<[基礎属性]>**HP40/攻撃3/防御4/移動力2/射程1<br> **<[能力:緋色魔法]>**能力が強化され、範囲が2マスに拡大<br> **<[能力:紅い不夜城]>**アクティブスキル(行動機会を消費しない):周囲1マス内の全ての紅霧領地を吸収し、1マスごとに攻撃力+0.5を獲得する。本ターン終了まで持続<br>
|
||||
KR: **<제국의 피의 군왕:레밀리아 스칼렛>**<br> **<-------- Lv.1 -------->**<br> **<[기본 속성]>**HP10/공격2/방어2/이동력1/사거리1/비행<br> **<[능력:뱀파이어]>**공격 및 반격 시 피해량의 30%를 HP로 전환하며, **<홍무 영지>**에서 이동력+1<br> **<-------- Lv.2 -------->**<br> **<[기본 속성]>**HP20/공격2/방어2/이동력2/사거리1<br> **<[능력:진홍 마법]>**1칸 범위 내에서 아군 유닛이 부상을 입으면 해당 지형을 **<홍무 영지>**로 변화시킨다<br> **<-------- Lv.3 -------->**<br> **<[기본 속성]>**HP30/공격3/방어3/이동력2/사거리1<br> **<[능력:진홍 제국]>**액티브 스킬: 주변 1칸 내 지형을 모두 홍무 영지로 변화시킨다<br> **<------- Lv.4 -------->**<br> **<[기본 속성]>**HP40/공격3/방어4/이동력2/사거리1<br> **<[능력:진홍 마법]>**능력이 강화되어 범위가 2칸으로 확대<br> **<[능력:붉은 불야성]>**액티브 스킬(행동 기회 소모 없음): 주변 1칸 내 모든 홍무 영지를 흡수하여 1칸마다 공격력+0.5 획득. 이번 턴 종료 시까지 지속<br>
|
||||
Note: TextDataAssets : GiantUpgradeTextList[1] : UpgradeText
|
||||
== ID=17246 row=1894 ==
|
||||
ZH: **<帝国的女仆长:十六夜咲夜>**<br> **<-------- Lv.1 -------->**<br> **<[基础属性]>**20HP/1攻/2防/2移动力/1射程/水域通行<br> **<[能力:瞭望]>**拥有2格范围的视野<br> **<-------- Lv.2 -------->**<br> **<[基础属性]>**30HP/2攻/2防/2移动力/1射程<br> **<[能力:银之跳跃]>**可以移动到己方英雄1格范围内,使自己获得1次攻击机会,使1格范围内其他己方英雄获得**<女仆长护佑>**,所受伤害转移减半转移至咲夜。<br> **<-------- Lv.3 -------->**<br> **<[基础属性]>**40HP/3攻/2防/2移动力/1射程<br> **<[能力:咲夜的世界]>**击杀单位时,可以再次使用**<银之跳跃>**<br> **<------- Lv.4 -------->**<br> **<[基础属性]>**50HP/4攻/3防/2移动力/1射程<br> **<[能力:完美女仆]>**替代**<银之跳跃>**,在原本效果的基础上,还能使1格范围内的己方英雄获得1次攻击机会<br>
|
||||
TW: **<帝國的女僕長:十六夜咲夜>**<br> **<-------- Lv.1 -------->**<br> **<[基礎屬性]>**20HP/1攻/2防/2移動力/1射程/水域通行<br> **<[能力:瞭望]>**擁有2格範圍的視野<br> **<-------- Lv.2 -------->**<br> **<[基礎屬性]>**30HP/2攻/2防/2移動力/1射程<br> **<[能力:銀之跳躍]>**可以移動到己方英雄1格範圍內,使自己獲得1次攻擊機會,使1格範圍內其他己方英雄獲得**<女僕長護佑>**,所受傷害轉移減半轉移至咲夜。<br> **<-------- Lv.3 -------->**<br> **<[基礎屬性]>**40HP/3攻/2防/2移動力/1射程<br> **<[能力:咲夜的世界]>**擊殺單位時,可以再次使用**<銀之跳躍>**<br> **<------- Lv.4 -------->**<br> **<[基礎屬性]>**50HP/4攻/3防/2移動力/1射程<br> **<[能力:完美女僕]>**替代**<銀之跳躍>**,在原本效果的基礎上,還能使1格範圍內的己方英雄獲得1次攻擊機會<br>
|
||||
EN: **<Imperial Head Maid: Sakuya Izayoi>**<br> **<-------- Lv.1 -------->**<br> **<[Base Attributes]>**20HP/1 Atk/2 Def/2 Movement/1 Range/Water Movement<br> **<[Ability: Lookout]>**Has 2 tiles of vision<br> **<-------- Lv.2 -------->**<br> **<[Base Attributes]>**30HP/2 Atk/2 Def/2 Movement/1 Range<br> **<[Ability: Silver Leap]>**Can move within 1 tile of an allied hero, gaining 1 attack opportunity for herself, and granting **<Chief Maid's Blessing>** to other allied heroes within 1 tile, halving the damage they take and transferring it to Sakuya.<br> **<-------- Lv.3 -------->**<br> **<[Base Attributes]>**40HP/3 Atk/2 Def/2 Movement/1 Range<br> **<[Ability: Sakuya's World]>**When she destroys a unit, she can use **<Silver Leap>** again<br> **<------- Lv.4 -------->**<br> **<[Base Attributes]>**50HP/4 Atk/3 Def/2 Movement/1 Range<br> **<[Ability: Perfect & Elegant Maid]>**Replaces **<Silver Leap>**. In addition to the original effects, also grants allied heroes within 1 tile 1 attack opportunity<br>
|
||||
JP: **<帝国のメイド長:十六夜咲夜>**<br> **<-------- Lv.1 -------->**<br> **<[基礎属性]>**20HP/攻1/防2/移動力2/射程1/水域通行<br> **<[能力:瞭望]>**2マス範囲の視界を持つ<br> **<-------- Lv.2 -------->**<br> **<[基礎属性]>**30HP/攻2/防2/移動力2/射程1<br> **<[能力:銀の跳躍]>**自軍ヒーローの1マス範囲内に移動でき、自身に1回の攻撃機会を獲得し、1マス範囲内の他の自軍ヒーローに**<メイド長の加護>**を付与し、受けるダメージを半減して咲夜に転移させる。<br> **<-------- Lv.3 -------->**<br> **<[基礎属性]>**40HP/攻3/防2/移動力2/射程1<br> **<[能力:咲夜の世界]>**ユニット撃破時、再度**<銀の跳躍>**を使用可能<br> **<------- Lv.4 -------->**<br> **<[基礎属性]>**50HP/攻4/防3/移動力2/射程1<br> **<[能力:完全で瀟洒なメイド]>****<銀の跳躍>**を置き換え、元の効果に加えて1マス範囲内の自軍ヒーローに1回の攻撃機会を付与<br>
|
||||
KR: **<제국의 메이드장: 이자요이 사쿠야>**<br> **<-------- Lv.1 -------->**<br> **<[기본 속성]>**20HP/공1/방2/이동력2/사거리1/수역 통행<br> **<[능력:망루]>**2칸 범위 시야 보유<br> **<-------- Lv.2 -------->**<br> **<[기본 속성]>**30HP/공2/방2/이동력2/사거리1<br> **<[능력:은의 도약]>**아군 영웅 1칸 범위 내로 이동 가능, 자신에게 1회 공격 기회 부여, 1칸 범위 내 다른 아군 영웅에게 **<메이드장의 가호>**를 부여하여 받는 피해를 절반으로 감소시켜 사쿠야에게 전이시킨다.<br> **<-------- Lv.3 -------->**<br> **<[기본 속성]>**40HP/공3/방2/이동력2/사거리1<br> **<[능력:사쿠야의 세계]>**유닛 처치 시, **<은의 도약>**을 다시 사용 가능<br> **<------- Lv.4 -------->**<br> **<[기본 속성]>**50HP/공4/방3/이동력2/사거리1<br> **<[능력:완벽한 메이드]>****<은의 도약>** 대체, 기존 효과에 더해 1칸 범위 내 아군 영웅에게 1회 공격 기회 부여<br>
|
||||
Note: TextDataAssets : GiantUpgradeTextList[2] : UpgradeText
|
||||
== ID=17247 row=1895 ==
|
||||
ZH: **<帝国的欺诈师:因幡帝>**<br> **<-------- Lv.1 -------->**<br> **<[基础属性]>**15HP/1攻/2防/2移动力/1射程/水域通行<br> **<[能力:瞭望]>**拥有2格范围的视野<br> **<[能力:幸运的白兔]>**消除4格范围内所有遗迹的迷雾<br> **<-------- Lv.2 -------->**<br> **<[基础属性]>**25HP/2攻/2防/2移动力/2射程<br> **<[能力:竹林的欺诈师-隔岸观火]>**2格范围内有单位阵亡时,获得等同于该单位训练成本50%的金币<br> **<-------- Lv.3 -------->**<br> **<[基础属性]>**35HP/2攻/3防/2移动力/2射程<br> **<[能力:竹林的欺诈师-劫富济贫]>**1格范围内有单位发起攻击时(包括自己),获得1金币<br> **<[能力:竹林的欺诈师-落井下石]>**帝击杀单位时,获得等同于该单位训练成本100%的金币。<br> **<------- Lv.4 -------->**<br> **<[基础属性]>**45HP/3攻/3防/2移动力/2射程<br> **<[能力:帝国荣耀]>**主动技能。帝发起号召,令一格范围内的所有友军获得一回合**<战地协同>**和一回合**<移动力提升>**<br>
|
||||
TW: **<帝國的欺詐師:因幡帝>**<br> **<-------- Lv.1 -------->**<br> **<[基礎屬性]>**15HP/1攻/2防/2移動力/1射程/水域通行<br> **<[能力:瞭望]>**擁有2格範圍的視野<br> **<[能力:幸運的白兔]>**消除4格範圍內所有遺蹟的迷霧<br> **<-------- Lv.2 -------->**<br> **<[基礎屬性]>**25HP/2攻/2防/2移動力/2射程<br> **<[能力:竹林的欺詐師-隔岸觀火]>**2格範圍內有單位陣亡時,獲得等同於該單位訓練成本50%的金幣<br> **<-------- Lv.3 -------->**<br> **<[基礎屬性]>**35HP/2攻/3防/2移動力/2射程<br> **<[能力:竹林的欺詐師-劫富濟貧]>**1格範圍內有單位發起攻擊時(包括自己),獲得1金幣<br> **<[能力:竹林的欺詐師-落井下石]>**帝擊殺單位時,獲得等同於該單位訓練成本100%的金幣。<br> **<------- Lv.4 -------->**<br> **<[基礎屬性]>**45HP/3攻/3防/2移動力/2射程<br> **<[能力:帝國榮耀]>**主動技能。帝發起號召,令一格範圍內的所有友軍獲得一回合**<戰地協同>**和一回合**<移動力提升>**<br>
|
||||
EN: **<Imperial Trickster: Tewi Inaba>**<br> **<-------- Lv.1 -------->**<br> **<[Base Attributes]>**15HP/1 Atk/2 Def/2 Movement/1 Range/Water Movement<br> **<[Ability: Lookout]>**Has 2 tiles of vision<br> **<[Ability: Lucky White Rabbit]>**Removes the fog from all ruins within 4 tiles<br> **<-------- Lv.2 -------->**<br> **<[Base Attributes]>**25HP/2 Atk/2 Def/2 Movement/2 Range<br> **<[Ability: Bamboo Forest Trickster - Watch the Fire from Across the River]>**When a unit dies within 2 tiles, gain gold equal to 50% of that unit's training cost<br> **<-------- Lv.3 -------->**<br> **<[Base Attributes]>**35HP/2 Atk/3 Def/2 Movement/2 Range<br> **<[Ability: Bamboo Forest Trickster - Rob the Rich to Feed the Poor]>**When a unit (including herself) attacks within 1 tile, gain 1 gold<br> **<[Ability: Bamboo Forest Trickster - Kick Them While They're Down]>**When Tewi destroys a unit, gain gold equal to 100% of that unit's training cost.<br> **<------- Lv.4 -------->**<br> **<[Base Attributes]>**45HP/3 Atk/3 Def/2 Movement/2 Range<br> **<[Ability: Imperial Glory]>**Active Skill. Tewi rallies the troops, granting all allies within 1 tile **<Battlefield Coordination>** for 1 turn and **<Movement Boost>** for one turn<br>
|
||||
JP: **<帝国の詐欺師:因幡てゐ>**<br> **<-------- Lv.1 -------->**<br> **<[基礎属性]>**15HP/攻1/防2/移動力2/射程1/水域通行<br> **<[能力:瞭望]>**2マス範囲の視界を持つ<br> **<[能力:幸運の白兎]>**4マス範囲内のすべての遺跡の霧を消去<br> **<-------- Lv.2 -------->**<br> **<[基礎属性]>**25HP/攻2/防2/移動力2/射程2<br> **<[能力:竹林の詐欺師-隔岸観火]>**2マス範囲内でユニットが戦闘不能になった時、そのユニットの育成コストの50%相当のゴールドを獲得<br> **<-------- Lv.3 -------->**<br> **<[基礎属性]>**35HP/攻2/防3/移動力2/射程2<br> **<[能力:竹林の詐欺師-義賊]>**1マス範囲内でユニットが攻撃を仕掛けた時(自身も含む)、1ゴールドを獲得<br> **<[能力:竹林の詐欺師-弱みに付け込む]>**てゐがユニットを撃破した時、そのユニットの育成コストの100%相当のゴールドを獲得。<br> **<------- Lv.4 -------->**<br> **<[基礎属性]>**45HP/攻3/防3/移動力2/射程2<br> **<[能力:帝国の栄光]>**アクティブスキル。てゐが号令を発し、1マス範囲内のすべての友軍に1ターンの**<戦場連携>**と1ターンの**<移動力アップ>**を付与する<br>
|
||||
KR: **<제국의 기만자:이나바 테이>**<br> **<-------- Lv.1 -------->**<br> **<[기본 속성]>**15HP/공1/방2/이동력2/사거리1/수역 통행<br> **<[능력:망루]>**2칸 범위 시야 보유<br> **<[능력:행운의 흰 토끼]>**4칸 범위 내 모든 유적의 안개 제거<br> **<-------- Lv.2 -------->**<br> **<[기본 속성]>**25HP/공2/방2/이동력2/사거리2<br> **<[능력:대나무숲의 기만자-격안관화]>**2칸 범위 내에서 유닛이 전사 시, 해당 유닛 훈련 비용의 50%에 해당하는 골드 획득<br> **<-------- Lv.3 -------->**<br> **<[기본 속성]>**35HP/공2/방3/이동력2/사거리2<br> **<[능력:죽림의 사기꾼-부자에게서 빼앗아 가난한 자에게 나눠주기]>**1칸 범위 내에서 유닛이 공격을 가할 때(자신 포함), 1골드 획득<br> **<[능력:죽림의 사기꾼-빠진 우물에 돌 던지기]>**테위가 유닛을 처치 시, 해당 유닛 훈련 비용의 100%에 해당하는 골드 획득.<br> **<------- Lv.4 -------->**<br> **<[기본 속성]>**45HP/공3/방3/이동력2/사거리2<br> **<[능력:제국의 영광]>**액티브 스킬. 테위가 호령을 내려 1칸 범위 내 모든 아군에게 1턴 **<전장 협동>**과 1턴 **<이동력 증가>**를 부여<br>
|
||||
Note: TextDataAssets : GiantUpgradeTextList[7] : UpgradeText
|
||||
== ID=17520 row=2102 ==
|
||||
ZH: 看清天价骗局,拒绝黑商垄断!<br>帝国幻想乡正版游戏碟5块1份15两份!
|
||||
TW: 看清天價騙局,拒絕黑商壟斷!<br>帝國幻想鄉正版遊戲片,5塊1份,15塊2份!
|
||||
EN: Stick it to the scalpers!<br>"Empire of Gensokyo" Legit Discs! 5 bucks for 1, 15 bucks for 2!
|
||||
JP: 高額転売に騙されるな、独占反対!<br>帝国幻想郷・正規品ディスク、1枚100円、2枚で500円だ!
|
||||
KR: 바가지 요금에 속지 말자!<br>제국 환상향 정품 CD, 1장 1000엔, 2장 5000엔!
|
||||
Note: StoryDataAssets : SheetData[4] : DiagList[3] : Diag
|
||||
== ID=17661 row=2233 ==
|
||||
ZH: 点石成金!
|
||||
TW: 點石成金!
|
||||
EN: Midas Touch!
|
||||
JP: 錬金術師
|
||||
KR: 점석성금!
|
||||
Note: MomentDataAssets : MomentSubDataList[47] : Title
|
||||
== ID=17849 row=2321 ==
|
||||
ZH: 受到致命伤害时**<消散>**而非**<死亡>**
|
||||
TW: 受到致命傷害時**<消散>**而非**<死亡>**
|
||||
EN: When receiving fatal damage, **<Dissipation>** instead of **<Death>**.
|
||||
JP: 致命的なダメージを受けた時、**<消散>**ではなく**<死亡>**する
|
||||
KR: 치명상을 입으면 **<소산>**이 아닌 **<사망>**
|
||||
Note: SkillDataAssets : SkillInfoList[181] : SkillDesc
|
||||
== ID=17890 row=2362 ==
|
||||
ZH: [能力:就交给赤口大人吧!]
|
||||
TW: [能力:就交給赤口大人吧!]
|
||||
EN: [Ability: Leave it to Lord Mishaguji!]
|
||||
JP: [能力:ミシャグチ様に任せて!]
|
||||
KR: [능력:미샤구지님께 맡겨!]
|
||||
Note: None
|
||||
== ID=18093 row=2442 ==
|
||||
ZH: 斯卡雷特·蕾米莉亚 Lv.1
|
||||
TW: 斯卡雷特·蕾米莉亞 Lv.1
|
||||
EN: Scarlet Remilia Lv.1
|
||||
JP: スカーレット・レミリア Lv.1
|
||||
KR: 스칼렛 레밀리아 Lv.1
|
||||
Note: HeroHintPanel : HeroHintPanel/VerticalGroup/UnitInfoArea/UnitBaseInfo/Title
|
||||
== ID=18127 row=2468 ==
|
||||
ZH: 后之雕像
|
||||
TW: 後之雕像
|
||||
EN: Statue of the Queen
|
||||
JP: 后の彫像
|
||||
KR: 후의 조각상
|
||||
Note: None
|
||||
== ID=18128 row=2469 ==
|
||||
ZH: 可在**<森林>**中建造**<后之雕像>**
|
||||
TW: 可在**<森林>**中建造**<後之雕像>**
|
||||
EN: Allows construction of **<Forest>** in **<Statue of the Queen>** tiles
|
||||
JP: **<森林>**に**<后の彫像>**を建造可能
|
||||
KR: **<숲>**에 **<후의 조각상>** 건설 가능
|
||||
Note: CultureCardDataAssets : CultureCardDataList[2] : Description
|
||||
== ID=18131 row=2472 ==
|
||||
ZH: 可在**<浅海>**中建造**<相之雕像>**
|
||||
TW: 可在**<淺海>**中建造**<相之雕像>**
|
||||
EN: Allows construction of **<Water>** in **<Statue of the Bishop>** tiles
|
||||
JP: **<浅瀬>**に**<相の彫像>**を建造可能
|
||||
KR: **<천해>**에 **<상의 조각상>** 건설 가능
|
||||
Note: CultureCardDataAssets : CultureCardDataList[3] : Description
|
||||
== ID=18134 row=2475 ==
|
||||
ZH: 可在**<山脉>**中建造**<车之雕像>**
|
||||
TW: 可在**<山脈>**中建造**<車之雕像>**
|
||||
EN: Allows construction of **<Mountain>** in **<Statue of the Rook>** tiles
|
||||
JP: **<山脈>**に**<車の彫像>**を建造可能
|
||||
KR: **<산맥>**에 **<전차 조각상>** 건설 가능
|
||||
Note: CultureCardDataAssets : CultureCardDataList[4] : Description
|
||||
== ID=18139 row=2479 ==
|
||||
ZH: 可在**<平原>**中建造**<马之雕像>**
|
||||
TW: 可在**<平原>**中建造**<馬之雕像>**
|
||||
EN: Allows construction of **<Plains>** in **<Statue of the Knight>** tiles
|
||||
JP: **<平原>**に**<馬の彫像>**を建造可能
|
||||
KR: **<평원>**에 **<기마 조각상>** 건설 가능
|
||||
Note: CultureCardDataAssets : CultureCardDataList[6] : Description
|
||||
== ID=18752 row=2759 ==
|
||||
ZH: 俱卢之野的火车
|
||||
TW: 俱盧之野的火車
|
||||
EN: Train of Kurukshetra
|
||||
JP: クルクシェートラの火車
|
||||
KR: 쿠루 들판의 전차
|
||||
Note: AchievementAsset : Data : AchievementList[88] : Name
|
||||
== ID=18755 row=2762 ==
|
||||
ZH: 阿空记不住真言
|
||||
TW: 阿空記不住真言
|
||||
EN: Satori Can't Remember the Mantra
|
||||
JP: 空は真言を覚えられない
|
||||
KR: 아쿵이 기억 못하는 진언
|
||||
Note: AchievementAsset : Data : AchievementList[91] : Name
|
||||
== ID=19108 row=2981 ==
|
||||
ZH: 阿贝拉
|
||||
TW: 阿貝拉
|
||||
EN: Arbela
|
||||
JP: アルベラ
|
||||
KR: 가우가멜라
|
||||
Note: CivDataAssets : CivDataList[11] : CityInfoList[26] : CityName
|
||||
== ID=19117 row=2990 ==
|
||||
ZH: 贡开
|
||||
TW: 貢開
|
||||
EN: Koh Ker
|
||||
JP: コンポンケイ
|
||||
KR: 콤파이
|
||||
Note: CivDataAssets : CivDataList[12] : CityInfoList[6] : CityName
|
||||
== ID=19123 row=2996 ==
|
||||
ZH: 婆婆补罗
|
||||
TW: 婆婆補羅
|
||||
EN: Bhavapura
|
||||
JP: ババプラ
|
||||
KR: 바푸온
|
||||
Note: CivDataAssets : CivDataList[12] : CityInfoList[12] : CityName
|
||||
== ID=19228 row=3101 ==
|
||||
ZH: 西乌尔特
|
||||
TW: 西烏爾特
|
||||
EN: Baruun-Urt
|
||||
JP: ニシウェルト
|
||||
KR: 서울르트
|
||||
Note: CivDataAssets : CivDataList[15] : CityInfoList[25] : CityName
|
||||
== ID=19257 row=3130 ==
|
||||
ZH: 突尼斯
|
||||
TW: 突尼西亞
|
||||
EN: Tunis
|
||||
JP: チュニス
|
||||
KR: 튀니스
|
||||
Note: CivDataAssets : CivDataList[16] : CityInfoList[24] : CityName
|
||||
== ID=19298 row=3144 ==
|
||||
ZH: **<[后]职阶英雄>**。全场最多存在与英雄等级相同数量的**<古明地恋>**。
|
||||
TW: **<[後]職階英雄>**。全場最多存在與英雄等級相同數量的**<古明地戀>**。
|
||||
EN: **<[Queen] Class Hero>**. Max **<Koishi Komeiji>** on field equals Hero level.
|
||||
JP: **<[后]クラスの英雄>**。フィールド上に最大ヒーローレベルと同じ数の**<古明地こいし>**が存在できる
|
||||
KR: **<[후] 클래스 영웅>**. 전장에 영웅 레벨과 같은 수의 **<코메이지 코이시>**만 존재할 수 있다.
|
||||
Note: ActionDataAssets : ActionList[158] : Desc
|
||||
== ID=19414 row=3200 ==
|
||||
ZH: 西行寺幽幽子
|
||||
TW: 西行寺幽幽子
|
||||
EN: Saigyouji Yuyuko
|
||||
JP: 西行寺幽々子
|
||||
KR: 사이교지 유유코
|
||||
Note: PlayerDataAssets : PlayerDataList[8] : LeaderName
|
||||
== ID=19418 row=3204 ==
|
||||
ZH: 饭纲丸龙
|
||||
TW: 飯綱丸龍
|
||||
EN: Iizunamaru Megumu
|
||||
JP: 飯綱丸龍
|
||||
KR: 이즈나마루 류
|
||||
Note: PlayerDataAssets : PlayerDataList[10] : LeaderName
|
||||
== ID=19423 row=3209 ==
|
||||
ZH: 比那名居帝国
|
||||
TW: 比那名居帝國
|
||||
EN: Hinananawi Empire
|
||||
JP: 比那名居帝国
|
||||
KR: 히나나위 제국
|
||||
Note: PlayerDataAssets : PlayerDataList[13] : ForceName
|
||||
== ID=19427 row=3213 ==
|
||||
ZH: 鬼人正邪
|
||||
TW: 鬼人正邪
|
||||
EN: Kijin Seija
|
||||
JP: 鬼人正邪
|
||||
KR: 키진 세이자
|
||||
Note: PlayerDataAssets : PlayerDataList[15] : LeaderName
|
||||
== ID=19429 row=3215 ==
|
||||
ZH: 雾雨魔理沙
|
||||
TW: 霧雨魔理沙
|
||||
EN: Kirisame Marisa
|
||||
JP: 霧雨魔理沙
|
||||
KR: 키리사메 마리사
|
||||
Note: PlayerDataAssets : PlayerDataList[16] : LeaderName
|
||||
== ID=19580 row=3290 ==
|
||||
ZH: 可以移动至任意**<己方英雄>**1格范围内,并使**<1格范围内>**的**<己方英雄>**获得**<女仆长护佑>**。同回合内多次使用会累计层数。每次**<银之跳跃>**都会叠加与当前层数相同的**<疲劳>**
|
||||
TW: 可以移動至任意**<己方英雄>**1格範圍內,並使**<1格範圍內>**的**<己方英雄>**獲得**<女僕長護佑>**。同回合內多次使用會累計層數。每次**<銀之跳躍>**都會疊加與當前層數相同的**<疲勞>**
|
||||
EN: Can move to any position within 1 space of **<Friendly Hero>**, granting **<Within 1 Tile>** to **<Friendly Hero>** within **<Chief Maid's Blessing>** range. Multiple uses in same turn stack layers. Each **<Silver Leap>** adds **<Fatigue>** stacks equal to current layer count.
|
||||
JP: **<味方ヒーロー>**から1マス以内の任意位置へ移動でき、**<1マス範囲内>**の**<味方ヒーロー>**に**<メイド長の加護>**を付与する。同ターン中の複数回使用で層数が累積する。**<銀の跳躍>**使用ごとに、現在の層数と同じ**<疲労>**が累積する
|
||||
KR: 임의의 **<아군 영웅>** 1칸 범위 내로 이동할 수 있으며, **<1칸 범위 내>**의 **<아군 영웅>**에게 **<메이드장의 가호>**를 부여합니다. 같은 턴 내 여러 번 사용하면 중첩됩니다. 매번 **<은의 도약>** 사용 시 현재 중첩 수와 동일한 **<피로>**가 누적됩니다.
|
||||
Note: SkillDataAssets : SkillInfoList[93] : SkillDesc
|
||||
== ID=19709 row=3381 ==
|
||||
ZH: 比那名居帝国BGM
|
||||
TW: 比那名居帝國BGM
|
||||
EN: Hinananawi Empire BGM
|
||||
JP: 比那名居帝国BGM
|
||||
KR: 히나나위 제국 BGM
|
||||
Note: MusicDataAssets : MusicDataList[14] : Title
|
||||
== ID=19734 row=3400 ==
|
||||
ZH: 可以移动至任意**<己方英雄>**1格范围内,并使**<1格范围内>**的**<己方英雄>**获得**<女仆长护佑>**和1点**<攻击行动点>**。同回合内多次使用会累计层数。每次**<银之跳跃>**都会叠加与当前层数相同的**<疲劳>**
|
||||
TW: 可以移動至任意**<己方英雄>**1格範圍內,並使**<1格範圍內>**的**<己方英雄>**獲得**<女僕長護佑>**和1點**<攻擊行動點>**。同回合內多次使用會累計層數。每次**<銀之跳躍>**都會疊加與當前層數相同的**<疲勞>**
|
||||
EN: Can move within 1 hex of any **<Friendly Hero>**, granting **<Within 1 Tile>** within **<Friendly Hero>** and 1 **<Chief Maid's Blessing>** to that **<Attack Action Points>**. Stacks if used multiple times in the same turn. Each **<Silver Leap>** also accumulates **<Fatigue>** equal to the current stack count.
|
||||
JP: 任意の**<味方ヒーロー>**から1マス以内に移動でき、**<1マス範囲内>**にいる**<味方ヒーロー>**に**<メイド長の加護>**と1の**<攻撃行動ポイント>**を付与する。同一ターン内で複数回使用すると層数が累積する。**<銀の跳躍>**を使用するたび、現在の層数と同じ**<疲労>**が蓄積される。
|
||||
KR: 임의의 **<아군 영웅>** 주변 1칸 범위 내로 이동할 수 있으며, **<1칸 범위 내>**의 **<아군 영웅>**에게 **<메이드장의 가호>**과 1의 **<공격 행동 포인트>**을 부여한다. 같은 턴 내 반복 사용 시 누적된다. **<은의 도약>**을 사용할 때마다 현재 누적 수치와 동일한 **<피로>**이 누적된다.
|
||||
Note: SkillDataAssets : SkillInfoList[96] : SkillDesc
|
||||
== ID=19768 row=3428 ==
|
||||
ZH: 凭大小姐的实力,一定没问题!
|
||||
TW: 憑大小姐的實力,一定沒問題!
|
||||
EN: With my Lady's skill, there's no doubt!
|
||||
JP: お嬢様のお力なら、きっと大丈夫です!
|
||||
KR: 아가씨의 실력이라면, 분명 문제없을 거예요!
|
||||
Note: ScenarioDataAssets : ScenarioList[0] : DiagList[1] : Diag
|
||||
== ID=19830 row=3477 ==
|
||||
ZH: <b>出品</b>:蕾米莉亚指挥部
|
||||
<b>原作</b>:上海爱丽丝幻乐团
|
||||
<color=grey>本作品为 东方project的二次同人创作</color>
|
||||
TW: <b>出品</b>:蕾米莉亞指揮部
|
||||
<b>原作</b>:上海愛麗絲幻樂團
|
||||
<color=grey>本作品為 東方project的二次同人創作</color>
|
||||
EN: <b>Presented by</b>: Remilia Command
|
||||
<b>Original Work</b>: Team Shanghai Alice
|
||||
<color=grey>This is a derivative doujin work of Touhou Project</color>
|
||||
JP: <b>制作</b>:レミリア司令部
|
||||
<b>原作</b>:上海アリス幻樂団
|
||||
<color=grey>本作品は東方Projectの二次創作です</color>
|
||||
KR: <b>제작</b>: 레미리아 사령부
|
||||
<b>원작</b>: 상하이 앨리스 환악단
|
||||
<color=grey>본 작품은 동방 프로젝트의 2차 동인 창작물입니다</color>
|
||||
Note: UIOutsideMenuAboutPanel : UIOutsideMenuAboutPanel/Panel/Scroll View/Viewport/Content/Text
|
||||
== ID=19837 row=3482 ==
|
||||
ZH: 点开右下方的"科技"按钮,找到**<采集>**科技并研究。然后选中**<蔬果>**地块,采集**<蔬果>**并提升城市等级!
|
||||
TW: 點開右下方的"科技"按鈕,找到**<採集>**科技並研究。然後選中**<蔬果>**地塊,採集**<蔬果>**並提升城市等級!
|
||||
EN: Click the "Tech" button at the bottom-right, find **<Gather>** and research it. Then select a **<Produce>** tile and gather **<Produce>** to raise the city level!
|
||||
JP: 右下の「テック」ボタンをクリックし、**<採集>**を見つけて研究しよう。次に**<青果>**マスを選択し、**<青果>**を採集して都市レベルを上げよう!
|
||||
KR: 오른쪽 아래의 "기술" 버튼을 클릭하여 **<채집>**을 찾아 연구하세요. 그런 다음 **<청과>** 타일을 선택하여 **<청과>**을 채집해 도시 레벨을 올리세요!
|
||||
Note: MatchLevelData : LevelConfigs[8] : PlayerSettlements[0] : Tasks[4] : CustomHint
|
||||
== ID=19841 row=3486 ==
|
||||
ZH: 将**<庄稼>**改造为**<农田>**,升级城市吧!
|
||||
TW: 將**<莊稼>**改造為**<農田>**,升級城市吧!
|
||||
EN: Convert **<Crops>** into **<Farm>** and upgrade your city!
|
||||
JP: **<穀物>**を**<農地>**に改造して都市をアップグレードしよう!
|
||||
KR: **<곡물>**을 **<농지>**으로 개조하여 도시를 업그레이드하세요!
|
||||
Note: MatchLevelData : LevelConfigs[8] : PlayerSettlements[0] : Tasks[0] : CustomDesc
|
||||
== ID=580 row=211 ==
|
||||
ZH: 斋月十日城
|
||||
TW: 齋月十日城
|
||||
EN: 10th of Ramadan City
|
||||
JP: 10月6日市
|
||||
KR: 10월 6일 시
|
||||
Note: CivDataAssets : CivDataList[0] : CityInfoList[14] : CityName
|
||||
== ID=704 row=334 ==
|
||||
ZH: 桑讷菲尤尔
|
||||
TW: 桑訥菲尤爾
|
||||
EN: Sannessjøen
|
||||
JP: サンネフィヨルド
|
||||
KR: 산네피오르
|
||||
Note: CivDataAssets : CivDataList[4] : CityInfoList[18] : CityName
|
||||
== ID=289 row=98 ==
|
||||
ZH: 关注我们
|
||||
TW: None
|
||||
EN: Follow Us
|
||||
JP: Follow Us
|
||||
KR: Follow Us
|
||||
Note: UIOutsideMenuAboutPanel : UIOutsideMenuAboutPanel/Panel/Scroll View/Viewport/Content/Title
|
||||
== ID=290 row=99 ==
|
||||
ZH: Youtube
|
||||
TW: None
|
||||
EN: YouTube
|
||||
JP: YouTube(ユーチューブ)
|
||||
KR: YouTube
|
||||
Note: UIOutsideMenuAboutPanel : UIOutsideMenuAboutPanel/Panel/Scroll View/Viewport/Content/Youtube/GameObject
|
||||
== ID=293 row=100 ==
|
||||
ZH: Bilibili
|
||||
TW: None
|
||||
EN: Bilibili
|
||||
JP: 哔哩哔哩(Bilibili)
|
||||
KR: 빌리빌리(Bilibili)
|
||||
Note: UIOutsideMenuAboutPanel : UIOutsideMenuAboutPanel/Panel/Scroll View/Viewport/Content/Bilibili/GameObject
|
||||
== ID=294 row=101 ==
|
||||
ZH: Discord
|
||||
TW: None
|
||||
EN: Discord
|
||||
JP: Discord(ディスコード)
|
||||
KR: 디스코드(Discord)
|
||||
Note: UIOutsideMenuAboutPanel : UIOutsideMenuAboutPanel/Panel/Scroll View/Viewport/Content/Discord/GameObject
|
||||
== ID=295 row=102 ==
|
||||
ZH: 官方网站
|
||||
TW: None
|
||||
EN: Official Website
|
||||
JP: 公式サイト(Kōshiki Saito)
|
||||
KR: 공식 웹사이트
|
||||
Note: UIOutsideMenuAboutPanel : UIOutsideMenuAboutPanel/Panel/Scroll View/Viewport/Content/Homepage/GameObject
|
||||
== ID=435 row=151 ==
|
||||
ZH: 挖掘遗迹,将获得金币、科技、单位等随机奖励。
|
||||
TW: 挖掘遺跡,將獲得金幣、科技、單位等隨機獎勵。
|
||||
EN: Mine Ruins to receive random rewards such as Gold, technology, or units.
|
||||
JP: 遺跡を発掘し、ゴールド、科学技術、ユニットなどのランダム報酬を獲得する
|
||||
KR: 유적 광산 시 골드, 기술, 유닛 등 무작위 보상을 획득한다.
|
||||
Note: TechDataAssets : TechAtomList[3] : Desc
|
||||
== ID=461 row=166 ==
|
||||
ZH: 建造财富奇观
|
||||
TW: 建造財富奇觀
|
||||
EN: Build Wealth Wonder
|
||||
JP: 富の遺産を建設
|
||||
KR: 부의 유산 건설
|
||||
Note: ActionDataAssets : ActionList[68] : ActionName
|
||||
== ID=16797 row=1515 ==
|
||||
ZH: 被攻击时,使攻击方恢复2点生命
|
||||
TW: 被攻擊時,使攻擊方恢復2點生命
|
||||
EN: When attacked, the attacker s 2
|
||||
JP: 攻撃を受けた時、攻撃側のHPを2回復させる
|
||||
KR: 공격받을 시, 공격자의 HP 2 회복
|
||||
Note: SkillDataAssets : SkillInfoList[161] : SkillDesc
|
||||
== ID=16800 row=1518 ==
|
||||
ZH: 被击杀后,击杀者恢复所有行动机会
|
||||
TW: 被擊殺後,擊殺者恢復所有行動機會
|
||||
EN: When killed, the killer s all action opportunities
|
||||
JP: 撃破された後、撃破者の全行動チャンスが回復する
|
||||
KR: 격파 시, 격파자의 모든 행동 기회 회복
|
||||
Note: SkillDataAssets : SkillInfoList[163] : SkillDesc
|
||||
== ID=16987 row=1683 ==
|
||||
ZH: 未遇见
|
||||
TW: 未遇見
|
||||
EN: Unmet
|
||||
JP: 未遭遇
|
||||
KR: 미조우
|
||||
Note: DiplomacyDataAssets : DiplomacyStateInfoList[0] : StateText
|
||||
@ -140,7 +140,7 @@ PlayerSettings:
|
||||
loadStoreDebugModeEnabled: 0
|
||||
visionOSBundleVersion: 1.0
|
||||
tvOSBundleVersion: 1.0
|
||||
bundleVersion: 0.7.1h
|
||||
bundleVersion: 0.7.1i
|
||||
preloadedAssets: []
|
||||
metroInputSource: 0
|
||||
wsaTransparentSwapchain: 0
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user