From 54491abe8ed26b7f5d837eb9aa2ad95482be1164 Mon Sep 17 00:00:00 2001 From: Cody Robertson Date: Sat, 22 Jul 2023 19:34:16 -0400 Subject: [PATCH] Populate missing i18n keys in en.json, print unused i18n keys (#253) * Adjust find_missing_i8n_strings.py logic - Add missing keys in i18n/en.json - Print unused i18n keys * Couple of TODO items --- find_missing_i18n_strings.py | 33 ++++++++++++++++++++++++++++----- 1 file changed, 28 insertions(+), 5 deletions(-) diff --git a/find_missing_i18n_strings.py b/find_missing_i18n_strings.py index 7d07569..6b05fa4 100644 --- a/find_missing_i18n_strings.py +++ b/find_missing_i18n_strings.py @@ -2,11 +2,18 @@ import re import os import json -en = json.load(open('i18n/en.json')) +# Open the json file and load its contents into a dictionary +with open('i18n/en.json', 'r') as f: + en = json.load(f) + +# Create a copy of the en dictionary's keys and convert it to a set for better performance +unused_keys = set(en.keys()) + error = False -dict = {} +missing_keys = {} -rootdir=('.') +rootdir = '.' +# TODO: Crawl only content/* for folder, dirs, files in os.walk(rootdir): for file in files: if file.endswith('.html'): @@ -19,8 +26,24 @@ for folder, dirs, files in os.walk(rootdir): if string not in en: error = True print(f'TRANSLATION ERROR: {string}') - dict[string] = string + missing_keys[string] = '' + en[string] = string # Add the missing key to the dictionary with an empty value + elif string in unused_keys: + unused_keys.remove(string) +# If there are missing keys, dump the updated dictionary back into the json file if error: - print(json.dumps(dict, indent=3)) + print(json.dumps(missing_keys, indent=3)) + with open('i18n/en.json', 'w') as f: + json.dump(en, f, indent=3) exit(1) + +# If there are unused keys, print them +# TODO: Do something useful? +if unused_keys: + print("UNUSED KEYS:") + for key in unused_keys: + print(key) +else: + print("No unused keys found.") +