mirror of
https://github.com/inventree/InvenTree.git
synced 2025-06-18 04:55:44 +00:00
Remove old script for calculating translation stats (#8787)
* Remove old script for calculating translation stats * Update tasks.py * Adjust unit test call
This commit is contained in:
@ -1,80 +0,0 @@
|
||||
"""This script calculates translation coverage for various languages."""
|
||||
|
||||
import json
|
||||
import os
|
||||
import sys
|
||||
|
||||
|
||||
def calculate_coverage(filename):
|
||||
"""Calculate translation coverage for a .po file."""
|
||||
with open(filename, encoding='utf-8') as f:
|
||||
lines = f.readlines()
|
||||
|
||||
lines_count = 0
|
||||
lines_covered = 0
|
||||
lines_uncovered = 0
|
||||
|
||||
for line in lines:
|
||||
if line.startswith('msgid '):
|
||||
lines_count += 1
|
||||
|
||||
elif line.startswith('msgstr'):
|
||||
if line.startswith(('msgstr ""', "msgstr ''")):
|
||||
lines_uncovered += 1
|
||||
else:
|
||||
lines_covered += 1
|
||||
|
||||
# Return stats for the file
|
||||
return (lines_count, lines_covered, lines_uncovered)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
MY_DIR = os.path.dirname(os.path.realpath(__file__))
|
||||
LC_DIR = os.path.abspath(os.path.join(MY_DIR, '..', 'locale'))
|
||||
STAT_FILE = os.path.abspath(
|
||||
os.path.join(MY_DIR, '..', 'InvenTree/locale_stats.json')
|
||||
)
|
||||
|
||||
locales = {}
|
||||
locales_perc = {}
|
||||
|
||||
verbose = '-v' in sys.argv
|
||||
|
||||
for locale in os.listdir(LC_DIR):
|
||||
path = os.path.join(LC_DIR, locale)
|
||||
if os.path.exists(path) and os.path.isdir(path):
|
||||
locale_file = os.path.join(path, 'LC_MESSAGES', 'django.po')
|
||||
|
||||
if os.path.exists(locale_file) and os.path.isfile(locale_file):
|
||||
locales[locale] = locale_file
|
||||
|
||||
if verbose:
|
||||
print('-' * 16)
|
||||
|
||||
percentages = []
|
||||
|
||||
for locale in locales:
|
||||
locale_file = locales[locale]
|
||||
stats = calculate_coverage(locale_file)
|
||||
|
||||
(total, covered, uncovered) = stats
|
||||
|
||||
percentage = int(covered / total * 100) if total > 0 else 0
|
||||
|
||||
if verbose:
|
||||
print(f'| {locale.ljust(4, " ")} : {str(percentage).rjust(4, " ")}% |')
|
||||
|
||||
locales_perc[locale] = percentage
|
||||
|
||||
percentages.append(percentage)
|
||||
|
||||
if verbose:
|
||||
print('-' * 16)
|
||||
|
||||
# write locale stats
|
||||
with open(STAT_FILE, 'w', encoding='utf-8') as target:
|
||||
json.dump(locales_perc, target)
|
||||
|
||||
avg = int(sum(percentages) / len(percentages)) if len(percentages) > 0 else 0
|
||||
|
||||
print(f'InvenTree translation coverage: {avg}%')
|
Reference in New Issue
Block a user