$value) { $parts = explode('.', $key); $prefix = $parts[0]; if (!isset($grouped[$prefix])) { $grouped[$prefix] = []; } $grouped[$prefix][$key] = $value; } ksort($grouped); // Display each group foreach ($grouped as $prefix => $items) { echo "\n" . strtoupper($prefix) . " (" . count($items) . " keys)\n"; echo str_repeat('-', 100) . "\n"; foreach ($items as $key => $value) { // Truncate very long values if (strlen($value) > 70) { $value = substr($value, 0, 67) . '...'; } printf(" %-50s → %s\n", $key, $value); } } echo "\n" . str_repeat('=', 100) . "\n"; echo "TOTAL: " . count($keys) . " unused translation keys\n\n"; echo "NOTE: Some keys may be used dynamically (e.g., __(\$variable)).\n"; echo "Review carefully before deleting.\n\n"; // Save clean list for user reference $cleanList = array_keys($keys); file_put_contents('/tmp/unused-keys-clean.txt', implode("\n", $cleanList)); echo "Clean key list saved to: /tmp/unused-keys-clean.txt\n";