Skip to content

feat(i18n): workflows en ingles, 19 de 19 (tarea 12, 19/n) - #73

Merged
keilynrp merged 1 commit into
masterfrom
feat/i18n-en-workflows
Oct 7, 2026
Merged

keilynrp merged 1 commit into
masterfrom
feat/i18n-en-workflows

Conversation

@keilynrp

@keilynrp keilynrp commented Oct 7, 2026

Copy link
Copy Markdown
Collaborator

Resumen

Tarea 12 del plan de i18n, decimonovena y última parte de los espacios: traduce a inglés workflows (la lista, el historial de ejecuciones y el diálogo de alta). Con él, en tiene los 19 de 19 espacios de es.

⚠️ Efecto de este PR: el frontend ofrece en solo

releasedLocales ofrece un idioma en cuanto tiene todos los espacios del base, sin interruptor aparte. Así que al mergear este PR el frontend pasa a ofrecer inglés: aparece el selector de idioma (login, registro, ajustes), la detección del navegador elige en si el navegador está en inglés y setLocale("en") se acepta.

El backend todavía no lo ofrece (UNRELEASED_LOCALES = ("en",)), que es justo el desfase que advierte el comentario de backend/app/core/i18n/__init__.py: pasar en a SUPPORTED_LOCALES es el paso siguiente de la tarea 12. Entre este merge y ese PR, un usuario con la interfaz en inglés recibiría en español lo que renderiza el servidor (PDF de cotización, correos) y el PATCH de su locale con en se rechazaría. Si hay usuarios reales, conviene que el PR del backend vaya justo detrás (o junto con este).

Ajustes en los tests que asumían un solo idioma

  • test/pin-locale.ts (nuevo, primero en setup.ts): jsdom declara en-US y el i18n global arrancaba en inglés, rompiendo 266 tests «in Spanish». Se fija el navegador de pruebas en es; los tests de inglés usan su propia instancia.
  • notFromCatalogue y los filtros propios de Login y Register descartan los nombres de idioma («English», «Español»): el selector ya aparece y no es texto que falte en un catálogo.
  • i18n.test.ts: los dos tests de la puerta de lanzamiento pasan a comprobar que en se ofrece, que setLocale("en") se aplica y se recuerda, y que un idioma sin catálogo (fr) sigue fuera de alcance.
  • english.test.tsx: el test de caída al español le quita un espacio a en a mano, porque ya no queda ninguno pendiente.
  • LanguageSelector.test.tsx: «no dibuja nada con un solo idioma» pasa locales={["es"]}.

Tests con inglés real (english-workflows.test.tsx)

Cabecera y KPI, plurales (1 run / 5 runs, 1 condition / 2 conditions), tipos de disparador y de acción, la fecha formateada, el estado vacío, botones e interruptores con nombre, el historial con estados y el error crudo del backend, el estado desconocido, el diálogo de alta con el mensaje por defecto en inglés (Workflow executed) y con el mensaje escrito por el usuario, y el borrado.

Verificación

  • Mutaciones sobre el catálogo real: un texto copiado del español, un marcador {{count}} perdido y una clave perdida fallan el check de catálogos y un test de la página.
  • Typecheck y lint limpios.
  • Suite del frontend: 51 ficheros, 769 tests. En mi máquina una pasada completa dio 4 fallos: Login y Register (corregidos aquí) y dos timeouts por carga (english-discovery, english-sales) que pasan en aislado.
  • Backend sin cambios (los recuentos documentados no varían).

Corrección de docs

El checklist del plan decía tras #72 «Queda 1: workflows, workflows.» por un reemplazo mío mal hecho; queda corregido y cerrado.

Siguiente

Ofrecer en en el backend (SUPPORTED_LOCALES), el selector de idioma en el diálogo de compartir cotización, y recorrer la app entera en inglés.

🤖 Generated with Claude Code

Tarea 12 del plan, decimonovena y ultima parte de los espacios: traduce a `en` el espacio
`workflows` (lista, historial de ejecuciones y dialogo de alta). Con esto `en` tiene los
19 espacios de `es`.

Se registra en `TRANSLATED` y tres cadenas iguales de verdad se aprueban en
`IDENTICAL_TO_BASE`: `Workflows`, `Total` y `log`. Ortografia de EE. UU.

Como `en` ya esta completo, el frontend lo ofrece solo (`releasedLocales`): el selector
de idioma aparece, la deteccion del navegador y `setLocale` lo aceptan. El backend sigue
sin ofrecerlo (`UNRELEASED_LOCALES`); pasarlo a `SUPPORTED_LOCALES` es el paso siguiente.

Lo que eso obliga a ajustar en los tests, que asumian un solo idioma ofrecido:
- `test/pin-locale.ts`: jsdom declara `en-US`, y el `i18n` global arrancaba en ingles.
  Se fija el navegador de pruebas en `es`; los tests de ingles usan su propia instancia.
- `notFromCatalogue` (y los filtros propios de Login y Register) descarta los nombres de idioma («English», «Espanol»): el selector
  aparece en login, registro y ajustes y no son texto que falte en un catalogo.
- `i18n.test.ts`: los dos tests de la puerta de lanzamiento pasan a comprobar que `en`
  se ofrece y que un idioma sin catalogo (`fr`) sigue fuera de alcance.
- `english.test.tsx`: el test de caida al espanol quita un espacio a mano, porque ya
  no queda ninguno pendiente.
- `LanguageSelector.test.tsx`: «no dibuja nada con un solo idioma» pasa `locales={["es"]}`.

Tests en ingles real (`english-workflows.test.tsx`): cabecera y KPI, plurales, tipos de
disparador y accion, fecha formateada, estado vacio, botones con nombre, historial con
estados y error del backend, el dialogo de alta con el mensaje por defecto en ingles y el
mensaje escrito por el usuario, y el borrado.

Corrige tambien el checklist del plan, que tras #72 decia «Queda 1: `workflows`,
`workflows`.» por un reemplazo mio mal hecho.

Comprobado con mutaciones sobre el catalogo real: un texto copiado del espanol, un
marcador `{{count}}` perdido y una clave perdida fallan el test.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 7, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-07T09:59:28.709642Z 371a0e8 PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 371a0e8a9d

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +1 to +2
{
"title": "Workflows",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Keep English unreleased until the backend accepts it

Adding the final namespace makes releasedLocales() expose en immediately, but this commit leaves backend/app/core/i18n/__init__.py:30 with only ("es",) supported. Consequently, every authenticated user who selects English in Settings has changeLocale() send PATCH /auth/me, receive a 422 from update_my_locale(), and roll the UI back to Spanish; browser-detected English is likewise replaced by the server's Spanish effective locale after login. Ship the backend locale enablement atomically with this file or retain a frontend release gate.

Useful? React with 👍 / 👎.

@keilynrp
keilynrp merged commit 5c610b3 into master Oct 7, 2026
5 checks passed
@keilynrp
keilynrp deleted the feat/i18n-en-workflows branch October 7, 2026 21:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant