kopia lustrzana https://github.com/jedie/PyInventory
60 wiersze
1.7 KiB
Python
60 wiersze
1.7 KiB
Python
"""
|
|
Auto fill "verbose_name" translations:
|
|
Just copy the model field name as translation.
|
|
"""
|
|
from pathlib import Path
|
|
|
|
|
|
BASE_PATH = Path(__file__).parent.parent
|
|
|
|
MESSAGE_MAP = {
|
|
'id': 'ID',
|
|
}
|
|
|
|
|
|
def fill(po_file_path):
|
|
old_content = []
|
|
new_content = []
|
|
with po_file_path.open('r') as f:
|
|
for line in f:
|
|
old_content.append(line)
|
|
|
|
if line.startswith('msgid "'):
|
|
msgstr = ''
|
|
msgid = line[7:-2]
|
|
try:
|
|
model, attribute, kind = msgid.strip().split('.')
|
|
except ValueError:
|
|
pass
|
|
else:
|
|
if kind == 'verbose_name':
|
|
if attribute in MESSAGE_MAP:
|
|
msgstr = MESSAGE_MAP[attribute]
|
|
else:
|
|
words = attribute.replace('_', ' ').split(' ')
|
|
msgstr = ' '.join(i.capitalize() for i in words)
|
|
elif kind == 'help_text':
|
|
msgstr = ' ' # "hide" empty "help_text"
|
|
|
|
elif (line == 'msgstr ""\n' or line == 'msgstr " "\n') and msgstr:
|
|
line = f'msgstr "{msgstr}"\n'
|
|
|
|
line = line.replace('Content Tonie', 'Content-Tonie')
|
|
new_content.append(line)
|
|
|
|
if new_content == old_content:
|
|
print('Nothing to do, ok.')
|
|
return
|
|
|
|
with po_file_path.open('w') as f:
|
|
f.write(''.join(new_content))
|
|
|
|
print(f'updated: {po_file_path}')
|
|
|
|
|
|
if __name__ == '__main__':
|
|
for dir in ('de', 'en'):
|
|
print('_' * 100)
|
|
print(dir)
|
|
fill(Path(BASE_PATH, f'inventory/locale/{dir}/LC_MESSAGES/django.po'))
|