Closed sanmusen214 closed 2 weeks ago
f1bc0c5 just add some English messages of warning and error. Too many messages of logging.info. Maybe someone could look at this.
Who are interested in it can just
logging.info
and paste {"zh_CN": , "en_US": }
in the brackets as the param of logging.info.Thanks a lot : )
maybe we can create a string resource to manage the information, like android, then you can do better for internationalization hard-code....that's not a good idea
see branch English_locallization, I'm doing it and maybe this will help you:
import re
import pyperclip
def get_level(input_str: str) -> str:
out = re.search(r'info|warn|error', input_str)
if out:
return out.group()
else:
return ""
while True:
input("Press Enter to continue...")
clip_str = pyperclip.paste().strip()
sear_re = re.search(r'(?<=\(").+(?="\))', clip_str)
if sear_re:
out_str = f'logging.{get_level(clip_str)}({{"zh_CN": "{sear_re.group()}", "en_US": ""}})\n'
print(f"the string is in your clipboard: {out_str}")
pyperclip.copy(out_str)
print("===============================")
else:
print("no search found")
开摆
开摆
真别搞字符串硬编码,要死人。。。。。。 留一个python脚本在这里,是完成本次问题的好手,但还是干的很痛苦
import re
import sys
import pyperclip
from translate import Translator
def search_level(input_str: str):
out = re.search(r'logging\.info|warn|error', input_str)
return out
def search_bracket(input_str: str) -> str:
sear_re = re.search(r'(?<=\().+(?=\))', input_str)
if sear_re:
return sear_re.group()
else:
return ""
def get_translate_tuple(need_translate: str):
out_res = ["", ""]
res = re.findall(r'[a-zA-Z]', need_translate)
is_english: bool
if len(need_translate) == 0:
is_english = False
else:
rate = len(res) / len(need_translate)
is_english = True if rate > 0.7 else False
if is_english:
out_res[1] = need_translate
out_res[0] = Translator(from_lang='en', to_lang='zh').translate(need_translate)
else:
out_res[0] = need_translate
out_res[1] = Translator(from_lang='zh', to_lang='en').translate(need_translate)
print(out_res)
return out_res
def log_to_translate(line_str: str):
level = search_level(line_str)
if level:
content = search_bracket(line_str)
translate_list = get_translate_tuple(content)
if translate_list is None:
return None
out = line_str[:level.span()[0]] + level.group() + (f'({{"zh_CN": {translate_list[0]}, '
f'"en_US": {translate_list[1]}}})\n')
return out
def get_file_all_lines(file_path: str):
with open(file_path, 'r', encoding="utf-8") as f:
lines = f.readlines()
return lines
def need_to_translate(one_line: str) -> bool:
if re.search(r'zh_CN', one_line):
return False
return bool(re.search(r'logging\.info|warn|error\("', one_line))
if __name__ == '__main__':
print("start")
arg_file_path = sys.argv[1]
line_list = get_file_all_lines(arg_file_path)
out_file = open("./output.py", "w", encoding="utf-8")
for idx, line in enumerate(line_list):
line = line
if need_to_translate(line):
print(idx + 1, line.strip())
new_line = log_to_translate(line)
if new_line is not None:
out_file.write(new_line)
else:
out_file.write(line)
else:
out_file.write(line)
out_file.close()
大部分翻译是来自于pip包translate, 小部分翻译是来自于youdao.com, 极小一部分来自本人的乱翻,确认一下没问题就可以关issue了
贴PR里了没有直接合dev,森哥检查一下
辛苦了,我待会看下哈
真别搞字符串硬编码,要死人。。。。。。
如果搞语言包的话也得定位到每一个logging去修改,复杂程度也差不多,而且这个日志涉及到模板字符串,写成语言包不好搞变量模板。
Thanks to ly5519, BAAH now can be 99% English.
真别搞字符串硬编码,要死人。。。。。。
如果搞语言包的话也得定位到每一个logging去修改,复杂程度也差不多,而且这个日志涉及到模板字符串,写成语言包不好搞变量模板。
这个可以用占位符解决,只要插入的变量个数相同就行
如果之后还想适配新的一门语言本地化的话就建议重构了
如果之后还想适配新的一门语言本地化的话就建议重构了
之后再看吧,logging能打英语已经差不多了
Feat English in the BAAH terminal logs.