import os from pathlib import Path import polib # Function to read and process .po file def process_po_file(file_name): try: po = polib.pofile(file_name) result = [] for entry in po: result.append({"msgctxt": entry.msgctxt, "msgid": entry.msgid, "msgstr": entry.msgstr}) return result except Exception as e: print(f"Process_po_file Exception {e} in {file_name}") quit() # Function to create .lex file def create_lex_file(translations, lex_file_name): with open(lex_file_name, "w") as file: for translation in translations: file.write(f"'{translation['msgctxt']}' => '{translation['msgstr']}',\n") # Main program SOURCE_BASE_DIR = Path("/home/brianr/Documents/smeserver-manager-locale/root/usr/share/smanager/lib/SrvMngr/I18N/Modules") # Iterate over subdirectories in SOURCE_BASE_DIR for subdir in [subdir.path for subdir in os.scandir(SOURCE_BASE_DIR) if subdir.is_dir()]: module_name = Path(subdir).name if module_name == 'Backup': print(f"Processing {module_name}") po_dir = Path(os.path.join(subdir, "pofiles")) lex_dir = Path(os.path.join(subdir, "newlex")) # Ensure the newlex directory exists lex_dir.mkdir(parents=True, exist_ok=True) for file in os.listdir(po_dir): if file.endswith(".po"): po_file_path = Path(os.path.join(po_dir, file)) translations = process_po_file(po_file_path) lex_file_name = lex_dir / (po_file_path.stem + ".lex") create_lex_file(translations, lex_file_name)