Repository navigation
feat(i18n): fechas e importes del servidor segun el idioma - #76
Conversation
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 <noreply@anthropic.com>
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 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".
| default = _LANGUAGE_DEFAULTS.get(language, _LANGUAGE_DEFAULTS[DEFAULT_LOCALE]) | ||
| return _RULES[default] |
There was a problem hiding this comment.
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 👍 / 👎.
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_moneyyformat_date. Mismas reglas por defecto que el frontend (es→es-MX,en→en-US), máses-ESyen-GB. Una región sin reglas propias usa la de su idioma, como el catálogo cae dees-MXaes. Una fecha ISO en texto se interpreta; un texto que no es fecha sale tal cual.08/03/2026).f"{currency} {total:,.2f}"pasan porformat_money.Efecto real
En
es,es-MXyen-USlos 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
test_i18n_format.py(reglas) y uno de correo. El del PDF pasa de «el formato no cambia» a «sigue al idioma».Siguiente
PDF de cotización (
sales/pdf.py) con catálogo es/en, que reutiliza este formato.🤖 Generated with Claude Code