#!/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'], universal_newlines=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)