62 lines
2.3 KiB
Python
62 lines
2.3 KiB
Python
# -*- coding: utf-8 -*-
|
|
"""对比 Java 模组 sa_core 汉化,统一网易版 66 个材料的中文名"""
|
|
import zipfile, json, os, csv
|
|
|
|
BASE = r'e:\MCStudioDownload\work\3027246179@qq.com\Cpp\AddOn\309c2d420bc84ee986db9cdd070ff02a'
|
|
DROP = {'box_of_nails', 'box_of_paperclips', 'box_of_screws', 'gunpowder_bottle', 'rope',
|
|
'water_bottle', 'water_bottle2', 'blank', 'empty_glass_bottle', 'falsh_lights'}
|
|
|
|
# 1) Java 版 sa_core 汉化物品名映射
|
|
z = zipfile.ZipFile(os.path.join(BASE, '_sa_hanhua_out', 'sa_lib-forge-1.20.1-1.0.1.jar'))
|
|
zh = json.loads(z.read('assets/sa_core/lang/zh_cn.json'))
|
|
z.close()
|
|
jnames = {}
|
|
for k, v in zh.items():
|
|
# 格式: item.sa_core.<reg>(无 .name 后缀)
|
|
if k.startswith('item.sa_core.') and '.' not in k[len('item.sa_core.'):]:
|
|
jnames[k[len('item.sa_core.'):]] = v
|
|
print('Java 版物品名条目:', len(jnames))
|
|
|
|
# 2) 66 个材料
|
|
mats = []
|
|
with open(os.path.join(BASE, '_sa_materials.csv'), encoding='utf-8-sig') as f:
|
|
for row in csv.reader(f):
|
|
if row and row[1].endswith('.png') and row[0].isdigit() and row[1][:-4] not in DROP:
|
|
mats.append(row[1][:-4])
|
|
print('网易版材料数:', len(mats))
|
|
|
|
# 3) 对比 lang
|
|
LP = os.path.join(BASE, 'resource_pack_t7eJjrxY/texts/zh_CN.lang')
|
|
lang = open(LP, encoding='utf-8').read()
|
|
replaced, no_java, same = [], [], []
|
|
lines = lang.splitlines()
|
|
new_lines = []
|
|
for l in lines:
|
|
hit = None
|
|
for m in mats:
|
|
prefix = 'item.dn_sa:%s.name=' % m
|
|
if l.startswith(prefix):
|
|
hit = (m, l[len(prefix):])
|
|
break
|
|
if hit:
|
|
m, cur = hit
|
|
if m in jnames:
|
|
jv = jnames[m]
|
|
if jv != cur:
|
|
new_lines.append('%s%s' % (prefix, jv))
|
|
replaced.append((m, cur, jv))
|
|
else:
|
|
new_lines.append(l)
|
|
same.append((m, jv))
|
|
else:
|
|
new_lines.append(l)
|
|
no_java.append((m, cur))
|
|
else:
|
|
new_lines.append(l)
|
|
open(LP, 'w', encoding='utf-8').write('\n'.join(new_lines) + ('\n' if new_lines else ''))
|
|
print('已替换(与Java版不一致):', len(replaced))
|
|
for m, c, j in replaced: print(' 改:', m, '| 原:', c, '->', j)
|
|
print('一致未改:', len(same))
|
|
print('Java版无此名称(保留网易名):', len(no_java))
|
|
for m, c in no_java: print(' 保留:', m, '=', c)
|