Retour

gt-node@0.2.0

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

Vue d’ensemble

IMPORTANT Cette bibliothèque est encore expérimentale et susceptible d’évoluer avec des changements non rétrocompatibles.

gt-node apporte General Translation au JavaScript côté serveur. Il fonctionne avec Node.js, Bun et Deno.

En établissant un contexte par requête via AsyncLocalStorage, gt-node vous permet d’importer directement les fonctions de traduction depuis la bibliothèque :

const gt = await getGT();

Cela reprend l’API de nos autres bibliothèques comme gt-next lorsque vous travaillez avec des fonctions asynchrones.


Ce qui est inclus

  • initializeGT() — Configure le singleton i18n. À appeler une seule fois au démarrage du serveur.
  • withGT(locale, fn) — Encapsule un gestionnaire de requêtes pour fixer la locale. Tous les appels de traduction dans le callback utilisent la locale fournie. Toutes les routes doivent être encapsulées dans withGT.
  • getGT() — Renvoie une fonction de traduction pour les chaînes directement dans le code. Prend en charge l’interpolation de variables et le format de messages ICU.

Démarrage rapide (Express)

Installer

npm install gt-node

Initialiser

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();

Ajouter le middleware de locale

Extrayez la locale depuis les en-têtes de requête (ou les cookies, les paramètres de requête — selon la façon dont votre application détermine la locale) et encapsulez chaque requête avec withGT :

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

Traduire

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

app.listen(3000);

Traduire et déployer

npx gtx-cli translate --publish

C’est tout. Les chaînes sont détectées par le compilateur GT au moment du build, traduites pendant le CD, puis résolues requête par requête à l’exécution.


Perspectives d’avenir

gt-node et gt-tanstack-start sont les deux premières bibliothèques conçues selon l’architecture de singleton gt-i18n. Attendez-vous à ce que d’autres adaptateurs de framework suivent le même modèle.

Vos retours sont les bienvenus sur Discord ou GitHub.