Indietro

gt-node@0.2.0

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

Panoramica

IMPORTANTE Questa libreria è ancora sperimentale e potrebbe introdurre modifiche non retrocompatibili.

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

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

const gt = await getGT();

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


Cosa include

  • initializeGT() — Configura il singleton i18n. Chiamalo una sola volta all'avvio del server.
  • withGT(locale, fn) — Avvolge un gestore di richieste per applicare l'impostazione regionale al relativo contesto. Tutte le chiamate di traduzione all'interno del callback usano l'impostazione regionale fornita. Tutte le route devono essere avvolte in withGT.
  • getGT() — Restituisce una funzione di traduzione per stringhe inline. Supporta l'interpolazione di variabili e il formato dei messaggi ICU.

Guida rapida (Express)

Installa

npm install gt-node

Inizializzazione

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 dell'impostazione regionale

Estrai l'impostazione regionale dalle intestazioni della richiesta (oppure dai cookie o dai parametri di query, in base a come la tua app determina l'impostazione regionale) e applica withGT a ogni richiesta:

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

Traduci

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

Ecco fatto. Le stringhe vengono rilevate dal compilatore di GT in fase di build, tradotte durante il CD e risolte a ogni richiesta in fase di runtime.


In prospettiva

gt-node e gt-tanstack-start sono le prime due librerie basate sull'architettura singleton gt-i18n. Prevedi che altri adattatori per framework seguiranno lo stesso schema.

I feedback sono benvenuti su Discord o GitHub.