Atrás

gt-node@0.2.0

Ernest McCarter avatarErnest McCarter
gt-nodev0.2.0nodeexpressi18nasync-local-storageserver-side

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 en withGT.
  • 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-node

Inicializar

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 --publish

Eso 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.

Agradecemos sus comentarios en Discord o GitHub.