gt-tanstack-start@0.1.0
Descripción general
gt-tanstack-start es un primer intento de ofrecer compatibilidad de i18n específica para TanStack Start.
Esta biblioteca es experimental. Aún está en una fase muy temprana y estamos muy abiertos a recibir comentarios. Si necesitas traducción en un entorno de producción con TanStack, por ahora recomendamos usar
gt-react.
Qué incluye
initializeGT()— Configura el administrador de i18n para TanStack Start. Llámala una vez al principio de tu archivo de ruta raíz.GTProvider— Envuelve tu aplicación con el contexto de traducción, con detección de SSR integrada y resolución de locale adaptada específicamente a TanStack Start.getTranslations()— Una función asíncrona diseñada para llamarse en tu loader raíz para pasar las traducciones al provider.getLocale()— Devuelve el locale resuelto para la solicitud actual.<T>,<Var>,<LocaleSelector>— Reexportados desdegt-reactpara que puedas importar todo desde un único paquete.
Inicio rápido
Instalar
npm install gt-tanstack-startConfigurar gt.config.json
{
"defaultLocale": "en",
"locales": ["fr", "zh"],
"files": {
"gt": {
"output": "src/_gt/[locale].json"
}
}
}Configurar las variables de entorno
VITE_GT_PROJECT_ID=your-project-id
VITE_GT_DEV_API_KEY=your-dev-api-key
Crear un cargador de traducciones
// loadTranslations.ts
export async function loadTranslations(locale: string) {
const translations = await import(`./src/_gt/${locale}.json`);
return translations.default;
}Configura tu ruta raíz
// __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>
);
}Traducción de contenido
import { T } from 'gt-tanstack-start';
export default function Page() {
return (
<T>
<p>This gets translated automatically.</p>
</T>
);
}Mirando hacia el futuro
Esta es la versión v0.1.0: la base ya está, pero aún queda mucho por construir. SSG y el enrutamiento por locales son algunas de las próximas funcionalidades que queremos añadir en futuras versiones.
Si te interesa probarla, agradeceremos mucho tus comentarios. Pásate por nuestro Discord o abre un issue en GitHub.