#!/usr/bin/env python3 import json import os import re from subprocess import check_output from typing import Dict, List def get_json_filename(locale: str) -> str: return f"locale/{locale}/mobile.json" def get_locales() -> List[str]: output = check_output(["git", "ls-files", "locale"], text=True) tracked_files = output.split() regex = re.compile(r"locale/(\w+)/LC_MESSAGES/django.po") locales = ["en"] for tracked_file in tracked_files: matched = regex.search(tracked_file) if matched: locales.append(matched.group(1)) return locales def get_translation_stats(resource_path: str) -> Dict[str, int]: with open(resource_path) as raw_resource_file: raw_info = json.load(raw_resource_file) total = len(raw_info) not_translated = len([i for i in raw_info.items() if i[1] == ""]) return {"total": total, "not_translated": not_translated} translation_stats: Dict[str, Dict[str, int]] = {} locale_paths = [] # List[str] for locale in get_locales(): path = get_json_filename(locale) if os.path.exists(path): stats = get_translation_stats(path) translation_stats.update({locale: stats}) locale_paths.append(path) stats_path = os.path.join("locale", "mobile_info.json") with open(stats_path, "w") as f: json.dump(translation_stats, f, indent=2, sort_keys=True) f.write("\n") print("Mobile stats file created at: " + stats_path)