Vai al contenuto
TanStack Start i18n

i18n per TanStack Start — localizzazione full-stack

Aggiungi l'internazionalizzazione alla tua app TanStack Start con supporto SSR, rilevamento automatico della lingua e traduzioni type-safe che funzionano sia sul client sia sul server.

Setup

Set up in 4 steps

Install packages

Installa @better-i18n/use-intl e use-intl. Non servono plugin di build aggiuntivi né trasformazioni Babel.

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

Load messages server-side

Carica le traduzioni nel loader radice, così sono disponibili già al primo render sul server. Nessuna chiamata API separata dal client.

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' };
  },
});

Racchiudi con BetterI18nProvider

Passa i dati del loader a BetterI18nProvider. Il provider idrata il client con gli stessi messaggi caricati sul server.

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

Chiama useTranslations() in qualsiasi componente di route. Lo stesso hook funziona nei componenti client e server.

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

Perché usare Better I18N con TanStack Start?

Idratazione con SSR — i messaggi caricati sul server idratano il client senza una nuova richiesta
Nessun lampo di contenuto — contenuti tradotti già al primo render
Lingue dinamiche — elenco delle lingue dal manifest del CDN, nulla scritto nel codice
Routing basato sul percorso — struttura di URL /tr/about, /de/about
Sicurezza dei tipi full-stack — loader e componente condividono lo stesso sistema di tipi
Rilevamento da cookie e header — catena di fallback URL → cookie → Accept-Language

Other frameworks

Get started

Crea un'app TanStack Start multilingue

Gestisci tutte le traduzioni in un'unica dashboard con suggerimenti basati sull'IA, traduzioni consapevoli del contesto e distribuzione via CDN.