import json import os from collections import OrderedDict # dir_path = "./i18n/locale" # The path to the i18n locale directory, you can change it to your own path dir_path = "./Inference/i18n/locale" # Define the standard file name standard_file = os.path.join(dir_path, "zh_CN.json") # Find all JSON files in the directory languages = [ os.path.join(dir_path, f) for f in os.listdir(dir_path) if f.endswith(".json") and f != standard_file ] # Load the standard file with open(standard_file, "r", encoding="utf-8") as f: standard_data = json.load(f, object_pairs_hook=OrderedDict) # Loop through each language file for lang_file in languages: # Load the language file with open(lang_file, "r", encoding="utf-8") as f: lang_data = json.load(f, object_pairs_hook=OrderedDict) # Find the difference between the language file and the standard file diff = set(standard_data.keys()) - set(lang_data.keys()) miss = set(lang_data.keys()) - set(standard_data.keys()) # Add any missing keys to the language file for key in diff: lang_data[key] = standard_data[key] # Del any extra keys to the language file for key in miss: del lang_data[key] # Sort the keys of the language file to match the order of the standard file lang_data = OrderedDict( sorted(lang_data.items(), key=lambda x: list(standard_data.keys()).index(x[0])) ) # Save the updated language file with open(lang_file, "w", encoding="utf-8") as f: json.dump(lang_data, f, ensure_ascii=False, indent=4, sort_keys=True) f.write("\n")