mirror of https://github.com/zulip/zulip.git
46 lines
1.4 KiB
Python
Executable File
46 lines
1.4 KiB
Python
Executable File
#!/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'])
|
|
tracked_files = output.decode().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)
|