mirror of
https://github.com/zulip/zulip.git
synced 2025-11-02 04:53:36 +00:00
This script iterates over all the mobile.json resources and creates a single file at static/locale/mobile_info.json which contains total and not-translated strings information against each language. After doing this, it deletes all the mobile i18n resources downloaded by tools/sync-translations because we neither want to check them in our repository nor we want to make our repository dirty.
46 lines
1.5 KiB
Python
Executable File
46 lines
1.5 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 "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)
|