pygtrans
pygtrans copied to clipboard
Examples
一些可能常用的例子,欢迎大家参与
翻译 JSON 文件
import json
from pygtrans import Translate
def load_json(file_path):
with open(file_path, "r", encoding="utf-8") as file:
return json.load(file)
def extract_strings(data):
strings = []
def _extract(_data):
if isinstance(_data, dict):
for key, value in _data.items():
_extract(value)
elif isinstance(_data, list):
for item in _data:
_extract(item)
elif isinstance(_data, str):
strings.append(_data)
_extract(data)
return strings
def replace_strings(data, dict_translated):
def _replace(_data):
if isinstance(_data, dict):
for key, value in _data.items():
_data[key] = _replace(value)
elif isinstance(_data, list):
return [_replace(item) for item in _data]
elif isinstance(_data, str):
return dict_translated[_data]
return _data
return _replace(data)
def save_json(data, file_path):
with open(file_path, "w", encoding="utf-8") as file:
json.dump(data, file, ensure_ascii=False, indent=4)
def translate_json_file(input_file, output_file, target):
data = load_json(input_file)
strings = extract_strings(data)
strings = list(set(strings))
strings_translated = at.translate(strings, target=target)
dict_translated = {k: v.translatedText for k, v in zip(strings, strings_translated)}
data_translated = replace_strings(data, dict_translated)
save_json(data_translated, output_file)
if __name__ == "__main__":
at = Translate(fmt="text")
translate_json_file("home_zh.json", "home_en.json", "en")