Zurück

gt-node@0.2.0

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

Übersicht

WICHTIG Diese Bibliothek ist noch experimentell und unterliegt noch möglichen Breaking Changes.

gt-node bringt General Translation zu serverseitigem JavaScript. Es funktioniert in Node.js, Bun und Deno.

Durch das Einrichten eines request-spezifischen Kontexts über AsyncLocalStorage ermöglicht gt-node den direkten Import von Übersetzungsfunktionen aus der Bibliothek:

const gt = await getGT();

Dies entspricht der API in unseren anderen Bibliotheken wie gt-next, wenn Sie mit asynchronen Funktionen arbeiten.


Was ist enthalten

  • initializeGT() — Konfiguriert das i18n-Singleton. Sollte einmal beim Serverstart aufgerufen werden.
  • withGT(locale, fn) — Wrappt einen Request-Handler, um die Locale zu setzen. Alle Übersetzungsaufrufe innerhalb des Callbacks verwenden die angegebene Locale. Alle Routen müssen mit withGT umschlossen werden.
  • getGT() — Gibt eine Übersetzungsfunktion für Inline-Strings zurück. Unterstützt Variableninterpolation und das ICU-Message-Format.

Schnellstart (Express)

Installation

npm install gt-node

Initialisieren

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

Locale-Middleware hinzufügen

Extrahieren Sie die Locale aus den Request-Headern (oder Cookies, Query-Parametern – je nachdem, wie Ihre App die Locale ermittelt) und versehen Sie jede Anfrage mit withGT:

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

Übersetzen

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

app.listen(3000);

Übersetzen und Deployen

npx gtx-cli translate --publish

Das ist alles. Strings werden zur Build-Zeit vom GT-Compiler erfasst, während des CD-Prozesses übersetzt und zur Laufzeit für jede Anfrage aufgelöst.


Ausblick

gt-node und gt-tanstack-start sind die ersten beiden Bibliotheken, die auf der gt-i18n-Singleton-Architektur basieren. Rechnen Sie mit weiteren Framework-Adaptern, die demselben Muster folgen.

Wir freuen uns über Ihr Feedback auf Discord oder GitHub.