Skip to content

feat(i18n): fechas e importes del servidor segun el idioma - #76

Merged
keilynrp merged 1 commit into
masterfrom
feat/i18n-format-server
Oct 9, 2026
Merged

keilynrp merged 1 commit into
masterfrom
feat/i18n-format-server

Conversation

@keilynrp

@keilynrp keilynrp commented Oct 9, 2026

Copy link
Copy Markdown
Collaborator

Resumen

Primer paso del recorrido en inglés (tarea 12) y decisión pendiente desde la tarea 10: tabla propia, no babel. Las fechas y los importes que dibuja el servidor ahora siguen al idioma.

  • core/i18n/format.py (nuevo): format_number, format_money y format_date. Mismas reglas por defecto que el frontend (es → es-MX, en → en-US), más es-ES y en-GB. Una región sin reglas propias usa la de su idioma, como el catálogo cae de es-MX a es. Una fecha ISO en texto se interpreta; un texto que no es fecha sale tal cual.
  • PDF de factura: fecha e importe siguen al idioma (en inglés, 08/03/2026).
  • Correos: los seis importes f"{currency} {total:,.2f}" pasan por format_money.
  • Las fechas de los correos no se tocan: salen en ISO, que no depende del idioma. Formatearlas movía el golden en español, que fija que el español no cambia.

Efecto real

En es, es-MX y en-US los importes salen igual que antes. Cambia la fecha del PDF en inglés y las regiones con reglas propias (es-ES: 1.234,50, sin separador de millar en 4 cifras).

Verificación

  • 151 tests de las suites afectadas pasan, con el golden de español intacto.
  • Tests nuevos: test_i18n_format.py (reglas) y uno de correo. El del PDF pasa de «el formato no cambia» a «sigue al idioma».
  • Gobernanza y recuentos documentados (957 tests, 49 archivos) comprobados en local.
  • No se corrió la suite completa del backend en local (la corre CI).

Siguiente

PDF de cotización (sales/pdf.py) con catálogo es/en, que reutiliza este formato.

🤖 Generated with Claude Code

Decision de la tarea 10, pendiente desde que se hizo el PDF de factura: tabla propia
y no `babel`. `core/i18n/format.py` da `format_number`, `format_money` y
`format_date` con las mismas reglas por defecto que el frontend (`es` -> `es-MX`,
`en` -> `en-US`) mas `es-ES` y `en-GB`. Una region sin reglas propias usa la de su
idioma, como el catalogo cae de `es-MX` a `es`.

- PDF de factura: la fecha y el importe siguen al idioma (en ingles `08/03/2026`).
- Correos: los seis importes `f"{currency} {total:,.2f}"` pasan por `format_money`.
  Las fechas de los correos siguen en ISO, que no depende del idioma, y por eso no se
  tocan (cambiarlas movia el golden en espanol).
- En espanol y en ingles de EE. UU. los importes salen igual que antes; el cambio
  visible es la fecha del PDF en ingles y las regiones con reglas propias.

Tests nuevos: `test_i18n_format.py` (reglas) y uno de correo; el del PDF pasa de
"el formato no cambia" a "sigue al idioma". Recuentos documentados 932 -> 957.

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

chatgpt-codex-connector Bot commented Oct 9, 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-09T03:51:53.585185Z 18e9a3e 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: 18e9a3e9b9

ℹ️ 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 +59 to +60
default = _LANGUAGE_DEFAULTS.get(language, _LANGUAGE_DEFAULTS[DEFAULT_LOCALE])
return _RULES[default]

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Respect accepted regional locales when selecting format rules

For any accepted regional locale not explicitly listed in _RULES, this falls back to the language default even though normalize_locale preserves arbitrary two-letter regions and the frontend passes the complete tag to Intl. Consequently users with locales such as es-AR, en-AU, or en-IN receive server-generated invoices and emails with Mexican or US formatting while the UI uses their actual regional conventions (for example, en-AU dates become 08/03/2026 here instead of 03/08/2026, and es-AR amounts use commas instead of periods for grouping). Either support every locale the API accepts via a locale-aware formatter or restrict locale validation to the regions represented by this table.

Useful? React with 👍 / 👎.

@keilynrp
keilynrp merged commit cc84b5f into master Oct 9, 2026
5 checks passed
@keilynrp
keilynrp deleted the feat/i18n-format-server branch October 9, 2026 04:52
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