Lex2Po/Po2Lex.py

41 lines
1.6 KiB
Python

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)