# Remove Unused Translation Keys Script This Python script removes unused translation keys from all `.arb` files in the repository. ## Purpose After identifying unused keys with `find_unused_intl_keys.py`, this script automates the removal of those keys from all language files. It removes both the key-value pairs and their corresponding metadata entries. ## How It Works 1. **Loads Unused Keys**: Reads the list of unused keys from `unused_intl_keys.json` 2. **Processes Each File**: For each `.arb` file in `lib/l10n/`: - Loads the file as JSON - Identifies keys to remove (both base keys and their `@key` metadata) - Removes those keys while preserving order - Writes the cleaned JSON back to the file 3. **Reports Results**: Shows how many keys were removed from each file ## Usage ```bash # First, generate the list of unused keys python3 scripts/find_unused_intl_keys.py # Then, remove those keys from all .arb files python3 scripts/remove_unused_intl_keys.py ``` ## Output The script provides progress output showing how many keys were removed from each file: ``` Loading unused keys from JSON file... Found 488 unused keys to remove. Found 54 .arb files to process. Processing .arb files... ================================================================================ intl_en.arb: Removed 488 keys/metadata entries intl_es.arb: Removed 557 keys/metadata entries intl_fr.arb: Removed 950 keys/metadata entries ... ================================================================================ Total keys/metadata entries removed: 50015 Processed 54 .arb files successfully. ``` ## What Gets Removed For each unused key (e.g., `accountInformation`), the script removes: 1. The key itself: `"accountInformation": "Account information"` 2. Its metadata (if present): `"@accountInformation": { ... }` ## Important Notes - **Backup recommended**: The script modifies files in place. Consider committing your work or creating a backup before running. - **JSON parsing**: The script uses Python's JSON library, which: - Preserves the order of keys (using OrderedDict) - May reformat indentation to 2 spaces - Resolves duplicate keys by keeping the last value - **Validation**: After running, verify the files are still valid JSON and that the application still works correctly. ## Requirements - Python 3.x - Input file: `scripts/unused_intl_keys.json` (generated by `find_unused_intl_keys.py`) ## Example ```bash # Full workflow cd /path/to/repository # Step 1: Find unused keys python3 scripts/find_unused_intl_keys.py # Step 2: Review the list in scripts/unused_intl_keys.json # Step 3: Remove the unused keys python3 scripts/remove_unused_intl_keys.py # Step 4: Verify the changes git diff lib/l10n/ ``` ## Related Files - Input: `scripts/unused_intl_keys.json` - Modified: All `lib/l10n/intl_*.arb` files - Related: `scripts/find_unused_intl_keys.py` (generates the input file)