For AI agents: fetch the complete documentation index at /llms.txt, the full documentation corpus at /llms-full.txt, the agent skill at /skill.md, or this page as Markdown at /es/docs/modules/i18n.md (or send Accept: text/markdown).
Módulo i18n
El contrato de locale que todas las superficies comparten.
Antes de comenzar
Abra su proyecto supastack descargado en Visual Studio Code usando Archivo → Abrir carpeta, luego elija Terminal → Nueva terminal. La raíz del repositorio es la carpeta que contiene package.json, aplicaciones y paquetes. Ejecute el comando a continuación y deje su terminal abierta. Si no se reconoce un comando, finalice la guía de instalación de la herramienta antes de continuar.
Lea primero el tutorial de la plataforma. Un servidor es el proceso de la aplicación que responde a las solicitudes del navegador o del teléfono. La web lee apps/web/.env.local, Expo lee apps/mobile/.env.local y los comandos de migración de bases de datos leen root .env. La demostración sin base de datos/panel de control está separada de las cuentas reales/de autenticación, que necesitan migrar Postgres. Un proceso de pago solo por teléfono o computadora de escritorio necesita un backend web que se ejecute por separado.
- Instale las herramientas y obtenga el código
- Aprender comandos, archivos y configuración
- Completa el tutorial web de primera ejecución
corepack pnpm --filter @supastack/web devConfiguración y ajustes
packages/i18n posee el conjunto de locales y el contrato de resolución: SUPPORTED_LOCALES, DEFAULT_LOCALE, LOCALE_COOKIE, isAppLocale, resolveLocale, localePath y getDictionary. Las rutas web, las cadenas de móvil y el correo transaccional leen del mismo paquete.
El orden de resolución es prefijo de ruta → cookie → Accept-Language → por defecto. localePath(locale, path) produce el href canónico — sin prefijo para la locale por defecto, /{locale}/… en caso contrario — y la capa de proxy lo impone.
import { getDictionary, localePath, resolveLocale } from "@supastack/i18n";
const locale = resolveLocale([pathLocale, cookie, acceptLanguage]);
const copy = getDictionary(locale).marketing;Flujo de implementación
Añade una cadena visible al usuario primero a los tipos del diccionario y luego a cada locale — la suite de completitud de traducción falla con claves ausentes y con inglés sin traducir.
Nunca ramifiques lógica de producto por locale; los diccionarios son presentación. Formatea fechas, números y plurales con las APIs Intl usando la locale resuelta en lugar de plantillas de cadenas.
Verificación y solución de problemas
Tras tocar claves, ejecuta los tests del paquete i18n más la suite de completitud de site-content. Haz una comprobación puntual de una ruta con prefijo de locale, el selector de idioma y la detección de Accept-Language con la cookie borrada.