From b399cb1a5fc496de130dc5baae5e6a609b22c86f Mon Sep 17 00:00:00 2001 From: Brian Read Date: Sun, 21 Jul 2024 08:29:05 +0100 Subject: [PATCH] Expand Po2Lex to do all directories, expand Placeholder message if no english equiv found --- Lex2Po.py | 24 ++++++++++++++++++------ Po2Lex.py | 26 +++++++++++++------------- 2 files changed, 31 insertions(+), 19 deletions(-) diff --git a/Lex2Po.py b/Lex2Po.py index 3dafc0f..afb179c 100644 --- a/Lex2Po.py +++ b/Lex2Po.py @@ -19,9 +19,19 @@ def parse_lex_file(lex_file): with open(lex_file, 'r', encoding='utf-8') as file: content = file.read() # Use regex to find all key-value pairs, handling quotes around keys optionally + # matches = re.finditer(r""" + # (['"]?) # Optional opening quote for the key + # ([^'" \t]+?) # The key itself (excluding quotes and whitespace) + # \1 # Optional closing quote matching the opening quote + # \s*=>\s* # The delimiter + # ' # Opening quote for the value + # (.*?) # The value (non-greedy to capture minimal text) + # ' # Closing quote for the value + # \s*,\s* # Trailing comma and optional whitespace + # """, content, re.DOTALL | re.VERBOSE) matches = re.finditer(r""" (['"]?) # Optional opening quote for the key - ([^'" \t]+?) # The key itself (excluding quotes and whitespace) + (.*?) # The key itself (including spaces and any characters) \1 # Optional closing quote matching the opening quote \s*=>\s* # The delimiter ' # Opening quote for the value @@ -29,7 +39,6 @@ def parse_lex_file(lex_file): ' # Closing quote for the value \s*,\s* # Trailing comma and optional whitespace """, content, re.DOTALL | re.VERBOSE) - #matches = re.findall(r"['\"]?([^'\"]+)['\"]?\s*=>\s*['\"](.*?)['\"]\s*,", content, re.DOTALL) for match in matches: key, value = match.group(2).strip(), match.group(3).strip() entries[key] = value.replace("\\n", "\n") @@ -99,16 +108,19 @@ def convert_lex_to_po(lex_file, po_file, en_entries, general_en_entries,IsGenera new_entries = [] for msgctxt, msgstr in translated_entries.items(): - msgid = en_entries.get(msgctxt, "") # Find the original text using msgctxt (Msg ID) + msgid = en_entries.get(msgctxt, "") # Find the original text using spacey version of msgctxt (Msg ID) if not msgid: - print(f"Warning: Could not find original text for Msg ID '{msgctxt} ({language_code})") + print(f"Warning: Could not find original text for Msg ID {msgctxt} ({language_code})") # See if in General msgid = general_en_entries.get(msgctxt, "") if not msgid: - msgid = "Placeholder for missing original text" + msgid = "Placeholder for missing original text - this means that \ + there was a string in the translated lex file which did not appear in the english base file.\ + Probably due to it no longer being required." new_entries.append((msgctxt, msgid)) else: - print(f"Found {msgctxt} => {msgid} in general") + print(f"Found {msgctxt} => {msgid} in general") + entry = polib.POEntry( msgctxt=msgctxt, msgid=msgid, diff --git a/Po2Lex.py b/Po2Lex.py index 7e22aff..b63750f 100644 --- a/Po2Lex.py +++ b/Po2Lex.py @@ -25,16 +25,16 @@ SOURCE_BASE_DIR = Path("/home/brianr/Documents/smeserver-manager-locale/root/usr # 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) + 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)