diff --git a/scripts/process-mobile-i18n b/scripts/process-mobile-i18n new file mode 100755 index 0000000000..b50ccfab2f --- /dev/null +++ b/scripts/process-mobile-i18n @@ -0,0 +1,45 @@ +#!/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('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_info(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_info = {} # 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): + info = get_translation_info(path) + translation_info.update({locale: info}) + locale_paths.append(path) + +resource_file_path = os.path.join('static', 'locale', 'mobile_info.json') +with open(resource_file_path, 'w') as f: + json.dump(translation_info, f, indent=2, sort_keys=True) + f.write('\n') + +print("Mobile resource file created at: " + resource_file_path)