import os import re def get_translation_ids_from_source(): # find all HTML files in selected directories files = [] for start in ["lnbits/core/templates", "lnbits/templates", "lnbits/static/js"]: for check_dir, _, filenames in os.walk(start): for filename in filenames: if filename.endswith(".html") or filename.endswith(".js"): fn = os.path.join(check_dir, filename) files.append(fn) # find all $t('...') and $t("...") calls in HTML files # and extract the string inside the quotes p1 = re.compile(r"\$t\('([^']*)'") p2 = re.compile(r'\$t\("([^"]*)"') ids = [] for fn in files: with open(fn) as f: text = f.read() m1 = re.findall(p1, text) m2 = re.findall(p2, text) for m in m1: ids.append(m) for m in m2: ids.append(m) return ids def get_translation_ids_for_language(language): ids = [] for line in open(f"lnbits/static/i18n/{language}.js"): # extract ids from lines like that start with exactly 2 spaces if line.startswith(" ") and not line.startswith(" "): m = line[2:].split(":")[0] ids.append(m) return ids src_ids = get_translation_ids_from_source() print(f"Number of ids from source: {len(src_ids)}") en_ids = get_translation_ids_for_language("en") missing = set(src_ids) - set(en_ids) extra = set(en_ids) - set(src_ids) if len(missing) > 0: print() print(f'Missing ids in language "en": {len(missing)}') for i in sorted(missing): print(f" {i}") if len(extra) > 0: print() print(f'Extraneous ids in language "en": {len(extra)}') for i in sorted(extra): print(f" {i}") languages = [] for *_, filenames in os.walk("lnbits/static/i18n"): for filename in filenames: if filename.endswith(".js") and filename not in ["i18n.js", "en.js"]: languages.append(filename.split(".")[0]) for lang in sorted(languages): ids = get_translation_ids_for_language(lang) missing = set(en_ids) - set(ids) extra = set(ids) - set(en_ids) if len(missing) > 0: print() print(f'Missing ids in language "{lang}": {len(missing)}') for i in sorted(missing): print(f" {i}") if len(extra) > 0: print() print(f'Extraneous ids in language "{lang}": {len(extra)}') for i in sorted(extra): print(f" {i}")