gt-node@0.2.0
Descripción general
IMPORTANTE Esta biblioteca sigue siendo experimental y puede sufrir cambios que rompan la compatibilidad.
gt-node lleva General Translation al JavaScript del lado del servidor. Funciona en Node.js, Bun y Deno.
Al establecer un contexto por petición mediante AsyncLocalStorage, gt-node te permite importar funciones de traducción directamente desde la biblioteca:
const gt = await getGT();Esto refleja la API de nuestras otras bibliotecas, como gt-next, al trabajar con funciones asincrónicas.
Qué incluye
initializeGT()— Configura el singleton de i18n. Llámalo una vez al iniciar el servidor.withGT(locale, fn)— Envuelve un controlador de solicitudes para acotar el locale. Todas las llamadas de traducción dentro del callback usan el locale proporcionado. Todas las rutas deben estar envueltas enwithGT.getGT()— Devuelve una función de traducción para cadenas en línea. Admite interpolación de variables y el formato de mensajes ICU.
Guía rápida (Express)
Instalar
npm install gt-nodeInicializar
import express from 'express';
import { initializeGT, withGT, getGT } from 'gt-node';
initializeGT({
defaultLocale: 'en-US',
locales: ['en-US', 'es', 'fr'],
projectId: process.env.GT_PROJECT_ID,
});
const app = express();Añadir middleware de locale
Extrae la locale de las cabeceras de la petición (o de las cookies, parámetros de consulta — según cómo tu aplicación determine la locale) y envuelve cada petición con withGT:
app.use((req, res, next) => {
const locale = req.headers['accept-language']?.split(',')[0] || 'en-US';
withGT(locale, () => next());
});Traducir
app.get('/api/greeting', async (req, res) => {
const gt = await getGT();
res.json({ message: gt('Hello, world!') });
});
app.listen(3000);Traducir y desplegar
npx gtx-cli translate --publishEso es todo. El compilador de GT detecta las cadenas de texto en tiempo de compilación, se traducen durante el CD y se resuelven en cada solicitud en tiempo de ejecución.
De cara al futuro
gt-node y gt-tanstack-start son las dos primeras bibliotecas creadas sobre la arquitectura singleton de gt-i18n. Pronto habrá más adaptadores de frameworks que sigan el mismo patrón.