41 lines
1.5 KiB
Python
41 lines
1.5 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)
|