75 lines
1.9 KiB
Python
Executable File
75 lines
1.9 KiB
Python
Executable File
#!/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)
|