Ir al contenido
TanStack Start i18n

i18n en TanStack Start — localización full-stack

Añada internacionalización a su app de TanStack Start con soporte de SSR, detección automática de idioma y traducciones con tipos seguros que funcionan tanto en el cliente como en el servidor.

Setup

Set up in 4 steps

Install packages

Instale @better-i18n/use-intl y use-intl. No hacen falta plugins de build adicionales ni transformaciones de Babel.

terminal
npm install @better-i18n/use-intl use-intl

Load messages server-side

Cargue las traducciones en el loader raíz para que estén disponibles en el primer render del servidor. Sin una llamada aparte a la API desde el cliente.

app/routes/__root.tsx
// app/routes/__root.tsx
import { getMessages } from '@better-i18n/use-intl/server';

export const Route = createRootRoute({
  loader: async ({ context }) => {
    const messages = await getMessages({
      projectId: 'your-org/your-project',
      locale: context.locale ?? 'en',
    });
    return { messages, locale: context.locale ?? 'en' };
  },
});

Envuelva con BetterI18nProvider

Pase los datos del loader a BetterI18nProvider. El proveedor hidrata el cliente con los mismos mensajes cargados en el servidor.

app/routes/__root.tsx
// app/routes/__root.tsx (continued)
import { BetterI18nProvider } from '@better-i18n/use-intl';

export function RootComponent() {
  const { messages, locale } = Route.useLoaderData();
  return (
    <BetterI18nProvider
      messages={messages}
      locale={locale}
      project="your-org/your-project"
    >
      <Outlet />
    </BetterI18nProvider>
  );
}

Use in routes

Llame a useTranslations() en cualquier componente de ruta. El mismo hook funciona en componentes de cliente y de servidor.

app/routes/about.tsx
// app/routes/about.tsx
import { useTranslations } from '@better-i18n/use-intl';

export default function AboutPage() {
  const t = useTranslations('pages');
  return (
    <main>
      <h1>{t('about.title')}</h1>
      <p>{t('about.description')}</p>
    </main>
  );
}
Capabilities

¿Por qué usar Better I18N con TanStack Start?

Hidratación con SSR — los mensajes cargados en el servidor hidratan el cliente sin volver a pedirlos
Sin parpadeo de contenido — contenido traducido desde el primer render
Idiomas dinámicos — la lista de idiomas viene del manifest del CDN, sin valores fijos en el código
Enrutado por ruta — estructura de URL /tr/about, /de/about
Seguridad de tipos de extremo a extremo — el loader y el componente comparten el mismo sistema de tipos
Detección por cookie y cabecera — cadena de respaldo URL → cookie → Accept-Language

Other frameworks

Get started

Cree una app multilingüe con TanStack Start

Gestione todas sus traducciones en un único panel con sugerencias impulsadas por IA, traducciones sensibles al contexto y entrega por CDN.