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/web/i18n.md (or send Accept: text/markdown).
Idiomas y texto
Usa el esqueleto de diccionario de cuatro locales para el chrome de la app, las etiquetas de settings, el correo y los eventos de notificación.
Configuración y ajustes
Antes de cualquier paso, lea Antes de comenzar y Conceptos básicos del terminal. Estas instrucciones suponen que abrió el monorepo supastack completo en VS Code; su paquete raíz.json marca la raíz del repositorio. En los comandos pnpm, un paquete de espacio de trabajo es una aplicación o una carpeta de código compartido; En el producto, un espacio de trabajo es el contenedor de datos y el límite de seguridad de un equipo. corepack pnpm --filter ... selecciona un paquete del monorepo mientras los comandos se ejecutan desde su raíz. Si abrió solo una carpeta sincronizada para dispositivos móviles o de escritorio, no contiene el backend web, la configuración de Docker ni los scripts raíz: ejecute el backend desde este monorepo o un servidor alojado accesible y use los propios scripts de la carpeta de la plataforma. Una variable de entorno es una configuración con nombre almacenada en un archivo .env local o en su panel de hosting; reinicie la aplicación correspondiente después de cambiarla y mantenga los secretos del servidor fuera de los valores NEXT_PUBLIC_ y EXPO_PUBLIC_.
1. Abra packages/i18n/src/index.ts en VS Code para ver los nombres de idiomas admitidos y los asistentes locales; Localice los archivos de diccionario coincidentes antes de cambiar la copia del producto.
2. Agregue la misma clave nueva y traducción a los diccionarios de inglés, alemán, español y francés.
3. Desde la raíz del repositorio, ejecute corepack pnpm test -- packages/i18n/src/index.test.ts e inicie Web con corepack pnpm --filter @supastack/web dev. Se esperaba: el selector de idioma cambia el texto visible conservando la ruta de la página actual.
Los idiomas viven en @supastack/i18n junto con SUPPORTED_LOCALES, LOCALE_COOKIE, resolveLocale, getDictionary y localePath. Proxy establece x-supastack-locale y gestiona las redirecciones canónicas al inglés; LanguageSwitcher actualiza la cookie y conserva las subrutas activas. Las rutas principales de la aplicación (/dashboard, /settings, /billing, /chat) funcionan directamente bajo los prefijos /[locale], junto con la página de inicio de marketing flexible /{locale}.
Los diccionarios abarcan la navegación de marketing, las etiquetas de secciones de configuración, el chrome de configuración de organizaciones, el correo transaccional (invitación/OTP/enlace mágico/IA/facturación), las etiquetas de preferencias de notificación y el texto de eventos de notificación dentro de la aplicación.
import { getDictionary, resolveLocale, LOCALE_COOKIE } from "@supastack/i18n";
const locale = resolveLocale([
cookieStore.get(LOCALE_COOKIE)?.value,
headers.get("x-supastack-locale"),
headers.get("accept-language"),
]);
const copy = getDictionary(locale);Comandos para copiar
Siga los comentarios para ver en qué carpeta se ejecuta un comando. Si dos terminales están etiquetados, abra dos ventanas de terminal y mantenga el primer comando ejecutándose mientras usa el segundo.
corepack pnpm test -- packages/i18n/src/index.test.ts
corepack pnpm --filter @supastack/web devFlujo de implementación
Pasa el idioma a las páginas de configuración/organización renderizadas en el servidor y a notificationCopyForEvent / las opciones de entrega de correo de autenticación cuando esté disponible. Mantén el inglés como DEFAULT_LOCALE y no inventes afirmaciones de marketing fuera de las claves del diccionario.
El correo transaccional sigue separado del contacto comercial. Amplía los diccionarios antes de anidar todas las rutas de marketing bajo [locale].
Verificación y solución de problemas
Si aparece inglés para una frase, verifique que la clave exista en los cuatro diccionarios y que la página solicite la misma clave. Si al cambiar de idioma se vuelve a la página de inicio, conserve la ruta actual al crear el enlace local. Mantenga la copia del correo electrónico en la ruta del correo electrónico transaccional; no lo reutilice como divulgación masiva.
Ejecuta Vitest de packages/i18n, las pruebas de proxy y las pruebas de locale-app-routes. Comprueba LanguageSwitcher en / y los encabezados localizados de Configuración/organización/panel/facturación/chat cuando el prefijo de idioma sea de/es/fr.