forked from secretflow/secretflow
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathupdate_meta.py
54 lines (39 loc) · 1.62 KB
/
update_meta.py
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
46
47
48
49
50
51
52
53
54
import argparse
import json
import logging
import os
import translators as ts
from google.protobuf.json_format import MessageToJson
from secretflow.component.entry import COMP_LIST
from secretflow.component.i18n import gettext
LANG = "zh"
this_directory = os.path.abspath(os.path.dirname(__file__))
COMP_LIST_FILE = os.path.join(this_directory, 'comp_list.json')
TRANSLATION_FILE = os.path.join(this_directory, 'translation.json')
def translate(input, translator):
output = {}
for comp, comp_text in input.items():
comp_translation = {}
for k, v in comp_text.items():
comp_translation[k] = (
v
if v != ""
else ts.translate_text(k, to_language=LANG, translator=translator)
)
output[comp] = comp_translation
return output
if __name__ == "__main__":
parser = argparse.ArgumentParser(description="Update sf component meta.")
parser.add_argument('-s', '--skip_translate', action='store_false')
parser.add_argument('-t', '--translator', type=str, required=False, default="baidu")
args = parser.parse_args()
logging.info('1. Update secretflow comp list.')
with open(COMP_LIST_FILE, 'w') as f:
json.dump(json.loads(MessageToJson(COMP_LIST)), f, indent=2, ensure_ascii=False)
if args.skip_translate:
logging.info('2. Update translation.')
with open(TRANSLATION_FILE, "r") as f:
archieve = json.load(f)
trans = translate(gettext(COMP_LIST, archieve), args.translator)
with open(TRANSLATION_FILE, "w") as f:
json.dump(trans, f, indent=2, ensure_ascii=False)