perf: 优化 (i18n-util.py) 工具,添加脚本说明信息

This commit is contained in:
Bai 2023-02-04 14:58:11 +08:00 committed by Jiangjie.Bai
parent 05c2425bc6
commit 7a4ec597dd
2 changed files with 46 additions and 16 deletions

3
.gitignore vendored
View File

@ -16,3 +16,6 @@ tests/**/coverage/
*.njsproj
*.sln
.env.development
src/i18n/langs/diff-zh-en.json
src/i18n/langs/diff-zh-ja.json

View File

@ -1,5 +1,16 @@
"""
requirements:
描述: Lina i18n 翻译 检测更新 工具
两个功能:
1. zh.json 文件为基础检测 en.json ja.json 文件文件是否有缺失的翻译如果有会输出到新文件 diff-zh-en.json diff-zh-ja.json
2. 用户直接修改 diff-zh-en.json diff-zh-ja.json 文件中对应的翻译然后执行命令会将修改后的翻译写入到 en.json ja.json 文件中
使用方法:
1. 生成差异文件: python i18n-util.py diff en ja
2. 修改差异文件: diff-zh-en.json diff-zh-ja.json
3. 更新翻译文件: python i18n-util.py update en ja
依赖包:
pip install data-tree
pip install pathdict
@ -11,6 +22,16 @@ import data_tree
from pathdict import PathDict
actions_display_mapper = {
'diff': '检测',
'update': '更新'
}
langs_display_map = {
'en': '英文',
'ja': '日文'
}
class I18NFileUtil(object):
def diff(self, lang):
zh_json = self.load_json('./zh.json')
@ -34,9 +55,15 @@ class I18NFileUtil(object):
json_data = json.dumps(data, ensure_ascii=False, indent=2)
f.write(json_data)
msg = f'\n' \
f'* 检测到 ./{lang}.json 有 {len(data)} 条翻译未处理, ' \
f'待翻译条目已写入到 {diff_filepath} 文件中. \n'
print(msg)
def update(self, lang):
diff_data = self.load_json(f'./diff-zh-{lang}.json')
lang_data = self.load_json(f'./{lang}.json')
lang_pdict = PathDict(lang_data, create_if_not_exists=True)
for key_path, value in diff_data.items():
lang_pdict[key_path] = value
@ -46,6 +73,8 @@ class I18NFileUtil(object):
data = json.dumps(data, ensure_ascii=False, indent=2)
f.write(data)
print(f'\n翻译文件 ./{lang}.json 已更新, 总共写入新的翻译 {len(diff_data)} 条.\n')
def pathdict_to_dict(self, data):
d = {}
for k, v in data.items():
@ -79,25 +108,23 @@ if __name__ == '__main__':
parser.add_argument(
'langs', type=str, choices=("en", "ja"), nargs='*'
)
args = parser.parse_args()
zh = 'zh'
en = 'en'
ja = 'ja'
# I18NFileUtil().diff(en)
# I18NFileUtil().update(en)
#
# I18NFileUtil().diff(ja)
# I18NFileUtil().update(ja)
action = args.action
langs = args.langs
print(action, '>>>>', args.langs)
util = I18NFileUtil()
method = getattr(util, action)
for _lang in langs:
action_display = actions_display_mapper[action]
for index, _lang in enumerate(langs):
lang_display = langs_display_map[_lang]
print('-'*100)
method(_lang)
if index == len(langs) - 1:
print('-'*100)
if action == 'diff':
_langs = ' '.join(langs)
msg = f'\n* Tips: 修改差异文件后, 执行命令 ```python i18n-util.py update {_langs} ``` 更新翻译文件 *\n'
print(msg)