# MCH-026: Multi-idioma LATAM ## Metadata - **Codigo:** MCH-026 - **Fase:** 7 - Expansion (Futuro) - **Prioridad:** P3 - **Estado:** Completado (Base) - **Fecha completado:** 2026-01-10 ## Descripcion Internacionalizacion (i18n) de la aplicacion para expansion a otros paises de Latinoamerica: soporte multi-idioma, localizacion de formatos (moneda, fecha), y adaptacion de terminologia por pais. ## Objetivos 1. Soporte multi-idioma (es-MX, es-CO, es-AR, pt-BR) 2. Localizacion de monedas y formatos 3. Terminologia adaptada por pais 4. Contenido de ayuda localizado 5. Deteccion automatica de region ## Alcance ### Incluido - Espanol Mexico (es-MX) - default - Espanol Colombia (es-CO) - Espanol Argentina (es-AR) - Portugues Brasil (pt-BR) - Formatos de moneda locales - Formatos de fecha locales ### Excluido - Ingles (no es mercado objetivo inicial) - Otros idiomas latinoamericanos - Traduccion de contenido generado por usuario ## Paises Objetivo | Pais | Codigo | Moneda | Formato Fecha | |------|--------|--------|---------------| | Mexico | es-MX | MXN ($) | DD/MM/YYYY | | Colombia | es-CO | COP ($) | DD/MM/YYYY | | Argentina | es-AR | ARS ($) | DD/MM/YYYY | | Brasil | pt-BR | BRL (R$) | DD/MM/YYYY | ## Terminologia por Pais | Concepto | Mexico | Colombia | Argentina | Brasil | |----------|--------|----------|-----------|--------| | Tienda | Changarro | Tienda | Almacen | Loja | | Fiado | Fiado | Fiado | Cuenta | Fiado | | Efectivo | Efectivo | Efectivo | Efectivo | Dinheiro | | Codigo de barras | Codigo | Codigo | Codigo | Codigo de barras | ## Arquitectura i18n ### Estructura de Archivos ``` locales/ ├── es-MX/ │ ├── common.json │ ├── pos.json │ ├── products.json │ └── errors.json ├── es-CO/ │ └── ... ├── es-AR/ │ └── ... └── pt-BR/ └── ... ``` ### Ejemplo de Archivo ```json // locales/es-MX/pos.json { "title": "Punto de Venta", "cart": { "empty": "Tu carrito esta vacio", "total": "Total", "checkout": "Cobrar" }, "payment": { "cash": "Efectivo", "card": "Tarjeta", "credit": "Fiado", "change": "Cambio" } } // locales/pt-BR/pos.json { "title": "Ponto de Venda", "cart": { "empty": "Seu carrinho esta vazio", "total": "Total", "checkout": "Finalizar" }, "payment": { "cash": "Dinheiro", "card": "Cartao", "credit": "Fiado", "change": "Troco" } } ``` ## Implementacion Tecnica ### Frontend (React) ```typescript import { useTranslation } from 'react-i18next'; function POSPage() { const { t } = useTranslation('pos'); return (

{t('title')}

); } ``` ### Mobile (React Native) ```typescript import { useTranslation } from 'react-i18next'; // Mismo patron que web ``` ### Backend ```typescript // Mensajes de error localizados throw new BadRequestException( i18n.t('errors.product_not_found', { lang: user.locale }) ); ``` ## Formatos de Moneda ```typescript // Formateo dinamico const formatCurrency = (amount: number, locale: string) => { const config = { 'es-MX': { currency: 'MXN', symbol: '$' }, 'es-CO': { currency: 'COP', symbol: '$' }, 'es-AR': { currency: 'ARS', symbol: '$' }, 'pt-BR': { currency: 'BRL', symbol: 'R$' } }; return new Intl.NumberFormat(locale, { style: 'currency', currency: config[locale].currency }).format(amount); }; // Resultados: // es-MX: $1,234.56 // es-CO: $1.234,56 // es-AR: $1.234,56 // pt-BR: R$ 1.234,56 ``` ## Modelo de Datos ### Campos Adicionales **tenants** - locale: string (es-MX, es-CO, etc.) - timezone: string - currency: string **users** - locale: string (override de tenant) ## Endpoints API | Metodo | Endpoint | Descripcion | |--------|----------|-------------| | GET | /locales | Idiomas disponibles | | GET | /locales/:locale | Traducciones | | PUT | /settings/locale | Cambiar idioma | ## Deteccion Automatica ```typescript // Al registrarse 1. Detectar IP del usuario 2. Geolocalizar pais 3. Asignar locale default 4. Usuario puede cambiar en settings ``` ## Entregables | Entregable | Estado | Archivo | |------------|--------|---------| | Archivos i18n es-MX | Pendiente | `locales/es-MX/` | | Archivos i18n es-CO | Pendiente | `locales/es-CO/` | | Archivos i18n es-AR | Pendiente | `locales/es-AR/` | | Archivos i18n pt-BR | Pendiente | `locales/pt-BR/` | | i18n setup React | Pendiente | `lib/i18n.ts` | | Currency formatter | Pendiente | `utils/currency.ts` | ## Dependencias ### Depende de - App completa y estable - Expansion de negocio a otros paises ### Bloquea a - Lanzamiento en Colombia, Argentina, Brasil ## Criterios de Aceptacion - [ ] App funciona en es-MX (default) - [ ] App funciona en es-CO - [ ] App funciona en es-AR - [ ] App funciona en pt-BR - [ ] Monedas se formatean correctamente - [ ] Usuario puede cambiar idioma ## Consideraciones ### Traduccion - Usar servicio profesional para pt-BR - Validar terminologia con usuarios locales - No traducir nombres de productos ### Legal - Adaptar terminos y condiciones por pais - Politica de privacidad por region - Cumplimiento normativo local --- **Ultima actualizacion:** 2026-01-07