gt-tanstack-start@0.1.0
Aperçu
gt-tanstack-start est une première tentative pour offrir une prise en charge de l’i18n spécifiquement conçue pour TanStack Start.
Cette bibliothèque est expérimentale. Elle en est encore à ses débuts, et nous sommes très ouverts aux retours d’expérience. Si vous avez besoin de traduction dans un environnement de production avec TanStack, nous vous recommandons d’utiliser
gt-reactpour l’instant.
Ce qui est inclus
initializeGT()— Configure le gestionnaire d’i18n pour TanStack Start. Appelez cette fonction une fois, en haut de votre fichier de route racine.GTProvider— Encapsule votre application avec le contexte de traduction, avec détection SSR intégrée et résolution de locale adaptée à TanStack Start.getTranslations()— Une fonction asynchrone conçue pour être appelée dans votre root loader afin de transmettre les traductions au provider.getLocale()— Renvoie la locale résolue pour la requête en cours.<T>,<Var>,<LocaleSelector>— Réexportés depuisgt-reactpour que vous puissiez tout importer depuis un seul package.
Démarrage rapide
Installation
npm install gt-tanstack-startConfigurer gt.config.json
{
"defaultLocale": "en",
"locales": ["fr", "zh"],
"files": {
"gt": {
"output": "src/_gt/[locale].json"
}
}
}Configurer les variables d’environnement
VITE_GT_PROJECT_ID=your-project-id
VITE_GT_DEV_API_KEY=your-dev-api-key
Créer un chargeur de traduction
// loadTranslations.ts
export async function loadTranslations(locale: string) {
const translations = await import(`./src/_gt/${locale}.json`);
return translations.default;
}Configurer 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>
);
}Traduction du contenu
import { T } from 'gt-tanstack-start';
export default function Page() {
return (
<T>
<p>Ceci est traduit automatiquement.</p>
</T>
);
}Perspectives d'avenir
Il s'agit de la v0.1.0 — les bases sont là, mais il reste encore beaucoup à construire. SSG et le routage par locale font partie des prochaines fonctionnalités que nous prévoyons d'ajouter dans les futures versions.
Si vous souhaitez l'essayer, vos retours sont les bienvenus. Rejoignez-nous sur notre Discord ou ouvrez une issue sur GitHub.