Update Po2Lex - still WIP
This commit is contained in:
		
							
								
								
									
										35
									
								
								Po2Lex.py
									
									
									
									
									
								
							
							
						
						
									
										35
									
								
								Po2Lex.py
									
									
									
									
									
								
							| @@ -1,9 +1,10 @@ | |||||||
| import os |  | ||||||
| import re | import re | ||||||
|  | import os | ||||||
| from pathlib import Path | from pathlib import Path | ||||||
|  |  | ||||||
| # Function to read and process .po file | # Function to read and process .po file | ||||||
| def process_po_file(file_name): | def process_po_file(file_name): | ||||||
|  | 	try: | ||||||
| 		with open(file_name, "r") as file: | 		with open(file_name, "r") as file: | ||||||
| 			content = file.read() | 			content = file.read() | ||||||
|  |  | ||||||
| @@ -12,7 +13,6 @@ def process_po_file(file_name): | |||||||
| 			result = [] | 			result = [] | ||||||
| 			for entry in entries: | 			for entry in entries: | ||||||
| 				lines = entry.split("\n") | 				lines = entry.split("\n") | ||||||
|  |  | ||||||
| 				msgctxt_line = lines[0] | 				msgctxt_line = lines[0] | ||||||
| 				msgid_lines = [line for line in lines if line.startswith("msgid")] | 				msgid_lines = [line for line in lines if line.startswith("msgid")] | ||||||
| 				msgstr_lines = [line for line in lines if line.startswith("msgstr")] | 				msgstr_lines = [line for line in lines if line.startswith("msgstr")] | ||||||
| @@ -24,6 +24,9 @@ def process_po_file(file_name): | |||||||
| 				result.append({"msgctxt": msgctxt, "msgid": msgid, "msgstr": msgstr}) | 				result.append({"msgctxt": msgctxt, "msgid": msgid, "msgstr": msgstr}) | ||||||
|  |  | ||||||
| 		return result | 		return result | ||||||
|  | 	except Exception as e: | ||||||
|  | 		print(f"Process_po_file Exception {e} in {file_name} {msgctxt_line}") | ||||||
|  | 		quit() | ||||||
|  |  | ||||||
| # Function to create .lex file | # Function to create .lex file | ||||||
| def create_lex_file(translations, lex_file_name): | def create_lex_file(translations, lex_file_name): | ||||||
| @@ -32,22 +35,22 @@ def create_lex_file(translations, lex_file_name): | |||||||
|             file.write(f"'{translation['msgctxt']}' => '{translation['msgstr']}',\n") |             file.write(f"'{translation['msgctxt']}' => '{translation['msgstr']}',\n") | ||||||
|  |  | ||||||
| # Main program | # Main program | ||||||
| SOURCE_POFILES_DIR = Path("/home/brianr/Documents/smeserver-manager-locale/root/usr/share/smanager/lib/SrvMngr/I18N/Modules") | SOURCE_BASE_DIR = Path("/home/brianr/Documents/smeserver-manager-locale/root/usr/share/smanager/lib/SrvMngr/I18N/Modules") | ||||||
| TARGET_LEXFILES_DIR = Path("/home/brianr/Documents/smeserver-manager/root/usr/share/smanager/lib/SrvMngr/I18N/Modules") |  | ||||||
|  |  | ||||||
| # ensuring the target directory exists | # Iterate over subdirectories in SOURCE_BASE_DIR | ||||||
| TARGET_LEXFILES_DIR.mkdir(parents=True, exist_ok=True) | for subdir in [subdir.path for subdir in os.scandir(SOURCE_BASE_DIR) if subdir.is_dir()]: | ||||||
|  | 	module_name = Path(subdir).name | ||||||
|  | 	print(f"Processing {module_name}") | ||||||
|  | 	po_dir = Path(os.path.join(subdir, "pofiles")) | ||||||
|  | 	#print(po_dir) | ||||||
|  | 	lex_dir = Path(os.path.join(subdir, "newlex")) | ||||||
|  | 	#print(lex_dir) | ||||||
|  | 	# Ensure the newlex directory exists | ||||||
|  | 	lex_dir.mkdir(parents=True, exist_ok=True) | ||||||
|  |  | ||||||
| # Iterate over subdirectories in SOURCE_POFILES_DIR (only one level down) | 	for file in os.listdir(po_dir): | ||||||
| # Iterate over subdirectories in SOURCE_POFILES_DIR (only one level down) |  | ||||||
| for subdir in [subdir.path for subdir in os.scandir(SOURCE_POFILES_DIR) if subdir.is_dir()]: |  | ||||||
|     po_subdir_path = Path(subdir + "/pofiles") |  | ||||||
|     newlex_subdir_path = Path(subdir + "/newlex") |  | ||||||
|     newlex_subdir_path.mkdir(parents=True, exist_ok=True) |  | ||||||
|  |  | ||||||
|     for file in os.listdir(subdir): |  | ||||||
| 		if file.endswith(".po"): | 		if file.endswith(".po"): | ||||||
|             po_file_path = Path(os.path.join(subdir, file)) | 			po_file_path = Path(os.path.join(po_dir, file)) | ||||||
| 			translations = process_po_file(po_file_path) | 			translations = process_po_file(po_file_path) | ||||||
|             lex_file_name = newlex_subdir_path / (po_file_path.stem + ".lex") | 			lex_file_name = lex_dir / (po_file_path.stem + ".lex") | ||||||
| 			create_lex_file(translations, lex_file_name) | 			create_lex_file(translations, lex_file_name) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user