Add translation update script

This commit is contained in:
Guo Yunhe 2019-09-25 15:07:17 +03:00
parent 3e1f56d57f
commit ecd117d80d

62
intl/template.py Executable file
View File

@ -0,0 +1,62 @@
#!/usr/bin/env python3
# Apply template (us) updates to translations (fr, ja, chs, etc.)
# Usage: ./template.py xx
# xx is the language code postfix of translation files
import re
import sys
try:
lc = sys.argv[1]
except:
print("Usage: ./template.py <language_postfix>")
sys.exit(1)
p = re.compile('MSG_HASH\(\s*[A-Z0-9_]+,\s*\".*\"\s*\)')
header = """#if defined(_MSC_VER) && !defined(_XBOX) && (_MSC_VER >= 1500 && _MSC_VER < 1900)
#if (_MSC_VER >= 1700)
/* https://support.microsoft.com/en-us/kb/980263 */
#pragma execution_character_set("utf-8")
#endif
#pragma warning(disable:4566)
#endif
"""
def parse_message(message):
key_start = message.find('(') + 1
key_end = message.find(',')
key = message[key_start:key_end].strip()
value_start = message.find('"') + 1
value_end = message.rfind('"')
value = message[value_start:value_end].strip()
return key, value
def messages(text):
result = p.findall(text)
msg_list = []
for msg in result:
key, val = parse_message(msg)
item = {'key': key, 'val': val, 'msg': msg}
msg_list.append(item)
return msg_list
def update(translation, template):
new_translation = header + template
template_messages = messages(template)
translation_messages = messages(translation)
for tp_msg in template_messages:
for ts_msg in translation_messages:
if tp_msg['key'] == ts_msg['key']:
new_translation = new_translation.replace(tp_msg['msg'], ts_msg['msg'])
return new_translation
with open('msg_hash_us.h', 'r') as template_file:
template = template_file.read()
with open('msg_hash_' + lc + '.h', 'r+') as translation_file:
translation = translation_file.read()
new_translation = update(translation, template)
translation_file.seek(0)
translation_file.write(new_translation)
translation_file.truncate()