#!/usr/bin/pyhton import re import sys from lib.opener import scan_files, open_translate from lib.translate import translate def parsing_file(f): with open(f) as _f: _cached = _f.read() _list = _cached.split('\n') _to_translate = [] for _str in _list: if _str.find('%_t') != -1 or _str.find('%_T') != -1: _to_translate.append(_str) return _to_translate def pars_file(name: str) -> list: """ :param name: name of file :return: """ _list: list = [] for _str in parsing_file(name): _str_parsed = re.findall(r'= "([^/\"]*)(?: /\* (.*)\*/)?"%_[t,T]', _str) if _str_parsed: _list.append(_str_parsed) return _list def all_to_translate(_dir): _files = scan_files(_dir) _str = '' for _file in _files: _strings = pars_file(_file) _list = [] _fname = _file.split("WPE2")[1].replace("/", "\\") if len(_strings) > 0: for _string in _strings: _list.append(_string) _title = f'# ========== {_fname} ==========\n' _str = _str + _title print(f'Generate translation file for {_fname}') for _name in _list: _msgctxt = '' # print(_name) if len(_name[0]) > 1: _msgctxt = f'msgctxt "{_name[0][1]}"\n' else: _msgctxt = f'msgctxt ""\n' _msgid = f'msgid "{_name[0][0]}"\n' _msgstr = f'msgstr ""\n' _entity = f'#: {_fname}:\n{_msgctxt}{_msgid}{_msgstr}\n' _str = _str + _entity with open('ru.po', 'w', encoding='UTF-8') as f: f.write(_str) print(open_translate()) # if __name__ == '__main__': # if len(sys.argv) > 1: # arg = sys.argv[1] # else: # arg = r'C:\Users\riksl\AppData\Roaming\Avorion\mods\WPE2' # # all_to_translate(arg)