# F-116 — Traducir categorías legacy a Español (Title Case)

## Cambios
- `src/modules/categories/legacy/legacy-catalog.ts`:
  - `CATEGORY_TRANSLATIONS`: tabla de traducción para las 39 categorías reales (incluye las que ya estaban en español como alias).
  - `translateCategoryName(name)`: devuelve el nombre en español o el original si no hay mapping.
  - `buildRenamePlan(existingCategoryNames)`: lista de renombres en sitio (ocId, oldName, newName).
  - `buildImportPlan`: ahora ignora entradas cuyo nombre en inglés ya está en el catálogo (las maneja el rename plan).
- `src/modules/categories/tests/legacy-catalog.test.ts`: 3 nuevos tests (Title Case, cobertura, renombre).
- `scripts/seed-legacy-categories.mjs`:
  - `buildRenamePlan` se calcula al inicio.
  - Tras los inserts, ejecuta `UPDATE categories_categories SET name = $1 WHERE name = $2` por cada rename.
  - Idempotente: re-ejecuciones no renombran nada.

## Aplicación
- 30 categorías renombradas en su lugar (slugs conservados).
- 0 inserts nuevos (todas las categorías ya existían desde F-114).
- 0 renames en segunda ejecución (idempotente).

## Evidencia
- `npm run typecheck` OK.
- `npm test`: 172 passed / 0 failed (3 nuevos).
- `npm run build` OK.
- DB: `nuts-and-seeds` → "Frutos Secos y Semillas", `wine` → "Vino", `tea-and-infusions` → "Té e Infusiones", `home` → "Hogar".
- URLs (`/categoria/<slug>`) intactas: los slugs no cambian.
