gt-tanstack-start@0.1.0
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 gestor de i18n para TanStack Start. Llámalo una vez al inicio del archivo de tu ruta raíz.GTProvider— Envuelve tu aplicación con el contexto de traducción, con detección de SSR integrada y resolución de configuración regional adaptada a TanStack Start.getTranslations()— Una función asíncrona diseñada para llamarse en tu 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 importarlo todo desde un solo 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.