Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
125 changes: 125 additions & 0 deletions PureMac/es.lproj/Localizable.strings
Original file line number Diff line number Diff line change
@@ -0,0 +1,125 @@
/* Full Disk Access Banner */
"Full Disk Access Required" = "Se requiere acceso total al disco";
"PureMac needs Full Disk Access to scan Trash, Mail, Desktop, Documents, and Homebrew cache." = "PureMac necesita acceso total al disco para analizar la Papelera, Mail, Escritorio, Documentos y la caché de Homebrew.";
"Open Settings" = "Abrir Ajustes";

/* Top Bar */
"Macintosh HD" = "Macintosh HD";
"%@ free" = "%@ libres";
"Auto-clean: " = "Limpieza automática: ";

/* Sidebar */
"CLEANING" = "LIMPIEZA";
"Last cleaned: %@" = "Última limpieza: %@";

/* Smart Scan */
"Smart Scan" = "Análisis inteligente";
"Click Scan to start" = "Haz clic en Analizar para empezar";
"Total" = "Total";
"Used" = "Usado";
"Free" = "Libre";
"Purgeable" = "Purgable";
"junk found" = "archivos basura encontrados";
"Your Mac is clean!" = "¡Tu Mac está limpio!";
"freed up" = "liberados";
"Cleaning..." = "Limpiando...";
"Scanning..." = "Analizando...";
"%lld/%lld items" = "%lld/%lld elementos";

/* Category Detail */
"All Clean!" = "¡Todo limpio!";
"No junk files found in this category." = "No se encontraron archivos basura en esta categoría.";
"Not scanned yet" = "Aún no analizado";
"Click Scan to analyze this category" = "Haz clic en Analizar para revisar esta categoría";
"%lld of %lld selected" = "%lld de %lld seleccionados";
"Select All" = "Seleccionar todo";
"Deselect All" = "Deseleccionar todo";
"%lld items" = "%lld elementos";

/* Buttons */
"Scan" = "Analizar";
"Re-scan" = "Volver a analizar";
"Scan Again" = "Analizar de nuevo";
"Done" = "Listo";
"Clean (%@)" = "Limpiar (%@)";
"Clean %lld items (%@)" = "Limpiar %lld elementos (%@)";

/* Settings - Schedule */
"Schedule" = "Programación";
"Automatic Cleaning" = "Limpieza automática";
"Automatically scan and clean your Mac on a schedule" = "Analiza y limpia tu Mac automáticamente según una programación";
"Scan Interval" = "Intervalo de análisis";
"Automation" = "Automatización";
"Auto-clean after scan" = "Limpiar automáticamente tras el análisis";
"Minimum junk size to trigger clean:" = "Tamaño mínimo de basura para iniciar la limpieza:";
"50 MB" = "50 MB";
"100 MB" = "100 MB";
"250 MB" = "250 MB";
"500 MB" = "500 MB";
"1 GB" = "1 GB";
"Auto-purge purgeable space" = "Purgar automáticamente el espacio purgable";
"Show notification on completion" = "Mostrar notificación al finalizar";
"Status" = "Estado";
"Last run" = "Última ejecución";
"Next run" = "Próxima ejecución";
"Never" = "Nunca";
"Not scheduled" = "Sin programar";

/* Settings - General */
"General" = "General";
"App Behavior" = "Comportamiento de la app";
"Launch at login" = "Abrir al iniciar sesión";
"Show in Dock" = "Mostrar en el Dock";
"Show menu bar icon" = "Mostrar ícono en la barra de menús";
"Safety" = "Seguridad";
"PureMac will never delete system-critical files. Only caches, logs, temporary files, and user-selected items are removed." = "PureMac nunca eliminará archivos críticos del sistema. Solo se eliminan cachés, registros, archivos temporales y elementos seleccionados por el usuario.";

/* Settings - About */
"About" = "Acerca de";
"Version 1.0.0" = "Versión 1.0.0";
"A free, open-source Mac cleaning utility.\nKeep your Mac fast, clean, and optimized." = "Una utilidad de limpieza para Mac, gratuita y de código abierto.\nMantén tu Mac rápido, limpio y optimizado.";
"GitHub Repository" = "Repositorio de GitHub";
"MIT License" = "Licencia MIT";

/* Cleaning Categories */
"System Junk" = "Basura del sistema";
"User Cache" = "Caché de usuario";
"AI Apps" = "Apps de IA";
"Mail Files" = "Archivos de Mail";
"Trash Bins" = "Papeleras";
"Large & Old Files" = "Archivos grandes y antiguos";
"Purgeable Space" = "Espacio purgable";
"Xcode Junk" = "Basura de Xcode";
"Brew Cache" = "Caché de Brew";

/* Category Descriptions */
"Scan everything at once" = "Analiza todo a la vez";
"System caches, logs, and temporary files" = "Cachés del sistema, registros y archivos temporales";
"Application caches and browser data" = "Cachés de aplicaciones y datos del navegador";
"Logs, caches, and temporary files from local AI apps" = "Registros, cachés y archivos temporales de apps de IA locales";
"Downloaded mail attachments" = "Adjuntos de correo descargados";
"Files in your Trash" = "Archivos en tu Papelera";
"Files over 100 MB or older than 1 year" = "Archivos de más de 100 MB o con más de 1 año";
"APFS purgeable disk space" = "Espacio purgable de disco APFS";
"Derived data, archives, and simulators" = "Datos derivados, archivos y simuladores";
"Homebrew download cache" = "Caché de descargas de Homebrew";

/* Schedule Intervals */
"Every Hour" = "Cada hora";
"Every 3 Hours" = "Cada 3 horas";
"Every 6 Hours" = "Cada 6 horas";
"Every 12 Hours" = "Cada 12 horas";
"Daily" = "Diariamente";
"Weekly" = "Semanalmente";
"Every 2 Weeks" = "Cada 2 semanas";
"Monthly" = "Mensualmente";

/* Notifications */
"Found %@ of junk files." = "Se encontraron %@ de archivos basura.";

/* Node Cache */
"Node Cache" = "Caché de Node";
"npm, yarn, and pnpm download caches" = "Cachés de descarga de npm, yarn y pnpm";
"npm cache" = "caché de npm";
"yarn classic cache" = "caché de yarn classic";
"pnpm content-addressable store" = "almacén de contenido direccionable de pnpm";
8 changes: 8 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,14 @@
<img src="screenshot.png" alt="PureMac" width="700">
</p>

<p align="center">
<b>English</b> |
<a href="docs/README.es.md">Español</a> |
<a href="docs/README.ja.md">日本語</a> |
<a href="docs/README.zh-Hans.md">简体中文</a> |
<a href="docs/README.zh-Hant.md">繁體中文</a>
</p>

<h1 align="center">PureMac</h1>

<p align="center">
Expand Down
157 changes: 157 additions & 0 deletions docs/README.es.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,157 @@
<p align="center">
<img src="../screenshot.png" alt="PureMac" width="700">
</p>

<p align="center">
<a href="../README.md">English</a> |
<b>Español</b> |
<a href="README.ja.md">日本語</a> |
<a href="README.zh-Hans.md">简体中文</a> |
<a href="README.zh-Hant.md">繁體中文</a>
</p>

<h1 align="center">PureMac</h1>

<p align="center">
<b>Gestor de aplicaciones y limpiador de sistema para macOS, gratuito y de código abierto.</b><br>
Desinstala apps por completo. Encuentra archivos huérfanos. Limpia la basura del sistema.<br>
Sin suscripciones. Sin telemetría. Sin recolección de datos.
</p>

<p align="center">
<a href="https://github.com/momenbasel/PureMac/releases/latest"><img src="https://img.shields.io/github/v/release/momenbasel/PureMac?style=flat-square&label=Descargar" alt="Última versión"></a>
<a href="https://github.com/momenbasel/PureMac/actions/workflows/build.yml"><img src="https://img.shields.io/github/actions/workflow/status/momenbasel/PureMac/build.yml?style=flat-square&label=Build" alt="Estado de build"></a>
<img src="https://img.shields.io/badge/macOS-13.0+-blue?style=flat-square" alt="macOS 13.0+">
<img src="https://img.shields.io/badge/Swift-5.9-orange?style=flat-square" alt="Swift 5.9">
<a href="../LICENSE"><img src="https://img.shields.io/github/license/momenbasel/PureMac?style=flat-square" alt="Licencia MIT"></a>
<a href="https://github.com/momenbasel/PureMac/stargazers"><img src="https://img.shields.io/github/stars/momenbasel/PureMac?style=flat-square" alt="Estrellas"></a>
<a href="https://github.com/momenbasel/PureMac/releases"><img src="https://img.shields.io/github/downloads/momenbasel/PureMac/total?style=flat-square&label=Descargas" alt="Descargas"></a>
</p>

<p align="center">
<a href="#instalación">Instalación</a> -
<a href="#características">Características</a> -
<a href="#capturas">Capturas</a> -
<a href="#contribuir">Contribuir</a>
</p>

---

## Instalación

### Homebrew (recomendado)

```bash
brew update
brew install --cask puremac
```

### Descarga directa

Descarga el `.dmg` más reciente desde [Releases](https://github.com/momenbasel/PureMac/releases/latest), ábrelo y arrastra PureMac a `/Applications`.

> Firmado y notarizado con Apple Developer ID — se instala sin advertencias de Gatekeeper.

### Compilar desde el código fuente

```bash
brew install xcodegen
git clone https://github.com/momenbasel/PureMac.git
cd PureMac
xcodegen generate
xcodebuild -project PureMac.xcodeproj -scheme PureMac -configuration Release -derivedDataPath build build
open build/Build/Products/Release/PureMac.app
```

## Características

### Desinstalador de apps
- Descubre todas las apps instaladas desde `/Applications` y `~/Applications`
- Motor heurístico de búsqueda de archivos con **10 niveles de coincidencia** (bundle ID, nombre de la empresa, entitlements, team identifier, metadatos de Spotlight, descubrimiento de contenedores)
- **3 niveles de sensibilidad**: Estricto (seguro), Mejorado (equilibrado), Profundo (exhaustivo)
- Muestra todos los archivos relacionados: cachés, preferencias, contenedores, registros, archivos de soporte, launch agents
- Protección de apps del sistema: 27 apps de Apple están excluidas de la lista
- Vista maestro-detalle: tabla de apps a la izquierda, archivos descubiertos a la derecha

### Buscador de archivos huérfanos
- Detecta archivos sobrantes en `~/Library` de apps ya desinstaladas
- Compara el contenido de la Biblioteca con los identificadores de todas las apps instaladas
- Limpieza de archivos huérfanos con un clic

### Limpiador del sistema
- **Análisis inteligente** — análisis de un clic en todas las categorías
- **Basura del sistema** — cachés del sistema, registros y archivos temporales
- **Caché de usuario** — descubre dinámicamente todos los cachés de apps (sin lista predefinida)
- **Adjuntos de correo** — adjuntos de correo descargados
- **Papeleras** — vacía todas las papeleras
- **Archivos grandes y antiguos** — archivos de más de 100 MB o con más de 1 año
- **Espacio purgable** — detección de espacio purgable APFS
- **Basura de Xcode** — DerivedData, Archives, cachés de simuladores
- **Caché de Brew** — caché de descargas de Homebrew (detecta HOMEBREW_CACHE personalizado)
- **Limpieza programada** — análisis automático en intervalos configurables

### Experiencia nativa de macOS
- Desarrollado con SwiftUI usando componentes nativos de macOS
- `NavigationSplitView`, `Toggle`, `ProgressView`, `Form`, `GroupBox`, `Table`
- Respeta el modo claro/oscuro del sistema automáticamente
- Sin gradientes personalizados, resplandores ni estilos de app web
- Onboarding de primer arranque con configuración de acceso total al disco

### Seguridad
- Diálogos de confirmación antes de cualquier operación destructiva
- Prevención de ataques por enlaces simbólicos — resuelve y valida rutas antes de eliminar
- Protección de apps del sistema — las apps de Apple no se pueden desinstalar
- Los archivos grandes y antiguos nunca se seleccionan automáticamente
- Registro estructurado con `os.log` (visible en Consola.app)

## Capturas

| Onboarding | Desinstalador de apps |
|---|---|
| ![Onboarding](../screenshots/onboarding.png) | ![Desinstalador de apps](../screenshots/app-uninstaller.png) |

| Basura del sistema | Basura de Xcode |
|---|---|
| ![Basura del sistema](../screenshots/system-junk.png) | ![Basura de Xcode](../screenshots/xcode-junk.png) |

| Caché de usuario |
|---|
| ![Caché de usuario](../screenshots/user-cache.png) |

## Arquitectura

```
PureMac/
Logic/Scanning/ - Motor heurístico de escaneo, base de ubicaciones, condiciones
Logic/Utilities/ - Registro estructurado
Models/ - Modelos de datos, errores tipados
Services/ - Motor de escaneo, motor de limpieza, programador
ViewModels/ - Estado centralizado de la app
Views/ - Vistas nativas de SwiftUI
Apps/ - Vistas del desinstalador
Cleaning/ - Análisis inteligente y vistas de categorías
Orphans/ - Buscador de huérfanos
Settings/ - Ajustes basados en Form nativo
Components/ - Componentes compartidos
```

Componentes clave:
- **AppPathFinder** — motor de coincidencia heurística de 10 niveles para descubrir archivos de apps
- **Locations** — más de 120 rutas de búsqueda del sistema de archivos macOS
- **Conditions** — 25 reglas de coincidencia por app para casos especiales (Xcode, Chrome, VS Code, etc.)
- **AppInfoFetcher** — metadatos de Spotlight + respaldo de Info.plist para descubrir apps
- **Logger** — registro unificado con `os.log` de Apple

## Contribuir

Las contribuciones son bienvenidas. Consulta [CONTRIBUTING.md](../CONTRIBUTING.md) para las pautas.

Áreas donde la ayuda es especialmente bienvenida:
- Filtros predefinidos por tamaño y fecha en las vistas de categoría
- Cobertura de XCTest para AppState y el motor de escaneo
- Localización (es, pt-BR y otros idiomas)
- Diseño del ícono de la app

## Licencia

Licencia MIT. Consulta [LICENSE](../LICENSE) para más detalles.
Loading
Loading