import re filepath = 'lib/controller/local/translations.dart' with open(filepath, 'r', encoding='utf-8') as f: lines = f.readlines() new_lines = [] seen_keys_en = set() seen_keys_ar = set() in_en = False in_ar = False for line in lines: if '"en": {' in line: in_en = True in_ar = False new_lines.append(line) continue if '"ar": {' in line: in_en = False in_ar = True new_lines.append(line) continue if '};' in line or ' }' in line: if in_en or in_ar: if ' }' in line: in_en = False in_ar = False new_lines.append(line) continue # Try to extract key and value using a more careful approach # Looking for: "key": "value", # We find the first " and the last " and the middle separator ": " stripped = line.strip() if stripped.startswith('"') and (stripped.endswith('",') or stripped.endswith('"')): # Split by ": " but only once try: # We need to find the ": " that separates key and value # Since keys and values can contain ": ", we look for the one surrounded by quotes # A common pattern is "...": "..." parts = re.split(r'":\s+"', stripped) if len(parts) >= 2: # Key is from index 1 to second-to-last char of first part key = parts[0][1:] # Value is from index 0 to last char (excluding optional comma and final quote) val_part = parts[1] if val_part.endswith(','): val = val_part[:-2] comma = ',' else: val = val_part[:-1] comma = '' # FIX 1: Trailing backslashes if key.endswith('\\') and not key.endswith('\\\\'): key += '\\' if val.endswith('\\') and not val.endswith('\\\\'): val += '\\' # FIX 2: Unescaped dollar signs key = re.sub(r'(?