2
0
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:
Oliver
2024-12-29 20:41:14 +11:00
committed by GitHub
parent b36027b5c1
commit 1c2ad94bb7
4 changed files with 29 additions and 108 deletions

View File

@ -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}%')