-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathftbquest_translate.py
More file actions
45 lines (37 loc) · 1.67 KB
/
ftbquest_translate.py
File metadata and controls
45 lines (37 loc) · 1.67 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
import os
import ftb_snbt_lib as slib
from ai_translate import translate_dict
from config import WORK_DIR
def dict_to_slib(data: dict) -> slib.Compound:
result = slib.Compound()
for key, value in data.items():
if isinstance(value, list):
slib_list = []
for item in value:
slib_list.append(slib.String(item))
result[key] = slib.List(slib_list)
elif isinstance(value, str):
result[key] = slib.String(value)
return result
def translate_snbt_lang(input_snbt, output_snbt):
with open(input_snbt, 'r', encoding='utf-8') as f:
tag = slib.load(f)
output = translate_dict(tag)
with open(output_snbt, 'w', encoding='utf-8') as f:
slib.dump(dict_to_slib(output), f)
def translate_quests(dir_path='quests/lang/en_us', out_path='quests/lang/zh_cn'):
# translate_snbt_lang(vectorstore, 'ftbquests/lang/en_us.snbt', 'ftbquests/lang/zh_cn.snbt')
for root, paths, files in os.walk(dir_path):
for file in files:
full_path = os.path.join(root, file)
rel_path = os.path.relpath(full_path, dir_path).replace(os.sep, '/')
if rel_path.endswith('.snbt'):
out_full_path = os.path.join(out_path, rel_path)
if os.path.exists(out_full_path):
continue
out_dirname = os.path.dirname(out_full_path)
if not os.path.exists(out_dirname):
os.makedirs(out_dirname)
translate_snbt_lang(full_path, out_full_path)
if __name__ == '__main__':
translate_quests(WORK_DIR + '/ftbquests/quests/lang/en_us', WORK_DIR + '/ftbquests/quests/lang/zh_cn')