#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import re
import glob

def clean_duplicate_keys(file_path):
    """清理文件中的重复key，保留最后一个定义"""
    print(f"Cleaning duplicates in {file_path}...")
    
    # 读取文件内容
    with open(file_path, 'r', encoding='utf-8') as f:
        lines = f.readlines()
    
    # 解析key-value对
    key_value_pairs = {}
    line_info = []
    
    for i, line in enumerate(lines):
        line = line.strip()
        if not line or line.startswith('//'):
            line_info.append((i, line, None, None))
            continue
            
        match = re.match(r'^"([^"]+)"\s*=\s*"([^"]*)"\s*;', line)
        if match:
            key, value = match.group(1), match.group(2)
            key_value_pairs[key] = value
            line_info.append((i, line, key, value))
        else:
            line_info.append((i, line, None, None))
    
    # 重建文件内容，去除重复的key
    seen_keys = set()
    cleaned_lines = []
    
    for i, line, key, value in reversed(line_info):  # 从后往前处理，保留最后一个定义
        if key is None:
            cleaned_lines.insert(0, line)
        elif key not in seen_keys:
            seen_keys.add(key)
            cleaned_lines.insert(0, line)
        else:
            print(f"  Removed duplicate key: {key}")
    
    # 写回文件
    with open(file_path, 'w', encoding='utf-8') as f:
        for line in cleaned_lines:
            f.write(line + '\n')
    
    print(f"  Cleaned {file_path}")

def main():
    """主函数"""
    print("Cleaning duplicate keys in localization files...")
    
    # 处理所有本地化文件
    lproj_files = glob.glob('MyQrCode/*.lproj/Localizable.strings')
    
    for file_path in lproj_files:
        clean_duplicate_keys(file_path)
    
    print("Done!")

if __name__ == "__main__":
    main()
