Volver

gt-node@0.2.0

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

Resumen

IMPORTANTE Esta biblioteca sigue siendo experimental y puede estar sujeta a cambios importantes.

gt-node lleva General Translation al JavaScript del lado del servidor. Funciona en Node.js, Bun y Deno.

Al establecer un contexto por solicitud mediante AsyncLocalStorage, gt-node te permite importar funciones de traducción directamente desde la biblioteca:

const gt = await getGT();

Esto sigue la misma API que nuestras otras bibliotecas, como gt-next, cuando se trabaja con funciones asíncronas.


Qué se incluye

  • initializeGT() — Configura el singleton de i18n. Llámalo una sola vez al iniciar el servidor.
  • withGT(locale, fn) — Envuelve un controlador de solicitudes para definir el ámbito de la configuración regional. Todas las llamadas de traducción dentro del callback usan la configuración regional proporcionada. Todas las rutas deben envolverse en withGT.
  • getGT() — Devuelve una función de traducción para cadenas inline. Admite interpolación de variables y el formato de mensajes ICU.

Guía rápida (Express)

Instalar

npm install gt-node

Inicializa

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ñade el middleware de configuración regional

Extrae la configuración regional de los encabezados de la solicitud (o de las cookies, los parámetros de consulta; según cómo tu app determine la configuración regional) y envuelve cada solicitud con withGT:

app.use((req, res, next) => {
  const locale = req.headers['accept-language']?.split(',')[0] || 'en-US';
  withGT(locale, () => next());
});

Traduce

app.get('/api/greeting', async (req, res) => {
  const gt = await getGT();
  res.json({ message: gt('Hello, world!') });
});

app.listen(3000);

Traduce y despliega

npx gtx-cli translate --publish

Eso es todo. El compilador de GT detecta las cadenas en tiempo de compilación, las traduce durante el CD y las resuelve 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. Se espera que más adaptadores para frameworks sigan el mismo patrón.

Déjanos tus comentarios en Discord o GitHub.