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