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 peut faire l’objet de changements incompatibles.

gt-node apporte General Translation à l’environnement 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. Appelez-le une seule fois au démarrage du serveur.
  • withGT(locale, fn) — Enveloppe un gestionnaire de requêtes pour lui associer un paramètre régional. Tous les appels de traduction à l’intérieur du callback utilisent le paramètre régional fourni. Toutes les routes doivent être enveloppées dans withGT.
  • getGT() — Renvoie une fonction de traduction pour les chaînes intégrées. Prend en charge l’interpolation de variables et le format de message ICU.

Prise en main (Express)

Installer

npm install gt-node

Initialisez

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 paramètre régional

Extrayez le paramètre régional à partir des en-têtes de la requête (ou des cookies, des paramètres de requête — selon la façon dont votre application le détermine) et enveloppez 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 de la compilation, traduites pendant le CD, puis résolues à l’exécution pour chaque requête.


À venir

gt-node et gt-tanstack-start sont les deux premières bibliothèques construites sur l’architecture singleton gt-i18n. Attendez-vous à voir d’autres adaptateurs de framework suivre le même modèle.

Vos retours sont les bienvenus sur Discord ou GitHub.