Indietro

gt-node@0.2.0

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

Panoramica

IMPORTANTE Questa libreria è ancora in fase sperimentale e potrebbe subire modifiche che introducono incompatibilità.

gt-node porta General Translation nel JavaScript lato server. Funziona in Node.js, Bun e Deno.

Configurando un contesto per ogni richiesta tramite AsyncLocalStorage, gt-node ti permette di importare direttamente dalla libreria le funzioni di traduzione:

const gt = await getGT();

Questo rispecchia l'API delle nostre altre librerie, come gt-next, quando si lavora con funzioni asincrone.


Cosa include

  • initializeGT() — Configura il singleton i18n. Chiamalo una volta all'avvio del server.
  • withGT(locale, fn) — Incapsula un request handler per impostare il locale. Tutte le chiamate di traduzione all'interno della callback usano il locale fornito. Tutte le route devono essere incapsulate in withGT.
  • getGT() — Restituisce una funzione di traduzione per stringhe inline. Supporta l'interpolazione di variabili e il formato di messaggi ICU.

Guida rapida (Express)

Installazione

npm install gt-node

Inizializza

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

Aggiungi il middleware della locale

Estrai la locale dagli header della richiesta (o dai cookie, dai parametri di query — indipendentemente da come la tua app determina la locale) e incapsula ogni richiesta con withGT:

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

Tradurre

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

app.listen(3000);

Traduci e distribuisci

npx gtx-cli translate --publish

È tutto. Le stringhe vengono individuate dal compilatore GT in fase di build, tradotte in fase di CD e risolte per ogni richiesta a runtime.


Guardando al futuro

gt-node e gt-tanstack-start sono le prime due librerie basate sull'architettura singleton di gt-i18n. Sono previsti altri adapter per framework che seguiranno lo stesso modello.

Commenti e suggerimenti sono benvenuti su Discord o GitHub.