|
| 1 | +--- |
| 2 | +name: crear-issues-traduccion |
| 3 | +description: Crear los issues de traducción del pendiente, con título, etiquetas y criterios de aceptación según la convención del repo |
| 4 | +--- |
| 5 | + |
| 6 | +# Crear issues de traducción |
| 7 | + |
| 8 | +Convierte el pendiente detectado en issues de GitHub bien formados. El agrupado |
| 9 | +lo calcula la herramienta; lo que aporta este skill es lo que un script no |
| 10 | +acierta: **nombrar** cada lote y escribir sus criterios de aceptación. |
| 11 | + |
| 12 | +## Paso 1 — Obtener el pendiente agrupado |
| 13 | + |
| 14 | +```shell |
| 15 | +npm run check-translations -- --issues |
| 16 | +``` |
| 17 | + |
| 18 | +Devuelve lotes ya agrupados por carpeta, subiendo de nivel cuando una carpeta no |
| 19 | +reúne suficientes archivos. Cada lote sale marcado con `← renombra esto`: ese es |
| 20 | +tu trabajo. |
| 21 | + |
| 22 | +Si necesitas los datos crudos —para contar, filtrar o ver los diffs—: |
| 23 | + |
| 24 | +```shell |
| 25 | +npm run check-translations -- --json |
| 26 | +``` |
| 27 | + |
| 28 | +## Paso 2 — Comprobar qué ya existe |
| 29 | + |
| 30 | +**Antes de crear nada.** El repo mantiene estos issues a mano y duplicarlos es |
| 31 | +peor que no crearlos: |
| 32 | + |
| 33 | +```shell |
| 34 | +gh issue list --state open --limit 100 --search "traducir OR actualizar" |
| 35 | +``` |
| 36 | + |
| 37 | +Si un lote ya tiene issue, no lo abras de nuevo. Si el issue existe pero le |
| 38 | +faltan archivos que ahora sí detectamos, **coméntalo** en vez de abrir otro. |
| 39 | + |
| 40 | +## Paso 3 — Componer el título |
| 41 | + |
| 42 | +Cuatro patrones, todos sacados del historial del repo: |
| 43 | + |
| 44 | +| Situación | Patrón | Ejemplos reales | |
| 45 | +| --- | --- | --- | |
| 46 | +| Una carpeta de guías | `Traducir - Guías de <X>` | Guías de Errores · Guías de SSR · Guías de Componentes | |
| 47 | +| Un solo documento | `Traducir - Guía de <X>` | Guía de Seguridad · Guía de Tailwind · Guía Zoneless | |
| 48 | +| Un tutorial | `Traducir - Tutorial <X>` | Tutorial Signals · Tutorial Learn Angular | |
| 49 | +| Página con nombre propio | `Traducir - <Nombre>` | Press Kit · Roadmap · Releases | |
| 50 | + |
| 51 | +Para traducciones desactualizadas, cambia el verbo: `Actualizar - Pasos del |
| 52 | +tutorial Learn Angular`. |
| 53 | + |
| 54 | +Si las páginas las trae una versión nueva de Angular, antepón la versión: |
| 55 | +`[Angular 22.1] Traducir guías de Signal Forms`. |
| 56 | + |
| 57 | +### Cómo nombrar la sección |
| 58 | + |
| 59 | +La misma regla del glosario: **el descriptor va en español, el nombre de |
| 60 | +producto o API se queda en inglés.** |
| 61 | + |
| 62 | +- `reference/errors` → **Guías de Errores** |
| 63 | +- `guide/forms/signals` → **Guías de Signal Forms** (no «Formularios de Señales») |
| 64 | +- `guide/di` → **Guías de Inyección de Dependencias** |
| 65 | +- `tools/devtools` → **Guías de Devtools** |
| 66 | +- `guide/zoneless` → **Guía Zoneless** |
| 67 | + |
| 68 | +Ante la duda, **mira cómo se llama esa sección en el menú**: ahí ya está |
| 69 | +traducida y decidida por alguien. |
| 70 | + |
| 71 | +```shell |
| 72 | +grep -n "label:" adev-es/src/app/routing/navigation-entries/index.ts | grep -i <sección> |
| 73 | +``` |
| 74 | + |
| 75 | +Ese archivo es la mejor referencia de estilo que hay. Por ejemplo: |
| 76 | + |
| 77 | +| En el menú | Qué enseña | |
| 78 | +| --- | --- | |
| 79 | +| `Enciclopedia de Errores` | el descriptor se traduce | |
| 80 | +| `Inyección de Dependencias` | término establecido, en español | |
| 81 | +| `Estado dependiente con linkedSignal` | el nombre de la API se queda en inglés | |
| 82 | + |
| 83 | +Nunca uses la ruta como título. `reference/errors` es el dato de entrada, no el |
| 84 | +nombre. |
| 85 | + |
| 86 | +## Paso 4 — Elegir etiquetas |
| 87 | + |
| 88 | +- `docs-translation` — **siempre**. El 17 % de los issues del repo no la tiene, y |
| 89 | + por eso las búsquedas por etiqueta no son fiables. |
| 90 | +- `good first issue` — solo si el lote es pequeño (1–3 archivos), sin bloques de |
| 91 | + código complejos y sin terminología nueva. |
| 92 | +- `help wanted` — cuando el lote es grande y conviene repartirlo. |
| 93 | + |
| 94 | +No inventes etiquetas: usa las que existen (`gh label list`). |
| 95 | + |
| 96 | +## Paso 5 — Escribir el cuerpo |
| 97 | + |
| 98 | +Estructura fija: |
| 99 | + |
| 100 | +```markdown |
| 101 | +<una frase de contexto: de dónde salen estas páginas> |
| 102 | + |
| 103 | +## Archivos |
| 104 | + |
| 105 | +- [ ] `archivo.md` |
| 106 | +- [ ] `otro.md` |
| 107 | + |
| 108 | +## Criterios de aceptación |
| 109 | + |
| 110 | +- [ ] Cada archivo tiene su `.en.md` con el original en inglés |
| 111 | +- [ ] `npm run lint-glossary` no reporta problemas en los archivos tocados |
| 112 | +- [ ] `npm run check-translations` ya no los lista |
| 113 | +- [ ] Los prefijos de alerta (`NOTE:`, `TIP:`, `IMPORTANT:`…) siguen en inglés |
| 114 | +- [ ] `.md` y `.en.md` van en el mismo commit |
| 115 | +``` |
| 116 | + |
| 117 | +Para un lote de **actualización** los criterios cambian, porque el trabajo es otro: |
| 118 | + |
| 119 | +```markdown |
| 120 | +## Criterios de aceptación |
| 121 | + |
| 122 | +- [ ] Solo se tocaron los bloques que cambiaron en el original |
| 123 | +- [ ] `npm run verify-translation -- <ruta>` pasa en cada archivo |
| 124 | +- [ ] `npm run check-translations` ya no los lista |
| 125 | +- [ ] `.md` y `.en.md` van en el mismo commit |
| 126 | +``` |
| 127 | + |
| 128 | +### Sobre los criterios |
| 129 | + |
| 130 | +Son verificables con un comando, a propósito. Un criterio como «la traducción |
| 131 | +suena natural» no se puede marcar como cumplido sin discutir; «`lint-glossary` |
| 132 | +no reporta problemas» sí. |
| 133 | + |
| 134 | +En los lotes de actualización, incluye el conteo de líneas por archivo que da la |
| 135 | +herramienta: distingue el trabajo de dos minutos del de media hora y ayuda a |
| 136 | +repartir. |
| 137 | + |
| 138 | +## Paso 6 — Crear el issue |
| 139 | + |
| 140 | +```shell |
| 141 | +gh issue create \ |
| 142 | + --title "Traducir - Guías de Errores" \ |
| 143 | + --label docs-translation \ |
| 144 | + --body-file cuerpo.md |
| 145 | +``` |
| 146 | + |
| 147 | +Usa `--body-file`: pasar markdown largo con `--body` se rompe con las comillas y |
| 148 | +los saltos de línea. |
| 149 | + |
| 150 | +> [!IMPORTANT] |
| 151 | +> Crear issues es una acción visible para toda la comunidad. **Enseña los |
| 152 | +> borradores y espera confirmación antes de ejecutar `gh issue create`**, incluso |
| 153 | +> si te pidieron crearlos. Un lote mal agrupado o mal nombrado hay que cerrarlo a |
| 154 | +> mano después. |
| 155 | +
|
| 156 | +## Qué no hacer |
| 157 | + |
| 158 | +- **No abrir un issue por archivo.** El repo agrupa por sección; 31 issues para |
| 159 | + 31 archivos es ruido que nadie atiende. |
| 160 | +- **No mezclar traducir con actualizar** en el mismo issue: el procedimiento es |
| 161 | + distinto y los criterios de aceptación también. |
| 162 | +- **No incluir archivos huérfanos.** Si `check-translations` los lista como |
| 163 | + huérfanos, esas páginas ya no existen en el original: hay que borrarlas, no |
| 164 | + traducirlas. |
| 165 | +- **No usar la ruta como título.** |
0 commit comments