gt-tanstack-start@0.1.0
Vue d’ensemble
gt-tanstack-start constitue une première tentative de prise en charge de l’i18n adaptée à TanStack Start.
Cette bibliothèque est expérimentale. Elle en est encore à ses débuts et nous sommes tout à fait ouverts à vos retours. Si vous avez besoin de traductions dans un environnement de production avec TanStack, nous vous recommandons pour l’instant d’utiliser
gt-react.
Ce qui est inclus
initializeGT()— Configure le gestionnaire i18n pour TanStack Start. Appelez cette fonction une seule fois en haut de votre fichier de route racine.GTProvider— Encapsule votre application dans un contexte de traduction, avec détection SSR intégrée et résolution du paramètre régional adaptée à TanStack Start.getTranslations()— Fonction asynchrone conçue pour être appelée dans votre loader racine afin de transmettre les traductions au provider.getLocale()— Renvoie le paramètre régional résolu pour la requête en cours.<T>,<Var>,<LocaleSelector>— Réexportés depuisgt-reactafin que vous puissiez tout importer depuis un seul package.
Prise en main rapide
Installer
npm install gt-tanstack-startConfigurer gt.config.json
{
"defaultLocale": "en",
"locales": ["fr", "zh"],
"files": {
"gt": {
"output": "src/_gt/[locale].json"
}
}
}Définissez les variables d’environnement
VITE_GT_PROJECT_ID=your-project-id
VITE_GT_DEV_API_KEY=your-dev-api-key
Créer un loader de traduction
// loadTranslations.ts
export async function loadTranslations(locale: string) {
const translations = await import(`./src/_gt/${locale}.json`);
return translations.default;
}Configurez la route racine
// __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>
);
}Traduire le contenu
import { T } from 'gt-tanstack-start';
export default function Page() {
return (
<T>
<p>This gets translated automatically.</p>
</T>
);
}Et la suite
Voici la v0.1.0 — les bases sont là, mais il reste encore beaucoup à construire. Le SSG et le routage par paramètre régional figurent parmi les prochaines fonctionnalités que nous prévoyons d’ajouter dans les versions à venir.
Si vous souhaitez l’essayer, vos retours sont les bienvenus. Rejoignez-nous sur Discord ou ouvrez une issue sur GitHub.