import json
active_languages = json.loads(open("active_languages.json", "r").read())
language_template = json.loads(open("language_template.json", "r").read())

if __name__ == "__main__":
    welcome = "WGDashboard Locale File Verification [by @donaldzou]"
    print("="*(len(welcome) + 4))
    print(f"| {welcome} |")
    print("="*(len(welcome) + 4))
    print()
    print("Active Languages\n")
    status = False

    for language in active_languages:
        print(f"{language['lang_name']} | {language['lang_id']}")
    
    lang_ids = list(map(lambda x: x['lang_id'], active_languages))    
    print()
    
    lang_id = ""
    
    while not status:
        lang_id = input("Please enter the language ID to verify: ")
        if lang_id not in lang_ids:
            print(f'{lang_id} is not a valid language ID')
        elif lang_id == 'en':
            print(f'{lang_id} is not a editable language')
        else:
            status = True
        
    
    with open(f"{lang_id}.json", "r") as f:
        lang_file = json.load(f)
    
    # Identify missing and deprecated translations
    missing_translation = [
        key for key in language_template
        if key not in lang_file or not lang_file[key].strip()
        ]
    
    deprecated_translation = [
        key for key in lang_file
        if key not in language_template
        ]
    
    with open(f"{lang_id}.json", "w") as f:
        new_lang_file = dict(lang_file)
        for key in missing_translation:
            new_lang_file[key] = ""
    
        for key in deprecated_translation:
            new_lang_file.pop(key)
    
        f.write(json.dumps(new_lang_file, ensure_ascii=False, indent='\t'))
            
    
    print()
    # Print missing translations
    print(f"\t[Missing Translations] {len(missing_translation)} translation{'s' if len(missing_translation) > 1 else ''}")
    # Print deprecated translations
    print(f"\t[Deprecated Translations] {len(deprecated_translation)} translation{'s' if len(deprecated_translation) > 1 else ''}")
    print(f"\t[Note] All missing translations are added into {lang_id}.json, all deprecated translations are removed from {lang_id}.json")