#!/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 "static/locale/{}/mobile.json".format(locale) def get_locales() -> List[str]: tracked_files = check_output(['git', 'ls-files', 'static/locale']) tracked_files = tracked_files.decode().split() regex = re.compile(r'static/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 = {} # type: 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('static', '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)