mirror of
https://github.com/tildearrow/furnace.git
synced 2024-12-02 17:27:25 +00:00
272fcfccca
* Add files via upload This script can merge the post-translation order wrong PO files in the correct order! * Update and rename merge.py to MERGE.py Changed the name to all caps to make it prominent * Update MERGE.py * Update and rename MERGE.py to Reorganize-po-sequence.py rename * Reorganize-po-sequence Usage: Reorganize-po-sequence.sh base_file new_file output_file base.po is the PO file within the repo with the correct order new.po is your translated PO file but may not be in the correct order
42 lines
1.6 KiB
Python
42 lines
1.6 KiB
Python
def merge_po_files_preserve_format(base_file, new_file, output_file):
|
|
with open(base_file, 'r', encoding='utf-8') as f1, open(new_file, 'r', encoding='utf-8') as f2:
|
|
base_lines = f1.readlines()
|
|
new_lines = f2.readlines()
|
|
|
|
# Traverse the new_lines and extract msgid and msgstr
|
|
new_translations = {}
|
|
i = 0
|
|
while i < len(new_lines):
|
|
if new_lines[i].startswith('msgid '):
|
|
msgid_start = i
|
|
while not new_lines[i].startswith('msgstr '):
|
|
i += 1
|
|
msgid = ''.join(new_lines[msgid_start:i])
|
|
msgstr = new_lines[i].split('msgstr ')[1].strip()
|
|
new_translations[msgid] = msgstr
|
|
i += 1
|
|
|
|
# Open the output_file and write the merged content
|
|
with open(output_file, 'w', encoding='utf-8') as output:
|
|
i = 0
|
|
while i < len(base_lines):
|
|
if base_lines[i].startswith('msgid '):
|
|
msgid_start = i
|
|
while not base_lines[i].startswith('msgstr '):
|
|
i += 1
|
|
msgid = ''.join(base_lines[msgid_start:i])
|
|
if msgid in new_translations:
|
|
output.write(f'{msgid}')
|
|
output.write(f'msgstr {new_translations[msgid]}\n')
|
|
else:
|
|
output.write(base_lines[i])
|
|
i += 1
|
|
else:
|
|
output.write(base_lines[i])
|
|
i += 1
|
|
|
|
if __name__ == '__main__':
|
|
base_file = 'base.po'
|
|
new_file = 'new.po'
|
|
output_file = 'output.po'
|
|
merge_po_files_preserve_format(base_file, new_file, output_file)
|