Panoramica
gt-tanstack-start è un primo tentativo di offrire un supporto i18n pensato appositamente per TanStack Start.
Questa libreria è sperimentale. È ancora agli inizi e siamo molto aperti ai feedback. Se ti serve la traduzione in un ambiente di produzione con TanStack, per il momento ti consigliamo di usare
gt-react.
Contenuto
initializeGT()— Configura il manager i18n per TanStack Start. Chiamala una sola volta all'inizio del file della route radice.GTProvider— Avvolge l'app nel contesto di traduzione, con rilevamento SSR e risoluzione dell'impostazione regionale integrati e ottimizzati per TanStack Start.getTranslations()— Funzione asincrona da chiamare nel loader root per passare le traduzioni al provider.getLocale()— Restituisce l'impostazione regionale risolta per la richiesta corrente.<T>,<Var>,<LocaleSelector>— Riesportati dagt-react, così puoi importare tutto da un unico package.
Guida rapida
Installa
npm install gt-tanstack-startConfigura gt.config.json
{
"defaultLocale": "en",
"locales": ["fr", "zh"],
"files": {
"gt": {
"output": "src/_gt/[locale].json"
}
}
}Imposta le variabili d'ambiente
VITE_GT_PROJECT_ID=your-project-id
VITE_GT_DEV_API_KEY=your-dev-api-key
Crea un loader per le traduzioni
// loadTranslations.ts
export async function loadTranslations(locale: string) {
const translations = await import(`./src/_gt/${locale}.json`);
return translations.default;
}Configura la route principale
// __root.tsx
import { HeadContent, Scripts, createRootRoute } from '@tanstack/react-router';
import {
initializeGT,
GTProvider,
getTranslations,
getLocale,
} from 'gt-tanstack-start';
import gtConfig from '../../gt.config.json';
import { loadTranslations } from '../../loadTranslations';
initializeGT({
...gtConfig,
projectId: import.meta.env.VITE_GT_PROJECT_ID,
devApiKey: import.meta.env.VITE_GT_DEV_API_KEY,
loadTranslations,
});
export const Route = createRootRoute({
loader: async () => ({
translations: await getTranslations(),
locale: getLocale(),
}),
shellComponent: RootDocument,
});
function RootDocument({ children }: { children: React.ReactNode }) {
const { translations, locale } = Route.useLoaderData();
return (
<html lang={locale}>
<head>
<HeadContent />
</head>
<body>
<GTProvider translations={translations}>
{children}
</GTProvider>
<Scripts />
</body>
</html>
);
}Traduzione dei contenuti
import { T } from 'gt-tanstack-start';
export default function Page() {
return (
<T>
<p>This gets translated automatically.</p>
</T>
);
}Prossimi sviluppi
Questa è la v0.1.0 — le basi ci sono, ma c'è ancora molto da costruire. SSG e il routing delle impostazioni regionali sono tra le prossime funzionalità che prevediamo di aggiungere nelle versioni future.
Se ti interessa provarlo, ogni feedback è ben accetto. Passa sul nostro Discord oppure apri una issue su GitHub.